Skip to content

Commit 5791822

Browse files
authored
chore: enforce clippy lint needless_pass_by_value to datafusion-datasource-parquet (#18695)
## Which issue does this PR close? - Closes #18610 - Part of parent tracking issue #18503 ## What changes are included in this PR? enforce clippy lint `needless_pass_by_value` to `datafusion-datasource-parquet` ## Are these changes tested? yes ## Are there any user-facing changes? no
1 parent 8a75075 commit 5791822

File tree

5 files changed

+24
-18
lines changed

5 files changed

+24
-18
lines changed

datafusion/datasource-parquet/src/file_format.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,6 +1072,7 @@ pub async fn fetch_statistics(
10721072
since = "50.0.0",
10731073
note = "Use `DFParquetMetadata::statistics_from_parquet_metadata` instead"
10741074
)]
1075+
#[expect(clippy::needless_pass_by_value)]
10751076
pub fn statistics_from_parquet_meta_calc(
10761077
metadata: &ParquetMetaData,
10771078
table_schema: SchemaRef,
@@ -1500,7 +1501,7 @@ fn spawn_parquet_parallel_serialization_task(
15001501
serialize_tx: Sender<SpawnedTask<RBStreamSerializeResult>>,
15011502
schema: Arc<Schema>,
15021503
writer_props: Arc<WriterProperties>,
1503-
parallel_options: ParallelParquetWriterOptions,
1504+
parallel_options: Arc<ParallelParquetWriterOptions>,
15041505
pool: Arc<dyn MemoryPool>,
15051506
) -> SpawnedTask<Result<(), DataFusionError>> {
15061507
SpawnedTask::spawn(async move {
@@ -1671,7 +1672,7 @@ async fn output_single_parquet_file_parallelized(
16711672
serialize_tx,
16721673
Arc::clone(&output_schema),
16731674
Arc::clone(&arc_props),
1674-
parallel_options,
1675+
parallel_options.into(),
16751676
Arc::clone(&pool),
16761677
);
16771678
let parquet_meta_data = concatenate_parallel_row_groups(

datafusion/datasource-parquet/src/metadata.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ impl<'a> DFParquetMetadata<'a> {
314314

315315
get_col_stats(
316316
table_schema,
317-
null_counts_array,
317+
&null_counts_array,
318318
&mut max_accs,
319319
&mut min_accs,
320320
&mut is_max_value_exact,
@@ -362,7 +362,7 @@ fn create_max_min_accs(
362362

363363
fn get_col_stats(
364364
schema: &Schema,
365-
null_counts: Vec<Precision<usize>>,
365+
null_counts: &[Precision<usize>],
366366
max_values: &mut [Option<MaxAccumulator>],
367367
min_values: &mut [Option<MinAccumulator>],
368368
is_max_value_exact: &mut [Option<bool>],
@@ -432,19 +432,19 @@ fn summarize_min_max_null_counts(
432432
max_acc.update_batch(&[Arc::clone(&max_values)])?;
433433
let mut cur_max_acc = max_acc.clone();
434434
accumulators.is_max_value_exact[arrow_schema_index] = has_any_exact_match(
435-
cur_max_acc.evaluate()?,
436-
max_values,
437-
is_max_value_exact_stat,
435+
&cur_max_acc.evaluate()?,
436+
&max_values,
437+
&is_max_value_exact_stat,
438438
);
439439
}
440440

441441
if let Some(min_acc) = &mut accumulators.min_accs[arrow_schema_index] {
442442
min_acc.update_batch(&[Arc::clone(&min_values)])?;
443443
let mut cur_min_acc = min_acc.clone();
444444
accumulators.is_min_value_exact[arrow_schema_index] = has_any_exact_match(
445-
cur_min_acc.evaluate()?,
446-
min_values,
447-
is_min_value_exact_stat,
445+
&cur_min_acc.evaluate()?,
446+
&min_values,
447+
&is_min_value_exact_stat,
448448
);
449449
}
450450

@@ -475,13 +475,13 @@ fn summarize_min_max_null_counts(
475475
/// values are `[true, false, false]`. Since at least one is `true`, the
476476
/// function returns `Some(true)`.
477477
fn has_any_exact_match(
478-
value: ScalarValue,
479-
array: ArrayRef,
480-
exactness: BooleanArray,
478+
value: &ScalarValue,
479+
array: &ArrayRef,
480+
exactness: &BooleanArray,
481481
) -> Option<bool> {
482482
let scalar_array = value.to_scalar().ok()?;
483483
let eq_mask = eq(&scalar_array, &array).ok()?;
484-
let combined_mask = and(&eq_mask, &exactness).ok()?;
484+
let combined_mask = and(&eq_mask, exactness).ok()?;
485485
Some(combined_mask.true_count() > 0)
486486
}
487487

@@ -531,7 +531,7 @@ mod tests {
531531
let exactness =
532532
BooleanArray::from(vec![true, false, false, false, false, false]);
533533

534-
let result = has_any_exact_match(computed_min, row_group_mins, exactness);
534+
let result = has_any_exact_match(&computed_min, &row_group_mins, &exactness);
535535
assert_eq!(result, Some(true));
536536
}
537537
// Case 2: All inexact matches
@@ -542,7 +542,7 @@ mod tests {
542542
let exactness =
543543
BooleanArray::from(vec![false, false, false, false, false, false]);
544544

545-
let result = has_any_exact_match(computed_min, row_group_mins, exactness);
545+
let result = has_any_exact_match(&computed_min, &row_group_mins, &exactness);
546546
assert_eq!(result, Some(false));
547547
}
548548
// Case 3: All exact matches
@@ -553,7 +553,7 @@ mod tests {
553553
let exactness =
554554
BooleanArray::from(vec![false, true, true, true, false, true]);
555555

556-
let result = has_any_exact_match(computed_max, row_group_maxes, exactness);
556+
let result = has_any_exact_match(&computed_max, &row_group_maxes, &exactness);
557557
assert_eq!(result, Some(true));
558558
}
559559
// Case 4: All maxes are null values
@@ -563,7 +563,7 @@ mod tests {
563563
Arc::new(Int32Array::from(vec![None, None, None, None])) as ArrayRef;
564564
let exactness = BooleanArray::from(vec![None, Some(true), None, Some(false)]);
565565

566-
let result = has_any_exact_match(computed_max, row_group_maxes, exactness);
566+
let result = has_any_exact_match(&computed_max, &row_group_maxes, &exactness);
567567
assert_eq!(result, Some(false));
568568
}
569569
}

datafusion/datasource-parquet/src/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
// Make sure fast / cheap clones on Arc are explicit:
1919
// https://github.com/apache/datafusion/issues/11143
2020
#![cfg_attr(not(test), deny(clippy::clone_on_ref_ptr))]
21+
// https://github.com/apache/datafusion/issues/18503
22+
#![deny(clippy::needless_pass_by_value)]
23+
#![cfg_attr(test, allow(clippy::needless_pass_by_value))]
2124

2225
pub mod access_plan;
2326
pub mod file_format;

datafusion/datasource-parquet/src/page_filter.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ pub struct PagePruningAccessPlanFilter {
118118
impl PagePruningAccessPlanFilter {
119119
/// Create a new [`PagePruningAccessPlanFilter`] from a physical
120120
/// expression.
121+
#[expect(clippy::needless_pass_by_value)]
121122
pub fn new(expr: &Arc<dyn PhysicalExpr>, schema: SchemaRef) -> Self {
122123
// extract any single column predicates
123124
let predicates = split_conjunction(expr)

datafusion/datasource-parquet/src/source.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ impl ParquetSource {
334334
}
335335

336336
/// Set predicate information
337+
#[expect(clippy::needless_pass_by_value)]
337338
pub fn with_predicate(&self, predicate: Arc<dyn PhysicalExpr>) -> Self {
338339
let mut conf = self.clone();
339340
conf.predicate = Some(Arc::clone(&predicate));

0 commit comments

Comments
 (0)