private void moveCriteriaIntoOnClause ( PlanNode criteriaNode , PlanNode joinNode ) { List < Constraint > constraints = joinNode . getPropertyAsList ( Property . JOIN_CONSTRAINTS , Constraint . class ) ; Constraint criteria = criteriaNode . getProperty ( Property . SELECT_CRITERIA , Constraint . class ) ; // since the parser uses EMPTY_LIST, check for size 0 also if ( constraints == null || constraints . isEmpty ( ) ) { constraints = new LinkedList < Constraint > ( ) ; joinNode . setProperty ( Property . JOIN_CONSTRAINTS , constraints ) ; } if ( ! constraints . contains ( criteria ) ) { constraints . add ( criteria ) ; if ( criteriaNode . hasBooleanProperty ( Property . IS_DEPENDENT ) ) { joinNode . setProperty ( Property . IS_DEPENDENT , Boolean . TRUE ) ; } } criteriaNode . extractFromParent ( ) ; }
Move the criteria that applies to the join to be included in the actual join criteria .