diff --git a/datafusion/core/src/physical_plan/file_format/mod.rs b/datafusion/core/src/physical_plan/file_format/mod.rs index 295fef27b2912..2926f18a20235 100644 --- a/datafusion/core/src/physical_plan/file_format/mod.rs +++ b/datafusion/core/src/physical_plan/file_format/mod.rs @@ -30,7 +30,9 @@ mod row_filter; pub(crate) use self::csv::plan_to_csv; pub use self::csv::CsvExec; pub(crate) use self::parquet::plan_to_parquet; -pub use self::parquet::{ParquetExec, ParquetFileMetrics, ParquetFileReaderFactory}; +pub use self::parquet::{ + ParquetExec, ParquetFileMetrics, ParquetFileReaderFactory, ParquetScanOptions, +}; use arrow::{ array::{ArrayData, ArrayRef, DictionaryArray}, buffer::Buffer, diff --git a/datafusion/core/src/physical_plan/file_format/parquet.rs b/datafusion/core/src/physical_plan/file_format/parquet.rs index a6ce44b22c8d7..f4c52e5dc699f 100644 --- a/datafusion/core/src/physical_plan/file_format/parquet.rs +++ b/datafusion/core/src/physical_plan/file_format/parquet.rs @@ -81,11 +81,13 @@ pub struct ParquetScanOptions { } impl ParquetScanOptions { + /// Set whether to pushdown pruning predicate to the parquet scan pub fn with_pushdown_filters(mut self, pushdown_filters: bool) -> Self { self.pushdown_filters = pushdown_filters; self } + /// Set whether to reorder pruning predicate expressions in order to minimize evaluation cost pub fn with_reorder_predicates(mut self, reorder_predicates: bool) -> Self { self.reorder_predicates = reorder_predicates; self @@ -182,6 +184,11 @@ impl ParquetExec { self.scan_options = scan_options; self } + + /// Ref to the `ParquetScanOptions` + pub fn parquet_scan_options(&self) -> &ParquetScanOptions { + &self.scan_options + } } /// Stores metrics about the parquet execution for a particular parquet file.