You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by al...@apache.org on 2024/09/25 18:11:06 UTC
(datafusion) branch main updated: Require `Debug` for `PhysicalOptimizerRule` (#12624)
This is an automated email from the ASF dual-hosted git repository.
alamb 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 91c8a47f20 Require `Debug` for `PhysicalOptimizerRule` (#12624)
91c8a47f20 is described below
commit 91c8a47f2001b29bb4fdf6f41e18a65bbf0752de
Author: AnthonyZhOon <12...@users.noreply.github.com>
AuthorDate: Thu Sep 26 04:11:02 2024 +1000
Require `Debug` for `PhysicalOptimizerRule` (#12624)
* Require Debug for PhysicalOptimizerRule
* Add reference to meet &JoinType type required
* Revert "Add reference to meet &JoinType type required" as clippy lint informs this is unnecessary
This reverts commit f69d73c0f5c130d78f0b3bcf0967185466fd9c50.
---
datafusion/core/src/physical_optimizer/coalesce_batches.rs | 2 +-
datafusion/core/src/physical_optimizer/enforce_distribution.rs | 2 +-
datafusion/core/src/physical_optimizer/enforce_sorting.rs | 2 +-
datafusion/core/src/physical_optimizer/join_selection.rs | 2 +-
datafusion/core/src/physical_optimizer/optimizer.rs | 2 +-
datafusion/core/src/physical_optimizer/projection_pushdown.rs | 2 +-
datafusion/core/src/physical_optimizer/sanity_checker.rs | 2 +-
datafusion/core/src/physical_optimizer/update_aggr_exprs.rs | 2 +-
datafusion/physical-optimizer/src/aggregate_statistics.rs | 2 +-
datafusion/physical-optimizer/src/combine_partial_final_agg.rs | 2 +-
datafusion/physical-optimizer/src/limit_pushdown.rs | 2 +-
datafusion/physical-optimizer/src/limited_distinct_aggregation.rs | 1 +
datafusion/physical-optimizer/src/optimizer.rs | 3 ++-
datafusion/physical-optimizer/src/topk_aggregation.rs | 1 +
14 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/datafusion/core/src/physical_optimizer/coalesce_batches.rs b/datafusion/core/src/physical_optimizer/coalesce_batches.rs
index da0e44c8de..2f834813ed 100644
--- a/datafusion/core/src/physical_optimizer/coalesce_batches.rs
+++ b/datafusion/core/src/physical_optimizer/coalesce_batches.rs
@@ -34,7 +34,7 @@ use datafusion_physical_optimizer::PhysicalOptimizerRule;
/// Optimizer rule that introduces CoalesceBatchesExec to avoid overhead with small batches that
/// are produced by highly selective filters
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct CoalesceBatches {}
impl CoalesceBatches {
diff --git a/datafusion/core/src/physical_optimizer/enforce_distribution.rs b/datafusion/core/src/physical_optimizer/enforce_distribution.rs
index ceb701ad00..c971e61506 100644
--- a/datafusion/core/src/physical_optimizer/enforce_distribution.rs
+++ b/datafusion/core/src/physical_optimizer/enforce_distribution.rs
@@ -176,7 +176,7 @@ use itertools::izip;
///
/// This rule only chooses the exact match and satisfies the Distribution(a, b, c)
/// by a HashPartition(a, b, c).
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct EnforceDistribution {}
impl EnforceDistribution {
diff --git a/datafusion/core/src/physical_optimizer/enforce_sorting.rs b/datafusion/core/src/physical_optimizer/enforce_sorting.rs
index 14afe35466..aa28f9d6b6 100644
--- a/datafusion/core/src/physical_optimizer/enforce_sorting.rs
+++ b/datafusion/core/src/physical_optimizer/enforce_sorting.rs
@@ -72,7 +72,7 @@ use itertools::izip;
/// This rule inspects [`SortExec`]'s in the given physical plan and removes the
/// ones it can prove unnecessary.
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct EnforceSorting {}
impl EnforceSorting {
diff --git a/datafusion/core/src/physical_optimizer/join_selection.rs b/datafusion/core/src/physical_optimizer/join_selection.rs
index 2643ade8f4..499fb9cbbc 100644
--- a/datafusion/core/src/physical_optimizer/join_selection.rs
+++ b/datafusion/core/src/physical_optimizer/join_selection.rs
@@ -46,7 +46,7 @@ use datafusion_physical_optimizer::PhysicalOptimizerRule;
/// The [`JoinSelection`] rule tries to modify a given plan so that it can
/// accommodate infinite sources and optimize joins in the plan according to
/// available statistical information, if there is any.
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct JoinSelection {}
impl JoinSelection {
diff --git a/datafusion/core/src/physical_optimizer/optimizer.rs b/datafusion/core/src/physical_optimizer/optimizer.rs
index e09d7b28bf..7a6f991121 100644
--- a/datafusion/core/src/physical_optimizer/optimizer.rs
+++ b/datafusion/core/src/physical_optimizer/optimizer.rs
@@ -35,7 +35,7 @@ use crate::physical_optimizer::sanity_checker::SanityCheckPlan;
use crate::physical_optimizer::topk_aggregation::TopKAggregation;
/// A rule-based physical optimizer.
-#[derive(Clone)]
+#[derive(Clone, Debug)]
pub struct PhysicalOptimizer {
/// All rules to apply
pub rules: Vec<Arc<dyn PhysicalOptimizerRule + Send + Sync>>,
diff --git a/datafusion/core/src/physical_optimizer/projection_pushdown.rs b/datafusion/core/src/physical_optimizer/projection_pushdown.rs
index a6c3e075a4..b4dd0a995d 100644
--- a/datafusion/core/src/physical_optimizer/projection_pushdown.rs
+++ b/datafusion/core/src/physical_optimizer/projection_pushdown.rs
@@ -60,7 +60,7 @@ use itertools::Itertools;
/// This rule inspects [`ProjectionExec`]'s in the given physical plan and tries to
/// remove or swap with its child.
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct ProjectionPushdown {}
impl ProjectionPushdown {
diff --git a/datafusion/core/src/physical_optimizer/sanity_checker.rs b/datafusion/core/src/physical_optimizer/sanity_checker.rs
index e392105fbc..65a712cc69 100644
--- a/datafusion/core/src/physical_optimizer/sanity_checker.rs
+++ b/datafusion/core/src/physical_optimizer/sanity_checker.rs
@@ -41,7 +41,7 @@ use itertools::izip;
/// are not satisfied by their children.
/// 2. Plans that use pipeline-breaking operators on infinite input(s),
/// it is impossible to execute such queries (they will never generate output nor finish)
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct SanityCheckPlan {}
impl SanityCheckPlan {
diff --git a/datafusion/core/src/physical_optimizer/update_aggr_exprs.rs b/datafusion/core/src/physical_optimizer/update_aggr_exprs.rs
index 8b5084c67e..c0d9140c02 100644
--- a/datafusion/core/src/physical_optimizer/update_aggr_exprs.rs
+++ b/datafusion/core/src/physical_optimizer/update_aggr_exprs.rs
@@ -48,7 +48,7 @@ use datafusion_physical_plan::{
/// This rule analyzes aggregate expressions of type `Beneficial` to see whether
/// their input ordering requirements are satisfied. If this is the case, the
/// aggregators are modified to run in a more efficient mode.
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct OptimizeAggregateOrder {}
impl OptimizeAggregateOrder {
diff --git a/datafusion/physical-optimizer/src/aggregate_statistics.rs b/datafusion/physical-optimizer/src/aggregate_statistics.rs
index 863c5ab2d2..71f129be98 100644
--- a/datafusion/physical-optimizer/src/aggregate_statistics.rs
+++ b/datafusion/physical-optimizer/src/aggregate_statistics.rs
@@ -33,7 +33,7 @@ use datafusion_physical_plan::placeholder_row::PlaceholderRowExec;
use datafusion_physical_plan::udaf::AggregateFunctionExpr;
/// Optimizer that uses available statistics for aggregate functions
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct AggregateStatistics {}
impl AggregateStatistics {
diff --git a/datafusion/physical-optimizer/src/combine_partial_final_agg.rs b/datafusion/physical-optimizer/src/combine_partial_final_agg.rs
index 67e40c9b50..4e352e25b5 100644
--- a/datafusion/physical-optimizer/src/combine_partial_final_agg.rs
+++ b/datafusion/physical-optimizer/src/combine_partial_final_agg.rs
@@ -37,7 +37,7 @@ use datafusion_physical_expr::{physical_exprs_equal, PhysicalExpr};
///
/// This rule should be applied after the EnforceDistribution and EnforceSorting rules
///
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct CombinePartialFinalAggregate {}
impl CombinePartialFinalAggregate {
diff --git a/datafusion/physical-optimizer/src/limit_pushdown.rs b/datafusion/physical-optimizer/src/limit_pushdown.rs
index 15d210e1b1..8f392b6830 100644
--- a/datafusion/physical-optimizer/src/limit_pushdown.rs
+++ b/datafusion/physical-optimizer/src/limit_pushdown.rs
@@ -33,7 +33,7 @@ use datafusion_physical_plan::{ExecutionPlan, ExecutionPlanProperties};
/// This rule inspects [`ExecutionPlan`]'s and pushes down the fetch limit from
/// the parent to the child if applicable.
-#[derive(Default)]
+#[derive(Default, Debug)]
pub struct LimitPushdown {}
/// This is a "data class" we use within the [`LimitPushdown`] rule to push
diff --git a/datafusion/physical-optimizer/src/limited_distinct_aggregation.rs b/datafusion/physical-optimizer/src/limited_distinct_aggregation.rs
index 8653ad19da..7833324f64 100644
--- a/datafusion/physical-optimizer/src/limited_distinct_aggregation.rs
+++ b/datafusion/physical-optimizer/src/limited_distinct_aggregation.rs
@@ -35,6 +35,7 @@ use itertools::Itertools;
/// rows in the group to be processed for correctness. Example queries fitting this description are:
/// - `SELECT distinct l_orderkey FROM lineitem LIMIT 10;`
/// - `SELECT l_orderkey FROM lineitem GROUP BY l_orderkey LIMIT 10;`
+#[derive(Debug)]
pub struct LimitedDistinctAggregation {}
impl LimitedDistinctAggregation {
diff --git a/datafusion/physical-optimizer/src/optimizer.rs b/datafusion/physical-optimizer/src/optimizer.rs
index 885dc4a95b..609890e2d4 100644
--- a/datafusion/physical-optimizer/src/optimizer.rs
+++ b/datafusion/physical-optimizer/src/optimizer.rs
@@ -20,6 +20,7 @@
use datafusion_common::config::ConfigOptions;
use datafusion_common::Result;
use datafusion_physical_plan::ExecutionPlan;
+use std::fmt::Debug;
use std::sync::Arc;
/// `PhysicalOptimizerRule` transforms one ['ExecutionPlan'] into another which
@@ -29,7 +30,7 @@ use std::sync::Arc;
/// `PhysicalOptimizerRule`s.
///
/// [`SessionState::add_physical_optimizer_rule`]: https://docs.rs/datafusion/latest/datafusion/execution/session_state/struct.SessionState.html#method.add_physical_optimizer_rule
-pub trait PhysicalOptimizerRule {
+pub trait PhysicalOptimizerRule: Debug {
/// Rewrite `plan` to an optimized form
fn optimize(
&self,
diff --git a/datafusion/physical-optimizer/src/topk_aggregation.rs b/datafusion/physical-optimizer/src/topk_aggregation.rs
index 0cb76d9c23..804dd165d3 100644
--- a/datafusion/physical-optimizer/src/topk_aggregation.rs
+++ b/datafusion/physical-optimizer/src/topk_aggregation.rs
@@ -37,6 +37,7 @@ use crate::PhysicalOptimizerRule;
use itertools::Itertools;
/// An optimizer rule that passes a `limit` hint to aggregations if the whole result is not needed
+#[derive(Debug)]
pub struct TopKAggregation {}
impl TopKAggregation {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org