Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

expression: implement vectorized evaluation for ‘builtinFloorDecToDecSig’ #13409

Merged
merged 23 commits into from
Nov 16, 2019
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
938d68f
expression: implement vectorized evaluation for builtinCeilDecToDecSi…
Zhuchengyu04 Nov 13, 2019
f309438
Merge branch 'master' into master
Zhuchengyu04 Nov 13, 2019
6091401
Update builtin_math_vec.go
Zhuchengyu04 Nov 13, 2019
2b52838
Update builtin_math_vec.go
Zhuchengyu04 Nov 14, 2019
ad5fef7
Update builtin_math_vec.go
Zhuchengyu04 Nov 14, 2019
d73a3ca
Update builtin_math_vec_test.go
Zhuchengyu04 Nov 14, 2019
0690c1e
Update builtin_math_vec.go
Zhuchengyu04 Nov 15, 2019
288f7dc
Update builtin_math_vec_test.go
Zhuchengyu04 Nov 15, 2019
6b4a1d9
Merge branch 'master' into master
Zhuchengyu04 Nov 15, 2019
429e185
Update builtin_math_vec_test.go
Zhuchengyu04 Nov 15, 2019
63fcb94
Update builtin_math_vec_test.go
Zhuchengyu04 Nov 15, 2019
036daad
Update builtin_math_vec.go
Zhuchengyu04 Nov 15, 2019
3256725
Update builtin_math_vec.go
Zhuchengyu04 Nov 15, 2019
704e094
Merge branch 'master' into master
Zhuchengyu04 Nov 15, 2019
487b7c2
Update builtin_math_vec.go
Zhuchengyu04 Nov 15, 2019
ad282f8
Update builtin_math_vec.go
Zhuchengyu04 Nov 15, 2019
c9ad117
Update builtin_math_vec.go
Zhuchengyu04 Nov 15, 2019
d0fa3ad
Update builtin_math_vec.go
Zhuchengyu04 Nov 15, 2019
208707f
Update builtin_math_vec.go
Zhuchengyu04 Nov 15, 2019
6eb9cfd
Merge branch 'master' into master
Zhuchengyu04 Nov 15, 2019
feedbbb
Merge branch 'master' into master
sre-bot Nov 16, 2019
b7c1200
Merge branch 'master' into master
sre-bot Nov 16, 2019
4a64be6
Merge branch 'master' into master
qw4990 Nov 16, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 41 additions & 2 deletions expression/builtin_math_vec.go
Original file line number Diff line number Diff line change
Expand Up @@ -857,11 +857,50 @@ func (b *builtinCeilDecToDecSig) vecEvalDecimal(input *chunk.Chunk, result *chun
}

func (b *builtinFloorDecToDecSig) vectorized() bool {
return false
return true
}

func (b *builtinFloorDecToDecSig) vecEvalDecimal(input *chunk.Chunk, result *chunk.Column) error {
return errors.Errorf("not implemented")
n := input.NumRows()
buf, err := b.bufAllocator.get(types.ETDecimal, n)
qw4990 marked this conversation as resolved.
Show resolved Hide resolved
if err != nil {
return err
}
defer b.bufAllocator.put(buf)
if err := b.args[0].VecEvalDecimal(b.ctx, input, buf); err != nil {
return err
}
result.ResizeDecimal(n, false)
result.MergeNulls(buf)

res := result.Decimals()
bufs := buf.Decimals()

for i := 0; i < n; i++ {
if result.IsNull(i) {
continue
}
rst := new(types.MyDecimal)
qw4990 marked this conversation as resolved.
Show resolved Hide resolved
if bufs[i].IsNegative() {
err = res[i].Round(rst, 0, types.ModeTruncate)
if err != nil {
return err
}

}
err = res[i].Round(rst, 0, types.ModeTruncate)
if err != nil || rst.Compare(&bufs[i]) == 0 {
if err != nil {
return err
}
}
err = types.DecimalSub(rst, types.NewDecFromInt(1), rst)
if err != nil {
return err
}
res[i] = *rst
}
return nil
}

func (b *builtinTruncateDecimalSig) vectorized() bool {
Expand Down
1 change: 1 addition & 0 deletions expression/builtin_math_vec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ var vecBuiltinMathCases = map[string][]vecExprBenchCase{
{retEvalType: types.ETInt, childrenTypes: []types.EvalType{types.ETDecimal}, geners: nil},
{retEvalType: types.ETDecimal, childrenTypes: []types.EvalType{types.ETInt}, geners: nil},
{retEvalType: types.ETDecimal, childrenTypes: []types.EvalType{types.ETInt}, childrenFieldTypes: []*types.FieldType{{Tp: mysql.TypeLonglong, Flag: mysql.UnsignedFlag}}, geners: nil},
{retEvalType: types.ETDecimal, childrenTypes: []types.EvalType{types.ETDecimal}, childrenFieldTypes: []*types.FieldType{{Tp: mysql.TypeNewDecimal, Flen: 32, Decimal: 2}}, geners: nil}},
francis0407 marked this conversation as resolved.
Show resolved Hide resolved
},
ast.Ceil: {
{retEvalType: types.ETReal, childrenTypes: []types.EvalType{types.ETReal}, geners: nil},
Expand Down