Github user viirya commented on a diff in the pull request:

    https://github.com/apache/spark/pull/19912#discussion_r155414906
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/expressions.scala
 ---
    @@ -64,50 +64,91 @@ object ConstantFolding extends Rule[LogicalPlan] {
      * }}}
      *
      * Approach used:
    - * - Start from AND operator as the root
    - * - Get all the children conjunctive predicates which are EqualTo / 
EqualNullSafe such that they
    - *   don't have a `NOT` or `OR` operator in them
      * - Populate a mapping of attribute => constant value by looking at all 
the equals predicates
      * - Using this mapping, replace occurrence of the attributes with the 
corresponding constant values
      *   in the AND node.
      */
     object ConstantPropagation extends Rule[LogicalPlan] with PredicateHelper {
    -  private def containsNonConjunctionPredicates(expression: Expression): 
Boolean = expression.find {
    -    case _: Not | _: Or => true
    -    case _ => false
    -  }.isDefined
    -
       def apply(plan: LogicalPlan): LogicalPlan = plan transform {
    -    case f: Filter => f transformExpressionsUp {
    --- End diff --
    
    Oh, this doesn't work because it still replaces the replaced `And`.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to