From abeec4848aaddeb76cf60641a32d2d0ed6582d68 Mon Sep 17 00:00:00 2001 From: mch_ucchi <41606806+sohardforaname@users.noreply.github.com> Date: Thu, 23 Mar 2023 11:17:08 +0800 Subject: [PATCH] [Fix](Nereids)fix be fold constant incorrectly on from_unixtime. (#18016) --- .../rewrite/ExpressionNormalization.java | 4 ++- .../test_time_convert.groovy | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 regression-test/suites/nereids_syntax_p0/test_time_convert.groovy diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionNormalization.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionNormalization.java index 360cdbf87d..ba0c3e6b6f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionNormalization.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionNormalization.java @@ -39,8 +39,10 @@ import java.util.List; * normalize expression of plan rule set. */ public class ExpressionNormalization extends ExpressionRewrite { - + // we should run supportJavaDateFormatter before foldConstantRule or be will fold + // from_unixtime(timestamp, 'yyyyMMdd') to 'yyyyMMdd' public static final List NORMALIZE_REWRITE_RULES = ImmutableList.of( + SupportJavaDateFormatter.INSTANCE, NormalizeBinaryPredicatesRule.INSTANCE, BetweenToCompoundRule.INSTANCE, InPredicateToEqualToRule.INSTANCE, diff --git a/regression-test/suites/nereids_syntax_p0/test_time_convert.groovy b/regression-test/suites/nereids_syntax_p0/test_time_convert.groovy new file mode 100644 index 0000000000..48ddd91d00 --- /dev/null +++ b/regression-test/suites/nereids_syntax_p0/test_time_convert.groovy @@ -0,0 +1,25 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_time_convert_nereids") { + sql "set enable_nereids_planner=true" + sql "set enable_fold_constant_by_be=true" + test { + sql "select from_unixtime(1249488000, 'yyyyMMdd')" + result([['20090806']]) + } +} \ No newline at end of file