In https://github.com/apache/spark/pull/28733, CNF conversion is used to push down disjunctive predicates through join.
It's a good improvement, however,
1. converting all the predicates in CNF can lead to a very long result, even with grouping functions over expressions.
2.the non-recursive is not easy for understanding.
Essentially, we just need to traverse predicate and extract the convertible sub-predicates like what we did in https://github.com/apache/spark/pull/24598. There is no need to maintain the CNF result set.