alamb commented on code in PR #16970:
URL: https://github.com/apache/datafusion/pull/16970#discussion_r2263257551
##########
datafusion/physical-expr/src/scalar_function.rs:
##########
@@ -164,6 +175,42 @@ impl fmt::Display for ScalarFunctionExpr {
}
}
+impl DynEq for ScalarFunctionExpr {
+ fn dyn_eq(&self, other: &dyn Any) -> bool {
+ other.downcast_ref::<Self>().is_some_and(|o| {
+ self.fun.eq(&o.fun)
+ && self.name.eq(&o.name)
+ && self.args.eq(&o.args)
+ && self.return_field.eq(&o.return_field)
+ && self
+ .config_options
+ .entries()
+ .iter()
+ .sorted_by(|&l, &r| l.key.cmp(&r.key))
Review Comment:
I found this code while reviewing
https://github.com/apache/datafusion/pull/17078
It seems to me that adding this sort of all config options to each scalar
function when looking for equality is going to be quite expensive at planning
time.
Can we potentially do a pointer comparison first before deciding we need to
do a deep compare by value?
--
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]