Documentation ¶
Index ¶
- Constants
- Variables
- func FormatImpossible(buf *sqlparser.TrackedBuffer, node sqlparser.SQLNode)
- func GenerateDeleteOuterQuery(del *sqlparser.Delete, pkIndex *schema.Index) *sqlparser.ParsedQuery
- func GenerateDeleteSubquery(del *sqlparser.Delete, tableInfo *schema.Table) *sqlparser.ParsedQuery
- func GenerateEqualOuterQuery(sel *sqlparser.Select, tableInfo *schema.Table) *sqlparser.ParsedQuery
- func GenerateFieldQuery(statement sqlparser.Statement) *sqlparser.ParsedQuery
- func GenerateFullQuery(statement sqlparser.Statement) *sqlparser.ParsedQuery
- func GenerateInOuterQuery(sel *sqlparser.Select, tableInfo *schema.Table) *sqlparser.ParsedQuery
- func GenerateInsertOuterQuery(ins *sqlparser.Insert) *sqlparser.ParsedQuery
- func GenerateSelectLimitQuery(selStmt sqlparser.SelectStatement) *sqlparser.ParsedQuery
- func GenerateSelectSubquery(sel *sqlparser.Select, tableInfo *schema.Table, index string) *sqlparser.ParsedQuery
- func GenerateSubquery(columns []string, table *sqlparser.AliasedTableExpr, where *sqlparser.Where, ...) *sqlparser.ParsedQuery
- func GenerateUpdateOuterQuery(upd *sqlparser.Update, pkIndex *schema.Index) *sqlparser.ParsedQuery
- func GenerateUpdateSubquery(upd *sqlparser.Update, tableInfo *schema.Table) *sqlparser.ParsedQuery
- type DDLPlan
- type ExecPlan
- type IndexScore
- type PlanType
- type ReasonType
- type TableGetter
Constants ¶
View Source
const ( NO_MATCH = scoreValue(-1) PERFECT_SCORE = scoreValue(0) )
Variables ¶
View Source
var (
TooComplex = errors.New("Complex")
)
Functions ¶
func FormatImpossible ¶
func FormatImpossible(buf *sqlparser.TrackedBuffer, node sqlparser.SQLNode)
FormatImpossible is a callback function used by TrackedBuffer to generate a modified version of the query where all selects have impossible where clauses. It overrides a few node types and passes the rest down to the default FormatNode.
func GenerateDeleteSubquery ¶
func GenerateEqualOuterQuery ¶
func GenerateFieldQuery ¶
func GenerateFieldQuery(statement sqlparser.Statement) *sqlparser.ParsedQuery
func GenerateFullQuery ¶
func GenerateFullQuery(statement sqlparser.Statement) *sqlparser.ParsedQuery
func GenerateInOuterQuery ¶
func GenerateInsertOuterQuery ¶
func GenerateInsertOuterQuery(ins *sqlparser.Insert) *sqlparser.ParsedQuery
func GenerateSelectLimitQuery ¶
func GenerateSelectLimitQuery(selStmt sqlparser.SelectStatement) *sqlparser.ParsedQuery
func GenerateSelectSubquery ¶
func GenerateSubquery ¶
func GenerateUpdateSubquery ¶
Types ¶
type ExecPlan ¶
type ExecPlan struct { PlanId PlanType Reason ReasonType TableName string // FieldQuery is used to fetch field info FieldQuery *sqlparser.ParsedQuery // FullQuery will be set for all plans. FullQuery *sqlparser.ParsedQuery // For PK plans, only OuterQuery is set. // For SUBQUERY plans, Subquery is also set. // IndexUsed is set only for PLAN_SELECT_SUBQUERY OuterQuery *sqlparser.ParsedQuery Subquery *sqlparser.ParsedQuery IndexUsed string // For selects, columns to be returned // For PLAN_INSERT_SUBQUERY, columns to be inserted ColumnNumbers []int // PLAN_PK_EQUAL, PLAN_DML_PK: where clause values // PLAN_PK_IN: IN clause values // PLAN_INSERT_PK: values clause PKValues []interface{} // For update: set clause if pk is changing SecondaryPKValues []interface{} // For PLAN_INSERT_SUBQUERY: pk columns in the subquery result SubqueryPKColumns []int // PLAN_SET SetKey string SetValue interface{} }
ExecPlan is built for selects and DMLs. PK Values values within ExecPlan can be: sqltypes.Value: sourced form the query, or string: bind variable name starting with ':', or nil if no value was specified
func GetExecPlan ¶
func GetExecPlan(sql string, getTable TableGetter) (plan *ExecPlan, err error)
func GetStreamExecPlan ¶
func GetStreamExecPlan(sql string, getTable TableGetter) (plan *ExecPlan, err error)
type IndexScore ¶
func NewIndexScore ¶
func NewIndexScore(index *schema.Index) *IndexScore
func NewIndexScoreList ¶
func NewIndexScoreList(indexes []*schema.Index) []*IndexScore
func (*IndexScore) FindMatch ¶
func (is *IndexScore) FindMatch(columnName string) int
func (*IndexScore) GetScore ¶
func (is *IndexScore) GetScore() scoreValue
type PlanType ¶
type PlanType int
const ( // PLAN_PASS_SELECT is pass through select statements. This is the // default plan for select statements. PLAN_PASS_SELECT PlanType = iota // PLAN_PASS_DML is pass through update & delete statements. This is // the default plan for update and delete statements. PLAN_PASS_DML // PLAN_PK_EQUAL is select statement which has an equality where clause // on primary key PLAN_PK_EQUAL // PLAN_PK_IN is select statement with a single IN clause on primary key PLAN_PK_IN // PLAN_SELECT_SUBQUERY is select statement with a subselect statement PLAN_SELECT_SUBQUERY // PLAN_DML_PK is an update or delete with an equality where clause(s) // on primary key(s) PLAN_DML_PK // PLAN_DML_SUBQUERY is an update or delete with a subselect statement PLAN_DML_SUBQUERY // PLAN_INSERT_PK is insert statement where the PK value is // supplied with the query PLAN_INSERT_PK // PLAN_INSERT_SUBQUERY is same as PLAN_DML_SUBQUERY but for inserts PLAN_INSERT_SUBQUERY // PLAN_SET is for SET statements PLAN_SET // PLAN_DDL is for DDL statements PLAN_DDL NumPlans )
func PlanByName ¶
func (PlanType) MarshalJSON ¶
type ReasonType ¶
type ReasonType int
const ( REASON_DEFAULT ReasonType = iota REASON_SELECT REASON_TABLE REASON_NOCACHE REASON_SELECT_LIST REASON_LOCK REASON_WHERE REASON_ORDER REASON_PKINDEX REASON_NOINDEX_MATCH REASON_TABLE_NOINDEX REASON_PK_CHANGE REASON_COMPOSITE_PK REASON_HAS_HINTS REASON_UPSERT )
func (ReasonType) MarshalJSON ¶
func (rt ReasonType) MarshalJSON() ([]byte, error)
func (ReasonType) String ¶
func (rt ReasonType) String() string
Click to show internal directories.
Click to hide internal directories.