Documentation ¶
Index ¶
- Constants
- Variables
- func CompareV3AndGen4Errors(v3Err, gen4Err error) error
- func DBDDLRegister(name string, plugin DBDDLPlugin)
- func Exists(m Match, p Primitive) bool
- func GenericJoin(input any, f func(any) string) string
- func GraphViz(p Primitive) (*graphviz.Graph, error)
- func InsertVarName(col sqlparser.IdentifierCI, rowNum int) string
- type AggregateOpcode
- type AggregateParams
- type AlterVSchema
- func (cached *AlterVSchema) CachedSize(alloc bool) int64
- func (v *AlterVSchema) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable) (*sqltypes.Result, error)
- func (v *AlterVSchema) GetKeyspaceName() string
- func (v *AlterVSchema) GetTableName() string
- func (AlterVSchema) Inputs() []Primitive
- func (AlterVSchema) NeedsTransaction() bool
- func (v *AlterVSchema) RouteType() string
- func (v *AlterVSchema) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, ...) (*sqltypes.Result, error)
- func (v *AlterVSchema) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, ...) error
- type CheckCol
- type Concatenate
- func (cached *Concatenate) CachedSize(alloc bool) int64
- func (c *Concatenate) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (c *Concatenate) GetKeyspaceName() string
- func (c *Concatenate) GetTableName() string
- func (c *Concatenate) Inputs() []Primitive
- func (c *Concatenate) NeedsTransaction() bool
- func (c *Concatenate) RouteType() string
- func (c *Concatenate) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (c *Concatenate) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type DBDDL
- func (cached *DBDDL) CachedSize(alloc bool) int64
- func (c *DBDDL) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
- func (c *DBDDL) GetKeyspaceName() string
- func (c *DBDDL) GetTableName() string
- func (DBDDL) Inputs() []Primitive
- func (DBDDL) NeedsTransaction() bool
- func (c *DBDDL) RouteType() string
- func (c *DBDDL) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (c *DBDDL) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type DBDDLPlugin
- type DDL
- func (cached *DDL) CachedSize(alloc bool) int64
- func (ddl *DDL) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable) (*sqltypes.Result, error)
- func (ddl *DDL) GetKeyspaceName() string
- func (ddl *DDL) GetTableName() string
- func (DDL) Inputs() []Primitive
- func (DDL) NeedsTransaction() bool
- func (ddl *DDL) RouteType() string
- func (ddl *DDL) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, ...) (result *sqltypes.Result, err error)
- func (ddl *DDL) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, ...) error
- type DML
- type Delete
- func (cached *Delete) CachedSize(alloc bool) int64
- func (del *Delete) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
- func (Delete) Inputs() []Primitive
- func (Delete) NeedsTransaction() bool
- func (del *Delete) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (del *Delete) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Distinct
- func (cached *Distinct) CachedSize(alloc bool) int64
- func (d *Distinct) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (d *Distinct) GetKeyspaceName() string
- func (d *Distinct) GetTableName() string
- func (d *Distinct) Inputs() []Primitive
- func (d *Distinct) NeedsTransaction() bool
- func (d *Distinct) RouteType() string
- func (d *Distinct) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (d *Distinct) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type DistinctV3
- func (cached *DistinctV3) CachedSize(alloc bool) int64
- func (d *DistinctV3) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (d *DistinctV3) GetKeyspaceName() string
- func (d *DistinctV3) GetTableName() string
- func (d *DistinctV3) Inputs() []Primitive
- func (d *DistinctV3) NeedsTransaction() bool
- func (d *DistinctV3) RouteType() string
- func (d *DistinctV3) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (d *DistinctV3) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type ExecuteEntry
- type Filter
- func (cached *Filter) CachedSize(alloc bool) int64
- func (f *Filter) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (f *Filter) GetKeyspaceName() string
- func (f *Filter) GetTableName() string
- func (f *Filter) Inputs() []Primitive
- func (Filter) NeedsTransaction() bool
- func (f *Filter) RouteType() string
- func (f *Filter) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (f *Filter) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Gen4CompareV3
- func (cached *Gen4CompareV3) CachedSize(alloc bool) int64
- func (gc *Gen4CompareV3) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (gc *Gen4CompareV3) GetGen4Primitive() Primitive
- func (gc *Gen4CompareV3) GetKeyspaceName() string
- func (gc *Gen4CompareV3) GetTableName() string
- func (gc *Gen4CompareV3) Inputs() []Primitive
- func (gc *Gen4CompareV3) NeedsTransaction() bool
- func (gc *Gen4CompareV3) RouteType() string
- func (gc *Gen4CompareV3) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (gc *Gen4CompareV3) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Gen4Comparer
- type Generate
- type GroupByParams
- type HashJoin
- func (cached *HashJoin) CachedSize(alloc bool) int64
- func (hj *HashJoin) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (hj *HashJoin) GetKeyspaceName() string
- func (hj *HashJoin) GetTableName() string
- func (hj *HashJoin) Inputs() []Primitive
- func (hj *HashJoin) NeedsTransaction() bool
- func (hj *HashJoin) RouteType() string
- func (hj *HashJoin) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (hj *HashJoin) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Insert
- func (cached *Insert) CachedSize(alloc bool) int64
- func (ins *Insert) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
- func (ins *Insert) GetKeyspaceName() string
- func (ins *Insert) GetTableName() string
- func (ins *Insert) Inputs() []Primitive
- func (Insert) NeedsTransaction() bool
- func (ins *Insert) RouteType() string
- func (ins *Insert) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (ins *Insert) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type InsertOpcode
- type Join
- func (cached *Join) CachedSize(alloc bool) int64
- func (jn *Join) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (jn *Join) GetKeyspaceName() string
- func (jn *Join) GetTableName() string
- func (jn *Join) Inputs() []Primitive
- func (jn *Join) NeedsTransaction() bool
- func (jn *Join) RouteType() string
- func (jn *Join) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (jn *Join) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type JoinOpcode
- type Limit
- func (cached *Limit) CachedSize(alloc bool) int64
- func (l *Limit) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (l *Limit) GetKeyspaceName() string
- func (l *Limit) GetTableName() string
- func (l *Limit) Inputs() []Primitive
- func (l *Limit) NeedsTransaction() bool
- func (l *Limit) RouteType() string
- func (l *Limit) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (l *Limit) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Lock
- func (cached *Lock) CachedSize(alloc bool) int64
- func (l *Lock) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (l *Lock) GetKeyspaceName() string
- func (l *Lock) GetTableName() string
- func (Lock) Inputs() []Primitive
- func (Lock) NeedsTransaction() bool
- func (l *Lock) RouteType() string
- func (l *Lock) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (l *Lock) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type LockFunc
- type MStream
- func (cached *MStream) CachedSize(alloc bool) int64
- func (m *MStream) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (m *MStream) GetKeyspaceName() string
- func (m *MStream) GetTableName() string
- func (MStream) Inputs() []Primitive
- func (MStream) NeedsTransaction() bool
- func (m *MStream) RouteType() string
- func (m *MStream) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (m *MStream) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Match
- type MemorySort
- func (cached *MemorySort) CachedSize(alloc bool) int64
- func (ms *MemorySort) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (ms *MemorySort) GetKeyspaceName() string
- func (ms *MemorySort) GetTableName() string
- func (ms *MemorySort) Inputs() []Primitive
- func (ms *MemorySort) NeedsTransaction() bool
- func (ms *MemorySort) RouteType() string
- func (ms *MemorySort) SetTruncateColumnCount(count int)
- func (ms *MemorySort) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (ms *MemorySort) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type MergeSort
- func (cached *MergeSort) CachedSize(alloc bool) int64
- func (ms *MergeSort) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (ms *MergeSort) GetKeyspaceName() string
- func (ms *MergeSort) GetTableName() string
- func (MergeSort) Inputs() []Primitive
- func (MergeSort) NeedsTransaction() bool
- func (ms *MergeSort) RouteType() string
- func (ms *MergeSort) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (ms *MergeSort) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type OnlineDDL
- func (cached *OnlineDDL) CachedSize(alloc bool) int64
- func (v *OnlineDDL) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (v *OnlineDDL) GetKeyspaceName() string
- func (v *OnlineDDL) GetTableName() string
- func (OnlineDDL) Inputs() []Primitive
- func (OnlineDDL) NeedsTransaction() bool
- func (v *OnlineDDL) RouteType() string
- func (v *OnlineDDL) TryExecute(ctx context.Context, vcursor VCursor, ...) (result *sqltypes.Result, err error)
- func (v *OnlineDDL) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Opcode
- type OrderByParams
- type OrderedAggregate
- func (cached *OrderedAggregate) CachedSize(alloc bool) int64
- func (oa *OrderedAggregate) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (oa *OrderedAggregate) GetKeyspaceName() string
- func (oa *OrderedAggregate) GetTableName() string
- func (oa *OrderedAggregate) Inputs() []Primitive
- func (oa *OrderedAggregate) NeedsTransaction() bool
- func (oa *OrderedAggregate) RouteType() string
- func (oa *OrderedAggregate) SetTruncateColumnCount(count int)
- func (oa *OrderedAggregate) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (oa *OrderedAggregate) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Plan
- type Primitive
- type PrimitiveDescription
- type Projection
- func (cached *Projection) CachedSize(alloc bool) int64
- func (p *Projection) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (p *Projection) GetKeyspaceName() string
- func (p *Projection) GetTableName() string
- func (p *Projection) Inputs() []Primitive
- func (Projection) NeedsTransaction() bool
- func (p *Projection) RouteType() string
- func (p *Projection) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (p *Projection) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type PulloutOpcode
- type PulloutSubquery
- func (cached *PulloutSubquery) CachedSize(alloc bool) int64
- func (ps *PulloutSubquery) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (ps *PulloutSubquery) GetKeyspaceName() string
- func (ps *PulloutSubquery) GetTableName() string
- func (ps *PulloutSubquery) Inputs() []Primitive
- func (ps *PulloutSubquery) NeedsTransaction() bool
- func (ps *PulloutSubquery) RouteType() string
- func (ps *PulloutSubquery) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (ps *PulloutSubquery) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type RenameFields
- func (cached *RenameFields) CachedSize(alloc bool) int64
- func (r *RenameFields) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (r *RenameFields) GetKeyspaceName() string
- func (r *RenameFields) GetTableName() string
- func (r *RenameFields) Inputs() []Primitive
- func (RenameFields) NeedsTransaction() bool
- func (r *RenameFields) RouteType() string
- func (r *RenameFields) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (r *RenameFields) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type ReplaceVariables
- func (cached *ReplaceVariables) CachedSize(alloc bool) int64
- func (r *ReplaceVariables) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (r *ReplaceVariables) GetKeyspaceName() string
- func (r *ReplaceVariables) GetTableName() string
- func (r *ReplaceVariables) Inputs() []Primitive
- func (ReplaceVariables) NeedsTransaction() bool
- func (r *ReplaceVariables) RouteType() string
- func (r *ReplaceVariables) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (r *ReplaceVariables) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type RevertMigration
- func (cached *RevertMigration) CachedSize(alloc bool) int64
- func (v *RevertMigration) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (v *RevertMigration) GetKeyspaceName() string
- func (v *RevertMigration) GetTableName() string
- func (RevertMigration) Inputs() []Primitive
- func (RevertMigration) NeedsTransaction() bool
- func (v *RevertMigration) RouteType() string
- func (v *RevertMigration) TryExecute(ctx context.Context, vcursor VCursor, ...) (result *sqltypes.Result, err error)
- func (v *RevertMigration) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Route
- func (cached *Route) CachedSize(alloc bool) int64
- func (route *Route) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (route *Route) GetKeyspaceName() string
- func (route *Route) GetTableName() string
- func (Route) Inputs() []Primitive
- func (Route) NeedsTransaction() bool
- func (route *Route) RouteType() string
- func (route *Route) SetTruncateColumnCount(count int)
- func (route *Route) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (route *Route) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type RoutingParameters
- type Rows
- func (cached *Rows) CachedSize(alloc bool) int64
- func (r *Rows) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
- func (r *Rows) GetKeyspaceName() string
- func (r *Rows) GetTableName() string
- func (Rows) Inputs() []Primitive
- func (Rows) NeedsTransaction() bool
- func (r *Rows) RouteType() string
- func (r *Rows) TryExecute(context.Context, VCursor, map[string]*querypb.BindVariable, bool) (*sqltypes.Result, error)
- func (r *Rows) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type SQLCalcFoundRows
- func (cached *SQLCalcFoundRows) CachedSize(alloc bool) int64
- func (s SQLCalcFoundRows) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (s SQLCalcFoundRows) GetKeyspaceName() string
- func (s SQLCalcFoundRows) GetTableName() string
- func (s SQLCalcFoundRows) Inputs() []Primitive
- func (s SQLCalcFoundRows) NeedsTransaction() bool
- func (s SQLCalcFoundRows) RouteType() string
- func (s SQLCalcFoundRows) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (s SQLCalcFoundRows) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type ScalarAggregate
- func (cached *ScalarAggregate) CachedSize(alloc bool) int64
- func (sa *ScalarAggregate) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (sa *ScalarAggregate) GetKeyspaceName() string
- func (sa *ScalarAggregate) GetTableName() string
- func (sa *ScalarAggregate) Inputs() []Primitive
- func (sa *ScalarAggregate) NeedsTransaction() bool
- func (sa *ScalarAggregate) RouteType() string
- func (sa *ScalarAggregate) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (sa *ScalarAggregate) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type SemiJoin
- func (cached *SemiJoin) CachedSize(alloc bool) int64
- func (jn *SemiJoin) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (jn *SemiJoin) GetKeyspaceName() string
- func (jn *SemiJoin) GetTableName() string
- func (jn *SemiJoin) Inputs() []Primitive
- func (jn *SemiJoin) NeedsTransaction() bool
- func (jn *SemiJoin) RouteType() string
- func (jn *SemiJoin) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (jn *SemiJoin) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Send
- func (cached *Send) CachedSize(alloc bool) int64
- func (s *Send) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (s *Send) GetKeyspaceName() string
- func (s *Send) GetTableName() string
- func (Send) Inputs() []Primitive
- func (s *Send) NeedsTransaction() bool
- func (s *Send) RouteType() string
- func (s *Send) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (s *Send) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type SessionActions
- type SessionPrimitive
- func (cached *SessionPrimitive) CachedSize(alloc bool) int64
- func (s *SessionPrimitive) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (s *SessionPrimitive) GetKeyspaceName() string
- func (s *SessionPrimitive) GetTableName() string
- func (SessionPrimitive) Inputs() []Primitive
- func (SessionPrimitive) NeedsTransaction() bool
- func (s *SessionPrimitive) RouteType() string
- func (s *SessionPrimitive) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (s *SessionPrimitive) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type Set
- func (cached *Set) CachedSize(alloc bool) int64
- func (s *Set) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
- func (s *Set) GetKeyspaceName() string
- func (s *Set) GetTableName() string
- func (s *Set) Inputs() []Primitive
- func (Set) NeedsTransaction() bool
- func (s *Set) RouteType() string
- func (s *Set) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (s *Set) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type SetOp
- type ShowExec
- func (cached *ShowExec) CachedSize(alloc bool) int64
- func (s *ShowExec) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable) (*sqltypes.Result, error)
- func (s *ShowExec) GetKeyspaceName() string
- func (s *ShowExec) GetTableName() string
- func (ShowExec) Inputs() []Primitive
- func (ShowExec) NeedsTransaction() bool
- func (s *ShowExec) RouteType() string
- func (s *ShowExec) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, ...) (*sqltypes.Result, error)
- func (s *ShowExec) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, ...) error
- type SimpleProjection
- func (cached *SimpleProjection) CachedSize(alloc bool) int64
- func (sc *SimpleProjection) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (sc *SimpleProjection) GetKeyspaceName() string
- func (sc *SimpleProjection) GetTableName() string
- func (sc *SimpleProjection) Inputs() []Primitive
- func (sc *SimpleProjection) NeedsTransaction() bool
- func (sc *SimpleProjection) RouteType() string
- func (sc *SimpleProjection) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (sc *SimpleProjection) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type SingleRow
- func (s *SingleRow) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (s *SingleRow) GetKeyspaceName() string
- func (s *SingleRow) GetTableName() string
- func (SingleRow) Inputs() []Primitive
- func (SingleRow) NeedsTransaction() bool
- func (s *SingleRow) RouteType() string
- func (s *SingleRow) TryExecute(context.Context, VCursor, map[string]*querypb.BindVariable, bool) (*sqltypes.Result, error)
- func (s *SingleRow) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type StreamExecutor
- type SysVarCheckAndIgnore
- func (cached *SysVarCheckAndIgnore) CachedSize(alloc bool) int64
- func (svci *SysVarCheckAndIgnore) Execute(ctx context.Context, vcursor VCursor, env *evalengine.ExpressionEnv) error
- func (svci *SysVarCheckAndIgnore) MarshalJSON() ([]byte, error)
- func (svci *SysVarCheckAndIgnore) VariableName() string
- type SysVarIgnore
- type SysVarReservedConn
- type SysVarSetAware
- type Update
- func (cached *Update) CachedSize(alloc bool) int64
- func (upd *Update) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (Update) Inputs() []Primitive
- func (Update) NeedsTransaction() bool
- func (upd *Update) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (upd *Update) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type UpdateTarget
- func (cached *UpdateTarget) CachedSize(alloc bool) int64
- func (updTarget *UpdateTarget) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable) (*sqltypes.Result, error)
- func (updTarget *UpdateTarget) GetKeyspaceName() string
- func (updTarget *UpdateTarget) GetTableName() string
- func (UpdateTarget) Inputs() []Primitive
- func (UpdateTarget) NeedsTransaction() bool
- func (updTarget *UpdateTarget) RouteType() string
- func (updTarget *UpdateTarget) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, ...) (*sqltypes.Result, error)
- func (updTarget *UpdateTarget) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, ...) error
- type UserDefinedVariable
- type VCursor
- type VStream
- func (cached *VStream) CachedSize(alloc bool) int64
- func (v *VStream) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (v *VStream) GetKeyspaceName() string
- func (v *VStream) GetTableName() string
- func (VStream) Inputs() []Primitive
- func (VStream) NeedsTransaction() bool
- func (v *VStream) RouteType() string
- func (v *VStream) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (v *VStream) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type VTExplain
- func (cached *VTExplain) CachedSize(alloc bool) int64
- func (v *VTExplain) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (v *VTExplain) GetKeyspaceName() string
- func (v *VTExplain) GetTableName() string
- func (v *VTExplain) Inputs() []Primitive
- func (v *VTExplain) NeedsTransaction() bool
- func (v *VTExplain) RouteType() string
- func (v *VTExplain) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (v *VTExplain) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type VindexFunc
- func (cached *VindexFunc) CachedSize(alloc bool) int64
- func (vf *VindexFunc) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (vf *VindexFunc) GetKeyspaceName() string
- func (vf *VindexFunc) GetTableName() string
- func (VindexFunc) Inputs() []Primitive
- func (VindexFunc) NeedsTransaction() bool
- func (vf *VindexFunc) RouteType() string
- func (vf *VindexFunc) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (vf *VindexFunc) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type VindexLookup
- func (cached *VindexLookup) CachedSize(alloc bool) int64
- func (vr *VindexLookup) GetFields(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (vr *VindexLookup) GetKeyspaceName() string
- func (vr *VindexLookup) GetTableName() string
- func (vr *VindexLookup) Inputs() []Primitive
- func (vr *VindexLookup) NeedsTransaction() bool
- func (vr *VindexLookup) RouteType() string
- func (vr *VindexLookup) TryExecute(ctx context.Context, vcursor VCursor, ...) (*sqltypes.Result, error)
- func (vr *VindexLookup) TryStreamExecute(ctx context.Context, vcursor VCursor, ...) error
- type VindexOpcode
- type VindexValues
- type VitessMetadata
Constants ¶
const ( // InsertUnsharded is for routing an insert statement // to an unsharded keyspace. InsertUnsharded = InsertOpcode(iota) // InsertSharded is for routing an insert statement // to individual shards. Requires: A list of Values, one // for each ColVindex. If the table has an Autoinc column, // A Generate subplan must be created. InsertSharded // InsertSelect is for routing an insert statement // based on rows returned from the select statement. InsertSelect )
const ( InnerJoin = JoinOpcode(iota) LeftJoin )
This is the list of JoinOpcode values.
const ( AggregateUnassigned = AggregateOpcode(iota) AggregateCount AggregateSum AggregateMin AggregateMax AggregateCountDistinct AggregateSumDistinct AggregateGtid AggregateRandom AggregateCountStar )
These constants list the possible aggregate opcodes.
const ( // SeqVarName is a reserved bind var name for sequence values. SeqVarName = "__seq" // ListVarName is a reserved bind var name for list vars. // This is used for sending different IN clause values // to different shards. ListVarName = "__vals" )
const ( PulloutValue = PulloutOpcode(iota) PulloutIn PulloutNotIn PulloutExists )
This is the list of PulloutOpcode values.
const ( // Unsharded is for routing a statement // to an unsharded keyspace. Unsharded = Opcode(iota) // EqualUnique is for routing a query to a single shard. // Requires: A Unique Vindex, and a single Value. EqualUnique // Equal is for routing a query using a non-unique vindex. // Requires: A Vindex, and a single Value. Equal // IN is for routing a statement to a multi shard. // Requires: A Vindex, and a multi Values. IN // MultiEqual is used for routing queries with IN with tuple clause // Requires: A Vindex, and a multi Tuple Values. MultiEqual // SubShard is for when we are missing one or more columns from a composite vindex SubShard // Scatter is for routing a scattered statement. Scatter // Next is for fetching from a sequence. Next // DBA is used for routing DBA queries // e.g: Select * from information_schema.tables where schema_name = "a" DBA // Reference is for fetching from a reference table. Reference // None is used for queries which do not need routing None // ByDestination is to route explicitly to a given target destination. // Is used when the query explicitly sets a target destination: // in the clause e.g: UPDATE `keyspace[-]`.x1 SET foo=1 ByDestination )
This is the list of Opcode values.
const ( VindexNone = VindexOpcode(iota) VindexMap NumVindexCodes )
These are opcode values for VindexFunc.
const ( RowChangeInsert string = "+" RowChangeDelete string = "-" RowChangeUpdate string = "*" )
for demo purposes we prefix the row with a column with a single char +/*/- to indicate why the row changed + => insert, - => delete, * => update. This will be removed/improved as we iterate over this functionality
const (
IgnoreReserveTxn cxtKey = iota
)
const ShardName = "__vt_shard"
ShardName as key for setting shard name in bind variables map
Variables ¶
var ErrWrongNumberOfColumnsInSelect = vterrors.NewErrorf(vtrpcpb.Code_FAILED_PRECONDITION, vterrors.WrongNumberOfColumnsInSelect, "The used SELECT statements have a different number of columns")
ErrWrongNumberOfColumnsInSelect is an error
var ( // OpcodeType keeps track of the known output types for different aggregate functions OpcodeType = map[AggregateOpcode]querypb.Type{ AggregateCountDistinct: sqltypes.Int64, AggregateCount: sqltypes.Int64, AggregateCountStar: sqltypes.Int64, AggregateSumDistinct: sqltypes.Decimal, AggregateSum: sqltypes.Decimal, AggregateGtid: sqltypes.VarChar, } )
var SupportedAggregates = map[string]AggregateOpcode{ "count": AggregateCount, "sum": AggregateSum, "min": AggregateMin, "max": AggregateMax, "count_distinct": AggregateCountDistinct, "sum_distinct": AggregateSumDistinct, "vgtid": AggregateGtid, "count_star": AggregateCountStar, "random": AggregateRandom, }
SupportedAggregates maps the list of supported aggregate functions to their opcodes.
Functions ¶
func CompareV3AndGen4Errors ¶ added in v0.12.0
CompareV3AndGen4Errors compares the two errors, and if they don't match, produces an error
func DBDDLRegister ¶ added in v0.10.0
func DBDDLRegister(name string, plugin DBDDLPlugin)
DBDDLRegister registers a dbDDL plugin under the specified name. A duplicate plugin will generate a panic.
func Exists ¶
Exists traverses recursively down the Primitive tree structure, and returns true when Match returns true
func GenericJoin ¶
GenericJoin will iterate over arrays, slices or maps, and executes the f function to get a string representation of each element, and then uses strings.Join() join all the strings into a single one
func InsertVarName ¶
func InsertVarName(col sqlparser.IdentifierCI, rowNum int) string
InsertVarName returns a name for the bind var for this column. This method is used by the planner and engine, to make sure they both produce the same names
Types ¶
type AggregateOpcode ¶
type AggregateOpcode int
AggregateOpcode is the aggregation Opcode.
func (AggregateOpcode) MarshalJSON ¶
func (code AggregateOpcode) MarshalJSON() ([]byte, error)
MarshalJSON serializes the AggregateOpcode as a JSON string. It's used for testing and diagnostics.
func (AggregateOpcode) String ¶
func (code AggregateOpcode) String() string
type AggregateParams ¶
type AggregateParams struct { Opcode AggregateOpcode Col int // These are used only for distinct opcodes. KeyCol int WCol int WAssigned bool CollationID collations.ID Alias string `json:",omitempty"` Expr sqlparser.Expr Original *sqlparser.AliasedExpr // This is based on the function passed in the select expression and // not what we use to aggregate at the engine primitive level. OrigOpcode AggregateOpcode }
AggregateParams specify the parameters for each aggregation. It contains the opcode and input column number.
func (*AggregateParams) CachedSize ¶ added in v0.10.0
func (cached *AggregateParams) CachedSize(alloc bool) int64
func (*AggregateParams) String ¶
func (ap *AggregateParams) String() string
type AlterVSchema ¶
type AlterVSchema struct { Keyspace *vindexes.Keyspace AlterVschemaDDL *sqlparser.AlterVschema // contains filtered or unexported fields }
AlterVSchema operator applies changes to VSchema
func (*AlterVSchema) CachedSize ¶ added in v0.10.0
func (cached *AlterVSchema) CachedSize(alloc bool) int64
func (*AlterVSchema) GetFields ¶
func (v *AlterVSchema) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*AlterVSchema) GetKeyspaceName ¶
func (v *AlterVSchema) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*AlterVSchema) GetTableName ¶
func (v *AlterVSchema) GetTableName() string
GetTableName implements the Primitive interface
func (AlterVSchema) NeedsTransaction ¶
func (AlterVSchema) NeedsTransaction() bool
func (*AlterVSchema) RouteType ¶
func (v *AlterVSchema) RouteType() string
RouteType implements the Primitive interface
func (*AlterVSchema) TryExecute ¶ added in v0.12.0
func (v *AlterVSchema) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*AlterVSchema) TryStreamExecute ¶ added in v0.12.0
func (v *AlterVSchema) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type CheckCol ¶ added in v0.14.0
type CheckCol struct { Col int WsCol *int Collation collations.ID }
func (*CheckCol) CachedSize ¶ added in v0.14.0
func (CheckCol) SwitchToWeightString ¶ added in v0.14.0
SwitchToWeightString returns a new CheckCol that works on the weight string column instead
type Concatenate ¶
type Concatenate struct { Sources []Primitive // These column offsets do not need to be typed checked - they usually contain weight_string() // columns that are not going to be returned to the user NoNeedToTypeCheck map[int]any }
Concatenate specified the parameter for concatenate primitive
func NewConcatenate ¶ added in v0.14.0
func NewConcatenate(Sources []Primitive, ignoreCols []int) *Concatenate
NewConcatenate creates a Concatenate primitive. The ignoreCols slice contains the offsets that don't need to have the same type between sources - weight_string() sometimes returns VARBINARY and sometimes VARCHAR
func (*Concatenate) CachedSize ¶ added in v0.10.0
func (cached *Concatenate) CachedSize(alloc bool) int64
func (*Concatenate) GetFields ¶
func (c *Concatenate) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (*Concatenate) GetKeyspaceName ¶
func (c *Concatenate) GetKeyspaceName() string
GetKeyspaceName specifies the Keyspace that this primitive routes to
func (*Concatenate) GetTableName ¶
func (c *Concatenate) GetTableName() string
GetTableName specifies the table that this primitive routes to.
func (*Concatenate) Inputs ¶
func (c *Concatenate) Inputs() []Primitive
Inputs returns the input primitives for this
func (*Concatenate) NeedsTransaction ¶
func (c *Concatenate) NeedsTransaction() bool
NeedsTransaction returns whether a transaction is needed for this primitive
func (*Concatenate) RouteType ¶
func (c *Concatenate) RouteType() string
RouteType returns a description of the query routing type used by the primitive
func (*Concatenate) TryExecute ¶ added in v0.12.0
func (c *Concatenate) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute performs a non-streaming exec.
func (*Concatenate) TryStreamExecute ¶ added in v0.12.0
func (c *Concatenate) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute performs a streaming exec.
type DBDDL ¶ added in v0.10.0
type DBDDL struct {
// contains filtered or unexported fields
}
DBDDL is just a container around custom database provisioning plugins The default behaviour is to just return an error
func NewDBDDL ¶ added in v0.10.0
NewDBDDL creates the engine primitive `create` will be true for CREATE, and false for DROP
func (*DBDDL) CachedSize ¶ added in v0.10.0
func (*DBDDL) GetFields ¶ added in v0.10.0
func (c *DBDDL) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*DBDDL) GetKeyspaceName ¶ added in v0.10.0
GetKeyspaceName implements the Primitive interface
func (*DBDDL) GetTableName ¶ added in v0.10.0
GetTableName implements the Primitive interface
func (DBDDL) Inputs ¶ added in v0.10.0
func (DBDDL) Inputs() []Primitive
Inputs implements no inputs
func (DBDDL) NeedsTransaction ¶ added in v0.10.0
func (DBDDL) NeedsTransaction() bool
type DBDDLPlugin ¶ added in v0.10.0
type DBDDLPlugin interface { CreateDatabase(ctx context.Context, name string) error DropDatabase(ctx context.Context, name string) error }
DBDDLPlugin is the interface that you need to implement to add a custom CREATE/DROP DATABASE handler
type DDL ¶ added in v0.9.0
type DDL struct { Keyspace *vindexes.Keyspace SQL string DDL sqlparser.DDLStatement NormalDDL *Send OnlineDDL *OnlineDDL DirectDDLEnabled bool OnlineDDLEnabled bool CreateTempTable bool // contains filtered or unexported fields }
DDL represents a DDL statement, either normal or online DDL
func (*DDL) CachedSize ¶ added in v0.10.0
func (*DDL) GetFields ¶ added in v0.9.0
func (ddl *DDL) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*DDL) GetKeyspaceName ¶ added in v0.9.0
GetKeyspaceName implements the Primitive interface
func (*DDL) GetTableName ¶ added in v0.9.0
GetTableName implements the Primitive interface
func (DDL) NeedsTransaction ¶ added in v0.9.0
func (DDL) NeedsTransaction() bool
type DML ¶
type DML struct { // Query specifies the query to be executed. Query string // KsidVindex is primary Vindex KsidVindex vindexes.Vindex // KsidLength is number of columns that represents KsidVindex KsidLength int // Table specifies the table for the update. Table []*vindexes.Table // OwnedVindexQuery is used for updating changes in lookup vindexes. OwnedVindexQuery string // Option to override the standard behavior and allow a multi-shard update // to use single round trip autocommit. MultiShardAutocommit bool // QueryTimeout contains the optional timeout (in milliseconds) to apply to this query QueryTimeout int // RoutingParameters parameters required for query routing. *RoutingParameters // contains filtered or unexported fields }
DML contains the common elements between Update and Delete plans
func (*DML) CachedSize ¶ added in v0.10.0
func (*DML) GetKeyspaceName ¶ added in v0.15.0
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*DML) GetSingleTable ¶ added in v0.15.0
GetSingleTable returns single table used in dml.
func (*DML) GetTableName ¶ added in v0.15.0
GetTableName specifies the table that this primitive routes to.
func (DML) NeedsTransaction ¶
func (DML) NeedsTransaction() bool
type Delete ¶
type Delete struct { *DML // contains filtered or unexported fields }
Delete represents the instructions to perform a delete.
func (*Delete) CachedSize ¶ added in v0.10.0
func (*Delete) GetFields ¶
func (del *Delete) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (Delete) NeedsTransaction ¶
func (Delete) NeedsTransaction() bool
type Distinct ¶ added in v0.9.0
Distinct Primitive is used to uniqueify results
func (*Distinct) CachedSize ¶ added in v0.10.0
func (*Distinct) GetFields ¶ added in v0.9.0
func (d *Distinct) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*Distinct) GetKeyspaceName ¶ added in v0.9.0
GetKeyspaceName implements the Primitive interface
func (*Distinct) GetTableName ¶ added in v0.9.0
GetTableName implements the Primitive interface
func (*Distinct) NeedsTransaction ¶ added in v0.9.0
NeedsTransaction implements the Primitive interface
type DistinctV3 ¶ added in v0.14.0
type DistinctV3 struct {
Source Primitive
}
Distinct Primitive is used to uniqueify results
func (*DistinctV3) CachedSize ¶ added in v0.14.0
func (cached *DistinctV3) CachedSize(alloc bool) int64
func (*DistinctV3) GetFields ¶ added in v0.14.0
func (d *DistinctV3) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*DistinctV3) GetKeyspaceName ¶ added in v0.14.0
func (d *DistinctV3) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*DistinctV3) GetTableName ¶ added in v0.14.0
func (d *DistinctV3) GetTableName() string
GetTableName implements the Primitive interface
func (*DistinctV3) Inputs ¶ added in v0.14.0
func (d *DistinctV3) Inputs() []Primitive
Inputs implements the Primitive interface
func (*DistinctV3) NeedsTransaction ¶ added in v0.14.0
func (d *DistinctV3) NeedsTransaction() bool
NeedsTransaction implements the Primitive interface
func (*DistinctV3) RouteType ¶ added in v0.14.0
func (d *DistinctV3) RouteType() string
RouteType implements the Primitive interface
func (*DistinctV3) TryExecute ¶ added in v0.14.0
func (d *DistinctV3) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*DistinctV3) TryStreamExecute ¶ added in v0.14.0
func (d *DistinctV3) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type ExecuteEntry ¶ added in v0.15.0
type ExecuteEntry struct { ID int Keyspace string Shard string TabletType topodatapb.TabletType Cell string Query string }
type Filter ¶ added in v0.13.0
type Filter struct { Predicate evalengine.Expr ASTPredicate sqlparser.Expr Input Primitive // contains filtered or unexported fields }
Filter is a primitive that performs the FILTER operation.
func (*Filter) CachedSize ¶ added in v0.13.0
func (*Filter) GetFields ¶ added in v0.13.0
func (f *Filter) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface.
func (*Filter) GetKeyspaceName ¶ added in v0.13.0
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*Filter) GetTableName ¶ added in v0.13.0
GetTableName specifies the table that this primitive routes to.
func (Filter) NeedsTransaction ¶ added in v0.13.0
func (Filter) NeedsTransaction() bool
func (*Filter) RouteType ¶ added in v0.13.0
RouteType returns a description of the query routing type used by the primitive
type Gen4CompareV3 ¶ added in v0.12.0
Gen4CompareV3 is a Primitive used to compare V3 and Gen4's plans.
func (*Gen4CompareV3) CachedSize ¶ added in v0.12.0
func (cached *Gen4CompareV3) CachedSize(alloc bool) int64
func (*Gen4CompareV3) GetFields ¶ added in v0.12.0
func (gc *Gen4CompareV3) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*Gen4CompareV3) GetGen4Primitive ¶ added in v0.12.0
func (gc *Gen4CompareV3) GetGen4Primitive() Primitive
GetGen4Primitive implements the Gen4Comparer interface
func (*Gen4CompareV3) GetKeyspaceName ¶ added in v0.12.0
func (gc *Gen4CompareV3) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*Gen4CompareV3) GetTableName ¶ added in v0.12.0
func (gc *Gen4CompareV3) GetTableName() string
GetTableName implements the Primitive interface
func (*Gen4CompareV3) Inputs ¶ added in v0.12.0
func (gc *Gen4CompareV3) Inputs() []Primitive
Inputs implements the Primitive interface
func (*Gen4CompareV3) NeedsTransaction ¶ added in v0.12.0
func (gc *Gen4CompareV3) NeedsTransaction() bool
NeedsTransaction implements the Primitive interface
func (*Gen4CompareV3) RouteType ¶ added in v0.12.0
func (gc *Gen4CompareV3) RouteType() string
RouteType implements the Primitive interface
func (*Gen4CompareV3) TryExecute ¶ added in v0.12.0
func (gc *Gen4CompareV3) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*Gen4CompareV3) TryStreamExecute ¶ added in v0.12.0
func (gc *Gen4CompareV3) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type Gen4Comparer ¶ added in v0.12.0
Gen4Comparer interfaces all Primitive used to compare Gen4 with other planners (V3, MySQL, ...).
type Generate ¶
type Generate struct { Keyspace *vindexes.Keyspace Query string // Values are the supplied values for the column, which // will be stored as a list within the expression. New // values will be generated based on how many were not // supplied (NULL). Values evalengine.Expr // Insert using Select, offset for auto increment column Offset int }
Generate represents the instruction to generate a value from a sequence.
func (*Generate) CachedSize ¶ added in v0.10.0
type GroupByParams ¶ added in v0.12.0
type GroupByParams struct { KeyCol int WeightStringCol int Expr sqlparser.Expr FromGroupBy bool CollationID collations.ID }
GroupByParams specify the grouping key to be used.
func (*GroupByParams) CachedSize ¶ added in v0.12.0
func (cached *GroupByParams) CachedSize(alloc bool) int64
func (GroupByParams) String ¶ added in v0.12.0
func (gbp GroupByParams) String() string
String returns a string. Used for plan descriptions
type HashJoin ¶ added in v0.13.0
type HashJoin struct { Opcode JoinOpcode // Left and Right are the LHS and RHS primitives // of the Join. They can be any primitive. Left, Right Primitive `json:",omitempty"` // Cols defines which columns from the left // or right results should be used to build the // return result. For results coming from the // left query, the index values go as -1, -2, etc. // For the right query, they're 1, 2, etc. // If Cols is {-1, -2, 1, 2}, it means that // the returned result will be {Left0, Left1, Right0, Right1}. Cols []int `json:",omitempty"` // The keys correspond to the column offset in the inputs where // the join columns can be found LHSKey, RHSKey int // The join condition. Used for plan descriptions ASTPred sqlparser.Expr // collation and type are used to hash the incoming values correctly Collation collations.ID ComparisonType querypb.Type }
HashJoin specifies the parameters for a join primitive Hash joins work by fetch all the input from the LHS, and building a hash map, known as the probe table, for this input. The key to the map is the hashcode of the value for column that we are joining by. Then the RHS is fetched, and we can check if the rows from the RHS matches any from the LHS. When they match by hash code, we double-check that we are not working with a false positive by comparing the values.
func (*HashJoin) CachedSize ¶ added in v0.13.0
func (*HashJoin) GetFields ¶ added in v0.13.0
func (hj *HashJoin) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*HashJoin) GetKeyspaceName ¶ added in v0.13.0
GetKeyspaceName implements the Primitive interface
func (*HashJoin) GetTableName ¶ added in v0.13.0
GetTableName implements the Primitive interface
func (*HashJoin) NeedsTransaction ¶ added in v0.13.0
NeedsTransaction implements the Primitive interface
type Insert ¶
type Insert struct { // Opcode is the execution opcode. Opcode InsertOpcode // Ignore is for INSERT IGNORE and INSERT...ON DUPLICATE KEY constructs // for sharded cases. Ignore bool // Keyspace specifies the keyspace to send the query to. Keyspace *vindexes.Keyspace // Query specifies the query to be executed. // For InsertSharded plans, this value is unused, // and Prefix, Mid and Suffix are used instead. Query string // VindexValues specifies values for all the vindex columns. // This is a three-dimensional data structure: // Insert.Values[i] represents the values to be inserted for the i'th colvindex (i < len(Insert.Table.ColumnVindexes)) // Insert.Values[i].Values[j] represents values for the j'th column of the given colVindex (j < len(colVindex[i].Columns) // Insert.Values[i].Values[j].Values[k] represents the value pulled from row k for that column: (k < len(ins.rows)) VindexValues [][][]evalengine.Expr // ColVindexes are the vindexes that will use the VindexValues ColVindexes []*vindexes.ColumnVindex // Table specifies the table for the insert. Table *vindexes.Table // Generate is only set for inserts where a sequence must be generated. Generate *Generate // Prefix, Mid and Suffix are for sharded insert plans. Prefix string Mid []string Suffix string // Option to override the standard behavior and allow a multi-shard insert // to use single round trip autocommit. // // This is a clear violation of the SQL semantics since it means the statement // is not atomic in the presence of PK conflicts on one shard and not another. // However some application use cases would prefer that the statement partially // succeed in order to get the performance benefits of autocommit. MultiShardAutocommit bool // QueryTimeout contains the optional timeout (in milliseconds) to apply to this query QueryTimeout int // VindexValueOffset stores the offset for each column in the ColumnVindex // that will appear in the result set of the select query. VindexValueOffset [][]int // Input is a select query plan to retrieve results for inserting data. Input Primitive `json:",omitempty"` // ForceNonStreaming is true when the insert table and select table are same. // This will avoid locking by the select table. ForceNonStreaming bool // contains filtered or unexported fields }
Insert represents the instructions to perform an insert operation.
func NewInsert ¶
func NewInsert( opcode InsertOpcode, ignore bool, keyspace *vindexes.Keyspace, vindexValues [][][]evalengine.Expr, table *vindexes.Table, prefix string, mid []string, suffix string, ) *Insert
NewInsert creates a new Insert.
func NewQueryInsert ¶
func NewQueryInsert(opcode InsertOpcode, keyspace *vindexes.Keyspace, query string) *Insert
NewQueryInsert creates an Insert with a query string.
func NewSimpleInsert ¶
func NewSimpleInsert(opcode InsertOpcode, table *vindexes.Table, keyspace *vindexes.Keyspace) *Insert
NewSimpleInsert creates an Insert for a Table.
func (*Insert) CachedSize ¶ added in v0.10.0
func (*Insert) GetFields ¶
func (ins *Insert) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (*Insert) GetKeyspaceName ¶
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*Insert) GetTableName ¶
GetTableName specifies the table that this primitive routes to.
func (Insert) NeedsTransaction ¶
func (Insert) NeedsTransaction() bool
func (*Insert) RouteType ¶
RouteType returns a description of the query routing type used by the primitive
type InsertOpcode ¶
type InsertOpcode int
InsertOpcode is a number representing the opcode for the Insert primitive.
func (InsertOpcode) MarshalJSON ¶
func (code InsertOpcode) MarshalJSON() ([]byte, error)
MarshalJSON serializes the InsertOpcode as a JSON string. It's used for testing and diagnostics.
type Join ¶
type Join struct { Opcode JoinOpcode // Left and Right are the LHS and RHS primitives // of the Join. They can be any primitive. Left, Right Primitive `json:",omitempty"` // Cols defines which columns from the left // or right results should be used to build the // return result. For results coming from the // left query, the index values go as -1, -2, etc. // For the right query, they're 1, 2, etc. // If Cols is {-1, -2, 1, 2}, it means that // the returned result will be {Left0, Left1, Right0, Right1}. Cols []int `json:",omitempty"` // Vars defines the list of joinVars that need to // be built from the LHS result before invoking // the RHS subqquery. Vars map[string]int `json:",omitempty"` }
Join specifies the parameters for a join primitive.
func (*Join) CachedSize ¶ added in v0.10.0
func (*Join) GetFields ¶
func (jn *Join) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (*Join) GetKeyspaceName ¶
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*Join) GetTableName ¶
GetTableName specifies the table that this primitive routes to.
func (*Join) NeedsTransaction ¶
NeedsTransaction implements the Primitive interface
func (*Join) RouteType ¶
RouteType returns a description of the query routing type used by the primitive
type JoinOpcode ¶
type JoinOpcode int
JoinOpcode is a number representing the opcode for the Join primitive.
func (JoinOpcode) MarshalJSON ¶
func (code JoinOpcode) MarshalJSON() ([]byte, error)
MarshalJSON serializes the JoinOpcode as a JSON string. It's used for testing and diagnostics.
func (JoinOpcode) String ¶
func (code JoinOpcode) String() string
type Limit ¶
type Limit struct { Count evalengine.Expr Offset evalengine.Expr Input Primitive }
Limit is a primitive that performs the LIMIT operation.
func (*Limit) CachedSize ¶ added in v0.10.0
func (*Limit) GetFields ¶
func (l *Limit) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface.
func (*Limit) GetKeyspaceName ¶
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*Limit) GetTableName ¶
GetTableName specifies the table that this primitive routes to.
func (*Limit) NeedsTransaction ¶
NeedsTransaction implements the Primitive interface.
func (*Limit) RouteType ¶
RouteType returns a description of the query routing type used by the primitive
type Lock ¶ added in v0.8.0
type Lock struct { // Keyspace specifies the keyspace to send the query to. Keyspace *vindexes.Keyspace // TargetDestination specifies an explicit target destination to send the query to. TargetDestination key.Destination FieldQuery string LockFunctions []*LockFunc // contains filtered or unexported fields }
Lock primitive will execute sql containing lock functions
func (*Lock) CachedSize ¶ added in v0.10.0
func (*Lock) GetFields ¶ added in v0.8.0
func (l *Lock) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields is part of the Primitive interface
func (*Lock) GetKeyspaceName ¶ added in v0.8.0
GetKeyspaceName is part of the Primitive interface
func (*Lock) GetTableName ¶ added in v0.8.0
GetTableName is part of the Primitive interface
func (Lock) NeedsTransaction ¶ added in v0.8.0
func (Lock) NeedsTransaction() bool
type LockFunc ¶ added in v0.14.0
type LockFunc struct { Typ *sqlparser.LockingFunc Name evalengine.Expr }
func (*LockFunc) CachedSize ¶ added in v0.14.0
type MStream ¶ added in v0.11.0
type MStream struct { // Keyspace specifies the keyspace to stream messages from Keyspace *vindexes.Keyspace // TargetDestination specifies an explicit target destination to stream messages from TargetDestination key.Destination // TableName specifies the table on which stream will be executed. TableName string // contains filtered or unexported fields }
MStream is an operator for message streaming from specific keyspace, destination
func (*MStream) CachedSize ¶ added in v0.11.0
func (*MStream) GetFields ¶ added in v0.11.0
func (m *MStream) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*MStream) GetKeyspaceName ¶ added in v0.11.0
GetKeyspaceName implements the Primitive interface
func (*MStream) GetTableName ¶ added in v0.11.0
GetTableName implements the Primitive interface
func (MStream) Inputs ¶ added in v0.11.0
func (MStream) Inputs() []Primitive
Inputs implements no inputs
func (MStream) NeedsTransaction ¶ added in v0.11.0
func (MStream) NeedsTransaction() bool
type MemorySort ¶
type MemorySort struct { UpperLimit evalengine.Expr OrderBy []OrderByParams Input Primitive // TruncateColumnCount specifies the number of columns to return // in the final result. Rest of the columns are truncated // from the result received. If 0, no truncation happens. TruncateColumnCount int `json:",omitempty"` }
MemorySort is a primitive that performs in-memory sorting.
func (*MemorySort) CachedSize ¶ added in v0.10.0
func (cached *MemorySort) CachedSize(alloc bool) int64
func (*MemorySort) GetFields ¶
func (ms *MemorySort) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields satisfies the Primitive interface.
func (*MemorySort) GetKeyspaceName ¶
func (ms *MemorySort) GetKeyspaceName() string
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*MemorySort) GetTableName ¶
func (ms *MemorySort) GetTableName() string
GetTableName specifies the table that this primitive routes to.
func (*MemorySort) Inputs ¶
func (ms *MemorySort) Inputs() []Primitive
Inputs returns the input to memory sort
func (*MemorySort) NeedsTransaction ¶
func (ms *MemorySort) NeedsTransaction() bool
NeedsTransaction implements the Primitive interface
func (*MemorySort) RouteType ¶
func (ms *MemorySort) RouteType() string
RouteType returns a description of the query routing type used by the primitive.
func (*MemorySort) SetTruncateColumnCount ¶
func (ms *MemorySort) SetTruncateColumnCount(count int)
SetTruncateColumnCount sets the truncate column count.
func (*MemorySort) TryExecute ¶ added in v0.12.0
func (ms *MemorySort) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute satisfies the Primitive interface.
func (*MemorySort) TryStreamExecute ¶ added in v0.12.0
func (ms *MemorySort) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute satisfies the Primitive interface.
type MergeSort ¶
type MergeSort struct { Primitives []StreamExecutor OrderBy []OrderByParams ScatterErrorsAsWarnings bool // contains filtered or unexported fields }
MergeSort performs a merge-sort of rows returned by each Input. This should only be used for StreamExecute. One row from each stream is added to the merge-sorter heap. Every time a value is pulled out of the heap, a new value is added to it from the stream that was the source of the value that was pulled out. Since the input streams are sorted the same way that the heap is sorted, this guarantees that the merged stream will also be sorted the same way. MergeSort only supports the StreamExecute function of a Primitive. So, it cannot be used like other Primitives in VTGate. However, it satisfies the Primitive API so that vdiff can use it. In that situation, only StreamExecute is used.
func (*MergeSort) CachedSize ¶ added in v0.10.0
func (*MergeSort) GetFields ¶
func (ms *MergeSort) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields is not supported.
func (*MergeSort) GetKeyspaceName ¶
GetKeyspaceName satisfies Primitive.
func (*MergeSort) GetTableName ¶
GetTableName satisfies Primitive.
func (MergeSort) NeedsTransaction ¶
func (MergeSort) NeedsTransaction() bool
type OnlineDDL ¶ added in v0.8.0
type OnlineDDL struct { Keyspace *vindexes.Keyspace DDL sqlparser.DDLStatement SQL string DDLStrategySetting *schema.DDLStrategySetting // TargetDestination specifies an explicit target destination to send the query to. TargetDestination key.Destination // contains filtered or unexported fields }
OnlineDDL represents the instructions to perform an online schema change via vtctld
func (*OnlineDDL) CachedSize ¶ added in v0.10.0
func (*OnlineDDL) GetFields ¶ added in v0.8.0
func (v *OnlineDDL) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*OnlineDDL) GetKeyspaceName ¶ added in v0.8.0
GetKeyspaceName implements the Primitive interface
func (*OnlineDDL) GetTableName ¶ added in v0.8.0
GetTableName implements the Primitive interface
func (OnlineDDL) Inputs ¶ added in v0.8.0
func (OnlineDDL) Inputs() []Primitive
Inputs implements no inputs
func (OnlineDDL) NeedsTransaction ¶ added in v0.8.0
func (OnlineDDL) NeedsTransaction() bool
type Opcode ¶ added in v0.13.0
type Opcode int
Opcode is a number representing the opcode for any engine primitve.
func (Opcode) IsSingleShard ¶ added in v0.13.2
func (Opcode) MarshalJSON ¶ added in v0.13.0
MarshalJSON serializes the Opcode as a JSON string. It's used for testing and diagnostics.
type OrderByParams ¶ added in v0.12.0
type OrderByParams struct { Col int // WeightStringCol is the weight_string column that will be used for sorting. // It is set to -1 if such a column is not added to the query WeightStringCol int Desc bool StarColFixedIndex int // v3 specific boolean. Used to also add weight strings originating from GroupBys to the Group by clause FromGroupBy bool // Collation ID for comparison using collation CollationID collations.ID }
OrderByParams specifies the parameters for ordering. This is used for merge-sorting scatter queries.
func (OrderByParams) String ¶ added in v0.12.0
func (obp OrderByParams) String() string
String returns a string. Used for plan descriptions
type OrderedAggregate ¶
type OrderedAggregate struct { // PreProcess is true if one of the aggregates needs preprocessing. PreProcess bool `json:",omitempty"` // Aggregates specifies the aggregation parameters for each // aggregation function: function opcode and input column number. Aggregates []*AggregateParams AggrOnEngine bool // GroupByKeys specifies the input values that must be used for // the aggregation key. GroupByKeys []*GroupByParams // TruncateColumnCount specifies the number of columns to return // in the final result. Rest of the columns are truncated // from the result received. If 0, no truncation happens. TruncateColumnCount int `json:",omitempty"` // Collations stores the collation ID per column offset. // It is used for grouping keys and distinct aggregate functions Collations map[int]collations.ID // Input is the primitive that will feed into this Primitive. Input Primitive }
OrderedAggregate is a primitive that expects the underlying primitive to feed results in an order sorted by the Keys. Rows with duplicate keys are aggregated using the Aggregate functions. The assumption is that the underlying primitive is a scatter select with pre-sorted rows.
func (*OrderedAggregate) CachedSize ¶ added in v0.10.0
func (cached *OrderedAggregate) CachedSize(alloc bool) int64
func (*OrderedAggregate) GetFields ¶
func (oa *OrderedAggregate) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields is a Primitive function.
func (*OrderedAggregate) GetKeyspaceName ¶
func (oa *OrderedAggregate) GetKeyspaceName() string
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*OrderedAggregate) GetTableName ¶
func (oa *OrderedAggregate) GetTableName() string
GetTableName specifies the table that this primitive routes to.
func (*OrderedAggregate) Inputs ¶
func (oa *OrderedAggregate) Inputs() []Primitive
Inputs returns the Primitive input for this aggregation
func (*OrderedAggregate) NeedsTransaction ¶
func (oa *OrderedAggregate) NeedsTransaction() bool
NeedsTransaction implements the Primitive interface
func (*OrderedAggregate) RouteType ¶
func (oa *OrderedAggregate) RouteType() string
RouteType returns a description of the query routing type used by the primitive
func (*OrderedAggregate) SetTruncateColumnCount ¶
func (oa *OrderedAggregate) SetTruncateColumnCount(count int)
SetTruncateColumnCount sets the truncate column count.
func (*OrderedAggregate) TryExecute ¶ added in v0.12.0
func (oa *OrderedAggregate) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute is a Primitive function.
func (*OrderedAggregate) TryStreamExecute ¶ added in v0.12.0
func (oa *OrderedAggregate) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute is a Primitive function.
type Plan ¶
type Plan struct { Type sqlparser.StatementType // The type of query we have Original string // Original is the original query. Instructions Primitive // Instructions contains the instructions needed to fulfil the query. BindVarNeeds *sqlparser.BindVarNeeds // Stores BindVars needed to be provided as part of expression rewriting Warnings []*query.QueryWarning // Warnings that need to be yielded every time this query runs TablesUsed []string // TablesUsed is the list of tables that this plan will query ExecCount uint64 // Count of times this plan was executed ExecTime uint64 // Total execution time ShardQueries uint64 // Total number of shard queries RowsReturned uint64 // Total number of rows RowsAffected uint64 // Total number of rows Errors uint64 // Total number of errors }
Plan represents the execution strategy for a given query. For now it's a simple wrapper around the real instructions. An instruction (aka Primitive) is typically a tree where each node does its part by combining the results of the sub-nodes.
func (*Plan) AddStats ¶
func (p *Plan) AddStats(execCount uint64, execTime time.Duration, shardQueries, rowsAffected, rowsReturned, errors uint64)
AddStats updates the plan execution statistics
func (*Plan) CachedSize ¶ added in v0.10.0
func (*Plan) MarshalJSON ¶
MarshalJSON serializes the plan into a JSON representation.
type Primitive ¶
type Primitive interface { RouteType() string GetKeyspaceName() string GetTableName() string GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error) NeedsTransaction() bool TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error // Inputs is a slice containing the inputs to this Primitive Inputs() []Primitive // contains filtered or unexported methods }
Primitive is the building block of the engine execution plan. They form a tree structure, where the leaves typically issue queries to one or more vttablet. During execution, the Primitive's pass Result objects up the tree structure, until reaching the root, and its result is passed to the client.
type PrimitiveDescription ¶
type PrimitiveDescription struct { OperatorType string Variant string // Keyspace specifies the keyspace to send the query to. Keyspace *vindexes.Keyspace // TargetDestination specifies an explicit target destination to send the query to. TargetDestination key.Destination // TargetTabletType specifies an explicit target destination tablet type // this is only used in conjunction with TargetDestination TargetTabletType topodatapb.TabletType Other map[string]any Inputs []PrimitiveDescription }
PrimitiveDescription is used to create a serializable representation of the Primitive tree Using this structure, all primitives can share json marshalling code, which gives us an uniform output
func PrimitiveToPlanDescription ¶
func PrimitiveToPlanDescription(in Primitive) PrimitiveDescription
PrimitiveToPlanDescription transforms a primitive tree into a corresponding PlanDescription tree
func (PrimitiveDescription) MarshalJSON ¶
func (pd PrimitiveDescription) MarshalJSON() ([]byte, error)
MarshalJSON serializes the PlanDescription into a JSON representation. We do this rather manual thing here so the `other` map looks like fields belonging to pd and not a map in a field.
type Projection ¶
type Projection struct { Cols []string Exprs []evalengine.Expr Input Primitive // contains filtered or unexported fields }
Projection can evaluate expressions and project the results
func (*Projection) CachedSize ¶ added in v0.10.0
func (cached *Projection) CachedSize(alloc bool) int64
func (*Projection) GetFields ¶
func (p *Projection) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*Projection) GetKeyspaceName ¶
func (p *Projection) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*Projection) GetTableName ¶
func (p *Projection) GetTableName() string
GetTableName implements the Primitive interface
func (*Projection) Inputs ¶
func (p *Projection) Inputs() []Primitive
Inputs implements the Primitive interface
func (Projection) NeedsTransaction ¶
func (Projection) NeedsTransaction() bool
func (*Projection) RouteType ¶
func (p *Projection) RouteType() string
RouteType implements the Primitive interface
func (*Projection) TryExecute ¶ added in v0.12.0
func (p *Projection) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*Projection) TryStreamExecute ¶ added in v0.12.0
func (p *Projection) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type PulloutOpcode ¶
type PulloutOpcode int
PulloutOpcode is a number representing the opcode for the PulloutSubquery primitive.
func (PulloutOpcode) MarshalJSON ¶
func (code PulloutOpcode) MarshalJSON() ([]byte, error)
MarshalJSON serializes the PulloutOpcode as a JSON string. It's used for testing and diagnostics.
func (PulloutOpcode) String ¶
func (code PulloutOpcode) String() string
type PulloutSubquery ¶
type PulloutSubquery struct { Opcode PulloutOpcode // SubqueryResult and HasValues are used to send in the bindvar used in the query to the underlying primitive SubqueryResult string HasValues string Subquery Primitive Underlying Primitive }
PulloutSubquery executes a "pulled out" subquery and stores the results in a bind variable.
func (*PulloutSubquery) CachedSize ¶ added in v0.10.0
func (cached *PulloutSubquery) CachedSize(alloc bool) int64
func (*PulloutSubquery) GetFields ¶
func (ps *PulloutSubquery) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (*PulloutSubquery) GetKeyspaceName ¶
func (ps *PulloutSubquery) GetKeyspaceName() string
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*PulloutSubquery) GetTableName ¶
func (ps *PulloutSubquery) GetTableName() string
GetTableName specifies the table that this primitive routes to.
func (*PulloutSubquery) Inputs ¶
func (ps *PulloutSubquery) Inputs() []Primitive
Inputs returns the input primitives for this join
func (*PulloutSubquery) NeedsTransaction ¶
func (ps *PulloutSubquery) NeedsTransaction() bool
NeedsTransaction implements the Primitive interface
func (*PulloutSubquery) RouteType ¶
func (ps *PulloutSubquery) RouteType() string
RouteType returns a description of the query routing type used by the primitive
func (*PulloutSubquery) TryExecute ¶ added in v0.12.0
func (ps *PulloutSubquery) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute satisfies the Primitive interface.
func (*PulloutSubquery) TryStreamExecute ¶ added in v0.12.0
func (ps *PulloutSubquery) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute performs a streaming exec.
type RenameFields ¶ added in v0.10.0
type RenameFields struct { Cols []string Indices []int Input Primitive // contains filtered or unexported fields }
RenameFields is a primitive that renames the fields
func NewRenameField ¶ added in v0.10.0
func NewRenameField(cols []string, indices []int, input Primitive) (*RenameFields, error)
NewRenameField creates a new rename field
func (*RenameFields) CachedSize ¶ added in v0.10.0
func (cached *RenameFields) CachedSize(alloc bool) int64
func (*RenameFields) GetFields ¶ added in v0.10.0
func (r *RenameFields) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the primitive interface
func (*RenameFields) GetKeyspaceName ¶ added in v0.10.0
func (r *RenameFields) GetKeyspaceName() string
GetKeyspaceName implements the primitive interface
func (*RenameFields) GetTableName ¶ added in v0.10.0
func (r *RenameFields) GetTableName() string
GetTableName implements the primitive interface
func (*RenameFields) Inputs ¶ added in v0.10.0
func (r *RenameFields) Inputs() []Primitive
Inputs implements the primitive interface
func (RenameFields) NeedsTransaction ¶ added in v0.10.0
func (RenameFields) NeedsTransaction() bool
func (*RenameFields) RouteType ¶ added in v0.10.0
func (r *RenameFields) RouteType() string
RouteType implements the primitive interface
func (*RenameFields) TryExecute ¶ added in v0.12.0
func (r *RenameFields) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*RenameFields) TryStreamExecute ¶ added in v0.12.0
func (r *RenameFields) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type ReplaceVariables ¶ added in v0.10.0
type ReplaceVariables struct { Input Primitive // contains filtered or unexported fields }
ReplaceVariables is used in SHOW VARIABLES statements so that it replaces the values for vitess-aware variables
func NewReplaceVariables ¶ added in v0.10.0
func NewReplaceVariables(input Primitive) *ReplaceVariables
NewReplaceVariables is used to create a new ReplaceVariables primitive
func (*ReplaceVariables) CachedSize ¶ added in v0.10.0
func (cached *ReplaceVariables) CachedSize(alloc bool) int64
func (*ReplaceVariables) GetFields ¶ added in v0.10.0
func (r *ReplaceVariables) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*ReplaceVariables) GetKeyspaceName ¶ added in v0.10.0
func (r *ReplaceVariables) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*ReplaceVariables) GetTableName ¶ added in v0.10.0
func (r *ReplaceVariables) GetTableName() string
GetTableName implements the Primitive interface
func (*ReplaceVariables) Inputs ¶ added in v0.10.0
func (r *ReplaceVariables) Inputs() []Primitive
Inputs implements the Primitive interface
func (ReplaceVariables) NeedsTransaction ¶ added in v0.10.0
func (ReplaceVariables) NeedsTransaction() bool
func (*ReplaceVariables) RouteType ¶ added in v0.10.0
func (r *ReplaceVariables) RouteType() string
RouteType implements the Primitive interface
func (*ReplaceVariables) TryExecute ¶ added in v0.12.0
func (r *ReplaceVariables) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*ReplaceVariables) TryStreamExecute ¶ added in v0.12.0
func (r *ReplaceVariables) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type RevertMigration ¶ added in v0.10.0
type RevertMigration struct { Keyspace *vindexes.Keyspace Stmt *sqlparser.RevertMigration Query string TargetDestination key.Destination // contains filtered or unexported fields }
RevertMigration represents the instructions to perform an online schema change via vtctld
func (*RevertMigration) CachedSize ¶ added in v0.10.0
func (cached *RevertMigration) CachedSize(alloc bool) int64
func (*RevertMigration) GetFields ¶ added in v0.10.0
func (v *RevertMigration) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*RevertMigration) GetKeyspaceName ¶ added in v0.10.0
func (v *RevertMigration) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*RevertMigration) GetTableName ¶ added in v0.10.0
func (v *RevertMigration) GetTableName() string
GetTableName implements the Primitive interface
func (RevertMigration) Inputs ¶ added in v0.10.0
func (RevertMigration) Inputs() []Primitive
Inputs implements no inputs
func (RevertMigration) NeedsTransaction ¶ added in v0.10.0
func (RevertMigration) NeedsTransaction() bool
func (*RevertMigration) RouteType ¶ added in v0.10.0
func (v *RevertMigration) RouteType() string
RouteType implements the Primitive interface
func (*RevertMigration) TryExecute ¶ added in v0.12.0
func (v *RevertMigration) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (result *sqltypes.Result, err error)
TryExecute implements the Primitive interface
func (*RevertMigration) TryStreamExecute ¶ added in v0.12.0
func (v *RevertMigration) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type Route ¶
type Route struct { // TargetTabletType specifies an explicit target destination tablet type // this is only used in conjunction with TargetDestination TargetTabletType topodatapb.TabletType // Query specifies the query to be executed. Query string // TableName specifies the table to send the query to. TableName string // FieldQuery specifies the query to be executed for a GetFieldInfo request. FieldQuery string // OrderBy specifies the key order for merge sorting. This will be // set only for scatter queries that need the results to be // merge-sorted. OrderBy []OrderByParams // TruncateColumnCount specifies the number of columns to return // in the final result. Rest of the columns are truncated // from the result received. If 0, no truncation happens. TruncateColumnCount int // QueryTimeout contains the optional timeout (in milliseconds) to apply to this query QueryTimeout int // ScatterErrorsAsWarnings is true if results should be returned even if some shards have an error ScatterErrorsAsWarnings bool // RoutingParameters parameters required for query routing. *RoutingParameters // NoRoutesSpecialHandling will make the route send a query to arbitrary shard if the routing logic can't find // the correct shard. This is important for queries where no matches does not mean empty result - examples would be: // select count(*) from tbl where lookupColumn = 'not there' // select exists(<subq>) NoRoutesSpecialHandling bool // contains filtered or unexported fields }
Route represents the instructions to route a read query to one or many vttablets.
func NewSimpleRoute ¶
NewSimpleRoute creates a Route with the bare minimum of parameters.
func (*Route) CachedSize ¶ added in v0.10.0
func (*Route) GetFields ¶
func (route *Route) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (*Route) GetKeyspaceName ¶
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*Route) GetTableName ¶
GetTableName specifies the table that this primitive routes to.
func (Route) NeedsTransaction ¶
func (Route) NeedsTransaction() bool
func (*Route) RouteType ¶
RouteType returns a description of the query routing type used by the primitive
func (*Route) SetTruncateColumnCount ¶
SetTruncateColumnCount sets the truncate column count.
type RoutingParameters ¶ added in v0.13.0
type RoutingParameters struct { // Opcode is the execution opcode. Opcode Opcode // Keyspace specifies the keyspace to send the query to. Keyspace *vindexes.Keyspace // The following two fields are used when routing information_schema queries SysTableTableSchema []evalengine.Expr SysTableTableName map[string]evalengine.Expr // TargetDestination specifies an explicit target destination to send the query to. // This will bypass the routing logic. TargetDestination key.Destination // update `user[-]@replica`.user set .... // Vindex specifies the vindex to be used. Vindex vindexes.Vindex // Values specifies the vindex values to use for routing. Values []evalengine.Expr }
func (*RoutingParameters) CachedSize ¶ added in v0.13.0
func (cached *RoutingParameters) CachedSize(alloc bool) int64
type Rows ¶
type Rows struct {
// contains filtered or unexported fields
}
Rows simply returns a number or rows
func (*Rows) CachedSize ¶ added in v0.10.0
func (*Rows) GetFields ¶
func (r *Rows) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*Rows) GetKeyspaceName ¶
GetKeyspaceName implements the Primitive interface
func (*Rows) GetTableName ¶
GetTableName implements the Primitive interface
func (Rows) NeedsTransaction ¶
func (Rows) NeedsTransaction() bool
type SQLCalcFoundRows ¶ added in v0.8.0
SQLCalcFoundRows is a primitive to execute limit and count query as per their individual plan.
func (*SQLCalcFoundRows) CachedSize ¶ added in v0.10.0
func (cached *SQLCalcFoundRows) CachedSize(alloc bool) int64
func (SQLCalcFoundRows) GetFields ¶ added in v0.8.0
func (s SQLCalcFoundRows) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (SQLCalcFoundRows) GetKeyspaceName ¶ added in v0.8.0
func (s SQLCalcFoundRows) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (SQLCalcFoundRows) GetTableName ¶ added in v0.8.0
func (s SQLCalcFoundRows) GetTableName() string
GetTableName implements the Primitive interface
func (SQLCalcFoundRows) Inputs ¶ added in v0.8.0
func (s SQLCalcFoundRows) Inputs() []Primitive
Inputs implements the Primitive interface
func (SQLCalcFoundRows) NeedsTransaction ¶ added in v0.8.0
func (s SQLCalcFoundRows) NeedsTransaction() bool
NeedsTransaction implements the Primitive interface
func (SQLCalcFoundRows) RouteType ¶ added in v0.8.0
func (s SQLCalcFoundRows) RouteType() string
RouteType implements the Primitive interface
func (SQLCalcFoundRows) TryExecute ¶ added in v0.12.0
func (s SQLCalcFoundRows) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (SQLCalcFoundRows) TryStreamExecute ¶ added in v0.12.0
func (s SQLCalcFoundRows) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type ScalarAggregate ¶ added in v0.14.0
type ScalarAggregate struct { // PreProcess is true if one of the aggregates needs preprocessing. PreProcess bool `json:",omitempty"` AggrOnEngine bool // Aggregates specifies the aggregation parameters for each // aggregation function: function opcode and input column number. Aggregates []*AggregateParams // TruncateColumnCount specifies the number of columns to return // in the final result. Rest of the columns are truncated // from the result received. If 0, no truncation happens. TruncateColumnCount int `json:",omitempty"` // Collations stores the collation ID per column offset. // It is used for grouping keys and distinct aggregate functions Collations map[int]collations.ID // Input is the primitive that will feed into this Primitive. Input Primitive }
ScalarAggregate is a primitive used to do aggregations without grouping keys
func (*ScalarAggregate) CachedSize ¶ added in v0.14.0
func (cached *ScalarAggregate) CachedSize(alloc bool) int64
func (*ScalarAggregate) GetFields ¶ added in v0.14.0
func (sa *ScalarAggregate) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*ScalarAggregate) GetKeyspaceName ¶ added in v0.14.0
func (sa *ScalarAggregate) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*ScalarAggregate) GetTableName ¶ added in v0.14.0
func (sa *ScalarAggregate) GetTableName() string
GetTableName implements the Primitive interface
func (*ScalarAggregate) Inputs ¶ added in v0.14.0
func (sa *ScalarAggregate) Inputs() []Primitive
Inputs implements the Primitive interface
func (*ScalarAggregate) NeedsTransaction ¶ added in v0.14.0
func (sa *ScalarAggregate) NeedsTransaction() bool
NeedsTransaction implements the Primitive interface
func (*ScalarAggregate) RouteType ¶ added in v0.14.0
func (sa *ScalarAggregate) RouteType() string
RouteType implements the Primitive interface
func (*ScalarAggregate) TryExecute ¶ added in v0.14.0
func (sa *ScalarAggregate) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*ScalarAggregate) TryStreamExecute ¶ added in v0.14.0
func (sa *ScalarAggregate) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type SemiJoin ¶ added in v0.13.0
type SemiJoin struct {
// Left and Right are the LHS and RHS primitives
// of the SemiJoin. They can be any primitive.
Left, Right Primitive `json:",omitempty"`
// Cols defines which columns from the left
// results should be used to build the
// return result. For results coming from the
// left query, the index values go as -1, -2, etc.
// If Cols is {-1, -2}, it means that
// the returned result will be {Left0, Left1}.
Cols []int `json:",omitempty"`
// Vars defines the list of SemiJoinVars that need to
// be built from the LHS result before invoking
// the RHS subqquery.
Vars map[string]int `json:",omitempty"`
}
SemiJoin specifies the parameters for a SemiJoin primitive.
func (*SemiJoin) CachedSize ¶ added in v0.13.0
func (*SemiJoin) GetFields ¶ added in v0.13.0
func (jn *SemiJoin) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (*SemiJoin) GetKeyspaceName ¶ added in v0.13.0
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*SemiJoin) GetTableName ¶ added in v0.13.0
GetTableName specifies the table that this primitive routes to.
func (*SemiJoin) NeedsTransaction ¶ added in v0.13.0
NeedsTransaction implements the Primitive interface
func (*SemiJoin) RouteType ¶ added in v0.13.0
RouteType returns a description of the query routing type used by the primitive
type Send ¶
type Send struct { // Keyspace specifies the keyspace to send the query to. Keyspace *vindexes.Keyspace // TargetDestination specifies an explicit target destination to send the query to. TargetDestination key.Destination // Query specifies the query to be executed. Query string // IsDML specifies how to deal with autocommit behaviour IsDML bool // SingleShardOnly specifies that the query must be send to only single shard SingleShardOnly bool // ShardNameNeeded specified that the shard name is added to the bind variables ShardNameNeeded bool // MultishardAutocommit specifies that a multishard transaction query can autocommit MultishardAutocommit bool // contains filtered or unexported fields }
Send is an operator to send query to the specific keyspace, tabletType and destination
func (*Send) CachedSize ¶ added in v0.10.0
func (*Send) GetFields ¶
func (s *Send) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements Primitive interface
func (*Send) GetKeyspaceName ¶
GetKeyspaceName implements Primitive interface
func (*Send) GetTableName ¶
GetTableName implements Primitive interface
func (*Send) NeedsTransaction ¶
NeedsTransaction implements the Primitive interface
type SessionActions ¶
type SessionActions interface { // RecordWarning stores the given warning in the current session RecordWarning(warning *querypb.QueryWarning) SetTarget(target string) error SetUDV(key string, value any) error SetSysVar(name string, expr string) // NeedsReservedConn marks this session as needing a dedicated connection to underlying database NeedsReservedConn() // InReservedConn provides whether this session is using reserved connection InReservedConn() bool // ShardSession returns shard info about open connections ShardSession() []*srvtopo.ResolvedShard SetAutocommit(ctx context.Context, autocommit bool) error SetClientFoundRows(context.Context, bool) error SetSkipQueryPlanCache(context.Context, bool) error SetSQLSelectLimit(int64) error SetTransactionMode(vtgatepb.TransactionMode) SetWorkload(querypb.ExecuteOptions_Workload) SetPlannerVersion(querypb.ExecuteOptions_PlannerVersion) SetFoundRows(uint64) SetDDLStrategy(string) GetDDLStrategy() string GetSessionUUID() string SetSessionEnableSystemSettings(context.Context, bool) error GetSessionEnableSystemSettings() bool GetSystemVariables(func(k string, v string)) HasSystemVariables() bool // SetReadAfterWriteGTID sets the GTID that the user expects a replica to have caught up with before answering a query SetReadAfterWriteGTID(string) SetReadAfterWriteTimeout(float64) SetSessionTrackGTIDs(bool) // HasCreatedTempTable will mark the session as having created temp tables HasCreatedTempTable() GetWarnings() []*querypb.QueryWarning // AnyAdvisoryLockTaken returns true of any advisory lock is taken AnyAdvisoryLockTaken() bool // AddAdvisoryLock adds advisory lock to the session AddAdvisoryLock(name string) // RemoveAdvisoryLock removes advisory lock from the session RemoveAdvisoryLock(name string) // VtExplainLogging enables logging of all interactions to the tablets so // EXPLAIN `format=vtexplain` can report what's being done VtExplainLogging() // GetVTExplainLogs retrieves the vttablet interaction logs GetVTExplainLogs() []ExecuteEntry // SetCommitOrder sets the commit order for the shard session in respect of the type of vindex lookup. // This is used to select the right shard session to perform the vindex lookup query. SetCommitOrder(co vtgatepb.CommitOrder) // InTransaction returns true if the session has already opened transaction or // will start a transaction on the query execution. InTransaction() bool }
SessionActions gives primitives ability to interact with the session state
type SessionPrimitive ¶ added in v0.11.0
type SessionPrimitive struct {
// contains filtered or unexported fields
}
SessionPrimitive the session primitive is a very small primitive used when we have simple engine code that needs to interact with the Session
func NewSessionPrimitive ¶ added in v0.11.0
func NewSessionPrimitive(name string, action func(sa SessionActions) (*sqltypes.Result, error)) *SessionPrimitive
NewSessionPrimitive creates a SessionPrimitive
func (*SessionPrimitive) CachedSize ¶ added in v0.11.0
func (cached *SessionPrimitive) CachedSize(alloc bool) int64
func (*SessionPrimitive) GetFields ¶ added in v0.11.0
func (s *SessionPrimitive) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*SessionPrimitive) GetKeyspaceName ¶ added in v0.11.0
func (s *SessionPrimitive) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*SessionPrimitive) GetTableName ¶ added in v0.11.0
func (s *SessionPrimitive) GetTableName() string
GetTableName implements the Primitive interface
func (SessionPrimitive) Inputs ¶ added in v0.11.0
func (SessionPrimitive) Inputs() []Primitive
Inputs implements no inputs
func (SessionPrimitive) NeedsTransaction ¶ added in v0.11.0
func (SessionPrimitive) NeedsTransaction() bool
func (*SessionPrimitive) RouteType ¶ added in v0.11.0
func (s *SessionPrimitive) RouteType() string
RouteType implements the Primitive interface
func (*SessionPrimitive) TryExecute ¶ added in v0.12.0
func (s *SessionPrimitive) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*SessionPrimitive) TryStreamExecute ¶ added in v0.12.0
func (s *SessionPrimitive) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type Set ¶
Set contains the instructions to perform set.
func (*Set) CachedSize ¶ added in v0.10.0
func (*Set) GetFields ¶
func (s *Set) GetFields(context.Context, VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface method.
func (*Set) GetKeyspaceName ¶
GetKeyspaceName implements the Primitive interface method.
func (*Set) GetTableName ¶
GetTableName implements the Primitive interface method.
func (Set) NeedsTransaction ¶
func (Set) NeedsTransaction() bool
type SetOp ¶
type SetOp interface { Execute(ctx context.Context, vcursor VCursor, env *evalengine.ExpressionEnv) error VariableName() string }
SetOp is an interface that different type of set operations implements.
type ShowExec ¶ added in v0.14.0
type ShowExec struct { Command sqlparser.ShowCommandType ShowFilter *sqlparser.ShowFilter // contains filtered or unexported fields }
ShowExec is a primitive to call into executor via vcursor.
func (*ShowExec) CachedSize ¶ added in v0.14.0
func (*ShowExec) GetKeyspaceName ¶ added in v0.14.0
func (*ShowExec) GetTableName ¶ added in v0.14.0
func (ShowExec) Inputs ¶ added in v0.14.0
func (ShowExec) Inputs() []Primitive
Inputs implements no inputs
func (ShowExec) NeedsTransaction ¶ added in v0.14.0
func (ShowExec) NeedsTransaction() bool
func (*ShowExec) TryExecute ¶ added in v0.14.0
type SimpleProjection ¶ added in v0.12.0
type SimpleProjection struct { // Cols defines the column numbers from the underlying primitive // to be returned. Cols []int Input Primitive }
SimpleProjection selects which columns to keep from the input
func (*SimpleProjection) CachedSize ¶ added in v0.12.0
func (cached *SimpleProjection) CachedSize(alloc bool) int64
func (*SimpleProjection) GetFields ¶ added in v0.12.0
func (sc *SimpleProjection) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (*SimpleProjection) GetKeyspaceName ¶ added in v0.12.0
func (sc *SimpleProjection) GetKeyspaceName() string
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*SimpleProjection) GetTableName ¶ added in v0.12.0
func (sc *SimpleProjection) GetTableName() string
GetTableName specifies the table that this primitive routes to.
func (*SimpleProjection) Inputs ¶ added in v0.12.0
func (sc *SimpleProjection) Inputs() []Primitive
Inputs returns the input to this primitive
func (*SimpleProjection) NeedsTransaction ¶ added in v0.12.0
func (sc *SimpleProjection) NeedsTransaction() bool
NeedsTransaction implements the Primitive interface
func (*SimpleProjection) RouteType ¶ added in v0.12.0
func (sc *SimpleProjection) RouteType() string
RouteType returns a description of the query routing type used by the primitive
func (*SimpleProjection) TryExecute ¶ added in v0.12.0
func (sc *SimpleProjection) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute performs a non-streaming exec.
func (*SimpleProjection) TryStreamExecute ¶ added in v0.12.0
func (sc *SimpleProjection) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute performs a streaming exec.
type SingleRow ¶
type SingleRow struct {
// contains filtered or unexported fields
}
SingleRow defines an empty result
func (*SingleRow) GetFields ¶
func (s *SingleRow) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (*SingleRow) GetKeyspaceName ¶
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*SingleRow) GetTableName ¶
GetTableName specifies the table that this primitive routes to.
func (SingleRow) NeedsTransaction ¶
func (SingleRow) NeedsTransaction() bool
func (*SingleRow) RouteType ¶
RouteType returns a description of the query routing type used by the primitive
type StreamExecutor ¶
type StreamExecutor interface {
StreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
}
StreamExecutor is a subset of Primitive that MergeSort requires its inputs to satisfy.
type SysVarCheckAndIgnore ¶
type SysVarCheckAndIgnore struct { Name string Keyspace *vindexes.Keyspace TargetDestination key.Destination `json:",omitempty"` Expr string }
SysVarCheckAndIgnore implements the SetOp interface to check underlying setting and ignore if same.
func (*SysVarCheckAndIgnore) CachedSize ¶ added in v0.10.0
func (cached *SysVarCheckAndIgnore) CachedSize(alloc bool) int64
func (*SysVarCheckAndIgnore) Execute ¶
func (svci *SysVarCheckAndIgnore) Execute(ctx context.Context, vcursor VCursor, env *evalengine.ExpressionEnv) error
Execute implements the SetOp interface method
func (*SysVarCheckAndIgnore) MarshalJSON ¶
func (svci *SysVarCheckAndIgnore) MarshalJSON() ([]byte, error)
MarshalJSON provides the type to SetOp for plan json
func (*SysVarCheckAndIgnore) VariableName ¶
func (svci *SysVarCheckAndIgnore) VariableName() string
VariableName implements the SetOp interface method
type SysVarIgnore ¶
SysVarIgnore implements the SetOp interface to ignore the settings.
func (*SysVarIgnore) CachedSize ¶ added in v0.10.0
func (cached *SysVarIgnore) CachedSize(alloc bool) int64
func (*SysVarIgnore) Execute ¶
func (svi *SysVarIgnore) Execute(context.Context, VCursor, *evalengine.ExpressionEnv) error
Execute implements the SetOp interface method.
func (*SysVarIgnore) MarshalJSON ¶
func (svi *SysVarIgnore) MarshalJSON() ([]byte, error)
MarshalJSON provides the type to SetOp for plan json
func (*SysVarIgnore) VariableName ¶
func (svi *SysVarIgnore) VariableName() string
VariableName implements the SetOp interface method.
type SysVarReservedConn ¶ added in v0.8.0
type SysVarReservedConn struct { Name string Keyspace *vindexes.Keyspace TargetDestination key.Destination `json:",omitempty"` Expr string SupportSetVar bool }
SysVarReservedConn implements the SetOp interface and will write the changes variable into the session
func (*SysVarReservedConn) CachedSize ¶ added in v0.10.0
func (cached *SysVarReservedConn) CachedSize(alloc bool) int64
func (*SysVarReservedConn) Execute ¶ added in v0.8.0
func (svs *SysVarReservedConn) Execute(ctx context.Context, vcursor VCursor, env *evalengine.ExpressionEnv) error
Execute implements the SetOp interface method
func (*SysVarReservedConn) MarshalJSON ¶ added in v0.8.0
func (svs *SysVarReservedConn) MarshalJSON() ([]byte, error)
MarshalJSON provides the type to SetOp for plan json
func (*SysVarReservedConn) VariableName ¶ added in v0.8.0
func (svs *SysVarReservedConn) VariableName() string
VariableName implements the SetOp interface method
type SysVarSetAware ¶ added in v0.8.0
type SysVarSetAware struct { Name string Expr evalengine.Expr }
SysVarSetAware implements the SetOp interface and will write the changes variable into the session The special part is that these settings change the sessions behaviour in different ways
func (*SysVarSetAware) CachedSize ¶ added in v0.10.0
func (cached *SysVarSetAware) CachedSize(alloc bool) int64
func (*SysVarSetAware) Execute ¶ added in v0.8.0
func (svss *SysVarSetAware) Execute(ctx context.Context, vcursor VCursor, env *evalengine.ExpressionEnv) error
Execute implements the SetOp interface method
func (*SysVarSetAware) MarshalJSON ¶ added in v0.8.0
func (svss *SysVarSetAware) MarshalJSON() ([]byte, error)
MarshalJSON marshals all the json
func (*SysVarSetAware) VariableName ¶ added in v0.8.0
func (svss *SysVarSetAware) VariableName() string
VariableName implements the SetOp interface method
type Update ¶
type Update struct { *DML // ChangedVindexValues contains values for updated Vindexes during an update statement. ChangedVindexValues map[string]*VindexValues // contains filtered or unexported fields }
Update represents the instructions to perform an update.
func (*Update) CachedSize ¶ added in v0.10.0
func (*Update) GetFields ¶
func (upd *Update) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (Update) NeedsTransaction ¶
func (Update) NeedsTransaction() bool
type UpdateTarget ¶
type UpdateTarget struct { // Target string to be updated Target string // contains filtered or unexported fields }
UpdateTarget is an operator to update target string.
func (*UpdateTarget) CachedSize ¶ added in v0.10.0
func (cached *UpdateTarget) CachedSize(alloc bool) int64
func (*UpdateTarget) GetFields ¶
func (updTarget *UpdateTarget) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*UpdateTarget) GetKeyspaceName ¶
func (updTarget *UpdateTarget) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*UpdateTarget) GetTableName ¶
func (updTarget *UpdateTarget) GetTableName() string
GetTableName implements the Primitive interface
func (UpdateTarget) NeedsTransaction ¶
func (UpdateTarget) NeedsTransaction() bool
func (*UpdateTarget) RouteType ¶
func (updTarget *UpdateTarget) RouteType() string
RouteType implements the Primitive interface
func (*UpdateTarget) TryExecute ¶ added in v0.12.0
func (updTarget *UpdateTarget) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*UpdateTarget) TryStreamExecute ¶ added in v0.12.0
func (updTarget *UpdateTarget) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*query.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type UserDefinedVariable ¶
type UserDefinedVariable struct { Name string Expr evalengine.Expr }
UserDefinedVariable implements the SetOp interface to execute user defined variables.
func (*UserDefinedVariable) CachedSize ¶ added in v0.10.0
func (cached *UserDefinedVariable) CachedSize(alloc bool) int64
func (*UserDefinedVariable) Execute ¶
func (u *UserDefinedVariable) Execute(ctx context.Context, vcursor VCursor, env *evalengine.ExpressionEnv) error
Execute implements the SetOp interface method.
func (*UserDefinedVariable) MarshalJSON ¶
func (u *UserDefinedVariable) MarshalJSON() ([]byte, error)
MarshalJSON provides the type to SetOp for plan json
func (*UserDefinedVariable) VariableName ¶
func (u *UserDefinedVariable) VariableName() string
VariableName implements the SetOp interface method.
type VCursor ¶
type VCursor interface { GetKeyspace() string // MaxMemoryRows returns the maxMemoryRows flag value. MaxMemoryRows() int // ExceedsMaxMemoryRows returns a boolean indicating whether // the maxMemoryRows value has been exceeded. Returns false // if the max memory rows override directive is set to true ExceedsMaxMemoryRows(numRows int) bool // V3 functions. Execute(ctx context.Context, method string, query string, bindVars map[string]*querypb.BindVariable, rollbackOnError bool, co vtgatepb.CommitOrder) (*sqltypes.Result, error) AutocommitApproval() bool // Primitive functions ExecutePrimitive(ctx context.Context, primitive Primitive, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error) StreamExecutePrimitive(ctx context.Context, primitive Primitive, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error // Shard-level functions. ExecuteMultiShard(ctx context.Context, rss []*srvtopo.ResolvedShard, queries []*querypb.BoundQuery, rollbackOnError, canAutocommit bool) (*sqltypes.Result, []error) ExecuteStandalone(ctx context.Context, query string, bindVars map[string]*querypb.BindVariable, rs *srvtopo.ResolvedShard) (*sqltypes.Result, error) StreamExecuteMulti(ctx context.Context, query string, rss []*srvtopo.ResolvedShard, bindVars []map[string]*querypb.BindVariable, rollbackOnError bool, autocommit bool, callback func(reply *sqltypes.Result) error) []error // Keyspace ID level functions. ExecuteKeyspaceID(ctx context.Context, keyspace string, ksid []byte, query string, bindVars map[string]*querypb.BindVariable, rollbackOnError, autocommit bool) (*sqltypes.Result, error) // Resolver methods, from key.Destination to srvtopo.ResolvedShard. // Will replace all of the Topo functions. ResolveDestinations(ctx context.Context, keyspace string, ids []*querypb.Value, destinations []key.Destination) ([]*srvtopo.ResolvedShard, [][]*querypb.Value, error) ResolveDestinationsMultiCol(ctx context.Context, keyspace string, ids [][]sqltypes.Value, destinations []key.Destination) ([]*srvtopo.ResolvedShard, [][][]sqltypes.Value, error) ExecuteVSchema(ctx context.Context, keyspace string, vschemaDDL *sqlparser.AlterVschema) error Session() SessionActions ConnCollation() collations.ID ExecuteLock(ctx context.Context, rs *srvtopo.ResolvedShard, query *querypb.BoundQuery, lockFuncType sqlparser.LockingFuncType) (*sqltypes.Result, error) InTransactionAndIsDML() bool LookupRowLockShardSession() vtgatepb.CommitOrder FindRoutedTable(tablename sqlparser.TableName) (*vindexes.Table, error) // GetDBDDLPlugin gets the configured plugin for DROP/CREATE DATABASE GetDBDDLPluginName() string // KeyspaceAvailable returns true when a keyspace is visible from vtgate KeyspaceAvailable(ks string) bool MessageStream(ctx context.Context, rss []*srvtopo.ResolvedShard, tableName string, callback func(*sqltypes.Result) error) error VStream(ctx context.Context, rss []*srvtopo.ResolvedShard, filter *binlogdatapb.Filter, gtid string, callback func(evs []*binlogdatapb.VEvent) error) error // ShowExec takes in show command and use executor to execute the query, they are used when topo access is involved. ShowExec(ctx context.Context, command sqlparser.ShowCommandType, filter *sqlparser.ShowFilter) (*sqltypes.Result, error) // SetExec takes in k,v pair and use executor to set them in topo metadata. SetExec(ctx context.Context, name string, value string) error // CanUseSetVar returns true if system_settings can use SET_VAR hint. CanUseSetVar() bool // ReleaseLock releases all the held advisory locks. ReleaseLock(ctx context.Context) error // StreamExecutePrimitiveStandalone executes the primitive in its own new autocommit session. StreamExecutePrimitiveStandalone(ctx context.Context, primitive Primitive, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(result *sqltypes.Result) error) error }
VCursor defines the interface the engine will use to execute routes.
type VStream ¶ added in v0.11.0
type VStream struct { Keyspace *vindexes.Keyspace TargetDestination key.Destination TableName string Position string Limit int // contains filtered or unexported fields }
VStream is an operator for streaming specific keyspace, destination
func (*VStream) CachedSize ¶ added in v0.11.0
func (*VStream) GetFields ¶ added in v0.11.0
func (v *VStream) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*VStream) GetKeyspaceName ¶ added in v0.11.0
GetKeyspaceName implements the Primitive interface
func (*VStream) GetTableName ¶ added in v0.11.0
GetTableName implements the Primitive interface
func (VStream) Inputs ¶ added in v0.11.0
func (VStream) Inputs() []Primitive
Inputs implements no inputs
func (VStream) NeedsTransaction ¶ added in v0.11.0
func (VStream) NeedsTransaction() bool
type VTExplain ¶ added in v0.15.0
type VTExplain struct {
Input Primitive
}
func (*VTExplain) CachedSize ¶ added in v0.15.0
func (*VTExplain) GetFields ¶ added in v0.15.0
func (v *VTExplain) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*VTExplain) GetKeyspaceName ¶ added in v0.15.0
GetKeyspaceName implements the Primitive interface
func (*VTExplain) GetTableName ¶ added in v0.15.0
GetTableName implements the Primitive interface
func (*VTExplain) NeedsTransaction ¶ added in v0.15.0
NeedsTransaction implements the Primitive interface
type VindexFunc ¶
type VindexFunc struct { Opcode VindexOpcode // Fields is the field info for the result. Fields []*querypb.Field // Cols contains source column numbers: 0 for id, 1 for keyspace_id. Cols []int // TODO(sougou): add support for MultiColumn. Vindex vindexes.SingleColumn Value evalengine.Expr // contains filtered or unexported fields }
VindexFunc is a primitive that performs vindex functions.
func (*VindexFunc) CachedSize ¶ added in v0.10.0
func (cached *VindexFunc) CachedSize(alloc bool) int64
func (*VindexFunc) GetFields ¶
func (vf *VindexFunc) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields fetches the field info.
func (*VindexFunc) GetKeyspaceName ¶
func (vf *VindexFunc) GetKeyspaceName() string
GetKeyspaceName specifies the Keyspace that this primitive routes to.
func (*VindexFunc) GetTableName ¶
func (vf *VindexFunc) GetTableName() string
GetTableName specifies the table that this primitive routes to.
func (VindexFunc) NeedsTransaction ¶
func (VindexFunc) NeedsTransaction() bool
func (*VindexFunc) RouteType ¶
func (vf *VindexFunc) RouteType() string
RouteType returns a description of the query routing type used by the primitive
func (*VindexFunc) TryExecute ¶ added in v0.12.0
func (vf *VindexFunc) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute performs a non-streaming exec.
func (*VindexFunc) TryStreamExecute ¶ added in v0.12.0
func (vf *VindexFunc) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute performs a streaming exec.
type VindexLookup ¶ added in v0.15.0
type VindexLookup struct { Opcode Opcode // The vindex to use to do the Map Vindex vindexes.LookupPlanable // Keyspace specifies the keyspace to send the query to. Keyspace *vindexes.Keyspace Arguments []string // Values specifies the vindex values to use for routing. Values []evalengine.Expr // We fetch data in order to do the map from this primitive Lookup Primitive // This is the side that needs to be routed SendTo *Route }
func (*VindexLookup) CachedSize ¶ added in v0.15.0
func (cached *VindexLookup) CachedSize(alloc bool) int64
func (*VindexLookup) GetFields ¶ added in v0.15.0
func (vr *VindexLookup) GetFields(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable) (*sqltypes.Result, error)
GetFields implements the Primitive interface
func (*VindexLookup) GetKeyspaceName ¶ added in v0.15.0
func (vr *VindexLookup) GetKeyspaceName() string
GetKeyspaceName implements the Primitive interface
func (*VindexLookup) GetTableName ¶ added in v0.15.0
func (vr *VindexLookup) GetTableName() string
GetTableName implements the Primitive interface
func (*VindexLookup) Inputs ¶ added in v0.15.0
func (vr *VindexLookup) Inputs() []Primitive
Inputs implements the Primitive interface
func (*VindexLookup) NeedsTransaction ¶ added in v0.15.0
func (vr *VindexLookup) NeedsTransaction() bool
NeedsTransaction implements the Primitive interface
func (*VindexLookup) RouteType ¶ added in v0.15.0
func (vr *VindexLookup) RouteType() string
RouteType implements the Primitive interface
func (*VindexLookup) TryExecute ¶ added in v0.15.0
func (vr *VindexLookup) TryExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool) (*sqltypes.Result, error)
TryExecute implements the Primitive interface
func (*VindexLookup) TryStreamExecute ¶ added in v0.15.0
func (vr *VindexLookup) TryStreamExecute(ctx context.Context, vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantfields bool, callback func(*sqltypes.Result) error) error
TryStreamExecute implements the Primitive interface
type VindexOpcode ¶
type VindexOpcode int
VindexOpcode is the opcode for a VindexFunc.
func (VindexOpcode) MarshalJSON ¶
func (code VindexOpcode) MarshalJSON() ([]byte, error)
MarshalJSON serializes the VindexOpcode into a JSON representation. It's used for testing and diagnostics.
type VindexValues ¶
type VindexValues struct { PvMap map[string]evalengine.Expr Offset int // Offset from ownedVindexQuery to provide input decision for vindex update. }
VindexValues contains changed values for a vindex.
func (*VindexValues) CachedSize ¶ added in v0.10.0
func (cached *VindexValues) CachedSize(alloc bool) int64
type VitessMetadata ¶ added in v0.14.0
type VitessMetadata struct {
Name, Value string
}
VitessMetadata implements the SetOp interface and will write the changes variable into the topo server
func (*VitessMetadata) CachedSize ¶ added in v0.14.0
func (cached *VitessMetadata) CachedSize(alloc bool) int64
func (*VitessMetadata) Execute ¶ added in v0.14.0
func (v *VitessMetadata) Execute(ctx context.Context, vcursor VCursor, env *evalengine.ExpressionEnv) error
func (*VitessMetadata) VariableName ¶ added in v0.14.0
func (v *VitessMetadata) VariableName() string
Source Files ¶
- cached_size.go
- comparer.go
- concatenate.go
- dbddl.go
- dbddl_plugin.go
- ddl.go
- delete.go
- distinct.go
- distinctV3.go
- dml.go
- filter.go
- gen4_compare_v3.go
- hash_join.go
- insert.go
- join.go
- limit.go
- lock.go
- memory_sort.go
- merge_sort.go
- mstream.go
- online_ddl.go
- ordered_aggregate.go
- plan.go
- plan_description.go
- primitive.go
- projection.go
- pullout_subquery.go
- rename_fields.go
- replace_variables.go
- revert_migration.go
- route.go
- routing.go
- rows.go
- scalar_aggregation.go
- semi_join.go
- send.go
- session_primitive.go
- set.go
- shard_route.go
- show_exec.go
- simple_projection.go
- singlerow.go
- sql_calc_found_rows.go
- update.go
- update_target.go
- vindex_func.go
- vindex_lookup.go
- vschema_ddl.go
- vstream.go
- vtexplain.go