From 5ae202d26ec546a18cb6cad611311647a1f29612 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Wed, 9 Nov 2022 17:24:28 -0500 Subject: [PATCH] Minor: pass `ParquetFileMetrics` to `build_row_filter` in parquet --- datafusion/core/src/physical_plan/file_format/parquet.rs | 3 +-- .../src/physical_plan/file_format/parquet/row_filter.rs | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/datafusion/core/src/physical_plan/file_format/parquet.rs b/datafusion/core/src/physical_plan/file_format/parquet.rs index 54701f82d44d..36c8392db12d 100644 --- a/datafusion/core/src/physical_plan/file_format/parquet.rs +++ b/datafusion/core/src/physical_plan/file_format/parquet.rs @@ -414,8 +414,7 @@ impl FileOpener for ParquetOpener { table_schema.as_ref(), builder.metadata(), reorder_predicates, - &file_metrics.pushdown_rows_filtered, - &file_metrics.pushdown_eval_time, + &file_metrics, ); match row_filter { diff --git a/datafusion/core/src/physical_plan/file_format/parquet/row_filter.rs b/datafusion/core/src/physical_plan/file_format/parquet/row_filter.rs index 1b2ec40ce802..e3cdc59199cc 100644 --- a/datafusion/core/src/physical_plan/file_format/parquet/row_filter.rs +++ b/datafusion/core/src/physical_plan/file_format/parquet/row_filter.rs @@ -33,6 +33,8 @@ use std::sync::Arc; use crate::physical_plan::metrics; +use super::ParquetFileMetrics; + /// This module contains utilities for enabling the pushdown of DataFusion filter predicates (which /// can be any DataFusion `Expr` that evaluates to a `BooleanArray`) to the parquet decoder level in `arrow-rs`. /// DataFusion will use a `ParquetRecordBatchStream` to read data from parquet into arrow `RecordBatch`es. @@ -309,9 +311,11 @@ pub fn build_row_filter( table_schema: &Schema, metadata: &ParquetMetaData, reorder_predicates: bool, - rows_filtered: &metrics::Count, - time: &metrics::Time, + file_metrics: &ParquetFileMetrics, ) -> Result> { + let rows_filtered = &file_metrics.pushdown_rows_filtered; + let time = &file_metrics.pushdown_eval_time; + let predicates = split_conjunction_owned(expr); let mut candidates: Vec = predicates