plan

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2023 License: Apache-2.0 Imports: 38 Imported by: 0

Documentation

Overview

Package plan is a generated GoMock package.

Index

Constants

View Source
const (
	JoinSideNone       int8 = 0
	JoinSideLeft            = 1 << iota
	JoinSideRight           = 1 << iota
	JoinSideBoth            = JoinSideLeft | JoinSideRight
	JoinSideMark            = 1 << iota
	JoinSideCorrelated      = 1 << iota
)
View Source
const (
	NotFound      int32 = math.MaxInt32
	AmbiguousName int32 = math.MinInt32
)
View Source
const INFORMATION_SCHEMA = "information_schema"
View Source
const MO_CATALOG_DB_NAME = "mo_catalog"
View Source
const MO_DEFUALT_HOSTNAME = "localhost"
View Source
const SF float64 = 1

Variables

View Source
var AllowedPartition4BinaryOpMap = map[tree.BinaryOp]string{
	tree.PLUS:        "+",
	tree.MINUS:       "-",
	tree.MULTI:       "*",
	tree.INTEGER_DIV: "div",
	tree.MOD:         "%",
}

AllowedPartition4BinaryOpMap store the operator for Binary Expr link ref:https://dev.mysql.com/doc/refman/8.0/en/partitioning-limitations.html

View Source
var AllowedPartition4UnaryOpMap = map[tree.UnaryOp]string{
	tree.UNARY_PLUS:  "+",
	tree.UNARY_MINUS: "-",
}

AllowedPartition4UnaryOpMap store the operator for Unary Expr

View Source
var AllowedPartitionFuncMap = map[string]int{
	"to_days":        1,
	"to_seconds":     1,
	"dayofmonth":     1,
	"month":          1,
	"dayofyear":      1,
	"quarter":        1,
	"yearweek":       1,
	"year":           1,
	"weekday":        1,
	"dayofweek":      1,
	"day":            1,
	"hour":           1,
	"minute":         1,
	"second":         1,
	"time_to_sec":    1,
	"microsecond":    1,
	"unix_timestamp": 1,
	"from_days":      1,
	"extract":        1,
	"abs":            1,
	"ceiling":        1,
	"ceil":           1,
	"datediff":       1,
	"floor":          1,
	"mod":            1,
}

Continue to use this function in the future. Do not delete this function temporarily. Please call @qingxinhome

// checkPartitionFuncValid checks partition function validly.

func checkPartitionFuncValid(ctx context.Context, tbdef *TableDef, partby tree.PartitionBy) error {
	if partby.PType == nil {
		return nil
	}

	checker := &partitionExprChecker{
		processors: []partitionExprProcessor{checkPartitionExprAllowed},
		tbdef:      tbdef,
		err:        nil,
	}

	switch partitionType := partby.PType.(type) {
	case *tree.KeyType:
		if partitionType.ColumnList != nil {
			for _, expr := range partitionType.ColumnList {
				PartitionExprSemanticCheck(ctx, tbdef, expr, checker)
				if checker.err != nil {
					return checker.err
				}
			}
		}
	case *tree.HashType:
		PartitionExprSemanticCheck(ctx, tbdef, partitionType.Expr, checker)
		if checker.err != nil {
			return checker.err
		}
	case *tree.RangeType:
		if partitionType.ColumnList != nil {
			for _, expr := range partitionType.ColumnList {
				PartitionExprSemanticCheck(ctx, tbdef, expr, checker)
				if checker.err != nil {
					return checker.err
				}
			}
		} else {
			PartitionExprSemanticCheck(ctx, tbdef, partitionType.Expr, checker)
			if checker.err != nil {
				return checker.err
			}
		}
	case *tree.ListType:
		if partitionType.ColumnList != nil {
			for _, expr := range partitionType.ColumnList {
				PartitionExprSemanticCheck(ctx, tbdef, expr, checker)
				if checker.err != nil {
					return checker.err
				}
			}
		} else {
			PartitionExprSemanticCheck(ctx, tbdef, partitionType.Expr, checker)
			if checker.err != nil {
				return checker.err
			}
		}
	}
	return nil
}

type partitionExprProcessor func(ctx context.Context, def *TableDef, expr tree.Expr) error

type partitionExprChecker struct {
	processors []partitionExprProcessor
	tbdef      *TableDef
	err        error
}
func PartitionExprSemanticCheck(ctx context.Context, tbdef *TableDef, expr tree.Expr, checker *partitionExprChecker) (canNext bool) {
	for _, processor := range checker.processors {
		if err := processor(ctx, tbdef, expr); err != nil {
			checker.err = err
			return false
		}
	}

	switch v := expr.(type) {
	case *tree.FuncExpr:
		for _, e := range v.Exprs {
			next := PartitionExprSemanticCheck(ctx, tbdef, e, checker)
			if !next {
				return next
			}
		}
	case *tree.BinaryExpr:
		next := PartitionExprSemanticCheck(ctx, tbdef, v.Left, checker)
		if !next {
			return next
		}

		next = PartitionExprSemanticCheck(ctx, tbdef, v.Right, checker)
		if !next {
			return next
		}
	case *tree.UnaryExpr:
		next := PartitionExprSemanticCheck(ctx, tbdef, v.Expr, checker)
		if !next {
			return next
		}
	case *tree.ParenExpr:
		next := PartitionExprSemanticCheck(ctx, tbdef, v.Expr, checker)
		if !next {
			return next
		}
	case *tree.UnresolvedName:
		return false
	case *tree.MaxValue:
		return false
	default:
		checker.err = moerr.NewInternalError(ctx, "This partition function is not allowed")
		return false
	}
	return true
}
func checkPartitionExprAllowed(ctx context.Context, tb *TableDef, e tree.Expr) error {
	switch v := e.(type) {
	case *tree.FuncExpr:
		funcRef, ok := v.Func.FunctionReference.(*tree.UnresolvedName)
		if !ok {
			return moerr.NewNYI(ctx, "function expr '%v'", v)
		}
		funcName := funcRef.Parts[0]
		if _, ok = AllowedPartitionFuncMap[funcName]; ok {
			return nil
		}
	case *tree.BinaryExpr:
		if _, ok := AllowedPartition4BinaryOpMap[v.Op]; ok {
			return checkNoTimestampArgs(ctx, tb, v.Left, v.Right)
		}
	case *tree.UnaryExpr:
		if _, ok := AllowedPartition4UnaryOpMap[v.Op]; ok {
			return checkNoTimestampArgs(ctx, tb, v.Expr)
		}
	case *tree.ParenExpr, *tree.MaxValue, *tree.UnresolvedName:
		return nil
	}
	return moerr.NewInternalError(ctx, "This partition function is not allowed")
}
func checkNoTimestampArgs(ctx context.Context, tbInfo *TableDef, exprs ...tree.Expr) error {
	argsType, err := collectArgsType(ctx, tbInfo, exprs...)
	if err != nil {
		return err
	}
	if hasTimestampArgs(argsType...) {
		return moerr.NewInternalError(ctx, "Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed")
	}
	return nil
}
func collectArgsType(ctx context.Context, tblInfo *TableDef, exprs ...tree.Expr) ([]*Type, error) {
	ts := make([]*Type, 0, len(exprs))
	for _, arg := range exprs {
		col, ok := arg.(*tree.UnresolvedName)
		if !ok {
			continue
		}
		columnInfo := findColumnByName(col.Parts[0], tblInfo)
		if columnInfo == nil {
			return nil, moerr.NewInternalError(ctx, "Unknown column '%-.192s' in '%-.192s'", col.Parts[0], "partition function")
		}
		ts = append(ts, columnInfo.GetTyp())
	}
	return ts, nil
}
func hasDateArgs(argsType ...*Type) bool {
	for _, t := range argsType {
		return t.Id == int32(types.T_date) || t.Id == int32(types.T_datetime)
	}
	return false
}
func hasTimeArgs(argsType ...*Type) bool {
	for _, t := range argsType {
		return t.Id == int32(types.T_time) || t.Id == int32(types.T_datetime)
	}
	return false
}
func hasTimestampArgs(argsType ...*Type) bool {
	for _, t := range argsType {
		return t.Id == int32(types.T_timestamp)
	}
	return false
}
func hasDatetimeArgs(argsType ...*Type) bool {
	for _, t := range argsType {
		return t.Id == int32(types.T_datetime)
	}
	return false
}

AllowedPartitionFuncMap stores functions which can be used in the partition expression.

View Source
var MakePlan2Float64ConstExprWithType = makePlan2Float64ConstExprWithType
View Source
var MakePlan2Int64ConstExprWithType = makePlan2Int64ConstExprWithType
View Source
var MakePlan2StringConstExprWithType = makePlan2StringConstExprWithType
View Source
var MakePlan2Type = makePlan2Type
View Source
var MakeTypeByPlan2Expr = makeTypeByPlan2Expr
View Source
var MakeTypeByPlan2Type = makeTypeByPlan2Type
View Source
var (
	MetaColDefs = []*plan.ColDef{
		{
			Name: catalog.MetaColNames[catalog.QUERY_ID_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.QUERY_ID_IDX].Oid),
				NotNullable: false,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.STATEMENT_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.STATEMENT_IDX].Oid),
				NotNullable: false,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.ACCOUNT_ID_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.ACCOUNT_ID_IDX].Oid),
				NotNullable: false,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.ROLE_ID_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.ROLE_ID_IDX].Oid),
				NotNullable: false,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.RESULT_PATH_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.RESULT_PATH_IDX].Oid),
				NotNullable: false,
				Width:       4,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.CREATE_TIME_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.CREATE_TIME_IDX].Oid),
				NotNullable: false,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.RESULT_SIZE_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.RESULT_SIZE_IDX].Oid),
				NotNullable: false,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.TABLES_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.TABLES_IDX].Oid),
				NotNullable: false,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.USER_ID_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.USER_ID_IDX].Oid),
				NotNullable: false,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.EXPIRED_TIME_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.EXPIRED_TIME_IDX].Oid),
				NotNullable: false,
			},
		},
		{
			Name: catalog.MetaColNames[catalog.COLUMN_MAP_IDX],
			Typ: &plan.Type{
				Id:          int32(catalog.MetaColTypes[catalog.COLUMN_MAP_IDX].Oid),
				NotNullable: false,
			},
		},
	}
)

Functions

func BuildVectorsByData added in v0.7.0

func BuildVectorsByData(datas [][2]any, dataTypes []uint8, mp *mpool.MPool) []*vector.Vector

func CheckExprIsMonotonic added in v0.7.0

func CheckExprIsMonotonic(ctx context.Context, expr *plan.Expr) bool

func ConstantFold added in v0.6.0

func ConstantFold(bat *batch.Batch, e *plan.Expr, proc *process.Process) (*plan.Expr, error)

func DeepCopyAnalyzeInfo added in v0.7.0

func DeepCopyAnalyzeInfo(analyzeinfo *plan.AnalyzeInfo) *plan.AnalyzeInfo

func DeepCopyClusterTable added in v0.7.0

func DeepCopyClusterTable(cluster *plan.ClusterTable) *plan.ClusterTable

func DeepCopyColData added in v0.6.0

func DeepCopyColData(col *plan.ColData) *plan.ColData

func DeepCopyColDef added in v0.6.0

func DeepCopyColDef(col *plan.ColDef) *plan.ColDef

func DeepCopyDataDefinition added in v0.6.0

func DeepCopyDataDefinition(old *plan.DataDefinition) *plan.DataDefinition

func DeepCopyDefault added in v0.6.0

func DeepCopyDefault(def *plan.Default) *plan.Default

func DeepCopyDeleteCtx added in v0.7.0

func DeepCopyDeleteCtx(ctx *plan.DeleteCtx) *plan.DeleteCtx

func DeepCopyIndexDef added in v0.7.0

func DeepCopyIndexDef(indexDef *plan.IndexDef) *plan.IndexDef

func DeepCopyInsertCtx added in v0.7.0

func DeepCopyInsertCtx(ctx *plan.InsertCtx) *plan.InsertCtx

func DeepCopyNode added in v0.6.0

func DeepCopyNode(node *plan.Node) *plan.Node

func DeepCopyObjectRef added in v0.7.0

func DeepCopyObjectRef(ref *plan.ObjectRef) *plan.ObjectRef

func DeepCopyOnUpdate added in v0.6.0

func DeepCopyOnUpdate(old *plan.OnUpdate) *plan.OnUpdate

func DeepCopyOrderBy added in v0.6.0

func DeepCopyOrderBy(orderBy *plan.OrderBySpec) *plan.OrderBySpec

func DeepCopyPrimaryKeyDef added in v0.7.0

func DeepCopyPrimaryKeyDef(pkeyDef *plan.PrimaryKeyDef) *plan.PrimaryKeyDef

func DeepCopyQuery added in v0.6.0

func DeepCopyQuery(qry *plan.Query) *plan.Query

func DeepCopyTableDef added in v0.6.0

func DeepCopyTableDef(table *plan.TableDef) *plan.TableDef

func DeepCopyTyp added in v0.6.0

func DeepCopyTyp(typ *plan.Type) *plan.Type

func DeepCopyUpdateCtx added in v0.7.0

func DeepCopyUpdateCtx(ctx *plan.UpdateCtx) *plan.UpdateCtx

func DefaultStats added in v0.7.0

func DefaultStats() *plan.Stats

func EvalFilterExpr added in v0.7.0

func EvalFilterExpr(ctx context.Context, expr *plan.Expr, bat *batch.Batch, proc *process.Process) (bool, error)

func EvalPlanExpr added in v0.7.0

func EvalPlanExpr(ctx context.Context, expr *plan.Expr, process *process.Process) (*plan.Expr, error)

func GetBindings added in v0.5.0

func GetBindings(expr *plan.Expr) []int32

func GetColumnsByExpr added in v0.7.0

func GetColumnsByExpr(expr *plan.Expr, tableDef *plan.TableDef) (map[int]int, []int, int)

func GetForETLWithType added in v0.7.0

func GetForETLWithType(param *tree.ExternParam, prefix string) (res fileservice.ETLFileService, readPath string, err error)

func GetProjectNode added in v0.6.0

func GetProjectNode(stmt *tree.Load, ctx CompilerContext, node *plan.Node, Name2ColIndex map[string]int32, clusterTable *ClusterTable) error

func GetTablePriKeyName added in v0.7.0

func GetTablePriKeyName(cols []*plan.ColDef, cPkeyCol *plan.ColDef) string

Get the primary key name of the table

func HandleFiltersForZM added in v0.7.0

func HandleFiltersForZM(exprList []*plan.Expr, proc *process.Process) *plan.Expr

handle the filter list for zonemap. rewrite and constFold

func InitInfileParam added in v0.7.0

func InitInfileParam(param *tree.ExternParam) error

func InitNullMap added in v0.6.0

func InitNullMap(param *tree.ExternParam, ctx CompilerContext) error

func InitS3Param added in v0.7.0

func InitS3Param(param *tree.ExternParam) error

func MakeExpr added in v0.6.0

func MakeExpr(ctx context.Context, name string, args []*Expr) *plan.Expr

func MakePlan2NullTextConstExprWithType added in v0.7.0

func MakePlan2NullTextConstExprWithType(v string) *plan.Expr

func ReCalcNodeStats added in v0.7.0

func ReCalcNodeStats(nodeID int32, builder *QueryBuilder, recursive bool)

func ReadDir added in v0.7.0

func ReadDir(param *tree.ExternParam) (fileList []string, fileSize []int64, err error)

ReadDir support "etl:" and "/..." absolute path, NOT support relative path.

Types

type BaseOptimizer added in v0.5.0

type BaseOptimizer struct {
	// contains filtered or unexported fields
}

BaseOptimizer is base optimizer, capable of handling only a few simple rules

func NewBaseOptimizer added in v0.5.0

func NewBaseOptimizer(ctx CompilerContext) *BaseOptimizer

func NewPrepareOptimizer added in v0.7.0

func NewPrepareOptimizer(ctx CompilerContext) *BaseOptimizer

func (*BaseOptimizer) CurrentContext added in v0.5.0

func (opt *BaseOptimizer) CurrentContext() CompilerContext

func (*BaseOptimizer) Optimize added in v0.5.0

func (opt *BaseOptimizer) Optimize(stmt tree.Statement) (*Query, error)

type BindContext added in v0.5.0

type BindContext struct {
	// contains filtered or unexported fields
}

func NewBindContext added in v0.5.0

func NewBindContext(builder *QueryBuilder, parent *BindContext) *BindContext

type Binder added in v0.5.0

type Binder interface {
	BindExpr(tree.Expr, int32, bool) (*plan.Expr, error)
	BindColRef(*tree.UnresolvedName, int32, bool) (*plan.Expr, error)
	BindAggFunc(string, *tree.FuncExpr, int32, bool) (*plan.Expr, error)
	BindWinFunc(string, *tree.FuncExpr, int32, bool) (*plan.Expr, error)
	BindSubquery(*tree.Subquery, bool) (*plan.Expr, error)
	GetContext() context.Context
}

type Binding added in v0.5.0

type Binding struct {
	// contains filtered or unexported fields
}

func NewBinding added in v0.5.0

func NewBinding(tag, nodeID int32, table string, cols []string, types []*plan.Type, isClusterTable bool) *Binding

func (*Binding) FindColumn added in v0.5.0

func (b *Binding) FindColumn(col string) int32

type BindingTreeNode added in v0.5.0

type BindingTreeNode struct {
	// contains filtered or unexported fields
}

type CTERef added in v0.5.0

type CTERef struct {
	// contains filtered or unexported fields
}

type ClusterByDef added in v0.7.0

type ClusterByDef = plan.ClusterByDef

type ClusterTable added in v0.7.0

type ClusterTable = plan.ClusterTable

type ColDef added in v0.5.0

type ColDef = plan.ColDef

func GetResultColumnsFromPlan added in v0.5.0

func GetResultColumnsFromPlan(p *Plan) []*ColDef

GetResultColumnsFromPlan

type ColRef added in v0.5.0

type ColRef = plan.ColRef

func CheckFilter added in v0.7.0

func CheckFilter(expr *plan.Expr) (bool, *ColRef)

for predicate deduction, filter must be like func(col)>1 , or (col=1) or (col=2) and only 1 colRef is allowd in the filter

type ColRefRemapping added in v0.5.0

type ColRefRemapping struct {
	// contains filtered or unexported fields
}

type CompilerContext added in v0.5.0

type CompilerContext interface {
	// Default database/schema in context
	DefaultDatabase() string
	// check if database exist
	DatabaseExists(name string) bool
	// get table definition by database/schema
	Resolve(schemaName string, tableName string) (*ObjectRef, *TableDef)
	// get table definition by table id
	ResolveById(tableId uint64) (*ObjectRef, *TableDef)
	// get the value of variable
	ResolveVariable(varName string, isSystemVar, isGlobalVar bool) (interface{}, error)
	// get the list of the account id
	ResolveAccountIds(accountNames []string) ([]uint32, error)
	// get the definition of primary key
	GetPrimaryKeyDef(dbName string, tableName string) []*ColDef
	// get the definition of hide key
	GetHideKeyDef(dbName string, tableName string) *ColDef
	// get estimated stats by table & expr
	Stats(obj *ObjectRef, e *Expr) *Stats
	// get origin sql string of the root
	GetRootSql() string
	// get username of current session
	GetUserName() string
	GetAccountId() uint32
	// GetContext get raw context.Context
	GetContext() context.Context

	GetProcess() *process.Process

	GetQueryResultMeta(uuid string) ([]*ColDef, string, error)
	SetBuildingAlterView(yesOrNo bool, dbName, viewName string)
	// is building the alter view or not
	// return: yes or no, dbName, viewName
	GetBuildingAlterView() (bool, string, string)
}

type Const added in v0.5.0

type Const = plan.Const

type ConstantFoldRule added in v0.7.0

type ConstantFoldRule struct {
	// contains filtered or unexported fields
}

func NewConstantFoldRule added in v0.7.0

func NewConstantFoldRule(compCtx CompilerContext) *ConstantFoldRule

func (*ConstantFoldRule) ApplyExpr added in v0.7.0

func (r *ConstantFoldRule) ApplyExpr(e *plan.Expr) (*plan.Expr, error)

func (*ConstantFoldRule) ApplyNode added in v0.7.0

func (r *ConstantFoldRule) ApplyNode(node *Node) error

func (*ConstantFoldRule) IsApplyExpr added in v0.7.0

func (r *ConstantFoldRule) IsApplyExpr() bool

func (*ConstantFoldRule) MatchNode added in v0.7.0

func (r *ConstantFoldRule) MatchNode(node *Node) bool

type CreateTable_FkColName added in v0.7.0

type CreateTable_FkColName = plan.CreateTable_FkColName

type DefaultBinder added in v0.6.0

type DefaultBinder struct {
	// contains filtered or unexported fields
}

func NewDefaultBinder added in v0.6.0

func NewDefaultBinder(sysCtx context.Context, builder *QueryBuilder, ctx *BindContext, typ *Type, cols []string) *DefaultBinder

func (*DefaultBinder) BindAggFunc added in v0.6.0

func (b *DefaultBinder) BindAggFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*DefaultBinder) BindColRef added in v0.6.0

func (b *DefaultBinder) BindColRef(astExpr *tree.UnresolvedName, depth int32, isRoot bool) (*plan.Expr, error)

func (*DefaultBinder) BindExpr added in v0.6.0

func (b *DefaultBinder) BindExpr(astExpr tree.Expr, depth int32, isRoot bool) (*plan.Expr, error)

func (*DefaultBinder) BindSubquery added in v0.6.0

func (b *DefaultBinder) BindSubquery(astExpr *tree.Subquery, isRoot bool) (*plan.Expr, error)

func (*DefaultBinder) BindWinFunc added in v0.6.0

func (b *DefaultBinder) BindWinFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*DefaultBinder) GetContext added in v0.7.0

func (b *DefaultBinder) GetContext() context.Context

type ExecInfo added in v0.6.0

type ExecInfo struct {
	Typ        ExecType
	WithGPU    bool
	WithBigMem bool
	CnNumbers  int
}

func GetExecTypeFromPlan added in v0.6.0

func GetExecTypeFromPlan(pn *Plan) ExecInfo

GetExecType get executor will execute base AP or TP

type ExecType added in v0.6.0

type ExecType int
const (
	ExecTypeAP ExecType = iota
	ExecTypeTP
)

type Expr added in v0.5.0

type Expr = plan.Expr

func DeepCopyExpr added in v0.5.0

func DeepCopyExpr(expr *Expr) *Expr

func DeepCopyExprList added in v0.6.0

func DeepCopyExprList(list []*Expr) []*Expr

type ForeignKeyDef added in v0.7.0

type ForeignKeyDef = plan.ForeignKeyDef

type GetParamRule added in v0.6.0

type GetParamRule struct {
	// contains filtered or unexported fields
}

func NewGetParamRule added in v0.5.1

func NewGetParamRule() *GetParamRule

func (*GetParamRule) ApplyExpr added in v0.6.0

func (rule *GetParamRule) ApplyExpr(e *plan.Expr) (*plan.Expr, error)

func (*GetParamRule) ApplyNode added in v0.6.0

func (rule *GetParamRule) ApplyNode(node *Node) error

func (*GetParamRule) IsApplyExpr added in v0.6.0

func (rule *GetParamRule) IsApplyExpr() bool

func (*GetParamRule) MatchNode added in v0.6.0

func (rule *GetParamRule) MatchNode(node *Node) bool

func (*GetParamRule) SetParamOrder added in v0.6.0

func (rule *GetParamRule) SetParamOrder()

type GroupBinder added in v0.5.0

type GroupBinder struct {
	// contains filtered or unexported fields
}

func NewGroupBinder added in v0.5.0

func NewGroupBinder(builder *QueryBuilder, ctx *BindContext) *GroupBinder

func (*GroupBinder) BindAggFunc added in v0.5.0

func (b *GroupBinder) BindAggFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*GroupBinder) BindColRef added in v0.5.0

func (b *GroupBinder) BindColRef(astExpr *tree.UnresolvedName, depth int32, isRoot bool) (*plan.Expr, error)

func (*GroupBinder) BindExpr added in v0.5.0

func (b *GroupBinder) BindExpr(astExpr tree.Expr, depth int32, isRoot bool) (*plan.Expr, error)

func (*GroupBinder) BindSubquery added in v0.5.0

func (b *GroupBinder) BindSubquery(astExpr *tree.Subquery, isRoot bool) (*plan.Expr, error)

func (*GroupBinder) BindWinFunc added in v0.5.0

func (b *GroupBinder) BindWinFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*GroupBinder) GetContext added in v0.7.0

func (b *GroupBinder) GetContext() context.Context

type HavingBinder added in v0.5.0

type HavingBinder struct {
	// contains filtered or unexported fields
}

func NewHavingBinder added in v0.5.0

func NewHavingBinder(builder *QueryBuilder, ctx *BindContext) *HavingBinder

func (*HavingBinder) BindAggFunc added in v0.5.0

func (b *HavingBinder) BindAggFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*HavingBinder) BindColRef added in v0.5.0

func (b *HavingBinder) BindColRef(astExpr *tree.UnresolvedName, depth int32, isRoot bool) (*plan.Expr, error)

func (*HavingBinder) BindExpr added in v0.5.0

func (b *HavingBinder) BindExpr(astExpr tree.Expr, depth int32, isRoot bool) (*plan.Expr, error)

func (*HavingBinder) BindSubquery added in v0.5.0

func (b *HavingBinder) BindSubquery(astExpr *tree.Subquery, isRoot bool) (*plan.Expr, error)

func (*HavingBinder) BindWinFunc added in v0.5.0

func (b *HavingBinder) BindWinFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*HavingBinder) GetContext added in v0.7.0

func (b *HavingBinder) GetContext() context.Context

type IndexDef added in v0.6.0

type IndexDef = plan.IndexDef

type LimitBinder added in v0.5.0

type LimitBinder struct {
	// contains filtered or unexported fields
}

func NewLimitBinder added in v0.5.0

func NewLimitBinder(builder *QueryBuilder, ctx *BindContext) *LimitBinder

func (*LimitBinder) BindAggFunc added in v0.5.0

func (b *LimitBinder) BindAggFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*LimitBinder) BindColRef added in v0.5.0

func (b *LimitBinder) BindColRef(astExpr *tree.UnresolvedName, depth int32, isRoot bool) (*plan.Expr, error)

func (*LimitBinder) BindExpr added in v0.5.0

func (b *LimitBinder) BindExpr(astExpr tree.Expr, depth int32, isRoot bool) (*plan.Expr, error)

func (*LimitBinder) BindSubquery added in v0.5.0

func (b *LimitBinder) BindSubquery(astExpr *tree.Subquery, isRoot bool) (*plan.Expr, error)

func (*LimitBinder) BindWinFunc added in v0.5.0

func (b *LimitBinder) BindWinFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*LimitBinder) GetContext added in v0.7.0

func (b *LimitBinder) GetContext() context.Context

type MaxValue added in v0.6.0

type MaxValue = plan.MaxValue

type MockBinder added in v0.7.0

type MockBinder struct {
	// contains filtered or unexported fields
}

MockBinder is a mock of Binder interface.

func NewMockBinder added in v0.7.0

func NewMockBinder(ctrl *gomock.Controller) *MockBinder

NewMockBinder creates a new mock instance.

func (*MockBinder) BindAggFunc added in v0.7.0

func (m *MockBinder) BindAggFunc(arg0 string, arg1 *tree.FuncExpr, arg2 int32, arg3 bool) (*plan.Expr, error)

BindAggFunc mocks base method.

func (*MockBinder) BindColRef added in v0.7.0

func (m *MockBinder) BindColRef(arg0 *tree.UnresolvedName, arg1 int32, arg2 bool) (*plan.Expr, error)

BindColRef mocks base method.

func (*MockBinder) BindExpr added in v0.7.0

func (m *MockBinder) BindExpr(arg0 tree.Expr, arg1 int32, arg2 bool) (*plan.Expr, error)

BindExpr mocks base method.

func (*MockBinder) BindSubquery added in v0.7.0

func (m *MockBinder) BindSubquery(arg0 *tree.Subquery, arg1 bool) (*plan.Expr, error)

BindSubquery mocks base method.

func (*MockBinder) BindWinFunc added in v0.7.0

func (m *MockBinder) BindWinFunc(arg0 string, arg1 *tree.FuncExpr, arg2 int32, arg3 bool) (*plan.Expr, error)

BindWinFunc mocks base method.

func (*MockBinder) EXPECT added in v0.7.0

func (m *MockBinder) EXPECT() *MockBinderMockRecorder

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockBinder) GetContext added in v0.7.0

func (m *MockBinder) GetContext() context.Context

GetContext mocks base method.

type MockBinderMockRecorder added in v0.7.0

type MockBinderMockRecorder struct {
	// contains filtered or unexported fields
}

MockBinderMockRecorder is the mock recorder for MockBinder.

func (*MockBinderMockRecorder) BindAggFunc added in v0.7.0

func (mr *MockBinderMockRecorder) BindAggFunc(arg0, arg1, arg2, arg3 interface{}) *gomock.Call

BindAggFunc indicates an expected call of BindAggFunc.

func (*MockBinderMockRecorder) BindColRef added in v0.7.0

func (mr *MockBinderMockRecorder) BindColRef(arg0, arg1, arg2 interface{}) *gomock.Call

BindColRef indicates an expected call of BindColRef.

func (*MockBinderMockRecorder) BindExpr added in v0.7.0

func (mr *MockBinderMockRecorder) BindExpr(arg0, arg1, arg2 interface{}) *gomock.Call

BindExpr indicates an expected call of BindExpr.

func (*MockBinderMockRecorder) BindSubquery added in v0.7.0

func (mr *MockBinderMockRecorder) BindSubquery(arg0, arg1 interface{}) *gomock.Call

BindSubquery indicates an expected call of BindSubquery.

func (*MockBinderMockRecorder) BindWinFunc added in v0.7.0

func (mr *MockBinderMockRecorder) BindWinFunc(arg0, arg1, arg2, arg3 interface{}) *gomock.Call

BindWinFunc indicates an expected call of BindWinFunc.

func (*MockBinderMockRecorder) GetContext added in v0.7.0

func (mr *MockBinderMockRecorder) GetContext() *gomock.Call

GetContext indicates an expected call of GetContext.

type MockCompilerContext added in v0.5.0

type MockCompilerContext struct {
	// contains filtered or unexported fields
}

func NewEmptyCompilerContext added in v0.5.0

func NewEmptyCompilerContext() *MockCompilerContext

NewEmptyCompilerContext for test create/drop statement

func NewMockCompilerContext added in v0.5.0

func NewMockCompilerContext(isDml bool) *MockCompilerContext

func (*MockCompilerContext) DatabaseExists added in v0.5.0

func (m *MockCompilerContext) DatabaseExists(name string) bool

func (*MockCompilerContext) DefaultDatabase added in v0.5.0

func (m *MockCompilerContext) DefaultDatabase() string

func (*MockCompilerContext) GetAccountId added in v0.6.0

func (m *MockCompilerContext) GetAccountId() uint32

func (*MockCompilerContext) GetBuildingAlterView added in v0.7.0

func (m *MockCompilerContext) GetBuildingAlterView() (bool, string, string)

func (*MockCompilerContext) GetContext added in v0.7.0

func (m *MockCompilerContext) GetContext() context.Context

func (*MockCompilerContext) GetHideKeyDef added in v0.5.0

func (m *MockCompilerContext) GetHideKeyDef(dbName string, tableName string) *ColDef

func (*MockCompilerContext) GetPrimaryKeyDef added in v0.5.0

func (m *MockCompilerContext) GetPrimaryKeyDef(dbName string, tableName string) []*ColDef

func (*MockCompilerContext) GetProcess added in v0.7.0

func (m *MockCompilerContext) GetProcess() *process.Process

func (*MockCompilerContext) GetQueryResultMeta added in v0.7.0

func (m *MockCompilerContext) GetQueryResultMeta(uuid string) ([]*ColDef, string, error)

func (*MockCompilerContext) GetRootSql added in v0.6.0

func (m *MockCompilerContext) GetRootSql() string

func (*MockCompilerContext) GetUserName added in v0.6.0

func (m *MockCompilerContext) GetUserName() string

func (*MockCompilerContext) Resolve added in v0.5.0

func (m *MockCompilerContext) Resolve(dbName string, tableName string) (*ObjectRef, *TableDef)

func (*MockCompilerContext) ResolveAccountIds added in v0.7.0

func (m *MockCompilerContext) ResolveAccountIds(accountNames []string) ([]uint32, error)

func (*MockCompilerContext) ResolveById added in v0.7.0

func (m *MockCompilerContext) ResolveById(tableId uint64) (*ObjectRef, *TableDef)

func (*MockCompilerContext) ResolveVariable added in v0.5.0

func (m *MockCompilerContext) ResolveVariable(varName string, isSystemVar, isGlobalVar bool) (interface{}, error)

func (*MockCompilerContext) SetBuildingAlterView added in v0.7.0

func (m *MockCompilerContext) SetBuildingAlterView(yesOrNo bool, dbName, viewName string)

func (*MockCompilerContext) Stats added in v0.7.0

func (m *MockCompilerContext) Stats(obj *ObjectRef, e *Expr) *Stats

type MockCompilerContext2 added in v0.7.0

type MockCompilerContext2 struct {
	// contains filtered or unexported fields
}

MockCompilerContext2 is a mock of CompilerContext interface.

func NewMockCompilerContext2 added in v0.7.0

func NewMockCompilerContext2(ctrl *gomock.Controller) *MockCompilerContext2

NewMockCompilerContext2 creates a new mock instance.

func (*MockCompilerContext2) DatabaseExists added in v0.7.0

func (m *MockCompilerContext2) DatabaseExists(name string) bool

DatabaseExists mocks base method.

func (*MockCompilerContext2) DefaultDatabase added in v0.7.0

func (m *MockCompilerContext2) DefaultDatabase() string

DefaultDatabase mocks base method.

func (*MockCompilerContext2) EXPECT added in v0.7.0

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockCompilerContext2) GetAccountId added in v0.7.0

func (m *MockCompilerContext2) GetAccountId() uint32

GetAccountId mocks base method.

func (*MockCompilerContext2) GetBuildingAlterView added in v0.7.0

func (m *MockCompilerContext2) GetBuildingAlterView() (bool, string, string)

GetBuildingAlterView mocks base method.

func (*MockCompilerContext2) GetContext added in v0.7.0

func (m *MockCompilerContext2) GetContext() context.Context

GetContext mocks base method.

func (*MockCompilerContext2) GetHideKeyDef added in v0.7.0

func (m *MockCompilerContext2) GetHideKeyDef(dbName, tableName string) *plan.ColDef

GetHideKeyDef mocks base method.

func (*MockCompilerContext2) GetPrimaryKeyDef added in v0.7.0

func (m *MockCompilerContext2) GetPrimaryKeyDef(dbName, tableName string) []*plan.ColDef

GetPrimaryKeyDef mocks base method.

func (*MockCompilerContext2) GetProcess added in v0.7.0

func (m *MockCompilerContext2) GetProcess() *process.Process

GetProcess mocks base method.

func (*MockCompilerContext2) GetQueryResultMeta added in v0.7.0

func (m *MockCompilerContext2) GetQueryResultMeta(uuid string) ([]*plan.ColDef, string, error)

GetQueryResultMeta mocks base method.

func (*MockCompilerContext2) GetRootSql added in v0.7.0

func (m *MockCompilerContext2) GetRootSql() string

GetRootSql mocks base method.

func (*MockCompilerContext2) GetUserName added in v0.7.0

func (m *MockCompilerContext2) GetUserName() string

GetUserName mocks base method.

func (*MockCompilerContext2) Resolve added in v0.7.0

func (m *MockCompilerContext2) Resolve(schemaName, tableName string) (*plan.ObjectRef, *plan.TableDef)

Resolve mocks base method.

func (*MockCompilerContext2) ResolveAccountIds added in v0.7.0

func (m *MockCompilerContext2) ResolveAccountIds(accountNames []string) ([]uint32, error)

ResolveAccountIds mocks base method.

func (*MockCompilerContext2) ResolveById added in v0.7.0

func (m *MockCompilerContext2) ResolveById(tableId uint64) (*plan.ObjectRef, *plan.TableDef)

ResolveById mocks base method.

func (*MockCompilerContext2) ResolveVariable added in v0.7.0

func (m *MockCompilerContext2) ResolveVariable(varName string, isSystemVar, isGlobalVar bool) (interface{}, error)

ResolveVariable mocks base method.

func (*MockCompilerContext2) SetBuildingAlterView added in v0.7.0

func (m *MockCompilerContext2) SetBuildingAlterView(yesOrNo bool, dbName, viewName string)

SetBuildingAlterView mocks base method.

func (*MockCompilerContext2) Stats added in v0.7.0

func (m *MockCompilerContext2) Stats(obj *plan.ObjectRef, e *plan.Expr) *plan.Stats

Stats mocks base method.

type MockCompilerContext2MockRecorder added in v0.7.0

type MockCompilerContext2MockRecorder struct {
	// contains filtered or unexported fields
}

MockCompilerContext2MockRecorder is the mock recorder for MockCompilerContext2.

func (*MockCompilerContext2MockRecorder) DatabaseExists added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) DatabaseExists(name interface{}) *gomock.Call

DatabaseExists indicates an expected call of DatabaseExists.

func (*MockCompilerContext2MockRecorder) DefaultDatabase added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) DefaultDatabase() *gomock.Call

DefaultDatabase indicates an expected call of DefaultDatabase.

func (*MockCompilerContext2MockRecorder) GetAccountId added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) GetAccountId() *gomock.Call

GetAccountId indicates an expected call of GetAccountId.

func (*MockCompilerContext2MockRecorder) GetBuildingAlterView added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) GetBuildingAlterView() *gomock.Call

GetBuildingAlterView indicates an expected call of GetBuildingAlterView.

func (*MockCompilerContext2MockRecorder) GetContext added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) GetContext() *gomock.Call

GetContext indicates an expected call of GetContext.

func (*MockCompilerContext2MockRecorder) GetHideKeyDef added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) GetHideKeyDef(dbName, tableName interface{}) *gomock.Call

GetHideKeyDef indicates an expected call of GetHideKeyDef.

func (*MockCompilerContext2MockRecorder) GetPrimaryKeyDef added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) GetPrimaryKeyDef(dbName, tableName interface{}) *gomock.Call

GetPrimaryKeyDef indicates an expected call of GetPrimaryKeyDef.

func (*MockCompilerContext2MockRecorder) GetProcess added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) GetProcess() *gomock.Call

GetProcess indicates an expected call of GetProcess.

func (*MockCompilerContext2MockRecorder) GetQueryResultMeta added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) GetQueryResultMeta(uuid interface{}) *gomock.Call

GetQueryResultMeta indicates an expected call of GetQueryResultMeta.

func (*MockCompilerContext2MockRecorder) GetRootSql added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) GetRootSql() *gomock.Call

GetRootSql indicates an expected call of GetRootSql.

func (*MockCompilerContext2MockRecorder) GetUserName added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) GetUserName() *gomock.Call

GetUserName indicates an expected call of GetUserName.

func (*MockCompilerContext2MockRecorder) Resolve added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) Resolve(schemaName, tableName interface{}) *gomock.Call

Resolve indicates an expected call of Resolve.

func (*MockCompilerContext2MockRecorder) ResolveAccountIds added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) ResolveAccountIds(accountNames interface{}) *gomock.Call

ResolveAccountIds indicates an expected call of ResolveAccountIds.

func (*MockCompilerContext2MockRecorder) ResolveById added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) ResolveById(tableId interface{}) *gomock.Call

ResolveById indicates an expected call of ResolveById.

func (*MockCompilerContext2MockRecorder) ResolveVariable added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) ResolveVariable(varName, isSystemVar, isGlobalVar interface{}) *gomock.Call

ResolveVariable indicates an expected call of ResolveVariable.

func (*MockCompilerContext2MockRecorder) SetBuildingAlterView added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) SetBuildingAlterView(yesOrNo, dbName, viewName interface{}) *gomock.Call

SetBuildingAlterView indicates an expected call of SetBuildingAlterView.

func (*MockCompilerContext2MockRecorder) Stats added in v0.7.0

func (mr *MockCompilerContext2MockRecorder) Stats(obj, e interface{}) *gomock.Call

Stats indicates an expected call of Stats.

type MockOptimizer added in v0.5.0

type MockOptimizer struct {
	// contains filtered or unexported fields
}

func NewEmptyMockOptimizer added in v0.5.0

func NewEmptyMockOptimizer() *MockOptimizer

func NewMockOptimizer added in v0.5.0

func NewMockOptimizer(isDml bool) *MockOptimizer

func (*MockOptimizer) CurrentContext added in v0.5.0

func (moc *MockOptimizer) CurrentContext() CompilerContext

func (*MockOptimizer) Optimize added in v0.5.0

func (moc *MockOptimizer) Optimize(stmt tree.Statement) (*Query, error)

type MockOptimizer2 added in v0.7.0

type MockOptimizer2 struct {
	// contains filtered or unexported fields
}

MockOptimizer2 is a mock of Optimizer interface.

func NewMockOptimizer2 added in v0.7.0

func NewMockOptimizer2(ctrl *gomock.Controller) *MockOptimizer2

NewMockOptimizer2 creates a new mock instance.

func (*MockOptimizer2) CurrentContext added in v0.7.0

func (m *MockOptimizer2) CurrentContext() CompilerContext

CurrentContext mocks base method.

func (*MockOptimizer2) EXPECT added in v0.7.0

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockOptimizer2) Optimize added in v0.7.0

func (m *MockOptimizer2) Optimize(stmt tree.Statement) (*plan.Query, error)

Optimize mocks base method.

type MockOptimizer2MockRecorder added in v0.7.0

type MockOptimizer2MockRecorder struct {
	// contains filtered or unexported fields
}

MockOptimizer2MockRecorder is the mock recorder for MockOptimizer2.

func (*MockOptimizer2MockRecorder) CurrentContext added in v0.7.0

func (mr *MockOptimizer2MockRecorder) CurrentContext() *gomock.Call

CurrentContext indicates an expected call of CurrentContext.

func (*MockOptimizer2MockRecorder) Optimize added in v0.7.0

func (mr *MockOptimizer2MockRecorder) Optimize(stmt interface{}) *gomock.Call

Optimize indicates an expected call of Optimize.

type MockRule added in v0.7.0

type MockRule struct {
	// contains filtered or unexported fields
}

MockRule is a mock of Rule interface.

func NewMockRule added in v0.7.0

func NewMockRule(ctrl *gomock.Controller) *MockRule

NewMockRule creates a new mock instance.

func (*MockRule) Apply added in v0.7.0

func (m *MockRule) Apply(arg0 *plan.Node, arg1 *plan.Query, arg2 *process.Process)

Apply mocks base method.

func (*MockRule) EXPECT added in v0.7.0

func (m *MockRule) EXPECT() *MockRuleMockRecorder

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockRule) Match added in v0.7.0

func (m *MockRule) Match(arg0 *plan.Node) bool

Match mocks base method.

type MockRuleMockRecorder added in v0.7.0

type MockRuleMockRecorder struct {
	// contains filtered or unexported fields
}

MockRuleMockRecorder is the mock recorder for MockRule.

func (*MockRuleMockRecorder) Apply added in v0.7.0

func (mr *MockRuleMockRecorder) Apply(arg0, arg1, arg2 interface{}) *gomock.Call

Apply indicates an expected call of Apply.

func (*MockRuleMockRecorder) Match added in v0.7.0

func (mr *MockRuleMockRecorder) Match(arg0 interface{}) *gomock.Call

Match indicates an expected call of Match.

type NameTuple added in v0.5.0

type NameTuple struct {
	// contains filtered or unexported fields
}

type Node added in v0.5.0

type Node = plan.Node

type ObjectRef added in v0.5.0

type ObjectRef = plan.ObjectRef

type Optimizer added in v0.5.0

type Optimizer interface {
	Optimize(stmt tree.Statement) (*Query, error)
	CurrentContext() CompilerContext
}

type OrderBinder added in v0.5.0

type OrderBinder struct {
	*ProjectionBinder
	// contains filtered or unexported fields
}

func NewOrderBinder added in v0.5.0

func NewOrderBinder(projectionBinder *ProjectionBinder, selectList tree.SelectExprs) *OrderBinder

func (*OrderBinder) BindExpr added in v0.5.0

func (b *OrderBinder) BindExpr(astExpr tree.Expr) (*plan.Expr, error)

func (OrderBinder) GetContext added in v0.7.0

func (b OrderBinder) GetContext() context.Context

type OrderBySpec added in v0.6.0

type OrderBySpec = plan.OrderBySpec

type PartitionBinder added in v0.6.0

type PartitionBinder struct {
	// contains filtered or unexported fields
}

func NewPartitionBinder added in v0.6.0

func NewPartitionBinder(builder *QueryBuilder, ctx *BindContext) *PartitionBinder

func (*PartitionBinder) BindAggFunc added in v0.6.0

func (p *PartitionBinder) BindAggFunc(s string, expr *tree.FuncExpr, i int32, b bool) (*plan.Expr, error)

func (*PartitionBinder) BindColRef added in v0.6.0

func (p *PartitionBinder) BindColRef(name *tree.UnresolvedName, i int32, b bool) (*plan.Expr, error)

func (*PartitionBinder) BindExpr added in v0.6.0

func (p *PartitionBinder) BindExpr(expr tree.Expr, i int32, b bool) (*plan.Expr, error)

func (*PartitionBinder) BindSubquery added in v0.6.0

func (p *PartitionBinder) BindSubquery(subquery *tree.Subquery, b bool) (*plan.Expr, error)

func (*PartitionBinder) BindWinFunc added in v0.6.0

func (p *PartitionBinder) BindWinFunc(s string, expr *tree.FuncExpr, i int32, b bool) (*plan.Expr, error)

func (*PartitionBinder) GetContext added in v0.7.0

func (b *PartitionBinder) GetContext() context.Context

type PartitionByDef added in v0.7.0

type PartitionByDef = plan.PartitionByDef

type Plan

type Plan = plan.Plan

func BuildPlan added in v0.5.0

func BuildPlan(ctx CompilerContext, stmt tree.Statement) (*Plan, error)

func DeepCopyPlan added in v0.6.0

func DeepCopyPlan(pl *Plan) *Plan

type Plan_Query added in v0.5.0

type Plan_Query = plan.Plan_Query

type PrimaryKeyDef added in v0.7.0

type PrimaryKeyDef = plan.PrimaryKeyDef

type ProjectionBinder added in v0.5.0

type ProjectionBinder struct {
	// contains filtered or unexported fields
}

func NewProjectionBinder added in v0.5.0

func NewProjectionBinder(builder *QueryBuilder, ctx *BindContext, havingBinder *HavingBinder) *ProjectionBinder

func (*ProjectionBinder) BindAggFunc added in v0.5.0

func (b *ProjectionBinder) BindAggFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*ProjectionBinder) BindColRef added in v0.5.0

func (b *ProjectionBinder) BindColRef(astExpr *tree.UnresolvedName, depth int32, isRoot bool) (*plan.Expr, error)

func (*ProjectionBinder) BindExpr added in v0.5.0

func (b *ProjectionBinder) BindExpr(astExpr tree.Expr, depth int32, isRoot bool) (*plan.Expr, error)

func (*ProjectionBinder) BindSubquery added in v0.5.0

func (b *ProjectionBinder) BindSubquery(astExpr *tree.Subquery, isRoot bool) (*plan.Expr, error)

func (*ProjectionBinder) BindWinFunc added in v0.5.0

func (b *ProjectionBinder) BindWinFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*ProjectionBinder) GetContext added in v0.7.0

func (b *ProjectionBinder) GetContext() context.Context

type PropertiesDef added in v0.6.0

type PropertiesDef = plan.PropertiesDef

type Property added in v0.6.0

type Property = plan.Property

type Query

type Query = plan.Query

type QueryBuilder added in v0.5.0

type QueryBuilder struct {
	// contains filtered or unexported fields
}

func NewQueryBuilder added in v0.5.0

func NewQueryBuilder(queryType plan.Query_StatementType, ctx CompilerContext) *QueryBuilder

func (*QueryBuilder) GetContext added in v0.7.0

func (builder *QueryBuilder) GetContext() context.Context

type RecomputeRealTimeRelatedFuncRule added in v0.7.0

type RecomputeRealTimeRelatedFuncRule struct {
	// contains filtered or unexported fields
}

func NewRecomputeRealTimeRelatedFuncRule added in v0.7.0

func NewRecomputeRealTimeRelatedFuncRule(proc *process.Process) *RecomputeRealTimeRelatedFuncRule

func (*RecomputeRealTimeRelatedFuncRule) ApplyExpr added in v0.7.0

func (*RecomputeRealTimeRelatedFuncRule) ApplyNode added in v0.7.0

func (r *RecomputeRealTimeRelatedFuncRule) ApplyNode(_ *Node) error

func (*RecomputeRealTimeRelatedFuncRule) IsApplyExpr added in v0.7.0

func (r *RecomputeRealTimeRelatedFuncRule) IsApplyExpr() bool

func (*RecomputeRealTimeRelatedFuncRule) MatchNode added in v0.7.0

func (r *RecomputeRealTimeRelatedFuncRule) MatchNode(_ *Node) bool

type ResetParamOrderRule added in v0.6.0

type ResetParamOrderRule struct {
	// contains filtered or unexported fields
}

func NewResetParamOrderRule added in v0.6.0

func NewResetParamOrderRule(params map[int]int) *ResetParamOrderRule

func (*ResetParamOrderRule) ApplyExpr added in v0.6.0

func (rule *ResetParamOrderRule) ApplyExpr(e *plan.Expr) (*plan.Expr, error)

func (*ResetParamOrderRule) ApplyNode added in v0.6.0

func (rule *ResetParamOrderRule) ApplyNode(node *Node) error

func (*ResetParamOrderRule) IsApplyExpr added in v0.6.0

func (rule *ResetParamOrderRule) IsApplyExpr() bool

func (*ResetParamOrderRule) MatchNode added in v0.6.0

func (rule *ResetParamOrderRule) MatchNode(_ *Node) bool

type ResetParamRefRule added in v0.6.0

type ResetParamRefRule struct {
	// contains filtered or unexported fields
}

func NewResetParamRefRule added in v0.6.0

func NewResetParamRefRule(ctx context.Context, params []*Expr) *ResetParamRefRule

func (*ResetParamRefRule) ApplyExpr added in v0.6.0

func (rule *ResetParamRefRule) ApplyExpr(e *plan.Expr) (*plan.Expr, error)

func (*ResetParamRefRule) ApplyNode added in v0.6.0

func (rule *ResetParamRefRule) ApplyNode(node *Node) error

func (*ResetParamRefRule) IsApplyExpr added in v0.6.0

func (rule *ResetParamRefRule) IsApplyExpr() bool

func (*ResetParamRefRule) MatchNode added in v0.6.0

func (rule *ResetParamRefRule) MatchNode(_ *Node) bool

type ResetVarRefRule added in v0.6.0

type ResetVarRefRule struct {
	// contains filtered or unexported fields
}

func NewResetVarRefRule added in v0.6.0

func NewResetVarRefRule(compCtx CompilerContext, proc *process.Process) *ResetVarRefRule

func (*ResetVarRefRule) ApplyExpr added in v0.6.0

func (rule *ResetVarRefRule) ApplyExpr(e *plan.Expr) (*plan.Expr, error)

func (*ResetVarRefRule) ApplyNode added in v0.6.0

func (rule *ResetVarRefRule) ApplyNode(node *Node) error

func (*ResetVarRefRule) IsApplyExpr added in v0.6.0

func (rule *ResetVarRefRule) IsApplyExpr() bool

func (*ResetVarRefRule) MatchNode added in v0.6.0

func (rule *ResetVarRefRule) MatchNode(_ *Node) bool

type RowsetData added in v0.5.0

type RowsetData = plan.RowsetData

type Rule added in v0.5.0

type Rule interface {
	Match(*Node) bool                      // rule match?
	Apply(*Node, *Query, *process.Process) // apply the rule
}

type Schema added in v0.5.0

type Schema struct {
	// contains filtered or unexported fields
}

type Stats added in v0.7.0

type Stats = plan.Stats

type TableBinder added in v0.5.0

type TableBinder struct {
	// contains filtered or unexported fields
}

func NewTableBinder added in v0.5.0

func NewTableBinder(builder *QueryBuilder, ctx *BindContext) *TableBinder

func (*TableBinder) BindAggFunc added in v0.5.0

func (b *TableBinder) BindAggFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*TableBinder) BindColRef added in v0.5.0

func (b *TableBinder) BindColRef(astExpr *tree.UnresolvedName, depth int32, isRoot bool) (*plan.Expr, error)

func (*TableBinder) BindExpr added in v0.5.0

func (b *TableBinder) BindExpr(astExpr tree.Expr, depth int32, isRoot bool) (*plan.Expr, error)

func (*TableBinder) BindSubquery added in v0.5.0

func (b *TableBinder) BindSubquery(astExpr *tree.Subquery, isRoot bool) (*plan.Expr, error)

func (*TableBinder) BindWinFunc added in v0.5.0

func (b *TableBinder) BindWinFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*TableBinder) GetContext added in v0.7.0

func (b *TableBinder) GetContext() context.Context

type TableDef added in v0.5.0

type TableDef = plan.TableDef

type TableDefType added in v0.6.0

type TableDefType = plan.TableDef_DefType

type TableDef_DefType_Properties added in v0.6.0

type TableDef_DefType_Properties = plan.TableDef_DefType_Properties

type Type added in v0.5.0

type Type = plan.Type

type ViewData added in v0.6.0

type ViewData struct {
	Stmt            string
	DefaultDatabase string
}

type ViewDef added in v0.6.0

type ViewDef = plan.ViewDef

type VisitPlan added in v0.6.0

type VisitPlan struct {
	// contains filtered or unexported fields
}

func NewVisitPlan added in v0.6.0

func NewVisitPlan(pl *Plan, rules []VisitPlanRule) *VisitPlan

func (*VisitPlan) Visit added in v0.6.0

func (vq *VisitPlan) Visit(ctx context.Context) error

type VisitPlanRule added in v0.6.0

type VisitPlanRule interface {
	MatchNode(*Node) bool
	IsApplyExpr() bool
	ApplyNode(*Node) error
	ApplyExpr(*Expr) (*Expr, error)
}

type WhereBinder added in v0.5.0

type WhereBinder struct {
	// contains filtered or unexported fields
}

func NewWhereBinder added in v0.5.0

func NewWhereBinder(builder *QueryBuilder, ctx *BindContext) *WhereBinder

func (*WhereBinder) BindAggFunc added in v0.5.0

func (b *WhereBinder) BindAggFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*WhereBinder) BindColRef added in v0.5.0

func (b *WhereBinder) BindColRef(astExpr *tree.UnresolvedName, depth int32, isRoot bool) (*plan.Expr, error)

func (*WhereBinder) BindExpr added in v0.5.0

func (b *WhereBinder) BindExpr(astExpr tree.Expr, depth int32, isRoot bool) (*plan.Expr, error)

func (*WhereBinder) BindSubquery added in v0.5.0

func (b *WhereBinder) BindSubquery(astExpr *tree.Subquery, isRoot bool) (*plan.Expr, error)

func (*WhereBinder) BindWinFunc added in v0.5.0

func (b *WhereBinder) BindWinFunc(funcName string, astExpr *tree.FuncExpr, depth int32, isRoot bool) (*plan.Expr, error)

func (*WhereBinder) GetContext added in v0.7.0

func (b *WhereBinder) GetContext() context.Context

Directories

Path Synopsis
explain explain statement
explain explain statement

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL