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;
        }
      }
    }