From f371528adabd294d67fe25f5fe57d8b7046bb1a1 Mon Sep 17 00:00:00 2001 From: morrySnow <101034200+morrySnow@users.noreply.github.com> Date: Tue, 26 Dec 2023 15:25:19 +0800 Subject: [PATCH] [fix](Nereids) generating function should not folding to NullLiteral (#29003) should not fold table generating function to null when do constant folding. we should remove Generate node and replaced it by project later. --- .../nereids/rules/expression/rules/FoldConstantRuleOnFE.java | 3 ++- regression-test/suites/correctness/test_explode_numbers.groovy | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java index a73aab44f1..9988a34da4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java @@ -47,6 +47,7 @@ import org.apache.doris.nereids.trees.expressions.WhenClause; import org.apache.doris.nereids.trees.expressions.functions.BoundFunction; import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable; import org.apache.doris.nereids.trees.expressions.functions.agg.AggregateFunction; +import org.apache.doris.nereids.trees.expressions.functions.generator.TableGeneratingFunction; import org.apache.doris.nereids.trees.expressions.functions.scalar.Array; import org.apache.doris.nereids.trees.expressions.functions.scalar.ConnectionId; import org.apache.doris.nereids.trees.expressions.functions.scalar.CurrentCatalog; @@ -549,7 +550,7 @@ public class FoldConstantRuleOnFE extends AbstractExpressionRewriteRule { } private Optional preProcess(Expression expression) { - if (expression instanceof AggregateFunction) { + if (expression instanceof AggregateFunction || expression instanceof TableGeneratingFunction) { return Optional.of(expression); } if (expression instanceof PropagateNullable && argsHasNullLiteral(expression)) { diff --git a/regression-test/suites/correctness/test_explode_numbers.groovy b/regression-test/suites/correctness/test_explode_numbers.groovy index cd85ba835e..3dc9e050ba 100644 --- a/regression-test/suites/correctness/test_explode_numbers.groovy +++ b/regression-test/suites/correctness/test_explode_numbers.groovy @@ -17,6 +17,7 @@ suite("test_explode_numbers") { sql 'set enable_nereids_planner=true' + sql 'set enable_fallback_to_original_planner=false' qt_select1 """ select e1 from (select 1 k1) as t lateral view explode_numbers(5) tmp1 as e1 order by e1; """