diff --git a/pkg/expression/expr_to_pb_test.go b/pkg/expression/expr_to_pb_test.go index f6d9d94327999..0398952356b11 100644 --- a/pkg/expression/expr_to_pb_test.go +++ b/pkg/expression/expr_to_pb_test.go @@ -1822,6 +1822,16 @@ func TestExprPushDownToTiKV(t *testing.T) { retType: types.NewFieldType(mysql.TypeString), args: []Expression{stringColumn, intColumn, NewStrConst("hour")}, }, + { + functionName: ast.FromUnixTime, + retType: types.NewFieldType(mysql.TypeDatetime), + args: []Expression{decimalColumn}, + }, + { + functionName: ast.FromUnixTime, + retType: types.NewFieldType(mysql.TypeString), + args: []Expression{decimalColumn, stringColumn}, + }, } ctx = mock.NewContext() diff --git a/pkg/expression/infer_pushdown.go b/pkg/expression/infer_pushdown.go index cad90178ab293..092be481d6039 100644 --- a/pkg/expression/infer_pushdown.go +++ b/pkg/expression/infer_pushdown.go @@ -209,8 +209,8 @@ func scalarExprSupportedByTiKV(ctx EvalContext, sf *ScalarFunction) bool { ast.Hour, ast.Minute, ast.Second, ast.MicroSecond, ast.Month, /* ast.DayName */ ast.DayOfMonth, ast.DayOfWeek, ast.DayOfYear, /* ast.Weekday */ ast.WeekOfYear, ast.Year, - ast.FromDays, /* ast.ToDays */ - ast.PeriodAdd, ast.PeriodDiff, /*ast.TimestampDiff, ast.DateAdd, ast.FromUnixTime,*/ + ast.FromDays, /* ast.ToDays */ + ast.PeriodAdd, ast.PeriodDiff /*ast.TimestampDiff, ast.DateAdd*/, ast.FromUnixTime, /* ast.LastDay */ ast.Sysdate, diff --git a/tests/integrationtest/r/planner/core/casetest/integration.result b/tests/integrationtest/r/planner/core/casetest/integration.result index 4a623ec1553c3..3ade53c946a7d 100644 --- a/tests/integrationtest/r/planner/core/casetest/integration.result +++ b/tests/integrationtest/r/planner/core/casetest/integration.result @@ -42,10 +42,9 @@ explain format = 'brief' select * from t t1 left join t t2 on t1.a=t2.a where fr id estRows task access object operator info Projection 9990.00 root planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.b, planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.b └─HashJoin 9990.00 root inner join, equal:[eq(planner__core__casetest__integration.t.a, planner__core__casetest__integration.t.a)] - ├─Selection(Build) 7992.00 root from_unixtime(cast(planner__core__casetest__integration.t.b, decimal(20,0) BINARY)) - │ └─TableReader 9990.00 root data:Selection - │ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__integration.t.a)) - │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo + ├─TableReader(Build) 7992.00 root data:Selection + │ └─Selection 7992.00 cop[tikv] from_unixtime(cast(planner__core__casetest__integration.t.b, decimal(20,0) BINARY)), not(isnull(planner__core__casetest__integration.t.a)) + │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo └─TableReader(Probe) 9990.00 root data:Selection └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__integration.t.a)) └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo