private void queryIndex(Object key, IndexInfo indexInfo, SelectResults results,
      CompiledValue iterOperands, RuntimeIterator[] indpndntItrs, ExecutionContext context,
      List projAttrib, boolean conditioningNeeded) throws TypeMismatchException,
      FunctionDomainException, NameResolutionException, QueryInvocationTargetException {

    assert indexInfo != null;
    assert indexInfo._index != null;

    // Get new IndexInfo to put in context as we dont want it to evaluate
    // key collection again if its a CompiledSelect (Nested Query).
    IndexInfo contextIndexInfo = new IndexInfo(new CompiledLiteral(key), indexInfo._path(),
        indexInfo._getIndex(), 0, null, indexInfo._operator());
    context.cachePut(CompiledValue.INDEX_INFO, contextIndexInfo);
    indexInfo._index.query(key, TOK_EQ, results, !conditioningNeeded ? iterOperands : null,
        indpndntItrs == null ? null : indpndntItrs[0], context, projAttrib, null, false);
  }
Evaluates as a filter taking advantage of indexes if appropriate. This function has a
meaningful implementation only in CompiledComparison & CompiledUndefined . It is unsupported in
other classes. The additional parameters which it takes are a boolean which is used to indicate
whether the index result set needs to be expanded to the top level or not. The second is a
CompiledValue representing the operands which are only iter evaluatable. The CompiledValue
passed will be null except if a GroupJunction has only one filter evaluatable condition & rest
are iter operands. In such cases , the iter operands will be evaluated while expanding/cutting
down the index resultset
geode-core/src/main/java/org/apache/geode/cache/query/internal/CompiledIn.java