/** * Produce rows matching join condition for the current probe position. If this method was called previously * for the current probe position, calling this again will produce rows that wasn't been produced in previous * invocations. * * @return true if all eligible rows have been produced; false otherwise */ private boolean joinCurrentPosition(LookupSource lookupSource, DriverYieldSignal yieldSignal) { // while we have a position on lookup side to join against... while (joinPosition >= 0) { if (lookupSource.isJoinPositionEligible(joinPosition, probe.getPosition(), probe.getPage())) { currentProbePositionProducedRow = true; pageBuilder.appendRow(probe, lookupSource, joinPosition); joinSourcePositions++; } // get next position on lookup side for this probe row joinPosition = lookupSource.getNextJoinPosition(joinPosition, probe.getPosition(), probe.getPage()); if (yieldSignal.isSet() || tryBuildPage()) { return false; } } return true; }