zhuqi-lucas commented on code in PR #23696:
URL: https://github.com/apache/datafusion/pull/23696#discussion_r3764789038
##########
datafusion/datasource-parquet/src/push_decoder.rs:
##########
@@ -272,6 +282,82 @@ pub(crate) struct PushDecoderStreamState {
pub(crate) row_group_pruner: Option<RowGroupPruner>,
/// Count of row groups skipped at runtime by [`Self::row_group_pruner`].
pub(crate) row_groups_pruned_dynamic: Count,
+ /// Side-channel state for regenerating the parquet [`RowFilter`] when
+ /// the per-RG `fully_matched` toggle flips from skip → install. `None`
+ /// when the scan has no pushdown predicate, so no filter can be
+ /// installed (and the toggle is a no-op).
+ pub(crate) row_filter_context: Option<RowFilterContext>,
+ /// Whether the currently-installed decoder is running with a non-empty
+ /// row filter. Toggled per RG by the `fully_matched` skip path.
+ pub(crate) filter_installed: bool,
+ /// Count of row groups for which the per-row [`RowFilter`] was
+ /// suppressed because the upcoming RG is `fully_matched`.
+ pub(crate) row_filter_skipped_fully_matched: Count,
+}
+
+/// Side-channel state that lets [`PushDecoderStreamState`] **rebuild** the
+/// parquet [`RowFilter`] mid-scan.
+///
+/// The decoder owns the filter once installed, but `Box<dyn ArrowPredicate>`
Review Comment:
Trimmed to the key point (e0fbd24).
##########
datafusion/datasource-parquet/src/push_decoder.rs:
##########
@@ -109,6 +113,12 @@ impl DecoderBuilderConfig<'_> {
#[derive(Debug, Clone)]
pub(crate) struct RgPlanEntry {
pub(crate) rg_index: usize,
+ /// `true` when the static pruning predicate proved every row of this
Review Comment:
Shortened (e0fbd24).
--
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]