From 1db604d581776ac85720e898708b6bf57bb5541a Mon Sep 17 00:00:00 2001 From: Ruihang Xia Date: Thu, 2 Mar 2023 16:32:34 +0800 Subject: [PATCH] feat: add name() method to UserDefinedLogicalNode Signed-off-by: Ruihang Xia --- datafusion/core/src/physical_plan/planner.rs | 4 ++++ datafusion/core/tests/user_defined_plan.rs | 4 ++++ datafusion/expr/src/logical_plan/extension.rs | 3 +++ datafusion/optimizer/src/push_down_filter.rs | 4 ++++ datafusion/optimizer/src/test/user_defined.rs | 4 ++++ datafusion/proto/src/logical_plan/mod.rs | 4 ++++ 6 files changed, 23 insertions(+) diff --git a/datafusion/core/src/physical_plan/planner.rs b/datafusion/core/src/physical_plan/planner.rs index 1d4e7a86c86f..5e147b9ce0ba 100644 --- a/datafusion/core/src/physical_plan/planner.rs +++ b/datafusion/core/src/physical_plan/planner.rs @@ -2402,6 +2402,10 @@ Internal error: Optimizer rule 'type_coercion' failed due to unexpected error: E self } + fn name(&self) -> &str { + "NoOp" + } + fn inputs(&self) -> Vec<&LogicalPlan> { vec![] } diff --git a/datafusion/core/tests/user_defined_plan.rs b/datafusion/core/tests/user_defined_plan.rs index 3b1ea76a84a2..dbfbd5e0e346 100644 --- a/datafusion/core/tests/user_defined_plan.rs +++ b/datafusion/core/tests/user_defined_plan.rs @@ -345,6 +345,10 @@ impl UserDefinedLogicalNode for TopKPlanNode { self } + fn name(&self) -> &str { + "TopK" + } + fn inputs(&self) -> Vec<&LogicalPlan> { vec![&self.input] } diff --git a/datafusion/expr/src/logical_plan/extension.rs b/datafusion/expr/src/logical_plan/extension.rs index fd32741445fb..092cc8776cd7 100644 --- a/datafusion/expr/src/logical_plan/extension.rs +++ b/datafusion/expr/src/logical_plan/extension.rs @@ -30,6 +30,9 @@ pub trait UserDefinedLogicalNode: fmt::Debug + Send + Sync { /// Return a reference to self as Any, to support dynamic downcasting fn as_any(&self) -> &dyn Any; + /// Return the plan's name + fn name(&self) -> &str; + /// Return the logical plan's inputs fn inputs(&self) -> Vec<&LogicalPlan>; diff --git a/datafusion/optimizer/src/push_down_filter.rs b/datafusion/optimizer/src/push_down_filter.rs index 0d8da557397e..b14e27eadf63 100644 --- a/datafusion/optimizer/src/push_down_filter.rs +++ b/datafusion/optimizer/src/push_down_filter.rs @@ -1085,6 +1085,10 @@ mod tests { self } + fn name(&self) -> &str { + "NoopPlan" + } + fn inputs(&self) -> Vec<&LogicalPlan> { self.input.iter().collect() } diff --git a/datafusion/optimizer/src/test/user_defined.rs b/datafusion/optimizer/src/test/user_defined.rs index 92b56ee75a7b..0bf9fd28292e 100644 --- a/datafusion/optimizer/src/test/user_defined.rs +++ b/datafusion/optimizer/src/test/user_defined.rs @@ -49,6 +49,10 @@ impl UserDefinedLogicalNode for TestUserDefinedPlanNode { self } + fn name(&self) -> &str { + "TestUserDefined" + } + fn inputs(&self) -> Vec<&LogicalPlan> { vec![&self.input] } diff --git a/datafusion/proto/src/logical_plan/mod.rs b/datafusion/proto/src/logical_plan/mod.rs index bf3c733c005a..f27249637065 100644 --- a/datafusion/proto/src/logical_plan/mod.rs +++ b/datafusion/proto/src/logical_plan/mod.rs @@ -1664,6 +1664,10 @@ mod roundtrip_tests { self } + fn name(&self) -> &str { + "TopK" + } + fn inputs(&self) -> Vec<&LogicalPlan> { vec![&self.input] }