// 1. Split leaf join predicate to expressions from left, right
RelOptUtil.splitJoinCondition(j.getSystemFieldList(), j.getLeft(), j.getRight(), pe,
joinKeyExprsFromLeft, joinKeyExprsFromRight, filterNulls, null);
// 2. For left expressions, collect child projection indexes used
InputReferencedVisitor irvLeft = new InputReferencedVisitor();
irvLeft.apply(joinKeyExprsFromLeft);
projsFromLeftPartOfJoinKeysInChildSchema.addAll(irvLeft.inputPosReferenced);
// 3. For right expressions, collect child projection indexes used
InputReferencedVisitor irvRight = new InputReferencedVisitor();
irvRight.apply(joinKeyExprsFromRight);
projsFromRightPartOfJoinKeysInChildSchema.addAll(irvRight.inputPosReferenced);
// 3. Translate projection indexes from right to join schema, by adding
// offset.
for (Integer indx : projsFromRightPartOfJoinKeysInChildSchema) {