Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AggFuncToPBExpr ¶
func AggFuncToPBExpr(sc *variable.StatementContext, client kv.Client, aggFunc Aggregation) *tipb.Expr
AggFuncToPBExpr converts aggregate function to pb.
func ExplainAggFunc ¶
func ExplainAggFunc(agg Aggregation) string
ExplainAggFunc generates explain information for a aggregation function.
Types ¶
type AggEvaluateContext ¶
type AggEvaluateContext struct { DistinctChecker *distinctChecker Count int64 Value types.Datum Buffer *bytes.Buffer // Buffer is used for group_concat. GotFirstRow bool // It will check if the agg has met the first row key. }
AggEvaluateContext is used to store intermediate result when calculating aggregate functions.
type AggFunctionMode ¶
type AggFunctionMode int
AggFunctionMode stands for the aggregation function's mode.
const ( // CompleteMode function accepts origin data. CompleteMode AggFunctionMode = iota // FinalMode function accepts partial data. FinalMode )
type Aggregation ¶
type Aggregation interface { fmt.Stringer json.Marshaler // Update during executing. Update(ctx *AggEvaluateContext, sc *variable.StatementContext, row types.Row) error // GetPartialResult will called by coprocessor to get partial results. For avg function, partial results will return // sum and count values at the same time. GetPartialResult(ctx *AggEvaluateContext) []types.Datum // SetMode sets aggFunctionMode for aggregate function. SetMode(mode AggFunctionMode) // GetMode gets aggFunctionMode from aggregate function. GetMode() AggFunctionMode // GetResult will be called when all data have been processed. GetResult(ctx *AggEvaluateContext) types.Datum // GetArgs stands for getting all arguments. GetArgs() []expression.Expression // GetName gets the aggregation function name. GetName() string // SetArgs sets argument by index. SetArgs(args []expression.Expression) // Create a new AggEvaluateContext for the aggregation function. CreateContext() *AggEvaluateContext // IsDistinct indicates if the aggregate function contains distinct attribute. IsDistinct() bool // Equal checks whether two aggregation functions are equal. Equal(agg Aggregation, ctx context.Context) bool // Clone copies an aggregate function totally. Clone() Aggregation // GetType gets field type of aggregate function. GetType() *types.FieldType // CalculateDefaultValue gets the default value when the aggregate function's input is null. // The input stands for the schema of Aggregation's child. If the function can't produce a default value, the second // return value will be false. CalculateDefaultValue(schema *expression.Schema, ctx context.Context) (types.Datum, bool) }
Aggregation stands for aggregate functions.
func NewAggFunction ¶
func NewAggFunction(funcType string, funcArgs []expression.Expression, distinct bool) Aggregation
NewAggFunction creates a new Aggregation.
func NewDistAggFunc ¶
func NewDistAggFunc(expr *tipb.Expr, fieldTps []*types.FieldType, sc *variable.StatementContext) (Aggregation, error)
NewDistAggFunc creates new Aggregate function for mock tikv.
Click to show internal directories.
Click to hide internal directories.