XieJiann commented on code in PR #27471:
URL: https://github.com/apache/doris/pull/27471#discussion_r1406983526

##########
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/CountLiteralRewrite.java:
##########
@@ -21,31 +21,59 @@
 import org.apache.doris.nereids.rules.RuleType;
 import org.apache.doris.nereids.trees.expressions.Expression;
 import org.apache.doris.nereids.trees.expressions.NamedExpression;
+import org.apache.doris.nereids.trees.expressions.StatementScopeIdGenerator;
 import 
org.apache.doris.nereids.trees.expressions.functions.agg.AggregateFunction;
 import org.apache.doris.nereids.trees.expressions.functions.agg.Count;
+import org.apache.doris.nereids.trees.expressions.literal.BigIntLiteral;
+import org.apache.doris.nereids.trees.plans.Plan;
+import org.apache.doris.nereids.trees.plans.logical.LogicalOneRowRelation;
+import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
 
 import com.google.common.collect.Lists;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * count(1) ==> count(*)
+ * count(null) ==> 0
  */
-public class CountLiteralToCountStar extends OneRewriteRuleFactory {
+public class CountLiteralRewrite extends OneRewriteRuleFactory {
     @Override
     public Rule build() {
         return logicalAggregate().then(
                 agg -> {
                     List<NamedExpression> newExprs = 
Lists.newArrayListWithCapacity(agg.getOutputExpressions().size());
-                    if (rewriteCountLiteral(agg.getOutputExpressions(), 
newExprs)) {
-                        return agg.withAggOutput(newExprs);
+                    if (!rewriteCountLiteral(agg.getOutputExpressions(), 
newExprs)) {
+                        // no need to rewrite
+                        return agg;
+                    }
+
+                    Map<Boolean, List<NamedExpression>> projectsAndAggFunc = 
newExprs.stream()
+                            
.collect(Collectors.partitioningBy(Expression::isConstant));
+
+                    if (projectsAndAggFunc.get(false).isEmpty()) {
+                        // if there is no group by keys and other agg func, 
just return the one row Relations, such as
+                        // select count(null) from t

Review Comment:
   fixed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to