private Operator genPlanForSubQueryPredicate(
      QB qbSQ,
      ISubQueryJoinInfo subQueryPredicate) throws SemanticException {
    qbSQ.setSubQueryDef(subQueryPredicate.getSubQuery());
    Phase1Ctx ctx_1 = initPhase1Ctx();
    doPhase1(subQueryPredicate.getSubQueryAST(), qbSQ, ctx_1, null);
    getMetaData(qbSQ);
    return genPlan(qbSQ);
  }
Parse the join condition. For equality conjuncts, break them into left and
right expressions and store in the join tree. For other conditions, either
add them to the post-conditions if they apply to more than one input, add
them to the filter conditions of a given input if it applies only on
one of them and should not be pushed, e.g., left outer join with condition
that applies only to left input, or push them below the join if they
apply only to one input and can be pushed, e.g., left outer join with
condition that applies only to right input.

@param joinTree
         jointree to be populated
@param joinCond
         join condition
@param leftSrc
         left sources
@throws SemanticException
ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java