Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type PlannerVersion ¶
type PlannerVersion = querypb.ExecuteOptions_PlannerVersion
PlannerVersion is an alias here to make the code more readable
func PlannerNameToVersion ¶
func PlannerNameToVersion(s string) (PlannerVersion, bool)
PlannerNameToVersion returns the numerical representation of the planner
type PlanningContext ¶
type PlanningContext struct { ReservedVars *sqlparser.ReservedVars SemTable *semantics.SemTable VSchema VSchema // here we add all predicates that were created because of a join condition // e.g. [FROM tblA JOIN tblB ON a.colA = b.colB] will be rewritten to [FROM tblB WHERE :a_colA = b.colB], // if we assume that tblB is on the RHS of the join. This last predicate in the WHERE clause is added to the // map below JoinPredicates map[sqlparser.Expr][]sqlparser.Expr SkipPredicates map[sqlparser.Expr]any PlannerVersion querypb.ExecuteOptions_PlannerVersion // If we during planning have turned this expression into an argument name, // we can continue using the same argument name ReservedArguments map[sqlparser.Expr]string // VerifyAllFKs tells whether we need verification for all the fk constraints on VTGate. // This is required for queries we are running with /*+ SET_VAR(foreign_key_checks=OFF) */ VerifyAllFKs bool // ParentFKToIgnore stores a specific parent foreign key that we would need to ignore while planning // a certain query. This field is used in UPDATE CASCADE planning, wherein while planning the child update // query, we need to ignore the parent foreign key constraint that caused the cascade in question. ParentFKToIgnore string // Projected subqueries that have been merged MergedSubqueries []*sqlparser.Subquery // CurrentPhase keeps track of how far we've gone in the planning process // The type should be operators.Phase, but depending on that would lead to circular dependencies CurrentPhase int }
func CreatePlanningContext ¶ added in v0.18.0
func CreatePlanningContext(stmt sqlparser.Statement, reservedVars *sqlparser.ReservedVars, vschema VSchema, version querypb.ExecuteOptions_PlannerVersion, ) (*PlanningContext, error)
func (*PlanningContext) GetArgumentFor ¶ added in v0.17.0
func (ctx *PlanningContext) GetArgumentFor(expr sqlparser.Expr, f func() string) string
func (*PlanningContext) GetReservedArgumentFor ¶ added in v0.18.0
func (ctx *PlanningContext) GetReservedArgumentFor(expr sqlparser.Expr) string
type VSchema ¶
type VSchema interface { FindTable(tablename sqlparser.TableName) (*vindexes.Table, string, topodatapb.TabletType, key.Destination, error) FindView(name sqlparser.TableName) sqlparser.SelectStatement FindTableOrVindex(tablename sqlparser.TableName) (*vindexes.Table, vindexes.Vindex, string, topodatapb.TabletType, key.Destination, error) DefaultKeyspace() (*vindexes.Keyspace, error) TargetString() string Destination() key.Destination TabletType() topodatapb.TabletType TargetDestination(qualifier string) (key.Destination, *vindexes.Keyspace, topodatapb.TabletType, error) AnyKeyspace() (*vindexes.Keyspace, error) FirstSortedKeyspace() (*vindexes.Keyspace, error) SysVarSetEnabled() bool KeyspaceExists(keyspace string) bool AllKeyspace() ([]*vindexes.Keyspace, error) FindKeyspace(keyspace string) (*vindexes.Keyspace, error) GetSemTable() *semantics.SemTable Planner() PlannerVersion SetPlannerVersion(pv PlannerVersion) ConnCollation() collations.ID // ErrorIfShardedF will return an error if the keyspace is sharded, // and produce a warning if the vtgate if configured to do so ErrorIfShardedF(keyspace *vindexes.Keyspace, warn, errFmt string, params ...any) error // WarnUnshardedOnly is used when a feature is only supported in unsharded mode. // This will let the user know that they are using something // that could become a problem if they move to a sharded keyspace WarnUnshardedOnly(format string, params ...any) // PlannerWarning records warning created during planning. PlannerWarning(message string) // ForeignKeyMode returns the foreign_key flag value ForeignKeyMode(keyspace string) (vschemapb.Keyspace_ForeignKeyMode, error) // GetVSchema returns the latest cached vindexes.VSchema GetVSchema() *vindexes.VSchema // GetSrvVschema returns the latest cached vschema.SrvVSchema GetSrvVschema() *vschemapb.SrvVSchema // FindRoutedShard looks up shard routing rules for a shard FindRoutedShard(keyspace, shard string) (string, error) // IsShardRoutingEnabled returns true if partial shard routing is enabled IsShardRoutingEnabled() bool // IsViewsEnabled returns true if Vitess manages the views. IsViewsEnabled() bool // GetUDV returns user defined value from the variable passed. GetUDV(name string) *querypb.BindVariable // PlanPrepareStatement plans the prepared statement. PlanPrepareStatement(ctx context.Context, query string) (*engine.Plan, sqlparser.Statement, error) // ClearPrepareData clears the prepared data from the session. ClearPrepareData(stmtName string) // GetPrepareData returns the prepared data for the statement from the session. GetPrepareData(stmtName string) *vtgatepb.PrepareData // StorePrepareData stores the prepared data in the session. StorePrepareData(name string, v *vtgatepb.PrepareData) }
VSchema defines the interface for this package to fetch info about tables.
Click to show internal directories.
Click to hide internal directories.