Versions in this module Expand all Collapse all v1 v1.0.0 May 30, 2020 Changes in this version + const SHA0 + const SHA224 + const SHA256 + const SHA384 + const SHA512 + var ErrCutValueGroupConcat = terror.ClassExpression.New(mysql.ErrCutValueGroupConcat, mysql.MySQLErrName[mysql.ErrCutValueGroupConcat]) + var ErrDivisionByZero = terror.ClassExpression.New(mysql.ErrDivisionByZero, mysql.MySQLErrName[mysql.ErrDivisionByZero]) + var ErrIncorrectParameterCount = terror.ClassExpression.New(mysql.ErrWrongParamcountToNativeFct, ...) + var ErrOperandColumns = terror.ClassExpression.New(mysql.ErrOperandColumns, mysql.MySQLErrName[mysql.ErrOperandColumns]) + var ErrRegexp = terror.ClassExpression.New(mysql.ErrRegexp, mysql.MySQLErrName[mysql.ErrRegexp]) + var EvalAstExpr func(ctx sessionctx.Context, expr ast.ExprNode) (types.Datum, error) + var MaxPropagateColsCnt = 100 + var Null = &Constant + var One = &Constant + var UnCacheableFunctions = map[string]struct + var Zero = &Constant + func CheckArgsNotMultiColumnRow(args ...Expression) error + func ColumnSliceIsIntersect(s1, s2 []*Column) bool + func Contains(exprs []Expression, e Expression) bool + func EvalBool(ctx sessionctx.Context, exprList CNFExprs, row chunk.Row) (bool, error) + func ExplainColumnList(cols []*Column) []byte + func ExplainExpressionList(exprs []Expression) []byte + func ExprFromSchema(expr Expression, schema *Schema) bool + func ExpressionsToPB(sc *stmtctx.StatementContext, exprs []Expression, client kv.Client) (pbCNF *tipb.Expr, pushed []Expression, remained []Expression) + func ExpressionsToPBList(sc *stmtctx.StatementContext, exprs []Expression, client kv.Client) (pbExpr []*tipb.Expr) + func GetAccurateCmpType(lhs, rhs Expression) types.EvalType + func GetRowLen(e Expression) int + func GetTimeValue(ctx sessionctx.Context, v interface{}, tp byte, fsp int) (d types.Datum, err error) + func GroupByItemToPB(sc *stmtctx.StatementContext, client kv.Client, expr Expression) *tipb.ByItem + func IsBinaryLiteral(expr Expression) bool + func IsCurrentTimestampExpr(e ast.ExprNode) bool + func PropConstOverOuterJoin(ctx sessionctx.Context, joinConds, filterConds []Expression, ...) ([]Expression, []Expression) + func SetBinFlagOrBinStr(argTp *types.FieldType, resTp *types.FieldType) + func SortByItemToPB(sc *stmtctx.StatementContext, client kv.Client, expr Expression, desc bool) *tipb.ByItem + func SortedExplainExpressionList(exprs []Expression) []byte + func ToPBFieldType(ft *types.FieldType) *tipb.FieldType + func Vectorizable(exprs []Expression) bool + func VectorizedExecute(ctx sessionctx.Context, exprs []Expression, iterator *chunk.Iterator4Chunk, ...) error + func VectorizedFilter(ctx sessionctx.Context, filters []Expression, iterator *chunk.Iterator4Chunk, ...) ([]bool, error) + type Assignment struct + Col *Column + Expr Expression + type CNFExprs []Expression + func (e CNFExprs) Clone() CNFExprs + type Column struct + ColName model.CIStr + DBName model.CIStr + ID int64 + Index int + IsAggOrSubq bool + OrigColName model.CIStr + OrigTblName model.CIStr + RetType *types.FieldType + TblName model.CIStr + UniqueID int64 + func ColInfo2Col(cols []*Column, col *model.ColumnInfo) *Column + func ColumnInfos2ColumnsWithDBName(ctx sessionctx.Context, dbName, tblName model.CIStr, ...) []*Column + func ExtractColumns(expr Expression) (cols []*Column) + func ExtractColumnsFromExpressions(result []*Column, exprs []Expression, filter func(*Column) bool) []*Column + func FindPrefixOfIndex(cols []*Column, idxColIDs []int64) []*Column + func IndexInfo2Cols(cols []*Column, index *model.IndexInfo) ([]*Column, []int) + func (col *Column) Clone() Expression + func (col *Column) Decorrelate(_ *Schema) Expression + func (col *Column) Equal(_ sessionctx.Context, expr Expression) bool + func (col *Column) Eval(row chunk.Row) (types.Datum, error) + func (col *Column) EvalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) + func (col *Column) EvalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) + func (col *Column) EvalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) + func (col *Column) EvalJSON(ctx sessionctx.Context, row chunk.Row) (json.BinaryJSON, bool, error) + func (col *Column) EvalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) + func (col *Column) EvalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) + func (col *Column) EvalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) + func (col *Column) GetType() *types.FieldType + func (col *Column) HashCode(_ *stmtctx.StatementContext) []byte + func (col *Column) IsCorrelated() bool + func (col *Column) MarshalJSON() ([]byte, error) + func (col *Column) ResolveIndices(schema *Schema) Expression + func (col *Column) String() string + func (expr *Column) ExplainInfo() string + type Constant struct + DeferredExpr Expression + RetType *types.FieldType + Value types.Datum + func RefineComparedConstant(ctx sessionctx.Context, isUnsigned bool, con *Constant, op opcode.Op) (_ *Constant, isAlwaysFalse bool) + func (c *Constant) Clone() Expression + func (c *Constant) Decorrelate(_ *Schema) Expression + func (c *Constant) Equal(ctx sessionctx.Context, b Expression) bool + func (c *Constant) Eval(_ chunk.Row) (types.Datum, error) + func (c *Constant) EvalDecimal(ctx sessionctx.Context, _ chunk.Row) (*types.MyDecimal, bool, error) + func (c *Constant) EvalDuration(ctx sessionctx.Context, _ chunk.Row) (val types.Duration, isNull bool, err error) + func (c *Constant) EvalInt(ctx sessionctx.Context, _ chunk.Row) (int64, bool, error) + func (c *Constant) EvalJSON(ctx sessionctx.Context, _ chunk.Row) (json.BinaryJSON, bool, error) + func (c *Constant) EvalReal(ctx sessionctx.Context, _ chunk.Row) (float64, bool, error) + func (c *Constant) EvalString(ctx sessionctx.Context, _ chunk.Row) (string, bool, error) + func (c *Constant) EvalTime(ctx sessionctx.Context, _ chunk.Row) (val types.Time, isNull bool, err error) + func (c *Constant) GetType() *types.FieldType + func (c *Constant) HashCode(sc *stmtctx.StatementContext) []byte + func (c *Constant) IsCorrelated() bool + func (c *Constant) MarshalJSON() ([]byte, error) + func (c *Constant) ResolveIndices(_ *Schema) Expression + func (c *Constant) String() string + func (expr *Constant) ExplainInfo() string + type CorrelatedColumn struct + Data *types.Datum + func ExtractCorColumns(expr Expression) (cols []*CorrelatedColumn) + func (col *CorrelatedColumn) Clone() Expression + func (col *CorrelatedColumn) Decorrelate(schema *Schema) Expression + func (col *CorrelatedColumn) Equal(ctx sessionctx.Context, expr Expression) bool + func (col *CorrelatedColumn) Eval(row chunk.Row) (types.Datum, error) + func (col *CorrelatedColumn) EvalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) + func (col *CorrelatedColumn) EvalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) + func (col *CorrelatedColumn) EvalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) + func (col *CorrelatedColumn) EvalJSON(ctx sessionctx.Context, row chunk.Row) (json.BinaryJSON, bool, error) + func (col *CorrelatedColumn) EvalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) + func (col *CorrelatedColumn) EvalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) + func (col *CorrelatedColumn) EvalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) + func (col *CorrelatedColumn) IsCorrelated() bool + func (col *CorrelatedColumn) ResolveIndices(_ *Schema) Expression + type EvaluatorSuit struct + func NewEvaluatorSuit(exprs []Expression) *EvaluatorSuit + func (e *EvaluatorSuit) Run(ctx sessionctx.Context, input, output *chunk.Chunk) error + func (e *EvaluatorSuit) Vectorizable() bool + type Expression interface + Clone func() Expression + Decorrelate func(schema *Schema) Expression + Equal func(ctx sessionctx.Context, e Expression) bool + Eval func(row chunk.Row) (types.Datum, error) + EvalDecimal func(ctx sessionctx.Context, row chunk.Row) (val *types.MyDecimal, isNull bool, err error) + EvalDuration func(ctx sessionctx.Context, row chunk.Row) (val types.Duration, isNull bool, err error) + EvalInt func(ctx sessionctx.Context, row chunk.Row) (val int64, isNull bool, err error) + EvalJSON func(ctx sessionctx.Context, row chunk.Row) (val json.BinaryJSON, isNull bool, err error) + EvalReal func(ctx sessionctx.Context, row chunk.Row) (val float64, isNull bool, err error) + EvalString func(ctx sessionctx.Context, row chunk.Row) (val string, isNull bool, err error) + EvalTime func(ctx sessionctx.Context, row chunk.Row) (val types.Time, isNull bool, err error) + ExplainInfo func() string + GetType func() *types.FieldType + HashCode func(sc *stmtctx.StatementContext) []byte + IsCorrelated func() bool + ResolveIndices func(schema *Schema) Expression + func BuildCastFunction(ctx sessionctx.Context, expr Expression, tp *types.FieldType) (res Expression) + func BuildCastFunction4Union(ctx sessionctx.Context, expr Expression, tp *types.FieldType) (res Expression) + func Column2Exprs(cols []*Column) []Expression + func ColumnSubstitute(expr Expression, schema *Schema, newExprs []Expression) Expression + func ComposeCNFCondition(ctx sessionctx.Context, conditions ...Expression) Expression + func ComposeDNFCondition(ctx sessionctx.Context, conditions ...Expression) Expression + func DeriveRelaxedFiltersFromDNF(expr Expression, schema *Schema) Expression + func EvaluateExprWithNull(ctx sessionctx.Context, schema *Schema, expr Expression) Expression + func ExtractFiltersFromDNFs(ctx sessionctx.Context, conditions []Expression) []Expression + func Filter(result []Expression, input []Expression, filter func(Expression) bool) []Expression + func FlattenCNFConditions(CNFCondition *ScalarFunction) []Expression + func FlattenDNFConditions(DNFCondition *ScalarFunction) []Expression + func FoldConstant(expr Expression) Expression + func GetFuncArg(e Expression, idx int) Expression + func NewFunction(ctx sessionctx.Context, funcName string, retType *types.FieldType, ...) (Expression, error) + func NewFunctionInternal(ctx sessionctx.Context, funcName string, retType *types.FieldType, ...) Expression + func PBToExpr(expr *tipb.Expr, tps []*types.FieldType, sc *stmtctx.StatementContext) (Expression, error) + func ParseSimpleExprCastWithTableInfo(ctx sessionctx.Context, exprStr string, tableInfo *model.TableInfo, ...) (Expression, error) + func ParseSimpleExprWithTableInfo(ctx sessionctx.Context, exprStr string, tableInfo *model.TableInfo) (Expression, error) + func ParseSimpleExprsWithSchema(ctx sessionctx.Context, exprStr string, schema *Schema) ([]Expression, error) + func PopRowFirstArg(ctx sessionctx.Context, e Expression) (ret Expression, err error) + func PropagateConstant(ctx sessionctx.Context, conditions []Expression) []Expression + func PushDownNot(ctx sessionctx.Context, expr Expression, not bool) Expression + func RewriteSimpleExprWithSchema(ctx sessionctx.Context, expr ast.ExprNode, schema *Schema) (Expression, error) + func RewriteSimpleExprWithTableInfo(ctx sessionctx.Context, tbl *model.TableInfo, expr ast.ExprNode) (Expression, error) + func ScalarFuncs2Exprs(funcs []*ScalarFunction) []Expression + func SplitCNFItems(onExpr Expression) []Expression + func SplitDNFItems(onExpr Expression) []Expression + func SubstituteCorCol2Constant(expr Expression) (Expression, error) + func WrapWithCastAsDecimal(ctx sessionctx.Context, expr Expression) Expression + func WrapWithCastAsDuration(ctx sessionctx.Context, expr Expression) Expression + func WrapWithCastAsInt(ctx sessionctx.Context, expr Expression) Expression + func WrapWithCastAsJSON(ctx sessionctx.Context, expr Expression) Expression + func WrapWithCastAsReal(ctx sessionctx.Context, expr Expression) Expression + func WrapWithCastAsString(ctx sessionctx.Context, expr Expression) Expression + func WrapWithCastAsTime(ctx sessionctx.Context, expr Expression, tp *types.FieldType) Expression + type KeyInfo []*Column + func (ki KeyInfo) Clone() KeyInfo + type PbConverter struct + func NewPBConverter(client kv.Client, sc *stmtctx.StatementContext) PbConverter + func (pc PbConverter) ExprToPB(expr Expression) *tipb.Expr + type ScalarFunction struct + FuncName model.CIStr + Function builtinFunc + RetType *types.FieldType + func NewValuesFunc(ctx sessionctx.Context, offset int, retTp *types.FieldType) *ScalarFunction + func (expr *ScalarFunction) ExplainInfo() string + func (sf *ScalarFunction) Clone() Expression + func (sf *ScalarFunction) Decorrelate(schema *Schema) Expression + func (sf *ScalarFunction) Equal(ctx sessionctx.Context, e Expression) bool + func (sf *ScalarFunction) Eval(row chunk.Row) (d types.Datum, err error) + func (sf *ScalarFunction) EvalDecimal(ctx sessionctx.Context, row chunk.Row) (*types.MyDecimal, bool, error) + func (sf *ScalarFunction) EvalDuration(ctx sessionctx.Context, row chunk.Row) (types.Duration, bool, error) + func (sf *ScalarFunction) EvalInt(ctx sessionctx.Context, row chunk.Row) (int64, bool, error) + func (sf *ScalarFunction) EvalJSON(ctx sessionctx.Context, row chunk.Row) (json.BinaryJSON, bool, error) + func (sf *ScalarFunction) EvalReal(ctx sessionctx.Context, row chunk.Row) (float64, bool, error) + func (sf *ScalarFunction) EvalString(ctx sessionctx.Context, row chunk.Row) (string, bool, error) + func (sf *ScalarFunction) EvalTime(ctx sessionctx.Context, row chunk.Row) (types.Time, bool, error) + func (sf *ScalarFunction) GetArgs() []Expression + func (sf *ScalarFunction) GetCtx() sessionctx.Context + func (sf *ScalarFunction) GetType() *types.FieldType + func (sf *ScalarFunction) HashCode(sc *stmtctx.StatementContext) []byte + func (sf *ScalarFunction) IsCorrelated() bool + func (sf *ScalarFunction) MarshalJSON() ([]byte, error) + func (sf *ScalarFunction) ResolveIndices(schema *Schema) Expression + func (sf *ScalarFunction) String() string + type Schema struct + Columns []*Column + Keys []KeyInfo + TblID2Handle map[int64][]*Column + func MergeSchema(lSchema, rSchema *Schema) *Schema + func NewSchema(cols ...*Column) *Schema + func TableInfo2Schema(ctx sessionctx.Context, tbl *model.TableInfo) *Schema + func TableInfo2SchemaWithDBName(ctx sessionctx.Context, dbName model.CIStr, tbl *model.TableInfo) *Schema + func (s *Schema) Append(col ...*Column) + func (s *Schema) Clone() *Schema + func (s *Schema) ColumnIndex(col *Column) int + func (s *Schema) ColumnsByIndices(offsets []int) []*Column + func (s *Schema) ColumnsIndices(cols []*Column) (ret []int) + func (s *Schema) Contains(col *Column) bool + func (s *Schema) FindColumn(astCol *ast.ColumnName) (*Column, error) + func (s *Schema) FindColumnAndIndex(astCol *ast.ColumnName) (*Column, int, error) + func (s *Schema) FindColumnByName(name string) *Column + func (s *Schema) IsUniqueKey(col *Column) bool + func (s *Schema) Len() int + func (s *Schema) RetrieveColumn(col *Column) *Column + func (s *Schema) SetUniqueKeys(keys []KeyInfo) + func (s *Schema) String() string + type VarAssignment struct + Expr Expression + ExtendValue *Constant + IsDefault bool + IsGlobal bool + IsSystem bool + Name string