Documentation
¶
Overview ¶
Example ¶
package main
import (
"context"
"io"
sqle "github.com/Rock-liyi/p2pdb-server"
"github.com/Rock-liyi/p2pdb-store/memory"
"github.com/Rock-liyi/p2pdb-store/sql"
"github.com/Rock-liyi/p2pdb-store/sqlite"
debug "github.com/favframework/debug"
)
func Select2() {
debug.Dump("Example start====")
// Create a test memory database and register it to the default engine.
db := createTestMemory()
e := sqle.NewDefault(sql.NewDatabaseProvider(db))
ctx := sql.NewContext(context.Background()).WithCurrentDB("test")
query := `select * from test.userinfo`
//ctx.SetRawStatement(query)
_, r, err := e.Query(ctx, query)
debug.Dump("Example RawStatement")
debug.Dump(ctx.RawStatement())
// debug.Dump(r)
checkIfError(err)
// Iterate results and print them.
for {
row, err := r.Next(ctx)
//debug.Dump(row)
if err == io.EOF {
break
}
checkIfError(err)
debug.Dump(row)
}
debug.Dump("Example end====")
}
func main() {
debug.Dump("Example start====")
// Create a test memory database and register it to the default engine.
db := createTestDatabase()
e := sqle.NewDefault(sql.NewDatabaseProvider(db))
ctx := sql.NewContext(context.Background()).WithCurrentDB("test")
// query := `SELECT name, count(*) FROM mytable
// WHERE name = 'John Doe'
// GROUP BY name`
query := `SELECT count(*) as a,count(*) as n,name,email FROM mytable`
//ctx.SetRawStatement(query)
_, r, err := e.Query(ctx, query)
// debug.Dump("Example RawStatement")
// debug.Dump(ctx.RawStatement())
// debug.Dump(r)
checkIfError(err)
// Iterate results and print them.
debug.Dump(ctx.Query())
debug.Dump("Example Next start====")
//for {
row, err := r.Next(ctx)
//debug.Dump(row)
if err == io.EOF {
debug.Dump(err)
//break
}
checkIfError(err)
debug.Dump(row)
debug.Dump("Example Next end====")
// name := row[0]
// count := row[1]
// fmt.Println(name, count)
//}
debug.Dump("Example end====")
}
func checkIfError(err error) {
if err != nil {
panic(err)
}
}
func createTestDatabase() sql.Database {
db := sqlite.NewDatabase("test")
table := sqlite.NewTable("mytable", sql.NewPrimaryKeySchema(sql.Schema{
{Name: "name", Type: sql.Text, Source: "mytable"},
{Name: "email", Type: sql.Text, Source: "mytable"},
}))
db.AddTable("mytable", table)
ctx := sql.NewEmptyContext()
rows := []sql.Row{
sql.NewRow("John Doe", "john@doe.com"),
sql.NewRow("John Doe", "johnalt@doe.com"),
sql.NewRow("Jane Doe", "jane@doe.com"),
sql.NewRow("Evil Bob", "evilbob@gmail.com"),
}
for _, row := range rows {
table.Insert(ctx, row)
}
return db
}
func createTestMemory() sql.Database {
db := memory.NewDatabase("test")
table := memory.NewTable("mytable", sql.NewPrimaryKeySchema(sql.Schema{
{Name: "name", Type: sql.Text, Source: "mytable"},
{Name: "email", Type: sql.Text, Source: "mytable"},
}))
db.AddTable("mytable", table)
ctx := sql.NewEmptyContext()
rows := []sql.Row{
sql.NewRow("John Doe", "john@doe.com"),
sql.NewRow("John Doe", "johnalt@doe.com"),
sql.NewRow("Jane Doe", "jane@doe.com"),
// sql.NewRow("Evil Bob", "evilbob@gmail.com"),
}
for _, row := range rows {
table.Insert(ctx, row)
}
return db
}
Output: John Doe 2
Index ¶
- func NewCatalog(provider sql.DatabaseProvider) sql.Catalog
- func TestDatabase_DropTable(t *testing.T)
- func TestDatabase_Name(t *testing.T)
- type Catalog
- func (c *Catalog) AllDatabases() []sql.Database
- func (c *Catalog) CreateDatabase(ctx *sql.Context, dbName string) error
- func (c *Catalog) Database(db string) (sql.Database, error)
- func (c *Catalog) Function(name string) (sql.Function, error)
- func (c *Catalog) HasDB(db string) bool
- func (c *Catalog) LockTable(ctx *sql.Context, table string)
- func (c *Catalog) RegisterFunction(fns ...sql.Function)
- func (c *Catalog) RemoveDatabase(ctx *sql.Context, dbName string) error
- func (c *Catalog) Table(ctx *sql.Context, dbName, tableName string) (sql.Table, sql.Database, error)
- func (c *Catalog) TableAsOf(ctx *sql.Context, dbName, tableName string, asOf interface{}) (sql.Table, sql.Database, error)
- func (c *Catalog) UnlockTables(ctx *sql.Context, id uint32) error
- type MemTracer
- func (t *MemTracer) Extract(format interface{}, carrier interface{}) (opentracing.SpanContext, error)
- func (t *MemTracer) Inject(sm opentracing.SpanContext, format interface{}, carrier interface{}) error
- func (t *MemTracer) StartSpan(operationName string, opts ...opentracing.StartSpanOption) opentracing.Span
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewCatalog ¶
func NewCatalog(provider sql.DatabaseProvider) sql.Catalog
NewCatalog returns a new empty Catalog with the given provider
func TestDatabase_DropTable ¶
func TestDatabase_Name ¶
Types ¶
type Catalog ¶
type Catalog struct {
// contains filtered or unexported fields
}
func (*Catalog) AllDatabases ¶
AllDatabases returns all sliceDBProvider in the catalog.
func (*Catalog) CreateDatabase ¶
CreateDatabase creates a new Database and adds it to the catalog.
func (*Catalog) RegisterFunction ¶
func (*Catalog) RemoveDatabase ¶
RemoveDatabase removes a database from the catalog.
func (*Catalog) Table ¶
func (c *Catalog) Table(ctx *sql.Context, dbName, tableName string) (sql.Table, sql.Database, error)
Table returns the table in the given database with the given name.
type MemTracer ¶
MemTracer implements a simple tracer in memory for testing.
func (*MemTracer) Extract ¶
func (t *MemTracer) Extract(format interface{}, carrier interface{}) (opentracing.SpanContext, error)
Extract implements opentracing.Tracer interface.
func (*MemTracer) Inject ¶
func (t *MemTracer) Inject(sm opentracing.SpanContext, format interface{}, carrier interface{}) error
Inject implements opentracing.Tracer interface.
func (*MemTracer) StartSpan ¶
func (t *MemTracer) StartSpan(operationName string, opts ...opentracing.StartSpanOption) opentracing.Span
StartSpan implements opentracing.Tracer interface.
Click to show internal directories.
Click to hide internal directories.