Skip to content

Commit 118dc6f

Browse files
committed
Fix
1 parent 989b389 commit 118dc6f

File tree

4 files changed

+15
-8
lines changed

4 files changed

+15
-8
lines changed

datafusion/datasource-parquet/src/opener.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ impl FileOpener for ParquetOpener {
284284

285285
let reverse_row_groups = self.reverse_row_groups;
286286
let preserve_order = self.preserve_order;
287+
let pruning_predicate_config = PruningPredicateConfig { max_in_list: self.pruning_max_inlist_limit };
287288

288289
Ok(Box::pin(async move {
289290
#[cfg(feature = "parquet_encryption")]
@@ -330,6 +331,7 @@ impl FileOpener for ParquetOpener {
330331
&logical_file_schema,
331332
&partitioned_file,
332333
predicate_creation_errors.clone(),
334+
pruning_predicate_config.clone(),
333335
)
334336
});
335337

@@ -426,14 +428,11 @@ impl FileOpener for ParquetOpener {
426428
.try_map_exprs(|p| simplifier.simplify(rewriter.rewrite(p)?))?;
427429

428430
// Build predicates for this specific file
429-
let pruning_config = PruningPredicateConfig {
430-
max_in_list: self.pruning_max_inlist_limit,
431-
};
432431
let (pruning_predicate, page_pruning_predicate) = build_pruning_predicates(
433432
predicate.as_ref(),
434433
&physical_file_schema,
435434
&predicate_creation_errors,
436-
&pruning_config,
435+
&pruning_predicate_config,
437436
);
438437

439438
// The page index is not stored inline in the parquet footer so the
@@ -971,6 +970,7 @@ pub(crate) fn build_pruning_predicates(
971970
Arc::clone(predicate),
972971
file_schema,
973972
predicate_creation_errors,
973+
config,
974974
);
975975
let page_pruning_predicate =
976976
build_page_pruning_predicate(predicate, file_schema, config);

datafusion/datasource-parquet/src/source.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ impl FileSource for ParquetSource {
641641
// Instead we use the logical schema of the file (the table schema without partition columns).
642642
if let Some(predicate) = &self.predicate {
643643
let predicate_creation_errors = Count::new();
644-
let pruning_config = PruningPredicateConfig {
644+
let pruning_predicate_config = PruningPredicateConfig {
645645
max_in_list: self
646646
.table_parquet_options
647647
.global
@@ -651,7 +651,7 @@ impl FileSource for ParquetSource {
651651
Some(predicate),
652652
self.table_schema.table_schema(),
653653
&predicate_creation_errors,
654-
&pruning_config,
654+
&pruning_predicate_config,
655655
) {
656656
let mut guarantees = pruning_predicate
657657
.literal_guarantees()

datafusion/pruning/src/file_pruner.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use datafusion_physical_expr_common::physical_expr::{PhysicalExpr, snapshot_gene
2626
use datafusion_physical_plan::metrics::Count;
2727
use log::debug;
2828

29-
use crate::build_pruning_predicate;
29+
use crate::{build_pruning_predicate, PruningPredicateConfig};
3030

3131
/// Prune based on file-level statistics.
3232
///
@@ -40,6 +40,7 @@ pub struct FilePruner {
4040
file_schema: SchemaRef,
4141
file_stats_pruning: PrunableStatistics,
4242
predicate_creation_errors: Count,
43+
pruning_predicate_config: PruningPredicateConfig
4344
}
4445

4546
impl FilePruner {
@@ -54,12 +55,14 @@ impl FilePruner {
5455
_partition_fields: Vec<FieldRef>,
5556
partitioned_file: PartitionedFile,
5657
predicate_creation_errors: Count,
58+
pruning_predicate_config: PruningPredicateConfig,
5759
) -> Result<Self> {
5860
Self::try_new(
5961
predicate,
6062
logical_file_schema,
6163
&partitioned_file,
6264
predicate_creation_errors,
65+
pruning_predicate_config
6366
)
6467
.ok_or_else(|| {
6568
internal_datafusion_err!(
@@ -76,6 +79,7 @@ impl FilePruner {
7679
file_schema: &SchemaRef,
7780
partitioned_file: &PartitionedFile,
7881
predicate_creation_errors: Count,
82+
pruning_predicate_config: PruningPredicateConfig,
7983
) -> Option<Self> {
8084
let file_stats = partitioned_file.statistics.as_ref()?;
8185
let file_stats_pruning =
@@ -86,6 +90,7 @@ impl FilePruner {
8690
file_schema: Arc::clone(file_schema),
8791
file_stats_pruning,
8892
predicate_creation_errors,
93+
pruning_predicate_config
8994
})
9095
}
9196

@@ -110,6 +115,7 @@ impl FilePruner {
110115
Arc::clone(&self.predicate),
111116
&self.file_schema,
112117
&self.predicate_creation_errors,
118+
&self.pruning_predicate_config,
113119
);
114120
let Some(pruning_predicate) = pruning_predicate else {
115121
return Ok(false);

datafusion/pruning/src/pruning_predicate.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,11 +399,12 @@ pub fn build_pruning_predicate(
399399
predicate: Arc<dyn PhysicalExpr>,
400400
file_schema: &SchemaRef,
401401
predicate_creation_errors: &Count,
402+
config: &PruningPredicateConfig,
402403
) -> Option<Arc<PruningPredicate>> {
403404
match PruningPredicate::try_new(
404405
predicate,
405406
Arc::clone(file_schema),
406-
&PruningPredicateConfig::default(),
407+
config,
407408
) {
408409
Ok(pruning_predicate) => {
409410
if !pruning_predicate.always_true() {

0 commit comments

Comments
 (0)