waynexia commented on code in PR #5450:
URL: https://github.com/apache/arrow-datafusion/pull/5450#discussion_r1125858250


##########
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

Review Comment:
   I ignored the `fmt_for_explain` method... You are right, they are redundant 
information.
   
   >What would you think about making a function like the following that 
returned the result of format_for_explain
   
   The returned string (like "TopK: k=1") is also not easy to use for the 
dispatching purpose, like we need to `.contains()` or `.start_with()` those 
strings. What do you think about separate name and parameters? E.g.:
   ```rust
   fn name(&self) -> &'str {
     "TopK"
   }
   
   fn fmt_for_params(&self, f: &mut fmt::Formatter) -> fmt::Result { 
      write!(f, "k={}", self.k) 
   }
   
   // this can be provided as default implementation
   fn fmt_for_explain(&self, f: &mut fmt::Formatter) -> fmt::Result { 
      write!(f, "{}: {}", self.name(), self.fmt_for_params()) 
   }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to