protected static void applyTransitiveEquivalence(List<AbstractExpression> outerTableExprs,
            List<AbstractExpression> innerTableExprs,
            List<AbstractExpression> innerOuterTableExprs)
    {
        List<AbstractExpression> simplifiedOuterExprs = applyTransitiveEquivalence(innerTableExprs, innerOuterTableExprs);
        List<AbstractExpression> simplifiedInnerExprs = applyTransitiveEquivalence(outerTableExprs, innerOuterTableExprs);
        outerTableExprs.addAll(simplifiedOuterExprs);
        innerTableExprs.addAll(simplifiedInnerExprs);
    }
protected static void applyTransitiveEquivalence ( List < AbstractExpression > outerTableExprs , List < AbstractExpression > innerTableExprs , List < AbstractExpression > innerOuterTableExprs ) { List < AbstractExpression > simplifiedOuterExprs = applyTransitiveEquivalence ( innerTableExprs , innerOuterTableExprs ) ; List < AbstractExpression > simplifiedInnerExprs = applyTransitiveEquivalence ( outerTableExprs , innerOuterTableExprs ) ; outerTableExprs . addAll ( simplifiedOuterExprs ) ; innerTableExprs . addAll ( simplifiedInnerExprs ) ; }
Apply implied transitive constant filter to join expressions
outer.partkey = ? and outer.partkey = inner.partkey is equivalent to
outer.partkey = ? and inner.partkey = ?
@param innerTableExprs inner table expressions
@param outerTableExprs outer table expressions
@param innerOuterTableExprs inner-outer tables expressions