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]

Reply via email to