diff --git a/pkg/expression/infer_pushdown.go b/pkg/expression/infer_pushdown.go index c4c8a8e98f8aa..c7f4272d0d936 100644 --- a/pkg/expression/infer_pushdown.go +++ b/pkg/expression/infer_pushdown.go @@ -241,7 +241,7 @@ func scalarExprSupportedByTiKV(ctx EvalContext, sf *ScalarFunction) bool { ast.Sysdate, /* ast.StrToDate, */ // encryption functions. - ast.MD5, ast.SHA1, ast.UncompressedLength, + ast.MD5, ast.SHA1, ast.SHA2, ast.UncompressedLength, ast.Cast, diff --git a/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result b/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result index 0eff3497318a6..6dc3a1f12bc4a 100644 --- a/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result +++ b/tests/integrationtest/r/planner/core/casetest/pushdown/push_down.result @@ -123,6 +123,11 @@ id task access object operator info Projection root md5(planner__core__casetest__pushdown__push_down.t.s)->Column └─TableReader root data:TableFullScan └─TableFullScan cop[tikv] table:t keep order:false, stats:pseudo +explain format = 'plan_tree' select * from t where sha2(s, 256) = 'abc'; +id task access object operator info +TableReader root data:Selection +└─Selection cop[tikv] eq(sha2(planner__core__casetest__pushdown__push_down.t.s, 256), "abc") + └─TableFullScan cop[tikv] table:t keep order:false, stats:pseudo explain format = 'plan_tree' select c from t where a+1=3; id task access object operator info Projection root planner__core__casetest__pushdown__push_down.t.c diff --git a/tests/integrationtest/t/planner/core/casetest/pushdown/push_down.test b/tests/integrationtest/t/planner/core/casetest/pushdown/push_down.test index 3f33751537faf..fa2ac1ac64287 100644 --- a/tests/integrationtest/t/planner/core/casetest/pushdown/push_down.test +++ b/tests/integrationtest/t/planner/core/casetest/pushdown/push_down.test @@ -35,6 +35,7 @@ explain format = 'plan_tree' select json_unquote(a) from t2; explain format = 'plan_tree' select i * 2 from t; explain format = 'plan_tree' select DATE_FORMAT(t, '%Y-%m-%d %H') as date from t; explain format = 'plan_tree' select md5(s) from t; +explain format = 'plan_tree' select * from t where sha2(s, 256) = 'abc'; explain format = 'plan_tree' select c from t where a+1=3; explain format = 'plan_tree' select /*+ hash_agg()*/ count(b) from (select id + 1 as b from t)A; explain format = 'plan_tree' select /*+ hash_agg()*/ count(*) from (select id + 1 as b from t)A;