adriangb commented on PR #15566:
URL: https://github.com/apache/datafusion/pull/15566#issuecomment-2812623615

   > Let's say you have a plan like A(root)<- B <- C <- D <- E <- F <- G (scan).
   > Assume E is an operator making some filtering, and F is another operator 
which does not allow filter push down. So, E cannot be pushed down over F. 
Knowing all these, can we say that all other operators(A,B,C or D --possibly 
having some filters) cannot also be pushed down over F? Is it a safe assumption 
to make?
   
   If `F` does not allow filter pushdown than anything upstream of it will not 
be able to push down filters into the scan (G).
   However there may still be filter pushdown e.g. from `B` to `E`: `TopK` <- 
`FilterExec` <- `F` <- `Scan`. In this case `TopK` may push down into 
`FilterExec` and `FilterExec` will try to push down into `Scan` but be blocked 
by `F`, so `FilterExec` stays where it is with it's current filters but also 
absorbs any filters from `TopK`.


-- 
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: github-unsubscr...@datafusion.apache.org

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


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

Reply via email to