Github user jiangxb1987 commented on a diff in the pull request:
https://github.com/apache/spark/pull/19475#discussion_r144293579
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ExpressionSet.scala
---
@@ -74,8 +81,24 @@ class ExpressionSet protected(
}
override def -(elem: Expression): ExpressionSet = {
- val newBaseSet = baseSet.clone().filterNot(_ == elem.canonicalized)
- val newOriginals = originals.clone().filterNot(_.canonicalized ==
elem.canonicalized)
+ if (elem.deterministic) {
+ val newBaseSet = baseSet.clone().filterNot(_ == elem.canonicalized)
+ val newOriginals = originals.clone().filterNot(_.canonicalized ==
elem.canonicalized)
+ new ExpressionSet(newBaseSet, newOriginals)
+ } else {
+ new ExpressionSet(baseSet.clone(), originals.clone())
+ }
+ }
+
+ override def --(elems: GenTraversableOnce[Expression]): ExpressionSet = {
--- End diff --
Could you explain why we should override `--`? I still don't quite get that.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]