Skip to content

Commit

Permalink
This is an automated cherry-pick of #57274
Browse files Browse the repository at this point in the history
Signed-off-by: ti-chi-bot <[email protected]>
  • Loading branch information
windtalker authored and ti-chi-bot committed Jan 24, 2025
1 parent 5e39597 commit d160366
Show file tree
Hide file tree
Showing 11 changed files with 5,762 additions and 8 deletions.
11 changes: 11 additions & 0 deletions executor/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,7 @@ func (b *executorBuilder) buildLimit(v *plannercore.PhysicalLimit) Executor {
end: v.Offset + v.Count,
}

<<<<<<< HEAD:executor/builder.go
childUsedSchema := markChildrenUsedCols(v.Schema().Columns, v.Children()[0].Schema())[0]
e.columnIdxsUsedByChild = make([]int, 0, len(childUsedSchema))
for i, used := range childUsedSchema {
Expand All @@ -726,7 +727,17 @@ func (b *executorBuilder) buildLimit(v *plannercore.PhysicalLimit) Executor {
}
}
if len(e.columnIdxsUsedByChild) == len(childUsedSchema) {
=======
childSchemaLen := v.Children()[0].Schema().Len()
childUsedSchema := markChildrenUsedCols(v.Schema().Columns, v.Children()[0].Schema())[0]
e.columnIdxsUsedByChild = make([]int, 0, len(childUsedSchema))
e.columnIdxsUsedByChild = append(e.columnIdxsUsedByChild, childUsedSchema...)
if len(e.columnIdxsUsedByChild) == childSchemaLen {
>>>>>>> 65281ad3073 (*: make `chunk.SwapColumn` private (#57274)):pkg/executor/builder.go
e.columnIdxsUsedByChild = nil // indicates that all columns are used. LimitExec will improve performance for this condition.
} else {
// construct a project evaluator to do the inline projection
e.columnSwapHelper = chunk.NewColumnSwapHelper(e.columnIdxsUsedByChild)
}
return e
}
Expand Down
56 changes: 56 additions & 0 deletions expression/evaluator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@
package expression

import (
<<<<<<< HEAD:expression/evaluator_test.go
"sync/atomic"
=======
>>>>>>> 65281ad3073 (*: make `chunk.SwapColumn` private (#57274)):pkg/expression/evaluator_test.go
"testing"
"time"

Expand Down Expand Up @@ -593,3 +596,56 @@ func TestMod(t *testing.T) {
require.NoError(t, err)
require.Equal(t, types.NewDatum(1.5), r)
}
<<<<<<< HEAD:expression/evaluator_test.go
=======

func TestOptionalProp(t *testing.T) {
ctx := createContext(t)

fc := funcs[ast.Plus]
arg1fc := funcs[ast.CurrentUser]
arg1f, err := arg1fc.getFunction(ctx, nil)
require.NoError(t, err)
arg1 := &ScalarFunction{
FuncName: model.NewCIStr(ast.CurrentUser),
Function: arg1f,
RetType: arg1f.getRetTp(),
}
arg2fc := funcs[ast.TiDBIsDDLOwner]
arg2f, err := arg2fc.getFunction(ctx, nil)
require.NoError(t, err)
arg2 := &ScalarFunction{
FuncName: model.NewCIStr(ast.TiDBIsDDLOwner),
Function: arg2f,
RetType: arg2f.getRetTp(),
}

f, err := fc.getFunction(ctx, []Expression{arg1, arg2})
require.NoError(t, err)
fe := &ScalarFunction{
FuncName: model.NewCIStr(ast.Plus),
Function: f,
RetType: f.getRetTp(),
}

fc2 := funcs[ast.GetLock]
f2, err := fc2.getFunction(ctx, datumsToConstants(types.MakeDatums("tidb_distsql_scan_concurrency", 10)))
require.NoError(t, err)
fe2 := &ScalarFunction{
FuncName: model.NewCIStr(ast.GetLock),
Function: f2,
RetType: f2.getRetTp(),
}

require.Equal(t, exprctx.OptionalEvalPropKeySet(0), f.RequiredOptionalEvalProps())
require.Equal(t, exprctx.OptPropCurrentUser.AsPropKeySet()|exprctx.OptPropDDLOwnerInfo.AsPropKeySet(),
GetOptionalEvalPropsForExpr(fe))
require.Equal(t, exprctx.OptPropCurrentUser.AsPropKeySet()|exprctx.OptPropDDLOwnerInfo.AsPropKeySet()|
exprctx.OptPropAdvisoryLock.AsPropKeySet(),
GetOptionalEvalPropsForExpr(fe)|GetOptionalEvalPropsForExpr(fe2))

evalSuit := NewEvaluatorSuite([]Expression{fe, fe2}, false)
require.Equal(t, exprctx.OptPropCurrentUser.AsPropKeySet()|exprctx.OptPropDDLOwnerInfo.AsPropKeySet()|
exprctx.OptPropAdvisoryLock.AsPropKeySet(), evalSuit.RequiredOptionalEvalProps())
}
>>>>>>> 65281ad3073 (*: make `chunk.SwapColumn` private (#57274)):pkg/expression/evaluator_test.go
Loading

0 comments on commit d160366

Please sign in to comment.