This is an automated email from the ASF dual-hosted git repository.

jayzhan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 1094651cd0 chore: Move `OptimizeAggregateOrder` from core to optimizer 
crate (#13284)
1094651cd0 is described below

commit 1094651cd01426a13580ad67ba2db59a9831245d
Author: Jonathan Chen <[email protected]>
AuthorDate: Thu Nov 7 01:23:49 2024 -0500

    chore: Move `OptimizeAggregateOrder` from core to optimizer crate (#13284)
    
    * move OptimizeAggregateOrder
    
    * clippy fix
---
 datafusion/core/src/physical_optimizer/mod.rs      |  1 -
 datafusion/physical-optimizer/src/lib.rs           |  1 +
 .../src}/update_aggr_exprs.rs                      | 26 +++++++++++++++++++---
 3 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/datafusion/core/src/physical_optimizer/mod.rs 
b/datafusion/core/src/physical_optimizer/mod.rs
index efdd3148d0..fe799a2305 100644
--- a/datafusion/core/src/physical_optimizer/mod.rs
+++ b/datafusion/core/src/physical_optimizer/mod.rs
@@ -32,7 +32,6 @@ pub mod replace_with_order_preserving_variants;
 pub mod sanity_checker;
 #[cfg(test)]
 pub mod test_utils;
-pub mod update_aggr_exprs;
 
 mod sort_pushdown;
 mod utils;
diff --git a/datafusion/physical-optimizer/src/lib.rs 
b/datafusion/physical-optimizer/src/lib.rs
index 439f1dc873..6ae55df92d 100644
--- a/datafusion/physical-optimizer/src/lib.rs
+++ b/datafusion/physical-optimizer/src/lib.rs
@@ -24,5 +24,6 @@ pub mod limited_distinct_aggregation;
 mod optimizer;
 pub mod output_requirements;
 pub mod topk_aggregation;
+pub mod update_aggr_exprs;
 
 pub use optimizer::PhysicalOptimizerRule;
diff --git a/datafusion/core/src/physical_optimizer/update_aggr_exprs.rs 
b/datafusion/physical-optimizer/src/update_aggr_exprs.rs
similarity index 88%
rename from datafusion/core/src/physical_optimizer/update_aggr_exprs.rs
rename to datafusion/physical-optimizer/src/update_aggr_exprs.rs
index d563d0c56d..6228ed10ec 100644
--- a/datafusion/core/src/physical_optimizer/update_aggr_exprs.rs
+++ b/datafusion/physical-optimizer/src/update_aggr_exprs.rs
@@ -27,14 +27,15 @@ use 
datafusion_physical_expr::aggregate::AggregateFunctionExpr;
 use datafusion_physical_expr::{
     reverse_order_bys, EquivalenceProperties, PhysicalSortRequirement,
 };
-use datafusion_physical_expr_common::sort_expr::{LexOrdering, LexRequirement};
-use datafusion_physical_optimizer::PhysicalOptimizerRule;
+use datafusion_physical_expr::{LexOrdering, LexRequirement};
 use datafusion_physical_plan::aggregates::concat_slices;
 use datafusion_physical_plan::windows::get_ordered_partition_by_indices;
 use datafusion_physical_plan::{
     aggregates::AggregateExec, ExecutionPlan, ExecutionPlanProperties,
 };
 
+use crate::PhysicalOptimizerRule;
+
 /// This optimizer rule checks ordering requirements of aggregate expressions.
 ///
 /// There are 3 kinds of aggregators in terms of ordering requirements:
@@ -60,6 +61,20 @@ impl OptimizeAggregateOrder {
 }
 
 impl PhysicalOptimizerRule for OptimizeAggregateOrder {
+    /// Applies the `OptimizeAggregateOrder` rule to the provided execution 
plan.
+    ///
+    /// This function traverses the execution plan tree, identifies 
`AggregateExec` nodes,
+    /// and optimizes their aggregate expressions based on existing input 
orderings.
+    /// If optimizations are applied, it returns a modified execution plan.
+    ///
+    /// # Arguments
+    ///
+    /// * `plan` - The root of the execution plan to optimize.
+    /// * `_config` - Configuration options (currently unused).
+    ///
+    /// # Returns
+    ///
+    /// A `Result` containing the potentially optimized execution plan or an 
error.
     fn optimize(
         &self,
         plan: Arc<dyn ExecutionPlan>,
@@ -85,7 +100,12 @@ impl PhysicalOptimizerRule for OptimizeAggregateOrder {
                 let requirement = indices
                     .iter()
                     .map(|&idx| {
-                        
PhysicalSortRequirement::new(groupby_exprs[idx].clone(), None)
+                        PhysicalSortRequirement::new(
+                            Arc::<dyn 
datafusion_physical_plan::PhysicalExpr>::clone(
+                                &groupby_exprs[idx],
+                            ),
+                            None,
+                        )
                     })
                     .collect::<Vec<_>>();
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to