protected void initialiseIterator() { if (condIndex == 0) { hasLeftOuterRow = rangeVar.isLeftJoin; } if (conditions[condIndex].isFalse) { it = conditions[condIndex].rangeIndex.emptyIterator(); return; } SubQuery subQuery = rangeVar.rangeTable.getSubQuery(); if (subQuery != null) { subQuery.materialiseCorrelated(session); } if (conditions[condIndex].indexCond == null) { if (conditions[condIndex].reversed) { it = conditions[condIndex].rangeIndex.lastRow(session, store); } else { it = conditions[condIndex].rangeIndex.firstRow(session, store); } } else { getFirstRow(); if (!conditions[condIndex].isJoin) { hasLeftOuterRow = false; } } }