This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new f9a4a04bdb [fix](Nereids) npe when one row relation contain aggregate
function (#19974)
f9a4a04bdb is described below
commit f9a4a04bdb640b5680bdebd04931e3ea6ee5eb66
Author: Pxl <[email protected]>
AuthorDate: Thu May 25 09:09:50 2023 +0800
[fix](Nereids) npe when one row relation contain aggregate function (#19974)
mysql [test]>select sum(1);
ERROR 1105 (HY000): errCode = 2, detailMessage = Unexpected exception: null
---
.../doris/nereids/glue/translator/PhysicalPlanTranslator.java | 2 +-
.../doris/nereids/trees/plans/logical/LogicalOneRowRelation.java | 3 +++
regression-test/suites/nereids_syntax_p0/one_row_relation.groovy | 7 +++++++
.../suites/tpch_sf0.1_p1/function/test_not_supported_agg_fn.groovy | 1 -
4 files changed, 11 insertions(+), 2 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
index 58b4af48b9..2a7221a083 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
@@ -497,7 +497,7 @@ public class PhysicalPlanTranslator extends
DefaultPlanVisitor<PlanFragment, Pla
SlotDescriptor slotDescriptor = oneRowTuple.getSlots().get(i);
Expr expr = legacyExprs.get(i);
slotDescriptor.setSourceExpr(expr);
- slotDescriptor.setIsNullable(legacyExprs.get(i).isNullable());
+ slotDescriptor.setIsNullable(expr.isNullable());
}
UnionNode unionNode = new UnionNode(context.nextPlanNodeId(),
oneRowTuple.getId());
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java
index a2e8bee7bc..6685640dff 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java
@@ -22,6 +22,7 @@ import org.apache.doris.nereids.properties.LogicalProperties;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.NamedExpression;
import org.apache.doris.nereids.trees.expressions.Slot;
+import
org.apache.doris.nereids.trees.expressions.functions.agg.AggregateFunction;
import org.apache.doris.nereids.trees.plans.Plan;
import org.apache.doris.nereids.trees.plans.PlanType;
import org.apache.doris.nereids.trees.plans.algebra.OneRowRelation;
@@ -55,6 +56,8 @@ public class LogicalOneRowRelation extends LogicalLeaf
implements OneRowRelation
super(PlanType.LOGICAL_ONE_ROW_RELATION, groupExpression,
logicalProperties);
Preconditions.checkArgument(projects.stream().noneMatch(p ->
p.containsType(Slot.class)),
"OneRowRelation can not contains any slot");
+ Preconditions.checkArgument(projects.stream().noneMatch(p ->
p.containsType(AggregateFunction.class)),
+ "OneRowRelation can not contains any aggregate function");
this.projects = ImmutableList.copyOf(Objects.requireNonNull(projects,
"projects can not be null"));
this.buildUnionNode = buildUnionNode;
}
diff --git a/regression-test/suites/nereids_syntax_p0/one_row_relation.groovy
b/regression-test/suites/nereids_syntax_p0/one_row_relation.groovy
index e389960e79..9b814cc4fe 100644
--- a/regression-test/suites/nereids_syntax_p0/one_row_relation.groovy
+++ b/regression-test/suites/nereids_syntax_p0/one_row_relation.groovy
@@ -31,4 +31,11 @@ suite("one_row_relation") {
)a"""
result([[100, "abc", "ab", "de", null]])
}
+
+ test {
+ sql """
+ select sum(1);
+ """
+ exception "OneRowRelation can not contains any aggregate function"
+ }
}
diff --git
a/regression-test/suites/tpch_sf0.1_p1/function/test_not_supported_agg_fn.groovy
b/regression-test/suites/tpch_sf0.1_p1/function/test_not_supported_agg_fn.groovy
index a7a6d89686..5be66d7a6f 100644
---
a/regression-test/suites/tpch_sf0.1_p1/function/test_not_supported_agg_fn.groovy
+++
b/regression-test/suites/tpch_sf0.1_p1/function/test_not_supported_agg_fn.groovy
@@ -39,5 +39,4 @@ suite("test_not_supported_agg_fn") {
}
} finally {
}
-
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]