Commits


alamb authored and Jorge C. Leitao committed e6e88395953
ARROW-10547: [Rust][DataFusion] Do not lose Filters with UserDefined plan nodes I have a LogicalPlan like this (where "Extension" is some extension node type): ``` Extension [non_null_column:Utf8] Filter: #state Eq Utf8("MA") [city:Utf8;N, state:Utf8;N, borough:Utf8;N] InMemoryScan: projection=None [city:Utf8;N, state:Utf8;N, borough:Utf8;N] ``` When I run this plan through {{ExecutionContext::optimize}} the plan that results is as follows (note the filter has been lost): ``` Extension [non_null_column:Utf8] InMemoryScan: projection=Some([0, 1, 2]) [city:Utf8;N, state:Utf8;N, borough:Utf8;N] ```` I have debugged the problem and the root cause of the issue is that the `FilterPushDown` logic is not recursing into the inputs of user defined nodes. This PR has a fix for the problem Closes #8633 from alamb/alamb/ARROW-10547-user-defined-plans Authored-by: alamb <andrew@nerdnetworks.org> Signed-off-by: Jorge C. Leitao <jorgecarleitao@gmail.com>