private Set<Expression> filterDeterministicPredicates(List<Expression> predicates) {
      return predicates.stream().filter(DeterminismEvaluator::isDeterministic).collect(toSet());
    }
Applies the boolean distributive property.

<p>For example: ( A & B ) | ( C & D ) => ( A | C ) & ( A | D ) & ( B | C ) & ( B | D)

<p>Returns the original expression if the expression is non-deterministic or if the
distribution will expand the expression by too much.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/ExtractCommonPredicatesExpressionRewriter.java