morrySnow commented on code in PR #24432:
URL: https://github.com/apache/doris/pull/24432#discussion_r1326844560
##########
fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java:
##########
@@ -168,6 +144,34 @@ public PhysicalCTEProducer
visitPhysicalCTEProducer(PhysicalCTEProducer producer
return producer;
}
+ @Override
+ public PhysicalPlan visitPhysicalTopN(PhysicalTopN<? extends Plan> topN,
CascadesContext context) {
+ topN.child().accept(this, context);
+ PhysicalPlan child = (PhysicalPlan) topN.child();
+ for (Slot slot : child.getOutput()) {
+
context.getRuntimeFilterContext().getAliasTransferMap().remove(slot);
+ }
+ return topN;
+ }
+
+ @Override
+ public PhysicalPlan visitPhysicalWindow(PhysicalWindow<? extends Plan>
window, CascadesContext context) {
+ window.child().accept(this, context);
+ Set<Slot> notMapped =
window.child().getOutputSet().stream().collect(Collectors.toSet());
+ for (NamedExpression expr : window.getWindowExpressions()) {
+ if (expr instanceof Alias && expr.child(0) instanceof
WindowExpression) {
+ WindowExpression winExpr = (WindowExpression) expr.child(0);
+ for (Expression partitionKey : winExpr.getPartitionKeys()) {
+ notMapped.remove(partitionKey);
+ }
Review Comment:
should only push down common window expression's partition key filter. for
example, we have two window function in one window node. the first partition by
c1, c2 and c3. the second partition by c1 and c2. then we only could push down
the filter on c1 and c2. filter on c3 should not be pushed.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]