@@ -1338,6 +1338,10 @@ func genVecExprBenchCase(ctx BuildContext, funcName string, testCase vecExprBenc
13381338 }
13391339
13401340 output = chunk .New ([]* types.FieldType {eType2FieldType (expr .GetType (ctx .GetEvalCtx ()).EvalType ())}, testCase .chunkSize , testCase .chunkSize )
1341+
1342+ if ! expr .Vectorized () {
1343+ panic (fmt .Sprintf ("func %s is not vectorized" , funcName ))
1344+ }
13411345 return expr , fts , input , output
13421346}
13431347
@@ -1352,6 +1356,7 @@ func testVectorizedEvalOneVec(t *testing.T, vecExprCases vecExprBenchCases) {
13521356 return fmt .Sprintf ("func: %v, case %+v, row: %v, rowData: %v" , funcName , testCase , row , input .GetRow (row ).GetDatumRow (fts ))
13531357 }
13541358 output2 := output .CopyConstruct ()
1359+ require .True (t , expr .Vectorized (), "func %s is not vectorized" , funcName )
13551360 require .NoErrorf (t , evalOneVec (ctx , expr , input , output , 0 ), "func: %v, case: %+v" , funcName , testCase )
13561361 it := chunk .NewIterator4Chunk (input )
13571362 require .NoErrorf (t , evalOneColumn (ctx , expr , it , output2 , 0 ), "func: %v, case: %+v" , funcName , testCase )
@@ -1426,6 +1431,10 @@ func benchmarkVectorizedEvalOneVec(b *testing.B, vecExprCases vecExprBenchCases)
14261431 exprName = tmp [len (tmp )- 1 ]
14271432 }
14281433
1434+ if ! expr .Vectorized () {
1435+ panic (fmt .Sprintf ("func %s is not vectorized" , funcName ))
1436+ }
1437+
14291438 b .Run (exprName + "-EvalOneVec" , func (b * testing.B ) {
14301439 b .ResetTimer ()
14311440 for i := 0 ; i < b .N ; i ++ {
@@ -1518,6 +1527,9 @@ func genVecBuiltinFuncBenchCase(ctx BuildContext, funcName string, testCase vecE
15181527 if err != nil {
15191528 panic (err )
15201529 }
1530+ if ! baseFunc .vectorized () || ! baseFunc .isChildrenVectorized () {
1531+ panic (fmt .Sprintf ("func %s is not vectorized" , funcName ))
1532+ }
15211533 result = chunk .NewColumn (eType2FieldType (testCase .retEvalType ), testCase .chunkSize )
15221534 // Mess up the output to make sure vecEvalXXX to call ResizeXXX/ReserveXXX itself.
15231535 result .AppendNull ()
@@ -1596,7 +1608,7 @@ func testVectorizedBuiltinFunc(t *testing.T, vecExprCases vecExprBenchCases) {
15961608 continue
15971609 }
15981610 // do not forget to implement the vectorized method.
1599- require .Truef (t , baseFunc .vectorized (), "func: %v, case: %+v" , baseFuncName , testCase )
1611+ require .Truef (t , baseFunc .vectorized () && baseFunc . isChildrenVectorized () , "func: %v, case: %+v" , baseFuncName , testCase )
16001612 commentf := func (row int ) string {
16011613 return fmt .Sprintf ("func: %v, case %+v, row: %v, rowData: %v" , baseFuncName , testCase , row , input .GetRow (row ).GetDatumRow (fts ))
16021614 }
@@ -1767,7 +1779,7 @@ func testVectorizedBuiltinFuncForRand(t *testing.T, vecExprCases vecExprBenchCas
17671779 tmp := strings .Split (baseFuncName , "." )
17681780 baseFuncName = tmp [len (tmp )- 1 ]
17691781 // do not forget to implement the vectorized method.
1770- require .Truef (t , baseFunc .vectorized (), "func: %v" , baseFuncName )
1782+ require .Truef (t , baseFunc .vectorized () && baseFunc . isChildrenVectorized () , "func: %v" , baseFuncName )
17711783 switch testCase .retEvalType {
17721784 case types .ETReal :
17731785 err := baseFunc .vecEvalReal (ctx , input , output )
@@ -1834,6 +1846,9 @@ func benchmarkVectorizedBuiltinFunc(b *testing.B, vecExprCases vecExprBenchCases
18341846 baseFuncName := fmt .Sprintf ("%v" , reflect .TypeOf (baseFunc ))
18351847 tmp := strings .Split (baseFuncName , "." )
18361848 baseFuncName = tmp [len (tmp )- 1 ]
1849+ if ! baseFunc .vectorized () || ! baseFunc .isChildrenVectorized () {
1850+ panic (fmt .Sprintf ("func %s is not vectorized" , funcName ))
1851+ }
18371852
18381853 if ! testAll && ! testFunc [baseFuncName ] && ! testFunc [funcName ] {
18391854 continue
0 commit comments