2525//! " SortExec: [non_nullable_col@1 ASC]",
2626//! in the physical plan. The first sort is unnecessary since its result is overwritten
2727//! by another SortExec. Therefore, this rule removes it from the physical plan.
28+ use crate :: config:: ConfigOptions ;
2829use crate :: error:: Result ;
2930use crate :: physical_optimizer:: utils:: {
3031 add_sort_above_child, ordering_satisfy, ordering_satisfy_concrete,
@@ -34,7 +35,6 @@ use crate::physical_plan::rewrite::TreeNodeRewritable;
3435use crate :: physical_plan:: sorts:: sort:: SortExec ;
3536use crate :: physical_plan:: windows:: WindowAggExec ;
3637use crate :: physical_plan:: { with_new_children_if_necessary, ExecutionPlan } ;
37- use crate :: prelude:: SessionConfig ;
3838use arrow:: datatypes:: SchemaRef ;
3939use datafusion_common:: { reverse_sort_options, DataFusionError } ;
4040use datafusion_physical_expr:: { PhysicalExpr , PhysicalSortExpr } ;
@@ -122,7 +122,7 @@ impl PhysicalOptimizerRule for OptimizeSorts {
122122 fn optimize (
123123 & self ,
124124 plan : Arc < dyn ExecutionPlan > ,
125- _config : & SessionConfig ,
125+ _config : & ConfigOptions ,
126126 ) -> Result < Arc < dyn ExecutionPlan > > {
127127 // Execute a post-order traversal to adjust input key ordering:
128128 let plan_requirements = PlanWithCorrespondingSort :: new ( plan) ;
@@ -557,7 +557,7 @@ mod tests {
557557 #[ tokio:: test]
558558 async fn test_remove_unnecessary_sort ( ) -> Result < ( ) > {
559559 let session_ctx = SessionContext :: new ( ) ;
560- let conf = session_ctx. copied_config ( ) ;
560+ let state = session_ctx. state ( ) ;
561561 let schema = create_test_schema ( ) ?;
562562 let source = Arc :: new ( MemoryExec :: try_new ( & [ ] , schema. clone ( ) , None ) ?)
563563 as Arc < dyn ExecutionPlan > ;
@@ -589,7 +589,7 @@ mod tests {
589589 expected, actual
590590 ) ;
591591 let optimized_physical_plan =
592- OptimizeSorts :: new ( ) . optimize ( physical_plan, & conf ) ?;
592+ OptimizeSorts :: new ( ) . optimize ( physical_plan, state . config_options ( ) ) ?;
593593 let formatted = displayable ( optimized_physical_plan. as_ref ( ) )
594594 . indent ( )
595595 . to_string ( ) ;
@@ -608,7 +608,7 @@ mod tests {
608608 #[ tokio:: test]
609609 async fn test_remove_unnecessary_sort_window_multilayer ( ) -> Result < ( ) > {
610610 let session_ctx = SessionContext :: new ( ) ;
611- let conf = session_ctx. copied_config ( ) ;
611+ let state = session_ctx. state ( ) ;
612612 let schema = create_test_schema ( ) ?;
613613 let source = Arc :: new ( MemoryExec :: try_new ( & [ ] , schema. clone ( ) , None ) ?)
614614 as Arc < dyn ExecutionPlan > ;
@@ -690,7 +690,7 @@ mod tests {
690690 expected, actual
691691 ) ;
692692 let optimized_physical_plan =
693- OptimizeSorts :: new ( ) . optimize ( physical_plan, & conf ) ?;
693+ OptimizeSorts :: new ( ) . optimize ( physical_plan, state . config_options ( ) ) ?;
694694 let formatted = displayable ( optimized_physical_plan. as_ref ( ) )
695695 . indent ( )
696696 . to_string ( ) ;
@@ -715,7 +715,7 @@ mod tests {
715715 #[ tokio:: test]
716716 async fn test_add_required_sort ( ) -> Result < ( ) > {
717717 let session_ctx = SessionContext :: new ( ) ;
718- let conf = session_ctx. copied_config ( ) ;
718+ let state = session_ctx. state ( ) ;
719719 let schema = create_test_schema ( ) ?;
720720 let source = Arc :: new ( MemoryExec :: try_new ( & [ ] , schema. clone ( ) , None ) ?)
721721 as Arc < dyn ExecutionPlan > ;
@@ -736,7 +736,7 @@ mod tests {
736736 expected, actual
737737 ) ;
738738 let optimized_physical_plan =
739- OptimizeSorts :: new ( ) . optimize ( physical_plan, & conf ) ?;
739+ OptimizeSorts :: new ( ) . optimize ( physical_plan, state . config_options ( ) ) ?;
740740 let formatted = displayable ( optimized_physical_plan. as_ref ( ) )
741741 . indent ( )
742742 . to_string ( ) ;
@@ -760,7 +760,7 @@ mod tests {
760760 #[ tokio:: test]
761761 async fn test_remove_unnecessary_sort1 ( ) -> Result < ( ) > {
762762 let session_ctx = SessionContext :: new ( ) ;
763- let conf = session_ctx. copied_config ( ) ;
763+ let state = session_ctx. state ( ) ;
764764 let schema = create_test_schema ( ) ?;
765765 let source = Arc :: new ( MemoryExec :: try_new ( & [ ] , schema. clone ( ) , None ) ?)
766766 as Arc < dyn ExecutionPlan > ;
@@ -803,7 +803,7 @@ mod tests {
803803 expected, actual
804804 ) ;
805805 let optimized_physical_plan =
806- OptimizeSorts :: new ( ) . optimize ( physical_plan, & conf ) ?;
806+ OptimizeSorts :: new ( ) . optimize ( physical_plan, state . config_options ( ) ) ?;
807807 let formatted = displayable ( optimized_physical_plan. as_ref ( ) )
808808 . indent ( )
809809 . to_string ( ) ;
@@ -827,7 +827,7 @@ mod tests {
827827 #[ tokio:: test]
828828 async fn test_change_wrong_sorting ( ) -> Result < ( ) > {
829829 let session_ctx = SessionContext :: new ( ) ;
830- let conf = session_ctx. copied_config ( ) ;
830+ let state = session_ctx. state ( ) ;
831831 let schema = create_test_schema ( ) ?;
832832 let source = Arc :: new ( MemoryExec :: try_new ( & [ ] , schema. clone ( ) , None ) ?)
833833 as Arc < dyn ExecutionPlan > ;
@@ -865,7 +865,7 @@ mod tests {
865865 expected, actual
866866 ) ;
867867 let optimized_physical_plan =
868- OptimizeSorts :: new ( ) . optimize ( physical_plan, & conf ) ?;
868+ OptimizeSorts :: new ( ) . optimize ( physical_plan, state . config_options ( ) ) ?;
869869 let formatted = displayable ( optimized_physical_plan. as_ref ( ) )
870870 . indent ( )
871871 . to_string ( ) ;
0 commit comments