private SelectResults evaluateOrJunction(ExecutionContext context) throws FunctionDomainException,
      TypeMismatchException, NameResolutionException, QueryInvocationTargetException {
    // int len = this.abstractGroupOrRangeJunctions.size();
    // Asif : Create an array of SelectResults for each of the GroupJunction
    // For each Group Junction there will be a corresponding array of
    // RuntimeIterators which will map to the fields of the ResultSet obtained
    // from Group Junction
    SelectResults[] grpResults = new SelectResults[1];
    List finalList = context.getCurrentIterators();
    RuntimeIterator[][] itrsForResultFields = new RuntimeIterator[1][];
    CompiledValue gj = null;
    Iterator junctionItr = abstractGroupOrRangeJunctions.iterator();
    List grpItrs = null;
    RuntimeIterator tempItr = null;
    SelectResults intermediateResults = null;
    while (junctionItr.hasNext()) {
      List expansionList = new LinkedList(finalList);
      gj = (CompiledValue) junctionItr.next();
      grpResults[0] = ((Filter) gj).filterEvaluate(context, null);
      grpItrs = (gj instanceof CompositeGroupJunction)
          ? QueryUtils.getDependentItrChainForIndpndntItrs(
              ((CompositeGroupJunction) gj).getIndependentIteratorsOfCJ(), context)
          : context.getCurrScopeDpndntItrsBasedOnSingleIndpndntItr(
              ((AbstractGroupOrRangeJunction) gj).getIndependentIteratorForGroup()[0]);
      itrsForResultFields[0] = new RuntimeIterator[grpItrs.size()];
      Iterator grpItr = grpItrs.iterator();
      int k = 0;
      while (grpItr.hasNext()) {
        tempItr = (RuntimeIterator) grpItr.next();
        itrsForResultFields[0][k++] = tempItr;
        expansionList.remove(tempItr);
      }
      SelectResults expandedResult =
          QueryUtils.cartesian(grpResults, itrsForResultFields, expansionList, finalList, context,
              null/*
                   * Iter oprenad for OR Junction evaluation should be null
                   */);
      intermediateResults = (intermediateResults == null) ? expandedResult
          : QueryUtils.union(expandedResult, intermediateResults, context);
    }
    return intermediateResults;
  }
Evaluates the individual GroupJunctions and CompositeGroupJunctions and expands the individual
results so obtained to the query from clause iterator level ( i.e top level iterators). The
expanded results so obtained are then merged (union) to get the ORed results.The evaluated
result of an AllGroupJunction will always be of the query from clause iterator level (top
level) which can be ORed or ANDd with filter evaluable subtree CompiledJunction.

@param context ExecutionContext object
@return SelectResults object
geode-core/src/main/java/org/apache/geode/cache/query/internal/AllGroupJunction.java