From e15b76875d98a8b937a16a183d0ea3eae1e1a64b Mon Sep 17 00:00:00 2001 From: Meng Xin Date: Thu, 25 Nov 2021 17:43:51 +0800 Subject: [PATCH] expression : prevent function DATE_ADD/SUB_STRING_XXX pushed down to TiFlash (#30154) --- expression/expr_to_pb_test.go | 4 ---- expression/expression.go | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/expression/expr_to_pb_test.go b/expression/expr_to_pb_test.go index 3c95869076a5b..30cdf5599181b 100644 --- a/expression/expr_to_pb_test.go +++ b/expression/expr_to_pb_test.go @@ -853,10 +853,6 @@ func TestExprPushDownToFlash(t *testing.T) { require.NoError(t, err) require.Equal(t, tipb.ScalarFuncSig_SubDateDatetimeInt, function.(*ScalarFunction).Function.PbCode()) exprs = append(exprs, function) - function, err = NewFunction(mock.NewContext(), ast.DateSub, types.NewFieldType(mysql.TypeDatetime), stringColumn, intColumn, stringColumn) - require.NoError(t, err) - require.Equal(t, tipb.ScalarFuncSig_SubDateStringInt, function.(*ScalarFunction).Function.PbCode()) - exprs = append(exprs, function) function, err = NewFunction(mock.NewContext(), ast.SubDate, types.NewFieldType(mysql.TypeDatetime), datetimeColumn, intColumn, stringColumn) require.NoError(t, err) require.Equal(t, tipb.ScalarFuncSig_SubDateDatetimeInt, function.(*ScalarFunction).Function.PbCode()) diff --git a/expression/expression.go b/expression/expression.go index e4d589f796194..ac0f813269fff 100644 --- a/expression/expression.go +++ b/expression/expression.go @@ -1094,12 +1094,12 @@ func scalarExprSupportedByFlash(function *ScalarFunction) bool { } case ast.DateAdd, ast.AddDate: switch function.Function.PbCode() { - case tipb.ScalarFuncSig_AddDateDatetimeInt, tipb.ScalarFuncSig_AddDateStringInt, tipb.ScalarFuncSig_AddDateStringReal: + case tipb.ScalarFuncSig_AddDateDatetimeInt: return true } case ast.DateSub, ast.SubDate: switch function.Function.PbCode() { - case tipb.ScalarFuncSig_SubDateDatetimeInt, tipb.ScalarFuncSig_SubDateStringInt: + case tipb.ScalarFuncSig_SubDateDatetimeInt: return true } case ast.UnixTimestamp: