Documentation
¶
Index ¶
- func NewFirstChunk(e Executor) *chunk.Chunk
- func Next(ctx context.Context, e Executor, req *chunk.Chunk) error
- func RegisterSQLAndPlanInExecForTopSQL(sessVars *variable.SessionVars)
- func RetTypes(e Executor) []*types.FieldType
- func TryNewCacheChunk(e Executor) *chunk.Chunk
- type BaseExecutor
- func (e *BaseExecutor) AllChildren() []Executor
- func (e *BaseExecutor) Base() *BaseExecutor
- func (e *BaseExecutor) Children(idx int) Executor
- func (e *BaseExecutor) ChildrenLen() int
- func (e *BaseExecutor) Close() error
- func (e *BaseExecutor) Ctx() sessionctx.Context
- func (e *BaseExecutor) EmptyChildren() bool
- func (e *BaseExecutor) GetSchema() *expression.Schema
- func (e *BaseExecutor) GetSysSession() (sessionctx.Context, error)
- func (e *BaseExecutor) ID() int
- func (e *BaseExecutor) InitCap() int
- func (e *BaseExecutor) MaxChunkSize() int
- func (*BaseExecutor) Next(_ context.Context, _ *chunk.Chunk) error
- func (e *BaseExecutor) Open(ctx context.Context) error
- func (e *BaseExecutor) ReleaseSysSession(ctx context.Context, sctx sessionctx.Context)
- func (e *BaseExecutor) RetFieldTypes() []*types.FieldType
- func (e *BaseExecutor) RuntimeStats() *execdetails.BasicRuntimeStats
- func (e *BaseExecutor) Schema() *expression.Schema
- func (e *BaseExecutor) SetChildren(idx int, ex Executor)
- func (e *BaseExecutor) SetInitCap(c int)
- func (e *BaseExecutor) SetMaxChunkSize(size int)
- func (e *BaseExecutor) UpdateDeltaForTableID(id int64)
- type Executor
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewFirstChunk ¶
NewFirstChunk creates a new chunk to buffer current executor's result.
func RegisterSQLAndPlanInExecForTopSQL ¶
func RegisterSQLAndPlanInExecForTopSQL(sessVars *variable.SessionVars)
RegisterSQLAndPlanInExecForTopSQL register the sql and plan information if it doesn't register before execution. This uses to catch the running SQL when Top SQL is enabled in execution.
func TryNewCacheChunk ¶
TryNewCacheChunk tries to get a cached chunk
Types ¶
type BaseExecutor ¶
BaseExecutor holds common information for executors.
func NewBaseExecutor ¶
func NewBaseExecutor(ctx sessionctx.Context, schema *expression.Schema, id int, children ...Executor) BaseExecutor
NewBaseExecutor creates a new BaseExecutor instance.
func (*BaseExecutor) AllChildren ¶
func (e *BaseExecutor) AllChildren() []Executor
AllChildren returns all children.
func (*BaseExecutor) Base ¶
func (e *BaseExecutor) Base() *BaseExecutor
Base returns the BaseExecutor of an executor, don't override this method!
func (*BaseExecutor) Children ¶
func (e *BaseExecutor) Children(idx int) Executor
Children returns the children for an executor.
func (*BaseExecutor) ChildrenLen ¶
func (e *BaseExecutor) ChildrenLen() int
ChildrenLen returns the length of children.
func (*BaseExecutor) Close ¶
func (e *BaseExecutor) Close() error
Close closes all executors and release all resources.
func (*BaseExecutor) Ctx ¶
func (e *BaseExecutor) Ctx() sessionctx.Context
Ctx return ```sessionctx.Context``` of Executor
func (*BaseExecutor) EmptyChildren ¶
func (e *BaseExecutor) EmptyChildren() bool
EmptyChildren judges whether the children is empty.
func (*BaseExecutor) GetSchema ¶
func (e *BaseExecutor) GetSchema() *expression.Schema
GetSchema gets the schema.
func (*BaseExecutor) GetSysSession ¶
func (e *BaseExecutor) GetSysSession() (sessionctx.Context, error)
GetSysSession gets a system session context from executor.
func (*BaseExecutor) InitCap ¶
func (e *BaseExecutor) InitCap() int
InitCap returns the initial capacity for chunk
func (*BaseExecutor) MaxChunkSize ¶
func (e *BaseExecutor) MaxChunkSize() int
MaxChunkSize returns the max chunk size.
func (*BaseExecutor) Open ¶
func (e *BaseExecutor) Open(ctx context.Context) error
Open initializes children recursively and "childrenResults" according to children's schemas.
func (*BaseExecutor) ReleaseSysSession ¶
func (e *BaseExecutor) ReleaseSysSession(ctx context.Context, sctx sessionctx.Context)
ReleaseSysSession releases a system session context to executor.
func (*BaseExecutor) RetFieldTypes ¶
func (e *BaseExecutor) RetFieldTypes() []*types.FieldType
RetFieldTypes returns the return field types of an executor.
func (*BaseExecutor) RuntimeStats ¶
func (e *BaseExecutor) RuntimeStats() *execdetails.BasicRuntimeStats
RuntimeStats returns the runtime stats of an executor.
func (*BaseExecutor) Schema ¶
func (e *BaseExecutor) Schema() *expression.Schema
Schema returns the current BaseExecutor's schema. If it is nil, then create and return a new one.
func (*BaseExecutor) SetChildren ¶
func (e *BaseExecutor) SetChildren(idx int, ex Executor)
SetChildren sets the children for an executor.
func (*BaseExecutor) SetInitCap ¶
func (e *BaseExecutor) SetInitCap(c int)
SetInitCap sets the initial capacity for chunk
func (*BaseExecutor) SetMaxChunkSize ¶
func (e *BaseExecutor) SetMaxChunkSize(size int)
SetMaxChunkSize sets the max chunk size.
func (*BaseExecutor) UpdateDeltaForTableID ¶
func (e *BaseExecutor) UpdateDeltaForTableID(id int64)
UpdateDeltaForTableID updates the delta info for the table with tableID.
type Executor ¶
type Executor interface {
Base() *BaseExecutor
Open(context.Context) error
Next(ctx context.Context, req *chunk.Chunk) error
Close() error
Schema() *expression.Schema
RetFieldTypes() []*types.FieldType
InitCap() int
MaxChunkSize() int
}
Executor is the physical implementation of an algebra operator.
In TiDB, all algebra operators are implemented as iterators, i.e., they support a simple Open-Next-Close protocol. See this paper for more details:
"Volcano-An Extensible and Parallel Query Evaluation System"
Different from Volcano's execution model, a "Next" function call in TiDB will return a batch of rows, other than a single row in Volcano. NOTE: Executors must call "chk.Reset()" before appending their results to it.