Documentation ¶
Index ¶
- Variables
- func Inspect(node sql.Node, f func(sql.Node) bool)
- func InspectExpressions(node sql.Node, f func(sql.Expression) bool)
- func IsBinary(node sql.Node) bool
- func IsUnary(node sql.Node) bool
- func NewShowCreateTable(db string, ctl *sql.Catalog, table sql.Node, isView bool) sql.Node
- func NewShowIndexes(db sql.Database, table string, registry *sql.IndexRegistry) sql.Node
- func NillaryWithChildren(node sql.Node, children ...sql.Node) (sql.Node, error)
- func TransformExpressions(node sql.Node, f sql.TransformExprFunc) (sql.Node, error)
- func TransformExpressionsUp(node sql.Node, f sql.TransformExprFunc) (sql.Node, error)
- func TransformUp(node sql.Node, f sql.TransformNodeFunc) (sql.Node, error)
- func Walk(v Visitor, node sql.Node)
- func WalkExpressions(v sql.Visitor, node sql.Node)
- type AddColumn
- func (c *AddColumn) Children() []sql.Node
- func (c *AddColumn) Database() sql.Database
- func (c *AddColumn) Resolved() bool
- func (a *AddColumn) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*AddColumn) Schema() sql.Schema
- func (a *AddColumn) String() string
- func (a *AddColumn) WithChildren(children ...sql.Node) (sql.Node, error)
- func (a *AddColumn) WithDatabase(db sql.Database) (sql.Node, error)
- type AlterForeignKey
- type AlterIndex
- func (p *AlterIndex) Children() []sql.Node
- func (p *AlterIndex) Execute(ctx *sql.Context) error
- func (p *AlterIndex) Resolved() bool
- func (p *AlterIndex) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (p *AlterIndex) Schema() sql.Schema
- func (p AlterIndex) String() string
- func (p *AlterIndex) WithChildren(children ...sql.Node) (sql.Node, error)
- type BinaryNode
- type Commit
- type CreateIndex
- func (c *CreateIndex) Children() []sql.Node
- func (c *CreateIndex) Expressions() []sql.Expression
- func (c *CreateIndex) Resolved() bool
- func (c *CreateIndex) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (c *CreateIndex) Schema() sql.Schema
- func (c *CreateIndex) String() string
- func (c *CreateIndex) WithChildren(children ...sql.Node) (sql.Node, error)
- func (c *CreateIndex) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type CreateTable
- func (c *CreateTable) Children() []sql.Node
- func (c *CreateTable) Database() sql.Database
- func (c *CreateTable) Resolved() bool
- func (c *CreateTable) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*CreateTable) Schema() sql.Schema
- func (c *CreateTable) String() string
- func (c *CreateTable) WithChildren(children ...sql.Node) (sql.Node, error)
- func (c *CreateTable) WithDatabase(db sql.Database) (sql.Node, error)
- type CreateView
- func (cv *CreateView) Children() []sql.Node
- func (cv *CreateView) Database() sql.Database
- func (cv *CreateView) Resolved() bool
- func (cv *CreateView) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (cv *CreateView) Schema() sql.Schema
- func (cv *CreateView) String() string
- func (cv *CreateView) View() sql.View
- func (cv *CreateView) WithChildren(children ...sql.Node) (sql.Node, error)
- func (cv *CreateView) WithDatabase(database sql.Database) (sql.Node, error)
- type CrossJoin
- type DeleteFrom
- func (p *DeleteFrom) Children() []sql.Node
- func (p *DeleteFrom) Execute(ctx *sql.Context) (int, error)
- func (p *DeleteFrom) Resolved() bool
- func (p *DeleteFrom) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (p *DeleteFrom) Schema() sql.Schema
- func (p DeleteFrom) String() string
- func (p *DeleteFrom) WithChildren(children ...sql.Node) (sql.Node, error)
- type Describe
- type DescribeQuery
- type Distinct
- type DropColumn
- func (c *DropColumn) Children() []sql.Node
- func (c *DropColumn) Database() sql.Database
- func (c *DropColumn) Resolved() bool
- func (d *DropColumn) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*DropColumn) Schema() sql.Schema
- func (d *DropColumn) String() string
- func (d *DropColumn) WithChildren(children ...sql.Node) (sql.Node, error)
- func (d *DropColumn) WithDatabase(db sql.Database) (sql.Node, error)
- type DropIndex
- type DropTable
- func (c *DropTable) Children() []sql.Node
- func (c *DropTable) Database() sql.Database
- func (c *DropTable) Resolved() bool
- func (d *DropTable) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*DropTable) Schema() sql.Schema
- func (d *DropTable) String() string
- func (d *DropTable) WithChildren(children ...sql.Node) (sql.Node, error)
- func (d *DropTable) WithDatabase(db sql.Database) (sql.Node, error)
- type DropView
- type Exchange
- type Filter
- func (p *Filter) Expressions() []sql.Expression
- func (p *Filter) Resolved() bool
- func (p *Filter) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (p *Filter) String() string
- func (p *Filter) WithChildren(children ...sql.Node) (sql.Node, error)
- func (p *Filter) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type FilterIter
- type ForeignKeyAction
- type ForeignKeyDefinition
- type Generate
- func (g *Generate) Expressions() []sql.Expression
- func (g *Generate) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (g *Generate) Schema() sql.Schema
- func (g *Generate) String() string
- func (g *Generate) WithChildren(children ...sql.Node) (sql.Node, error)
- func (g *Generate) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type GroupBy
- func (p *GroupBy) Expressions() []sql.Expression
- func (p *GroupBy) Resolved() bool
- func (p *GroupBy) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (p *GroupBy) Schema() sql.Schema
- func (p *GroupBy) String() string
- func (p *GroupBy) WithChildren(children ...sql.Node) (sql.Node, error)
- func (p *GroupBy) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type Having
- func (h *Having) Expressions() []sql.Expression
- func (h *Having) Resolved() bool
- func (h *Having) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (h *Having) String() string
- func (h *Having) WithChildren(children ...sql.Node) (sql.Node, error)
- func (h *Having) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type IndexAction
- type IndexedJoin
- type IndexedTableAccess
- type InnerJoin
- func (j *InnerJoin) Expressions() []sql.Expression
- func (j *InnerJoin) Resolved() bool
- func (j *InnerJoin) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (j *InnerJoin) Schema() sql.Schema
- func (j *InnerJoin) String() string
- func (j *InnerJoin) WithChildren(children ...sql.Node) (sql.Node, error)
- func (j *InnerJoin) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type InsertInto
- type JoinType
- type LeftJoin
- func (j *LeftJoin) Expressions() []sql.Expression
- func (j *LeftJoin) Resolved() bool
- func (j *LeftJoin) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (j *LeftJoin) Schema() sql.Schema
- func (j *LeftJoin) String() string
- func (j *LeftJoin) WithChildren(children ...sql.Node) (sql.Node, error)
- func (j *LeftJoin) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type Limit
- type LockTables
- type ModifyColumn
- func (c *ModifyColumn) Children() []sql.Node
- func (c *ModifyColumn) Database() sql.Database
- func (c *ModifyColumn) Resolved() bool
- func (m *ModifyColumn) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*ModifyColumn) Schema() sql.Schema
- func (m *ModifyColumn) String() string
- func (m *ModifyColumn) WithChildren(children ...sql.Node) (sql.Node, error)
- func (m *ModifyColumn) WithDatabase(db sql.Database) (sql.Node, error)
- type NameAndSchema
- type NamedNotifyFunc
- type NaturalJoin
- type NotifyFunc
- type NullOrdering
- type Offset
- type OrderedDistinct
- type ProcessIndexableTable
- type ProcessTable
- type Project
- func (p *Project) Expressions() []sql.Expression
- func (p *Project) Resolved() bool
- func (p *Project) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (p *Project) Schema() sql.Schema
- func (p *Project) String() string
- func (p *Project) WithChildren(children ...sql.Node) (sql.Node, error)
- func (p *Project) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type QueryProcess
- type RenameColumn
- func (c *RenameColumn) Children() []sql.Node
- func (c *RenameColumn) Database() sql.Database
- func (c *RenameColumn) Resolved() bool
- func (r *RenameColumn) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*RenameColumn) Schema() sql.Schema
- func (r *RenameColumn) String() string
- func (r *RenameColumn) WithChildren(children ...sql.Node) (sql.Node, error)
- func (r *RenameColumn) WithDatabase(db sql.Database) (sql.Node, error)
- type RenameTable
- func (c *RenameTable) Children() []sql.Node
- func (c *RenameTable) Database() sql.Database
- func (c *RenameTable) Resolved() bool
- func (r *RenameTable) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*RenameTable) Schema() sql.Schema
- func (r *RenameTable) String() string
- func (r *RenameTable) WithChildren(children ...sql.Node) (sql.Node, error)
- func (r *RenameTable) WithDatabase(db sql.Database) (sql.Node, error)
- type ResolvedTable
- type RightJoin
- func (j *RightJoin) Expressions() []sql.Expression
- func (j *RightJoin) Resolved() bool
- func (j *RightJoin) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (j *RightJoin) Schema() sql.Schema
- func (j *RightJoin) String() string
- func (j *RightJoin) WithChildren(children ...sql.Node) (sql.Node, error)
- func (j *RightJoin) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type Rollback
- type Set
- func (s *Set) Children() []sql.Node
- func (s *Set) Expressions() []sql.Expression
- func (s *Set) Resolved() bool
- func (s *Set) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (s *Set) Schema() sql.Schema
- func (s *Set) String() string
- func (s *Set) WithChildren(children ...sql.Node) (sql.Node, error)
- func (s *Set) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type SetVariable
- type ShowColumns
- type ShowCreateDatabase
- func (s *ShowCreateDatabase) Children() []sql.Node
- func (s *ShowCreateDatabase) Database() sql.Database
- func (s *ShowCreateDatabase) Resolved() bool
- func (s *ShowCreateDatabase) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (s *ShowCreateDatabase) Schema() sql.Schema
- func (s *ShowCreateDatabase) String() string
- func (s *ShowCreateDatabase) WithChildren(children ...sql.Node) (sql.Node, error)
- func (s *ShowCreateDatabase) WithDatabase(db sql.Database) (sql.Node, error)
- type ShowCreateTable
- type ShowDatabases
- func (*ShowDatabases) Children() []sql.Node
- func (p *ShowDatabases) Resolved() bool
- func (p *ShowDatabases) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*ShowDatabases) Schema() sql.Schema
- func (p ShowDatabases) String() string
- func (p *ShowDatabases) WithChildren(children ...sql.Node) (sql.Node, error)
- type ShowIndexes
- func (n *ShowIndexes) Children() []sql.Node
- func (n *ShowIndexes) Database() sql.Database
- func (n *ShowIndexes) Resolved() bool
- func (n *ShowIndexes) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (n *ShowIndexes) Schema() sql.Schema
- func (n *ShowIndexes) String() string
- func (n *ShowIndexes) WithChildren(children ...sql.Node) (sql.Node, error)
- func (n *ShowIndexes) WithDatabase(db sql.Database) (sql.Node, error)
- type ShowProcessList
- func (p *ShowProcessList) Children() []sql.Node
- func (p *ShowProcessList) Resolved() bool
- func (p *ShowProcessList) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (p *ShowProcessList) Schema() sql.Schema
- func (p *ShowProcessList) String() string
- func (p *ShowProcessList) WithChildren(children ...sql.Node) (sql.Node, error)
- type ShowTableStatus
- func (s *ShowTableStatus) Children() []sql.Node
- func (s *ShowTableStatus) Resolved() bool
- func (s *ShowTableStatus) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (s *ShowTableStatus) Schema() sql.Schema
- func (s *ShowTableStatus) String() string
- func (s *ShowTableStatus) WithChildren(children ...sql.Node) (sql.Node, error)
- type ShowTables
- func (*ShowTables) Children() []sql.Node
- func (p *ShowTables) Database() sql.Database
- func (p *ShowTables) Resolved() bool
- func (p *ShowTables) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (p *ShowTables) Schema() sql.Schema
- func (p ShowTables) String() string
- func (p *ShowTables) WithChildren(children ...sql.Node) (sql.Node, error)
- func (p *ShowTables) WithDatabase(db sql.Database) (sql.Node, error)
- type ShowVariables
- func (*ShowVariables) Children() []sql.Node
- func (sv *ShowVariables) Resolved() bool
- func (sv *ShowVariables) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*ShowVariables) Schema() sql.Schema
- func (sv *ShowVariables) String() string
- func (sv *ShowVariables) WithChildren(children ...sql.Node) (sql.Node, error)
- type ShowWarnings
- type SingleDropView
- func (dv *SingleDropView) Children() []sql.Node
- func (dv *SingleDropView) Database() sql.Database
- func (dv *SingleDropView) Resolved() bool
- func (dv *SingleDropView) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (dv *SingleDropView) Schema() sql.Schema
- func (dv *SingleDropView) String() string
- func (dv *SingleDropView) WithChildren(children ...sql.Node) (sql.Node, error)
- func (dv *SingleDropView) WithDatabase(database sql.Database) (sql.Node, error)
- type Sort
- func (s *Sort) Expressions() []sql.Expression
- func (s *Sort) Resolved() bool
- func (s *Sort) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (s *Sort) String() string
- func (s *Sort) WithChildren(children ...sql.Node) (sql.Node, error)
- func (s *Sort) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type SortField
- type SortOrder
- type SubqueryAlias
- func (n *SubqueryAlias) AsView() sql.View
- func (n *SubqueryAlias) Name() string
- func (n *SubqueryAlias) Opaque() bool
- func (n *SubqueryAlias) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (n *SubqueryAlias) Schema() sql.Schema
- func (n SubqueryAlias) String() string
- func (n *SubqueryAlias) WithChildren(children ...sql.Node) (sql.Node, error)
- type TableAlias
- type TableLock
- type UnaryNode
- type Union
- type UnlockTables
- func (t *UnlockTables) Children() []sql.Node
- func (t *UnlockTables) Resolved() bool
- func (t *UnlockTables) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (t *UnlockTables) Schema() sql.Schema
- func (t *UnlockTables) String() string
- func (t *UnlockTables) WithChildren(children ...sql.Node) (sql.Node, error)
- type UnresolvedTable
- func (*UnresolvedTable) Children() []sql.Node
- func (t *UnresolvedTable) Name() string
- func (*UnresolvedTable) Resolved() bool
- func (*UnresolvedTable) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (*UnresolvedTable) Schema() sql.Schema
- func (t UnresolvedTable) String() string
- func (t *UnresolvedTable) WithAsOf(asOf sql.Expression) (*UnresolvedTable, error)
- func (t *UnresolvedTable) WithChildren(children ...sql.Node) (sql.Node, error)
- func (t *UnresolvedTable) WithDatabase(database string) (*UnresolvedTable, error)
- type Update
- func (p *Update) Children() []sql.Node
- func (p *Update) Execute(ctx *sql.Context) (int, int, error)
- func (p *Update) Expressions() []sql.Expression
- func (p *Update) Resolved() bool
- func (p *Update) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (p *Update) Schema() sql.Schema
- func (p Update) String() string
- func (p *Update) WithChildren(children ...sql.Node) (sql.Node, error)
- func (p *Update) WithExpressions(newExprs ...sql.Expression) (sql.Node, error)
- type UpdateInfo
- type Use
- func (Use) Children() []sql.Node
- func (u *Use) Database() sql.Database
- func (u *Use) Resolved() bool
- func (u *Use) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (Use) Schema() sql.Schema
- func (u *Use) String() string
- func (u *Use) WithChildren(children ...sql.Node) (sql.Node, error)
- func (u *Use) WithDatabase(db sql.Database) (sql.Node, error)
- type Values
- func (p *Values) Children() []sql.Node
- func (p *Values) Expressions() []sql.Expression
- func (p *Values) Resolved() bool
- func (p *Values) RowIter(ctx *sql.Context) (sql.RowIter, error)
- func (p *Values) Schema() sql.Schema
- func (p *Values) String() string
- func (p *Values) WithChildren(children ...sql.Node) (sql.Node, error)
- func (p *Values) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
- type Visitor
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNoForeignKeySupport is returned when the table does not support FOREIGN KEY operations. ErrNoForeignKeySupport = errors.NewKind("the table does not support foreign key operations: %s") // ErrForeignKeyMissingColumns is returned when an ALTER TABLE ADD FOREIGN KEY statement does not provide any columns ErrForeignKeyMissingColumns = errors.NewKind("cannot create a foreign key without columns") // ErrAddForeignKeyDuplicateColumn is returned when an ALTER TABLE ADD FOREIGN KEY statement has the same column multiple times ErrAddForeignKeyDuplicateColumn = errors.NewKind("cannot have duplicates of columns in a foreign key: `%v`") )
var ( // ErrIndexActionNotImplemented is returned when the action has not been implemented ErrIndexActionNotImplemented = errors.NewKind("alter table index action is not implemented: %v") // ErrCreateIndexMissingColumns is returned when a CREATE INDEX statement does not provide any columns ErrCreateIndexMissingColumns = errors.NewKind("cannot create an index without columns") // ErrCreateIndexNonExistentColumn is returned when a key is provided in the index that isn't in the table ErrCreateIndexNonExistentColumn = errors.NewKind("column `%v` does not exist in the table") // ErrCreateIndexDuplicateColumn is returned when a CREATE INDEX statement has the same column multiple times ErrCreateIndexDuplicateColumn = errors.NewKind("cannot have duplicates of columns in an index: `%v`") )
var ( // ErrNotIndexable is returned when the table is not indexable. ErrNotIndexable = errors.NewKind("the table is not indexable") // ErrInvalidIndexDriver is returned when the index driver can't be found. ErrInvalidIndexDriver = errors.NewKind("invalid driver index %q") // ErrExprTypeNotIndexable is returned when the expression type cannot be // indexed, such as BLOB or JSON. ErrExprTypeNotIndexable = errors.NewKind("expression %q with type %s cannot be indexed") )
var ( // ErrIndexNotFound is returned when the index cannot be found. ErrIndexNotFound = errors.NewKind("unable to find index %q on table %q of database %q") // ErrTableNotValid is returned when the table is not valid ErrTableNotValid = errors.NewKind("table is not valid") // ErrTableNotNameable is returned when the table is not nameable. ErrTableNotNameable = errors.NewKind("can't get name from table") // ErrIndexNotAvailable is returned when trying to delete an index that is // still not ready for usage. ErrIndexNotAvailable = errors.NewKind("index %q is still not ready for usage and can't be deleted") )
var DescribeSchema = sql.Schema{ {Name: "plan", Type: sql.LongText}, }
DescribeSchema is the schema returned by a DescribeQuery node.
var EmptyTable = new(emptyTable)
EmptyTable is a node representing an empty table.
var ErrAlterTableNotSupported = errors.NewKind("table %s cannot be altered on database %s")
ErrAlterTableNotSupported is thrown when the database doesn't support ALTER TABLE statements
var ErrColumnNotFound = errors.NewKind("table %s does not have column %s")
ErrColumnNotFound is thrown when a column named cannot be found in scope
var ErrCreateTableNotSupported = errors.NewKind("tables cannot be created on database %s")
ErrCreateTable is thrown when the database doesn't support table creation
var ErrDeleteFromNotSupported = errors.NewKind("table doesn't support DELETE FROM")
var ErrDropTableNotSupported = errors.NewKind("tables cannot be dropped on database %s")
ErrDropTableNotSupported is thrown when the database doesn't support dropping tables
var ErrGroupBy = errors.NewKind("group by aggregation '%v' not supported")
ErrGroupBy is returned when the aggregation is not supported.
var ErrIncompatibleDefaultType = errors.NewKind("incompatible type for default value")
ErrIncompatibleDefaultType is thrown when a provided default cannot be coerced into the type of the column
var ErrIndexedTableAccessNotInitialized = errors.NewKind("IndexedTableAccess must be initialized before RowIter is called")
var ErrInsertIntoDuplicateColumn = errors.NewKind("duplicate column name %v")
var ErrInsertIntoIncompatibleTypes = errors.NewKind("cannot convert type %s to %s")
var ErrInsertIntoMismatchValueCount = errors.NewKind("number of values does not match number of columns provided")
var ErrInsertIntoNonNullableDefaultNullColumn = errors.NewKind("column name '%v' is non-nullable but attempted to set default value of null")
var ErrInsertIntoNonNullableProvidedNull = errors.NewKind("column name '%v' is non-nullable but attempted to set a value of null")
var ErrInsertIntoNonexistentColumn = errors.NewKind("invalid column name %v")
var ErrInsertIntoNotSupported = errors.NewKind("table doesn't support INSERT INTO")
ErrInsertIntoNotSupported is thrown when a table doesn't support inserts
var ErrInsertIntoUnsupportedValues = errors.NewKind("%T is unsupported for inserts")
var ErrNoIndexableTable = errors.NewKind("expected an IndexableTable, couldn't find one in %v")
var ErrNoIndexedTableAccess = errors.NewKind("expected an IndexedTableAccess, couldn't find one in %v")
var ErrNoPartitionable = errors.NewKind("no partitionable node found in exchange tree")
ErrNoPartitionable is returned when no Partitionable node is found in the Exchange tree.
var ErrNotView = errors.NewKind("'%' is not VIEW")
var ErrNullDefault = errors.NewKind("column declared not null must have a non-null default value")
ErrNullDefault is thrown when a non-null column is added with a null default
var ErrRenameTableNotSupported = errors.NewKind("tables cannot be renamed on database %s")
ErrRenameTableNotSupported is thrown when the database doesn't support renaming tables
var ErrReplaceIntoNotSupported = errors.NewKind("table doesn't support REPLACE INTO")
var ErrTableCreatedNotFound = errors.NewKind("table was created but could not be found")
ErrTableCreatedNotFound is thrown when a table is created from CREATE TABLE but cannot be found immediately afterward
var ErrTableNotLockable = errors.NewKind("table %s is not lockable")
ErrTableNotLockable is returned whenever a lockable table can't be found.
var ErrUnableSort = errors.NewKind("unable to sort")
ErrUnableSort is thrown when something happens on sorting
var ErrUnresolvedTable = errors.NewKind("unresolved table")
ErrUnresolvedTable is thrown when a table cannot be resolved
var ErrUnsupportedFeature = errors.NewKind("unsupported feature: %s")
ErrUnsupportedFeature is thrown when a feature is not already supported
var ErrUpdateNotSupported = errors.NewKind("table doesn't support UPDATE")
var ErrUpdateUnexpectedSetResult = errors.NewKind("attempted to set field but expression returned %T")
var Nothing nothing
Nothing is a node that will return no rows.
Functions ¶
func Inspect ¶
Inspect traverses the plan in depth-first order: It starts by calling f(node); node must not be nil. If f returns true, Inspect invokes f recursively for each of the children of node, followed by a call of f(nil).
func InspectExpressions ¶
func InspectExpressions(node sql.Node, f func(sql.Expression) bool)
InspectExpressions traverses the plan and calls sql.Inspect on any expression it finds.
func NewShowCreateTable ¶
NewShowCreateTable creates a new ShowCreateTable node.
func NewShowIndexes ¶
NewShowIndexes creates a new ShowIndexes node.
func NillaryWithChildren ¶
NillaryNode is a node with no children. This is a common WithChildren implementation for all nodes that have none.
func TransformExpressions ¶
TransformExpressions applies a transformation function to all expressions on the given node.
func TransformExpressionsUp ¶
TransformExpressionsUp applies a transformation function to all expressions on the given tree from the bottom up.
func TransformUp ¶
TransformUp applies a transformation function to the given tree from the bottom up.
func Walk ¶
Walk traverses the plan tree in depth-first order. It starts by calling v.Visit(node); node must not be nil. If the visitor returned by v.Visit(node) is not nil, Walk is invoked recursively with the returned visitor for each children of the node, followed by a call of v.Visit(nil) to the returned visitor.
Types ¶
type AddColumn ¶
type AddColumn struct {
// contains filtered or unexported fields
}
func NewAddColumn ¶
func (*AddColumn) Resolved ¶
func (c *AddColumn) Resolved() bool
Resolved implements the Resolvable interface.
func (*AddColumn) WithChildren ¶
type AlterForeignKey ¶
type AlterForeignKey struct { UnaryNode Action ForeignKeyAction FkDef *ForeignKeyDefinition }
func NewAlterAddForeignKey ¶
func NewAlterAddForeignKey(table sql.Node, fkDef *ForeignKeyDefinition) *AlterForeignKey
func NewAlterDropForeignKey ¶
func NewAlterDropForeignKey(table sql.Node, fkDef *ForeignKeyDefinition) *AlterForeignKey
func (*AlterForeignKey) Execute ¶
func (p *AlterForeignKey) Execute(ctx *sql.Context) error
Execute inserts the rows in the database.
func (AlterForeignKey) String ¶
func (p AlterForeignKey) String() string
func (*AlterForeignKey) WithChildren ¶
WithChildren implements the Node interface.
type AlterIndex ¶
type AlterIndex struct { // Action states whether it's a CREATE, DROP, or RENAME Action IndexAction // Table is the table that is being referenced Table sql.Node // IndexName is the index name, and in the case of a RENAME it represents the new name IndexName string // PreviousIndexName states the old name when renaming an index PreviousIndexName string // Using states whether you're using BTREE, HASH, or none Using sql.IndexUsing // Constraint specifies whether this is UNIQUE, FULLTEXT, SPATIAL, or none Constraint sql.IndexConstraint // Columns contains the column names (and possibly lengths) when creating an index Columns []sql.IndexColumn // Comment is the comment that was left at index creation, if any Comment string }
func NewAlterCreateIndex ¶
func NewAlterCreateIndex(table sql.Node, indexName string, using sql.IndexUsing, constraint sql.IndexConstraint, columns []sql.IndexColumn, comment string) *AlterIndex
func NewAlterDropIndex ¶
func NewAlterDropIndex(table sql.Node, indexName string) *AlterIndex
func NewAlterRenameIndex ¶
func NewAlterRenameIndex(table sql.Node, fromIndexName, toIndexName string) *AlterIndex
func (*AlterIndex) Children ¶
func (p *AlterIndex) Children() []sql.Node
func (*AlterIndex) Execute ¶
func (p *AlterIndex) Execute(ctx *sql.Context) error
Execute inserts the rows in the database.
func (*AlterIndex) Resolved ¶
func (p *AlterIndex) Resolved() bool
func (*AlterIndex) Schema ¶
func (p *AlterIndex) Schema() sql.Schema
Schema implements the Node interface.
func (AlterIndex) String ¶
func (p AlterIndex) String() string
func (*AlterIndex) WithChildren ¶
WithChildren implements the Node interface.
type BinaryNode ¶
BinaryNode is a node with two children.
func (BinaryNode) Children ¶
func (n BinaryNode) Children() []sql.Node
Children implements the Node interface.
func (BinaryNode) Resolved ¶
func (n BinaryNode) Resolved() bool
Resolved implements the Resolvable interface.
type Commit ¶
type Commit struct{}
Commit commits the changes performed in a transaction. This is provided just for compatibility with SQL clients and is a no-op.
type CreateIndex ¶
type CreateIndex struct { Name string Table sql.Node Exprs []sql.Expression Driver string Config map[string]string Catalog *sql.Catalog CurrentDatabase string }
CreateIndex is a node to create an index.
func NewCreateIndex ¶
func NewCreateIndex( name string, table sql.Node, exprs []sql.Expression, driver string, config map[string]string, ) *CreateIndex
NewCreateIndex creates a new CreateIndex node.
func (*CreateIndex) Children ¶
func (c *CreateIndex) Children() []sql.Node
Children implements the Node interface.
func (*CreateIndex) Expressions ¶
func (c *CreateIndex) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*CreateIndex) Resolved ¶
func (c *CreateIndex) Resolved() bool
Resolved implements the Node interface.
func (*CreateIndex) Schema ¶
func (c *CreateIndex) Schema() sql.Schema
Schema implements the Node interface.
func (*CreateIndex) String ¶
func (c *CreateIndex) String() string
func (*CreateIndex) WithChildren ¶
WithChildren implements the Node interface.
func (*CreateIndex) WithExpressions ¶
func (c *CreateIndex) WithExpressions(exprs ...sql.Expression) (sql.Node, error)
WithExpressions implements the Expressioner interface.
type CreateTable ¶
type CreateTable struct {
// contains filtered or unexported fields
}
CreateTable is a node describing the creation of some table.
func NewCreateTable ¶
func NewCreateTable(db sql.Database, name string, schema sql.Schema, ifNotExists bool, fkDefs []*ForeignKeyDefinition) *CreateTable
NewCreateTable creates a new CreateTable node
func (*CreateTable) Resolved ¶
func (c *CreateTable) Resolved() bool
Resolved implements the Resolvable interface.
func (*CreateTable) String ¶
func (c *CreateTable) String() string
func (*CreateTable) WithChildren ¶
WithChildren implements the Node interface.
func (*CreateTable) WithDatabase ¶
WithDatabase implements the sql.Databaser interface.
type CreateView ¶
type CreateView struct { UnaryNode Name string Columns []string Catalog *sql.Catalog IsReplace bool Definition *SubqueryAlias // contains filtered or unexported fields }
CreateView is a node representing the creation (or replacement) of a view, which is defined by the Child node. The Columns member represent the explicit columns specified by the query, if any.
func NewCreateView ¶
func NewCreateView( database sql.Database, name string, columns []string, definition *SubqueryAlias, isReplace bool, ) *CreateView
NewCreateView creates a CreateView node with the specified parameters, setting its catalog to nil.
func (*CreateView) Children ¶
func (cv *CreateView) Children() []sql.Node
Children implements the Node interface. It returns the Child of the CreateView node; i.e., the definition of the view that will be created.
func (*CreateView) Database ¶
func (cv *CreateView) Database() sql.Database
Database implements the Databaser interface, and it returns the database in which CreateView will create the view.
func (*CreateView) Resolved ¶
func (cv *CreateView) Resolved() bool
Resolved implements the Node interface. This node is resolved if and only if the database and the Child are both resolved.
func (*CreateView) RowIter ¶
RowIter implements the Node interface. When executed, this function creates (or replaces) the view. It can error if the CraeteView's IsReplace member is set to false and the view already exists. The RowIter returned is always empty.
func (*CreateView) Schema ¶
func (cv *CreateView) Schema() sql.Schema
Schema implements the Node interface. It always returns nil.
func (*CreateView) String ¶
func (cv *CreateView) String() string
String implements the fmt.Stringer interface, using sql.TreePrinter to generate the string.
func (*CreateView) View ¶
func (cv *CreateView) View() sql.View
View returns the view that will be created by this node.
func (*CreateView) WithChildren ¶
WithChildren implements the Node interface. It only succeeds if the length of the specified children equals 1.
func (*CreateView) WithDatabase ¶
Database implements the Databaser interface, and it returns a copy of this node with the specified database.
type CrossJoin ¶
type CrossJoin struct {
BinaryNode
}
CrossJoin is a cross join between two tables.
func NewCrossJoin ¶
NewCrossJoin creates a new cross join node from two tables.
type DeleteFrom ¶
DeleteFrom is a node describing a deletion from some table.
func NewDeleteFrom ¶
func NewDeleteFrom(n sql.Node) *DeleteFrom
NewDeleteFrom creates a DeleteFrom node.
func (*DeleteFrom) Children ¶
func (p *DeleteFrom) Children() []sql.Node
func (*DeleteFrom) Execute ¶
func (p *DeleteFrom) Execute(ctx *sql.Context) (int, error)
Execute deletes the rows in the database.
func (*DeleteFrom) Resolved ¶
func (p *DeleteFrom) Resolved() bool
Resolved implements the Resolvable interface.
func (*DeleteFrom) Schema ¶
func (p *DeleteFrom) Schema() sql.Schema
Schema implements the Node interface.
func (DeleteFrom) String ¶
func (p DeleteFrom) String() string
func (*DeleteFrom) WithChildren ¶
WithChildren implements the Node interface.
type Describe ¶
type Describe struct {
UnaryNode
}
Describe is a node that describes its children.
func NewDescribe ¶
NewDescribe creates a new Describe node.
type DescribeQuery ¶
DescribeQuery returns the description of the query plan.
func NewDescribeQuery ¶
func NewDescribeQuery(format string, child sql.Node) *DescribeQuery
NewDescribeQuery creates a new DescribeQuery node.
func (*DescribeQuery) Schema ¶
func (d *DescribeQuery) Schema() sql.Schema
Schema implements the Node interface.
func (*DescribeQuery) String ¶
func (d *DescribeQuery) String() string
func (*DescribeQuery) WithChildren ¶
WithChildren implements the Node interface.
type Distinct ¶
type Distinct struct {
UnaryNode
}
Distinct is a node that ensures all rows that come from it are unique.
func NewDistinct ¶
NewDistinct creates a new Distinct node.
type DropColumn ¶
type DropColumn struct {
// contains filtered or unexported fields
}
func NewDropColumn ¶
func NewDropColumn(db sql.Database, tableName string, column string) *DropColumn
func (*DropColumn) Resolved ¶
func (c *DropColumn) Resolved() bool
Resolved implements the Resolvable interface.
func (*DropColumn) String ¶
func (d *DropColumn) String() string
func (*DropColumn) WithChildren ¶
func (*DropColumn) WithDatabase ¶
type DropIndex ¶
DropIndex is a node to drop an index.
func NewDropIndex ¶
NewDropIndex creates a new DropIndex node.
type DropTable ¶
type DropTable struct {
// contains filtered or unexported fields
}
DropTable is a node describing dropping one or more tables
func NewDropTable ¶
NewDropTable creates a new DropTable node
func (*DropTable) Resolved ¶
func (c *DropTable) Resolved() bool
Resolved implements the Resolvable interface.
func (*DropTable) WithChildren ¶
WithChildren implements the Node interface.
type DropView ¶
DropView is a node representing the removal of a list of views, defined by the children member. The flag ifExists represents whether the user wants the node to fail if any of the views in children does not exist.
func NewDropView ¶
NewDropView creates a DropView node with the specified parameters, setting its catalog to nil.
func (*DropView) Children ¶
Children implements the Node interface. It returns the children of the CreateView node; i.e., all the views that will be dropped.
func (*DropView) Resolved ¶
Resolved implements the Node interface. This node is resolved if and only if all of its children are resolved.
func (*DropView) RowIter ¶
RowIter implements the Node interface. When executed, this function drops all the views defined by the node's children. It errors if the flag ifExists is set to false and there is some view that does not exist.
type Exchange ¶
Exchange is a node that can parallelize the underlying tree iterating partitions concurrently.
func NewExchange ¶
NewExchange creates a new Exchange node.
type Filter ¶
type Filter struct { UnaryNode Expression sql.Expression }
Filter skips rows that don't match a certain expression.
func NewFilter ¶
func NewFilter(expression sql.Expression, child sql.Node) *Filter
NewFilter creates a new filter node.
func (*Filter) Expressions ¶
func (p *Filter) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*Filter) WithChildren ¶
WithChildren implements the Node interface.
func (*Filter) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type FilterIter ¶
type FilterIter struct {
// contains filtered or unexported fields
}
FilterIter is an iterator that filters another iterator and skips rows that don't match the given condition.
func NewFilterIter ¶
func NewFilterIter( ctx *sql.Context, cond sql.Expression, child sql.RowIter, ) *FilterIter
NewFilterIter creates a new FilterIter.
func (*FilterIter) Close ¶
func (i *FilterIter) Close() error
Close implements the RowIter interface.
type ForeignKeyAction ¶
type ForeignKeyAction byte
const ( ForeignKeyAction_Add ForeignKeyAction = iota ForeignKeyAction_Drop )
type ForeignKeyDefinition ¶
type ForeignKeyDefinition struct { Name string Columns []string ReferencedTable string ReferencedColumns []string OnUpdate sql.ForeignKeyReferenceOption OnDelete sql.ForeignKeyReferenceOption }
type Generate ¶
type Generate struct { UnaryNode Column *expression.GetField }
Generate will explode rows using a generator.
func NewGenerate ¶
func NewGenerate(child sql.Node, col *expression.GetField) *Generate
NewGenerate creates a new generate node.
func (*Generate) Expressions ¶
func (g *Generate) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*Generate) WithChildren ¶
WithChildren implements the Node interface.
func (*Generate) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type GroupBy ¶
type GroupBy struct { UnaryNode Aggregate []sql.Expression Grouping []sql.Expression }
GroupBy groups the rows by some expressions.
func NewGroupBy ¶
func NewGroupBy( aggregate []sql.Expression, grouping []sql.Expression, child sql.Node, ) *GroupBy
NewGroupBy creates a new GroupBy node.
func (*GroupBy) Expressions ¶
func (p *GroupBy) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*GroupBy) WithChildren ¶
WithChildren implements the Node interface.
func (*GroupBy) WithExpressions ¶
WithExpressions implements the Node interface.
type Having ¶
type Having struct { UnaryNode Cond sql.Expression }
Having node is a filter that supports aggregate expressions. A having node is identical to a filter node in behaviour. The difference is that some analyzer rules work specifically on having clauses and not filters. For that reason, Having is a completely new node instead of using just filter.
func NewHaving ¶
func NewHaving(cond sql.Expression, child sql.Node) *Having
NewHaving creates a new having node.
func (*Having) Expressions ¶
func (h *Having) Expressions() []sql.Expression
Expressions implements the sql.Expressioner interface.
func (*Having) WithChildren ¶
WithChildren implements the Node interface.
func (*Having) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type IndexAction ¶
type IndexAction byte
const ( IndexAction_Create IndexAction = iota IndexAction_Drop IndexAction_Rename )
type IndexedJoin ¶
type IndexedJoin struct { // The primary and secondary table nodes. The normal meanings of Left and // Right in BinaryNode aren't necessarily meaningful here -- the Left node is always the primary table, and the Right // node is always the secondary. These may or may not correspond to the left and right tables in the written query. BinaryNode // The join condition. Cond sql.Expression // The index to use when looking up rows in the secondary table. Index sql.Index // contains filtered or unexported fields }
An IndexedJoin is a join that uses index lookups for the secondary table.
func NewIndexedJoin ¶
func NewIndexedJoin(primaryTable, indexedTable sql.Node, joinType JoinType, cond sql.Expression, primaryTableExpr []sql.Expression, index sql.Index) *IndexedJoin
func (*IndexedJoin) Schema ¶
func (ij *IndexedJoin) Schema() sql.Schema
func (*IndexedJoin) String ¶
func (ij *IndexedJoin) String() string
func (*IndexedJoin) WithChildren ¶
type IndexedTableAccess ¶
type IndexedTableAccess struct { *ResolvedTable // contains filtered or unexported fields }
IndexedTableAccess represents an indexed lookup of a particular ResolvedTable. Unlike other kinds of UnaryNodes, this node supports being repeatedly initialized and being iterated over multiple times, potentially with different values returned every iteration. Used during analysis as part of the process of optimizing joins, replacing (wrapping) a ResolvedTable.
func NewIndexedTable ¶
func NewIndexedTable(resolvedTable *ResolvedTable) *IndexedTableAccess
func (*IndexedTableAccess) SetIndexLookup ¶
func (i *IndexedTableAccess) SetIndexLookup(ctx *sql.Context, lookup sql.IndexLookup) error
func (*IndexedTableAccess) WithChildren ¶
type InnerJoin ¶
type InnerJoin struct { BinaryNode Cond sql.Expression }
InnerJoin is an inner join between two tables.
func NewInnerJoin ¶
func NewInnerJoin(left, right sql.Node, cond sql.Expression) *InnerJoin
NewInnerJoin creates a new inner join node from two tables.
func (*InnerJoin) Expressions ¶
func (j *InnerJoin) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*InnerJoin) WithChildren ¶
WithChildren implements the Node interface.
func (*InnerJoin) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type InsertInto ¶
type InsertInto struct { BinaryNode ColumnNames []string IsReplace bool }
InsertInto is a node describing the insertion into some table.
func NewInsertInto ¶
func NewInsertInto(dst, src sql.Node, isReplace bool, cols []string) *InsertInto
NewInsertInto creates an InsertInto node.
func (*InsertInto) Execute ¶
func (p *InsertInto) Execute(ctx *sql.Context) (int, error)
Execute inserts the rows in the database.
func (*InsertInto) Schema ¶
func (p *InsertInto) Schema() sql.Schema
Schema implements the Node interface.
func (InsertInto) String ¶
func (p InsertInto) String() string
func (*InsertInto) WithChildren ¶
WithChildren implements the Node interface.
type LeftJoin ¶
type LeftJoin struct { BinaryNode Cond sql.Expression }
LeftJoin is a left join between two tables.
func NewLeftJoin ¶
func NewLeftJoin(left, right sql.Node, cond sql.Expression) *LeftJoin
NewLeftJoin creates a new left join node from two tables.
func (*LeftJoin) Expressions ¶
func (j *LeftJoin) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*LeftJoin) WithChildren ¶
WithChildren implements the Node interface.
func (*LeftJoin) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type Limit ¶
Limit is a node that only allows up to N rows to be retrieved.
type LockTables ¶
LockTables will lock tables for the session in which it's executed.
func NewLockTables ¶
func NewLockTables(locks []*TableLock) *LockTables
NewLockTables creates a new LockTables node.
func (*LockTables) Children ¶
func (t *LockTables) Children() []sql.Node
Children implements the sql.Node interface.
func (*LockTables) Resolved ¶
func (t *LockTables) Resolved() bool
Resolved implements the sql.Node interface.
func (*LockTables) Schema ¶
func (t *LockTables) Schema() sql.Schema
Schema implements the sql.Node interface.
func (*LockTables) String ¶
func (t *LockTables) String() string
func (*LockTables) WithChildren ¶
WithChildren implements the Node interface.
type ModifyColumn ¶
type ModifyColumn struct {
// contains filtered or unexported fields
}
func NewModifyColumn ¶
func NewModifyColumn(db sql.Database, tableName string, columnName string, column *sql.Column, order *sql.ColumnOrder) *ModifyColumn
func (*ModifyColumn) Resolved ¶
func (c *ModifyColumn) Resolved() bool
Resolved implements the Resolvable interface.
func (*ModifyColumn) String ¶
func (m *ModifyColumn) String() string
func (*ModifyColumn) WithChildren ¶
func (*ModifyColumn) WithDatabase ¶
type NamedNotifyFunc ¶
type NamedNotifyFunc func(name string)
NamedNotifyFunc is a function to notify about some event with a string argument.
type NaturalJoin ¶
type NaturalJoin struct {
BinaryNode
}
NaturalJoin is a join that automatically joins by all the columns with the same name. NaturalJoin is a placeholder node, it should be transformed into an INNER JOIN during analysis.
func NewNaturalJoin ¶
func NewNaturalJoin(left, right sql.Node) *NaturalJoin
NewNaturalJoin returns a new NaturalJoin node.
func (NaturalJoin) Resolved ¶
func (NaturalJoin) Resolved() bool
Resolved implements the Node interface.
func (NaturalJoin) Schema ¶
func (NaturalJoin) Schema() sql.Schema
Schema implements the Node interface.
func (NaturalJoin) String ¶
func (j NaturalJoin) String() string
func (*NaturalJoin) WithChildren ¶
WithChildren implements the Node interface.
type NullOrdering ¶
type NullOrdering byte
NullOrdering represents how to order based on null values.
const ( // NullsFirst puts the null values before any other values. NullsFirst NullOrdering = iota // NullsLast puts the null values after all other values. NullsLast NullOrdering = 2 )
type Offset ¶
Offset is a node that skips the first N rows.
type OrderedDistinct ¶
type OrderedDistinct struct {
UnaryNode
}
OrderedDistinct is a Distinct node optimized for sorted row sets. It's 2 orders of magnitude faster and uses 2 orders of magnitude less memory.
func NewOrderedDistinct ¶
func NewOrderedDistinct(child sql.Node) *OrderedDistinct
NewOrderedDistinct creates a new OrderedDistinct node.
func (*OrderedDistinct) Resolved ¶
func (d *OrderedDistinct) Resolved() bool
Resolved implements the Resolvable interface.
func (OrderedDistinct) String ¶
func (d OrderedDistinct) String() string
func (*OrderedDistinct) WithChildren ¶
WithChildren implements the Node interface.
type ProcessIndexableTable ¶
type ProcessIndexableTable struct { sql.DriverIndexableTable OnPartitionDone NamedNotifyFunc OnPartitionStart NamedNotifyFunc OnRowNext NamedNotifyFunc }
ProcessIndexableTable is a wrapper for sql.Tables inside a query process that support indexing. It notifies the process manager about the status of a query when a partition is processed.
func NewProcessIndexableTable ¶
func NewProcessIndexableTable(t sql.DriverIndexableTable, onPartitionDone, onPartitionStart, OnRowNext NamedNotifyFunc) *ProcessIndexableTable
NewProcessIndexableTable returns a new ProcessIndexableTable.
func (*ProcessIndexableTable) IndexKeyValues ¶
func (t *ProcessIndexableTable) IndexKeyValues( ctx *sql.Context, columns []string, ) (sql.PartitionIndexKeyValueIter, error)
IndexKeyValues implements the sql.IndexableTable interface.
func (*ProcessIndexableTable) PartitionRows ¶
func (t *ProcessIndexableTable) PartitionRows(ctx *sql.Context, p sql.Partition) (sql.RowIter, error)
PartitionRows implements the sql.Table interface.
func (*ProcessIndexableTable) Underlying ¶
func (t *ProcessIndexableTable) Underlying() sql.Table
Underlying implements sql.TableWrapper interface.
type ProcessTable ¶
type ProcessTable struct { sql.Table OnPartitionDone NamedNotifyFunc OnPartitionStart NamedNotifyFunc OnRowNext NamedNotifyFunc }
ProcessTable is a wrapper for sql.Tables inside a query process. It notifies the process manager about the status of a query when a partition is processed.
func NewProcessTable ¶
func NewProcessTable(t sql.Table, onPartitionDone, onPartitionStart, OnRowNext NamedNotifyFunc) *ProcessTable
NewProcessTable returns a new ProcessTable.
func (*ProcessTable) PartitionRows ¶
PartitionRows implements the sql.Table interface.
func (*ProcessTable) Underlying ¶
func (t *ProcessTable) Underlying() sql.Table
Underlying implements sql.TableWrapper interface.
type Project ¶
type Project struct { UnaryNode // Expression projected. Projections []sql.Expression }
Project is a projection of certain expression from the children node.
func NewProject ¶
func NewProject(expressions []sql.Expression, child sql.Node) *Project
NewProject creates a new projection.
func (*Project) Expressions ¶
func (p *Project) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*Project) WithChildren ¶
WithChildren implements the Node interface.
func (*Project) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type QueryProcess ¶
type QueryProcess struct { UnaryNode Notify NotifyFunc }
QueryProcess represents a running query process node. It will use a callback to notify when it has finished running.
func NewQueryProcess ¶
func NewQueryProcess(node sql.Node, notify NotifyFunc) *QueryProcess
NewQueryProcess creates a new QueryProcess node.
func (*QueryProcess) String ¶
func (p *QueryProcess) String() string
func (*QueryProcess) WithChildren ¶
WithChildren implements the Node interface.
type RenameColumn ¶
type RenameColumn struct {
// contains filtered or unexported fields
}
func NewRenameColumn ¶
func (*RenameColumn) Resolved ¶
func (c *RenameColumn) Resolved() bool
Resolved implements the Resolvable interface.
func (*RenameColumn) String ¶
func (r *RenameColumn) String() string
func (*RenameColumn) WithChildren ¶
func (*RenameColumn) WithDatabase ¶
type RenameTable ¶
type RenameTable struct {
// contains filtered or unexported fields
}
func NewRenameTable ¶
func NewRenameTable(db sql.Database, oldNames, newNames []string) *RenameTable
Creates a new RenameTable node
func (*RenameTable) Resolved ¶
func (c *RenameTable) Resolved() bool
Resolved implements the Resolvable interface.
func (*RenameTable) String ¶
func (r *RenameTable) String() string
func (*RenameTable) WithChildren ¶
func (*RenameTable) WithDatabase ¶
type ResolvedTable ¶
ResolvedTable represents a resolved SQL Table.
func NewResolvedTable ¶
func NewResolvedTable(table sql.Table) *ResolvedTable
NewResolvedTable creates a new instance of ResolvedTable.
func (*ResolvedTable) Children ¶
func (*ResolvedTable) Children() []sql.Node
Children implements the Node interface.
func (*ResolvedTable) Resolved ¶
func (*ResolvedTable) Resolved() bool
Resolved implements the Resolvable interface.
func (*ResolvedTable) WithChildren ¶
WithChildren implements the Node interface.
type RightJoin ¶
type RightJoin struct { BinaryNode Cond sql.Expression }
RightJoin is a left join between two tables.
func NewRightJoin ¶
func NewRightJoin(left, right sql.Node, cond sql.Expression) *RightJoin
NewRightJoin creates a new right join node from two tables.
func (*RightJoin) Expressions ¶
func (j *RightJoin) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*RightJoin) WithChildren ¶
WithChildren implements the Node interface.
func (*RightJoin) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type Rollback ¶
type Rollback struct{}
Rollback undoes the changes performed in a transaction. This is provided just for compatibility with SQL clients and is a no-op.
type Set ¶
type Set struct {
Variables []SetVariable
}
Set configuration variables. Right now, only session variables are supported.
func (*Set) Expressions ¶
func (s *Set) Expressions() []sql.Expression
Expressions implements the sql.Expressioner interface.
func (*Set) WithChildren ¶
WithChildren implements the Node interface.
func (*Set) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type SetVariable ¶
type SetVariable struct { Name string Value sql.Expression }
SetVariable is a key-value pair to represent the value that will be set on a variable.
type ShowColumns ¶
ShowColumns shows the columns details of a table.
func NewShowColumns ¶
func NewShowColumns(full bool, child sql.Node) *ShowColumns
NewShowColumns creates a new ShowColumns node.
func (*ShowColumns) Schema ¶
func (s *ShowColumns) Schema() sql.Schema
Schema implements the sql.Node interface.
func (*ShowColumns) String ¶
func (s *ShowColumns) String() string
func (*ShowColumns) WithChildren ¶
WithChildren implements the Node interface.
type ShowCreateDatabase ¶
type ShowCreateDatabase struct { IfNotExists bool // contains filtered or unexported fields }
ShowCreateDatabase returns the SQL for creating a database.
func NewShowCreateDatabase ¶
func NewShowCreateDatabase(db sql.Database, ifNotExists bool) *ShowCreateDatabase
NewShowCreateDatabase creates a new ShowCreateDatabase node.
func (*ShowCreateDatabase) Children ¶
func (s *ShowCreateDatabase) Children() []sql.Node
Children implements the sql.Node interface.
func (*ShowCreateDatabase) Database ¶
func (s *ShowCreateDatabase) Database() sql.Database
Database implements the sql.Databaser interface.
func (*ShowCreateDatabase) Resolved ¶
func (s *ShowCreateDatabase) Resolved() bool
Resolved implements the sql.Node interface.
func (*ShowCreateDatabase) Schema ¶
func (s *ShowCreateDatabase) Schema() sql.Schema
Schema implements the sql.Node interface.
func (*ShowCreateDatabase) String ¶
func (s *ShowCreateDatabase) String() string
func (*ShowCreateDatabase) WithChildren ¶
WithChildren implements the Node interface.
func (*ShowCreateDatabase) WithDatabase ¶
WithDatabase implements the sql.Databaser interface.
type ShowCreateTable ¶
ShowCreateTable is a node that shows the CREATE TABLE statement for a table.
func (*ShowCreateTable) Resolved ¶
func (n *ShowCreateTable) Resolved() bool
Resolved implements the Resolvable interface.
func (*ShowCreateTable) Schema ¶
func (n *ShowCreateTable) Schema() sql.Schema
Schema implements the Node interface.
func (*ShowCreateTable) String ¶
func (n *ShowCreateTable) String() string
String implements the Stringer interface.
func (*ShowCreateTable) WithChildren ¶
type ShowDatabases ¶
ShowDatabases is a node that shows the databases.
func NewShowDatabases ¶
func NewShowDatabases() *ShowDatabases
NewShowDatabases creates a new show databases node.
func (*ShowDatabases) Children ¶
func (*ShowDatabases) Children() []sql.Node
Children implements the Node interface.
func (*ShowDatabases) Resolved ¶
func (p *ShowDatabases) Resolved() bool
Resolved implements the Resolvable interface.
func (*ShowDatabases) Schema ¶
func (*ShowDatabases) Schema() sql.Schema
Schema implements the Node interface.
func (ShowDatabases) String ¶
func (p ShowDatabases) String() string
func (*ShowDatabases) WithChildren ¶
WithChildren implements the Node interface.
type ShowIndexes ¶
type ShowIndexes struct { Table string Registry *sql.IndexRegistry // contains filtered or unexported fields }
ShowIndexes is a node that shows the indexes on a table.
func (*ShowIndexes) Children ¶
func (n *ShowIndexes) Children() []sql.Node
Children implements the Node interface.
func (*ShowIndexes) Database ¶
func (n *ShowIndexes) Database() sql.Database
Database implements the sql.Databaser interface.
func (*ShowIndexes) Resolved ¶
func (n *ShowIndexes) Resolved() bool
Resolved implements the Resolvable interface.
func (*ShowIndexes) Schema ¶
func (n *ShowIndexes) Schema() sql.Schema
Schema implements the Node interface.
func (*ShowIndexes) String ¶
func (n *ShowIndexes) String() string
String implements the Stringer interface.
func (*ShowIndexes) WithChildren ¶
WithChildren implements the Node interface.
func (*ShowIndexes) WithDatabase ¶
WithDatabase implements the sql.Databaser interface.
type ShowProcessList ¶
type ShowProcessList struct { Database string *sql.ProcessList }
ShowProcessList shows a list of all current running processes.
func NewShowProcessList ¶
func NewShowProcessList() *ShowProcessList
NewShowProcessList creates a new ProcessList node.
func (*ShowProcessList) Children ¶
func (p *ShowProcessList) Children() []sql.Node
Children implements the Node interface.
func (*ShowProcessList) Resolved ¶
func (p *ShowProcessList) Resolved() bool
Resolved implements the Node interface.
func (*ShowProcessList) Schema ¶
func (p *ShowProcessList) Schema() sql.Schema
Schema implements the Node interface.
func (*ShowProcessList) String ¶
func (p *ShowProcessList) String() string
func (*ShowProcessList) WithChildren ¶
WithChildren implements the Node interface.
type ShowTableStatus ¶
ShowTableStatus returns the status of the tables in the databases.
func NewShowTableStatus ¶
func NewShowTableStatus(dbs ...string) *ShowTableStatus
NewShowTableStatus creates a new ShowTableStatus node.
func (*ShowTableStatus) Children ¶
func (s *ShowTableStatus) Children() []sql.Node
Children implements the sql.Node interface.
func (*ShowTableStatus) Resolved ¶
func (s *ShowTableStatus) Resolved() bool
Resolved implements the sql.Node interface.
func (*ShowTableStatus) Schema ¶
func (s *ShowTableStatus) Schema() sql.Schema
Schema implements the sql.Node interface.
func (*ShowTableStatus) String ¶
func (s *ShowTableStatus) String() string
func (*ShowTableStatus) WithChildren ¶
WithChildren implements the Node interface.
type ShowTables ¶
type ShowTables struct { Full bool // contains filtered or unexported fields }
ShowTables is a node that shows the database tables.
func NewShowTables ¶
func NewShowTables(database sql.Database, full bool) *ShowTables
NewShowTables creates a new show tables node given a database.
func (*ShowTables) Children ¶
func (*ShowTables) Children() []sql.Node
Children implements the Node interface.
func (*ShowTables) Database ¶
func (p *ShowTables) Database() sql.Database
Database implements the sql.Databaser interface.
func (*ShowTables) Resolved ¶
func (p *ShowTables) Resolved() bool
Resolved implements the Resolvable interface.
func (*ShowTables) Schema ¶
func (p *ShowTables) Schema() sql.Schema
Schema implements the Node interface.
func (ShowTables) String ¶
func (p ShowTables) String() string
func (*ShowTables) WithChildren ¶
WithChildren implements the Node interface.
func (*ShowTables) WithDatabase ¶
WithDatabase implements the sql.Databaser interface.
type ShowVariables ¶
type ShowVariables struct {
// contains filtered or unexported fields
}
ShowVariables is a node that shows the global and session variables
func NewShowVariables ¶
func NewShowVariables(config map[string]sql.TypedValue, like string) *ShowVariables
NewShowVariables returns a new ShowVariables reference. config is a variables lookup table like is a "like pattern". If like is an empty string it will return all variables.
func (*ShowVariables) Children ¶
func (*ShowVariables) Children() []sql.Node
Children implements sql.Node interface. The function always returns nil.
func (*ShowVariables) Resolved ¶
func (sv *ShowVariables) Resolved() bool
Resolved implements sql.Node interface. The function always returns true.
func (*ShowVariables) RowIter ¶
RowIter implements the sql.Node interface. The function returns an iterator for filtered variables (based on like pattern)
func (*ShowVariables) Schema ¶
func (*ShowVariables) Schema() sql.Schema
Schema returns a new Schema reference for "SHOW VARIABLES" query.
func (*ShowVariables) String ¶
func (sv *ShowVariables) String() string
String implements the Stringer interface.
func (*ShowVariables) WithChildren ¶
WithChildren implements the Node interface.
type ShowWarnings ¶
ShowWarnings is a node that shows the session warnings
func (ShowWarnings) Children ¶
func (ShowWarnings) Children() []sql.Node
Children implements sql.Node interface. The function always returns nil.
func (ShowWarnings) Resolved ¶
func (ShowWarnings) Resolved() bool
Resolved implements sql.Node interface. The function always returns true.
func (ShowWarnings) RowIter ¶
RowIter implements the sql.Node interface. The function returns an iterator for warnings (considering offset and counter)
func (ShowWarnings) Schema ¶
func (ShowWarnings) Schema() sql.Schema
Schema returns a new Schema reference for "SHOW VARIABLES" query.
func (ShowWarnings) String ¶
func (ShowWarnings) String() string
String implements the Stringer interface.
func (ShowWarnings) WithChildren ¶
WithChildren implements the Node interface.
type SingleDropView ¶
type SingleDropView struct {
// contains filtered or unexported fields
}
func NewSingleDropView ¶
func NewSingleDropView( database sql.Database, viewName string, ) *SingleDropView
NewSingleDropView creates a SingleDropView.
func (*SingleDropView) Children ¶
func (dv *SingleDropView) Children() []sql.Node
Children implements the Node interface. It always returns nil.
func (*SingleDropView) Database ¶
func (dv *SingleDropView) Database() sql.Database
Database implements the Databaser interfacee. It returns the node's database.
func (*SingleDropView) Resolved ¶
func (dv *SingleDropView) Resolved() bool
Resolved implements the Node interface. This node is resolved if and only if its database is resolved.
func (*SingleDropView) RowIter ¶
RowIter implements the Node interface. It always returns an empty iterator.
func (*SingleDropView) Schema ¶
func (dv *SingleDropView) Schema() sql.Schema
Schema implements the Node interface. It always returns nil.
func (*SingleDropView) String ¶
func (dv *SingleDropView) String() string
String implements the fmt.Stringer interface, using sql.TreePrinter to generate the string.
func (*SingleDropView) WithChildren ¶
WithChildren implements the Node interface. It only succeeds if the length of the specified children equals 0.
func (*SingleDropView) WithDatabase ¶
Database implements the Databaser interface, and it returns a copy of this node with the specified database.
type Sort ¶
Sort is the sort node.
func (*Sort) Expressions ¶
func (s *Sort) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*Sort) WithChildren ¶
WithChildren implements the Node interface.
func (*Sort) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type SortField ¶
type SortField struct { // Column to order by. Column sql.Expression // Order type. Order SortOrder // NullOrdering defining how nulls will be ordered. NullOrdering NullOrdering }
SortField is a field by which the query will be sorted.
type SortOrder ¶
type SortOrder byte
SortOrder represents the order of the sort (ascending or descending).
type SubqueryAlias ¶
type SubqueryAlias struct { UnaryNode TextDefinition string // contains filtered or unexported fields }
SubqueryAlias is a node that gives a subquery a name.
func NewSubqueryAlias ¶
func NewSubqueryAlias(name, textDefinition string, node sql.Node) *SubqueryAlias
NewSubqueryAlias creates a new SubqueryAlias node.
func (*SubqueryAlias) AsView ¶
func (n *SubqueryAlias) AsView() sql.View
Returns the view wrapper for this subquery
func (*SubqueryAlias) Name ¶
func (n *SubqueryAlias) Name() string
Name implements the Table interface.
func (*SubqueryAlias) Opaque ¶
func (n *SubqueryAlias) Opaque() bool
Opaque implements the OpaqueNode interface.
func (*SubqueryAlias) Schema ¶
func (n *SubqueryAlias) Schema() sql.Schema
Schema implements the Node interface.
func (SubqueryAlias) String ¶
func (n SubqueryAlias) String() string
func (*SubqueryAlias) WithChildren ¶
WithChildren implements the Node interface.
type TableAlias ¶
type TableAlias struct { *UnaryNode // contains filtered or unexported fields }
TableAlias is a node that acts as a table with a given name.
func NewTableAlias ¶
func NewTableAlias(name string, node sql.Node) *TableAlias
NewTableAlias returns a new Table alias node.
func (*TableAlias) Name ¶
func (t *TableAlias) Name() string
Name implements the Nameable interface.
func (*TableAlias) Schema ¶
func (t *TableAlias) Schema() sql.Schema
Schema implements the Node interface. TableAlias alters the schema of its child element to rename the source of columns to the alias.
func (TableAlias) String ¶
func (t TableAlias) String() string
func (*TableAlias) WithChildren ¶
WithChildren implements the Node interface.
type UnaryNode ¶
UnaryNode is a node that has only one child.
type Union ¶
type Union struct {
BinaryNode
}
Union is a node that returns everything in Left and then everything in Right
type UnlockTables ¶
UnlockTables will release all locks for the current session.
func NewUnlockTables ¶
func NewUnlockTables() *UnlockTables
NewUnlockTables returns a new UnlockTables node.
func (*UnlockTables) Children ¶
func (t *UnlockTables) Children() []sql.Node
Children implements the sql.Node interface.
func (*UnlockTables) Resolved ¶
func (t *UnlockTables) Resolved() bool
Resolved implements the sql.Node interface.
func (*UnlockTables) Schema ¶
func (t *UnlockTables) Schema() sql.Schema
Schema implements the sql.Node interface.
func (*UnlockTables) String ¶
func (t *UnlockTables) String() string
func (*UnlockTables) WithChildren ¶
WithChildren implements the Node interface.
type UnresolvedTable ¶
type UnresolvedTable struct { Database string AsOf sql.Expression // contains filtered or unexported fields }
UnresolvedTable is a table that has not been resolved yet but whose name is known.
func NewUnresolvedTable ¶
func NewUnresolvedTable(name, db string) *UnresolvedTable
NewUnresolvedTable creates a new Unresolved table.
func NewUnresolvedTableAsOf ¶
func NewUnresolvedTableAsOf(name, db string, asOf sql.Expression) *UnresolvedTable
NewUnresolvedTableAsOf creates a new Unresolved table with an AS OF expression.
func (*UnresolvedTable) Children ¶
func (*UnresolvedTable) Children() []sql.Node
Children implements the Node interface.
func (*UnresolvedTable) Name ¶
func (t *UnresolvedTable) Name() string
Name implements the Nameable interface.
func (*UnresolvedTable) Resolved ¶
func (*UnresolvedTable) Resolved() bool
Resolved implements the Resolvable interface.
func (*UnresolvedTable) Schema ¶
func (*UnresolvedTable) Schema() sql.Schema
Schema implements the Node interface.
func (UnresolvedTable) String ¶
func (t UnresolvedTable) String() string
func (*UnresolvedTable) WithAsOf ¶
func (t *UnresolvedTable) WithAsOf(asOf sql.Expression) (*UnresolvedTable, error)
WithAsOf returns a copy of this unresolved table with its AsOf field set to the given value. Analagous to WithChildren. This type is the only Node that can take an AS OF expression, so this isn't an interface.
func (*UnresolvedTable) WithChildren ¶
WithChildren implements the Node interface.
func (*UnresolvedTable) WithDatabase ¶
func (t *UnresolvedTable) WithDatabase(database string) (*UnresolvedTable, error)
WithDatabase returns a copy of this unresolved table with its Database field set to the given value. Analagous to WithChildren.
type Update ¶
type Update struct { sql.Node UpdateExprs []sql.Expression }
Update is a node for updating rows on tables.
func NewUpdate ¶
func NewUpdate(n sql.Node, updateExprs []sql.Expression) *Update
NewUpdate creates an Update node.
func (*Update) Expressions ¶
func (p *Update) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*Update) WithChildren ¶
WithChildren implements the Node interface.
func (*Update) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type UpdateInfo ¶
type UpdateInfo struct {
Matched, Updated, Warnings int
}
UpdateInfo is the Info for OKResults returned by Update nodes.
type Use ¶
Use changes the current database.
func (*Use) WithChildren ¶
WithChildren implements the Node interface.
type Values ¶
type Values struct {
ExpressionTuples [][]sql.Expression
}
Values represents a set of tuples of expressions.
func NewValues ¶
func NewValues(tuples [][]sql.Expression) *Values
NewValues creates a Values node with the given tuples.
func (*Values) Expressions ¶
func (p *Values) Expressions() []sql.Expression
Expressions implements the Expressioner interface.
func (*Values) WithChildren ¶
WithChildren implements the Node interface.
func (*Values) WithExpressions ¶
WithExpressions implements the Expressioner interface.
type Visitor ¶
type Visitor interface { // Visit method is invoked for each node encountered by Walk. // If the result Visitor is not nul, Walk visits each of the children // of the node with that visitor, followed by a call of Visit(nil) // to the returned visitor. Visit(node sql.Node) Visitor }
Visitor visits nodes in the plan.
Source Files ¶
- alter_foreign_key.go
- alter_index.go
- common.go
- create_index.go
- create_view.go
- cross_join.go
- ddl.go
- delete.go
- describe.go
- distinct.go
- drop_index.go
- drop_view.go
- empty_table.go
- exchange.go
- filter.go
- generate.go
- group_by.go
- having.go
- indexed_join.go
- indexed_table_access.go
- insert.go
- join.go
- limit.go
- lock.go
- naturaljoin.go
- nothing.go
- offset.go
- process.go
- processlist.go
- project.go
- resolved_table.go
- set.go
- show_create_database.go
- show_create_table.go
- show_indexes.go
- show_tables.go
- showcolumns.go
- showdatabases.go
- showtablestatus.go
- showvariables.go
- showwarnings.go
- sort.go
- subqueryalias.go
- tablealias.go
- transaction.go
- transform.go
- union.go
- unresolved.go
- update.go
- use.go
- values.go
- walk.go