PartialOrd implementation for ScalarUDF, WindowUDF and AggregateUDF compares name and signature only.
PartialEq implementation for these structs delegates to the function implementation and thus may compare other properties.
the contract for these traits is (https://doc.rust-lang.org/std/cmp/trait.PartialOrd.html):
a == b if and only if partial_cmp(a, b) == Some(Equal).
[...]
thus the contract is violated
We should remove these incorrect PartialOrd implementations.