public static QueryIterator join(QueryIterator left, Table right, ExprList condition, ExecutionContext execCxt) { return joinWorker(left, right, INNER, condition, execCxt) ; }
public static QueryIterator leftJoin(QueryIterator left, Table right, ExprList condition, ExecutionContext execCxt) { return joinWorker(left, right, LEFT, condition, execCxt) ; }
private Table joinWorker(Table tableLeft, Table tableRight, boolean leftJoin, ExprList conditions) { QueryIterator left = tableLeft.iterator(execCxt) ; JoinType joinType = (leftJoin? JoinType.LEFT : JoinType.INNER ) ; QueryIterator qIter = TableJoin.joinWorker(left, tableRight, joinType, conditions, execCxt) ; tableLeft.close() ; tableRight.close() ; // qIter and left should be properly closed by use or called code. return new TableN(qIter) ; }