exec

package
v1.1.0-eaff0fbc576a Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewFirstChunk

func NewFirstChunk(e Executor) *chunk.Chunk

NewFirstChunk creates a new chunk to buffer current executor's result.

func Next

func Next(ctx context.Context, e Executor, req *chunk.Chunk) error

Next is a wrapper function on e.Next(), it handles some common codes.

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 RetTypes

func RetTypes(e Executor) []*types.FieldType

RetTypes returns all output column types.

func TryNewCacheChunk

func TryNewCacheChunk(e Executor) *chunk.Chunk

TryNewCacheChunk tries to get a cached chunk

Types

type BaseExecutor

type BaseExecutor struct {
	AllocPool chunk.Allocator
	// contains filtered or unexported fields
}

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) ID

func (e *BaseExecutor) ID() int

ID returns the id of an 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) Next

Next fills multiple rows into a chunk.

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.

Jump to

Keyboard shortcuts

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