Ted-Jiang commented on code in PR #3780:
URL: https://github.com/apache/arrow-datafusion/pull/3780#discussion_r995579711
##########
datafusion/core/src/physical_plan/file_format/parquet.rs:
##########
@@ -460,6 +498,20 @@ impl FileOpener for ParquetOpener {
}
}
+// Check PruningPredicates just work on one column.
+fn check_page_index_push_down_valid(predicate: &Option<PruningPredicate>) ->
bool {
+ if let Some(predicate) = predicate {
+ // for now we only support pushDown on one col, because each col may
have different page numbers, its hard to get
+ // `num_containers` from `PruningStatistics`.
+ let cols = predicate.need_input_columns_ids();
+ //Todo more specific rules
Review Comment:
> So among other things, this implies we probably want to break the pruning
predicate down into conjuncts (aka split on AND) to try and isolate predicates
that refer only to a single column
Yes, i used to think it has been done in `FilterPushDownRule`, like break
like rewrite the filter-expr to CNF( I means top level `operator` are all
`and`).
But after check the code, i am wrong there not any split logic in `logical
plan`, i think we should do this in logical plan optimizer like in `filter
pushdown` as early as possible and do it once🤔
--
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]