morrySnow commented on code in PR #35162:
URL: https://github.com/apache/doris/pull/35162#discussion_r1611406226


##########
fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/AggregateStrategies.java:
##########
@@ -306,6 +317,46 @@ && couldConvertToMulti(agg))
         );
     }
 
+    /*
+     *  select 66 from baseall_dup; could use pushAggOp=COUNT to not scan real 
data.
+     */
+    private LogicalProject<? extends Plan> pushDownCountWithoutSlotRef(
+            LogicalProject<? extends Plan> project,
+            LogicalOlapScan logicalScan,
+            CascadesContext cascadesContext) {
+        final LogicalProject<? extends Plan> canNotPush = project;
+        if (!enablePushDownNoGroupAgg()) {
+            return canNotPush;
+        }
+        if (logicalScan != null) {
+            KeysType keysType = logicalScan.getTable().getKeysType();
+            if (keysType != KeysType.DUP_KEYS) {
+                return canNotPush;
+            }
+        }
+        List<Expression> projectExpr = new ArrayList<>();
+        for (Expression p : project.getProjects()) {
+            projectExpr.addAll(Project.collectExpressions(p));
+        }
+        boolean noSlotRef = true;
+        for (Expression expr : projectExpr) {
+            if (expr instanceof SlotReference) {
+                noSlotRef = false;
+                break;
+            }
+        }
+        if (!noSlotRef) {
+            return canNotPush;
+        }

Review Comment:
   ```java
   for (Expression e : project.getProjects()) {
       if (e.anyMatch(SlotReference.class::isInstance)) {
           return canNotPush;
       }
   }
   ```
   btw, could not push down, if contains Nondeterministic expression, such as 
UUID()



-- 
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