Skip to content

Commit 5406e86

Browse files
committed
fix
1 parent cbd484c commit 5406e86

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

datafusion/physical-optimizer/src/reverse_order.rs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ impl PhysicalOptimizerRule for ReverseOrder {
4949
fn optimize(
5050
&self,
5151
plan: Arc<dyn ExecutionPlan>,
52-
config: &ConfigOptions,
52+
_config: &ConfigOptions,
5353
) -> Result<Arc<dyn ExecutionPlan>> {
5454
// Search for any SortExec nodes and try to optimize them
5555
plan.transform_up(&|plan: Arc<dyn ExecutionPlan>| {
@@ -62,7 +62,7 @@ impl PhysicalOptimizerRule for ReverseOrder {
6262

6363
// First, check if the sort is already satisfied by input ordering
6464
// This is similar to analyze_immediate_sort_removal in EnforceSorting
65-
if let Some(input_ordering) = sort_input.output_ordering() {
65+
if let Some(_input_ordering) = sort_input.output_ordering() {
6666
let input_eq_properties = sort_input.equivalence_properties();
6767

6868
// Check if input already satisfies the sort requirement
@@ -181,8 +181,8 @@ impl TreeNodeRewriter for ReverseRewriter {
181181
.map(|sort| !sort)
182182
.collect();
183183
let exec = SortMergeJoinExec::try_new(
184-
sort_merge_join.left.clone(),
185-
sort_merge_join.right.clone(),
184+
Arc::clone(&sort_merge_join.left),
185+
Arc::clone(&sort_merge_join.right),
186186
sort_merge_join.on.clone(),
187187
sort_merge_join.filter.clone(),
188188
sort_merge_join.join_type,
@@ -285,8 +285,9 @@ impl PushdownReverse for DataSourceExec {
285285
reverse_parquet_source.with_predicate(predicate);
286286
}
287287

288-
let source = reverse_parquet_source
289-
.with_statistics(cfg.statistics().unwrap_or_default().clone());
288+
let source = reverse_parquet_source.with_statistics(
289+
cfg.partition_statistics(None).unwrap_or_default().clone(),
290+
);
290291
let cfg = FileScanConfigBuilder::from(cfg).with_source(source).build();
291292

292293
return Some(DataSourceExec::new(Arc::new(cfg)));
@@ -374,7 +375,7 @@ mod tests {
374375
Arc::new(arrow::array::StringArray::from(
375376
values
376377
.iter()
377-
.map(|v| format!("val_{}", v))
378+
.map(|v| format!("val_{v}"))
378379
.collect::<Vec<_>>(),
379380
)),
380381
Arc::new(arrow::array::Float64Array::from(
@@ -439,7 +440,7 @@ mod tests {
439440
let lex_ordering = LexOrdering::new(sort_expr).unwrap();
440441
let sort_exec = Arc::new(SortExec::new(lex_ordering, lazy_exec));
441442

442-
let optimizer = ReverseOrder::default();
443+
let optimizer = ReverseOrder;
443444
let result = optimizer.optimize(sort_exec, &config)?;
444445

445446
// The optimizer should either remove the sort or keep it if it can't verify the ordering
@@ -485,7 +486,7 @@ mod tests {
485486
SortExec::new(lex_ordering, repartitioned).with_preserve_partitioning(false),
486487
);
487488

488-
let optimizer = ReverseOrder::default();
489+
let optimizer = ReverseOrder;
489490
let result = optimizer.optimize(sort_exec, &config)?;
490491

491492
// Verify: Should be replaced with SortPreservingMergeExec
@@ -524,7 +525,7 @@ mod tests {
524525
let sort_exec =
525526
Arc::new(SortExec::new(lex_ordering, lazy_exec).with_fetch(Some(10)));
526527

527-
let optimizer = ReverseOrder::default();
528+
let optimizer = ReverseOrder;
528529
let result = optimizer.optimize(sort_exec, &config)?;
529530

530531
// Should optimize to either GlobalLimitExec or keep as TopK (SortExec with fetch)
@@ -571,7 +572,7 @@ mod tests {
571572
.with_preserve_partitioning(true), // preserve partitions
572573
);
573574

574-
let optimizer = ReverseOrder::default();
575+
let optimizer = ReverseOrder;
575576
let result = optimizer.optimize(sort_exec, &config)?;
576577

577578
// Verify: Should be replaced with LocalLimitExec for multi-partition
@@ -619,7 +620,7 @@ mod tests {
619620
let lex_ordering = LexOrdering::new(sort_expr).unwrap();
620621
let sort_exec = Arc::new(SortExec::new(lex_ordering, unsorted_exec));
621622

622-
let optimizer = ReverseOrder::default();
623+
let optimizer = ReverseOrder;
623624
let result = optimizer.optimize(sort_exec, &config)?;
624625

625626
// Verify: SortExec should still be present since input is not sorted
@@ -667,7 +668,7 @@ mod tests {
667668
let lex_ordering = LexOrdering::new(asc_sort_expr).unwrap();
668669
let sort_exec = Arc::new(SortExec::new(lex_ordering, lazy_exec));
669670

670-
let optimizer = ReverseOrder::default();
671+
let optimizer = ReverseOrder;
671672
let result = optimizer.optimize(sort_exec, &config)?;
672673

673674
// The optimizer may or may not be able to reverse LazyMemoryExec
@@ -706,7 +707,7 @@ mod tests {
706707
// Add second unnecessary sort on top
707708
let outer_sort = Arc::new(SortExec::new(lex_ordering, inner_sort));
708709

709-
let optimizer = ReverseOrder::default();
710+
let optimizer = ReverseOrder;
710711
let result = optimizer.optimize(outer_sort, &config)?;
711712

712713
// Verify: At least one sort should be removed
@@ -739,7 +740,7 @@ mod tests {
739740
vec![Arc::new(RwLock::new(generator))],
740741
)?);
741742

742-
let optimizer = ReverseOrder::default();
743+
let optimizer = ReverseOrder;
743744
let result = optimizer.optimize(Arc::clone(&lazy_exec) as _, &config)?;
744745

745746
// Verify: Plan should be unchanged
@@ -766,7 +767,7 @@ mod tests {
766767
#[test]
767768
fn test_optimizer_properties() {
768769
// Test basic optimizer properties
769-
let optimizer = ReverseOrder::default();
770+
let optimizer = ReverseOrder;
770771

771772
assert_eq!(optimizer.name(), "ReverseOrder");
772773
assert!(optimizer.schema_check());
@@ -775,7 +776,7 @@ mod tests {
775776
#[test]
776777
fn test_reverse_order_clone() {
777778
// Test that optimizer can be cloned
778-
let optimizer1 = ReverseOrder::default();
779+
let optimizer1 = ReverseOrder;
779780
let optimizer2 = optimizer1.clone();
780781

781782
assert_eq!(optimizer1.name(), optimizer2.name());
@@ -789,7 +790,7 @@ mod tests {
789790
let config = ConfigOptions::new();
790791
let schema = create_test_schema();
791792

792-
let empty_exec = Arc::new(EmptyExec::new(schema.clone()));
793+
let empty_exec = Arc::new(EmptyExec::new(Arc::clone(&schema)));
793794
let sort_expr = vec![PhysicalSortExpr {
794795
expr: Arc::new(Column::new("col1", 0)),
795796
options: SortOptions {
@@ -801,7 +802,7 @@ mod tests {
801802
let lex_ordering = LexOrdering::new(sort_expr).unwrap();
802803
let sort_exec = Arc::new(SortExec::new(lex_ordering, empty_exec));
803804

804-
let optimizer = ReverseOrder::default();
805+
let optimizer = ReverseOrder;
805806
let result = optimizer.optimize(sort_exec, &config)?;
806807

807808
// EmptyExec has no output ordering, so sort should remain
@@ -842,7 +843,7 @@ mod tests {
842843
let lex_ordering = LexOrdering::new(sort_expr).unwrap();
843844
let sort_exec = Arc::new(SortExec::new(lex_ordering, lazy_exec));
844845

845-
let optimizer = ReverseOrder::default();
846+
let optimizer = ReverseOrder;
846847
let result = optimizer.optimize(sort_exec, &config)?;
847848

848849
// Verify the optimizer returns a valid plan (may or may not optimize depending on

0 commit comments

Comments
 (0)