@Override public ResultIterator iterator(ParallelScanGrouper scanGrouper, Scan scan) throws SQLException { return type == JoinType.Semi || type == JoinType.Anti ? new SemiAntiJoinIterator(lhsPlan.iterator(scanGrouper), rhsPlan.iterator(scanGrouper)) : new BasicJoinIterator(lhsPlan.iterator(scanGrouper), rhsPlan.iterator(scanGrouper)); }
@Override public Tuple next() throws SQLException { if (!initialized) { advance(true); advance(false); initialized = true; next = lhsTuple; advance(true); } else if (lhsKey.compareTo(rhsKey) < 0) { if (!isSemi) { next = lhsTuple; advance(true); } else { advance(false); next = lhsTuple; advance(true);
@Override public Tuple next() throws SQLException { if (!initialized) { advance(true); advance(false); initialized = true; next = lhsTuple; advance(true); } else if (lhsKey.compareTo(rhsKey) < 0) { if (!isSemi) { next = lhsTuple; advance(true); } else { advance(false); next = lhsTuple; advance(true);
@Override public ResultIterator iterator(ParallelScanGrouper scanGrouper, Scan scan) throws SQLException { return type == JoinType.Semi || type == JoinType.Anti ? new SemiAntiJoinIterator(lhsPlan.iterator(scanGrouper), rhsPlan.iterator(scanGrouper)) : new BasicJoinIterator(lhsPlan.iterator(scanGrouper), rhsPlan.iterator(scanGrouper)); }
@Override public Tuple next() throws SQLException { if (!initialized) { advance(true); advance(false); initialized = true; next = lhsTuple; advance(true); } else if (lhsKey.compareTo(rhsKey) < 0) { if (!isSemi) { next = lhsTuple; advance(true); } else { advance(false); next = lhsTuple; advance(true);
@Override public ResultIterator iterator(ParallelScanGrouper scanGrouper, Scan scan) throws SQLException { return type == JoinType.Semi || type == JoinType.Anti ? new SemiAntiJoinIterator(lhsPlan.iterator(scanGrouper), rhsPlan.iterator(scanGrouper)) : new BasicJoinIterator(lhsPlan.iterator(scanGrouper), rhsPlan.iterator(scanGrouper)); }