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]