You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by kx...@apache.org on 2023/11/16 14:00:53 UTC
(doris) branch branch-2.0 updated: [enhancement](nereids)make error message more readable when bind logicalRepeat node #26744 (#26895)
This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 75bb373026f [enhancement](nereids)make error message more readable when bind logicalRepeat node #26744 (#26895)
75bb373026f is described below
commit 75bb373026fdd77cbd73f15b4e77746e21d4ba1a
Author: starocean999 <40...@users.noreply.github.com>
AuthorDate: Thu Nov 16 22:00:45 2023 +0800
[enhancement](nereids)make error message more readable when bind logicalRepeat node #26744 (#26895)
---
.../doris/nereids/rules/analysis/BindExpression.java | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java
index 7861657301e..5450a4658f5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindExpression.java
@@ -47,6 +47,7 @@ import org.apache.doris.nereids.trees.expressions.functions.Function;
import org.apache.doris.nereids.trees.expressions.functions.FunctionBuilder;
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.GroupingScalarFunction;
import org.apache.doris.nereids.trees.expressions.functions.table.TableValuedFunction;
import org.apache.doris.nereids.trees.expressions.visitor.DefaultExpressionRewriter;
import org.apache.doris.nereids.trees.plans.JoinType;
@@ -71,6 +72,7 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalSort;
import org.apache.doris.nereids.trees.plans.logical.LogicalSubQueryAlias;
import org.apache.doris.nereids.trees.plans.logical.LogicalTVFRelation;
import org.apache.doris.nereids.trees.plans.logical.UsingJoin;
+import org.apache.doris.nereids.util.ExpressionUtils;
import org.apache.doris.nereids.util.TypeCoercionUtils;
import org.apache.doris.qe.ConnectContext;
@@ -382,6 +384,19 @@ public class BindExpression implements AnalysisRuleFactory {
.collect(ImmutableList.toImmutableList());
List<NamedExpression> newOutput = adjustNullableForRepeat(groupingSets, output);
groupingSets.forEach(list -> checkIfOutputAliasNameDuplicatedForGroupBy(list, newOutput));
+
+ // check all GroupingScalarFunction inputSlots must be from groupingExprs
+ Set<Slot> groupingExprs = groupingSets.stream()
+ .flatMap(Collection::stream).map(expr -> expr.getInputSlots())
+ .flatMap(Collection::stream).collect(Collectors.toSet());
+ Set<GroupingScalarFunction> groupingScalarFunctions = ExpressionUtils
+ .collect(newOutput, GroupingScalarFunction.class::isInstance);
+ for (GroupingScalarFunction function : groupingScalarFunctions) {
+ if (!groupingExprs.containsAll(function.getInputSlots())) {
+ throw new AnalysisException("Column in " + function.getName()
+ + " does not exist in GROUP BY clause.");
+ }
+ }
return repeat.withGroupSetsAndOutput(groupingSets, newOutput);
})
),
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org