private void applyProjection(ExecutionContext context) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException, IMQException { List currrentRuntimeIters = context.getCurrentIterators(); Object indexKey = this.indexedExpr.evaluate(context); // based on the first key convert the rest to PdxString or String if (!AbstractIndex.this.isIndexedPdxKeysFlagSet) { setPdxStringFlag(indexKey); } indexKey = getPdxStringForIndexedPdxKeys(indexKey); Object indxResultSet; if (this.iteratorSize == 1) { RuntimeIterator iter = (RuntimeIterator) currrentRuntimeIters.get(0); indxResultSet = iter.evaluate(context); } else { Object tuple[] = new Object[this.iteratorSize]; for (int i = 0; i < this.iteratorSize; i++) { RuntimeIterator iter = (RuntimeIterator) currrentRuntimeIters.get(i); tuple[i] = iter.evaluate(context); } Support.Assert(this.indexResultSetType instanceof StructTypeImpl, "The Index ResultType should have been an instance of StructTypeImpl rather than ObjectTypeImpl. The indxeResultType is " + this.indexResultSetType); indxResultSet = new StructImpl((StructTypeImpl) this.indexResultSetType, tuple); } // Keep Entry value in fly until all keys are evaluated RegionEntry entry = ((DummyQRegion) context.getBindArgument(1)).getEntry(); saveMapping(indexKey, indxResultSet, entry); }
private void applyProjectionForIndexInit(List currentRuntimeIters) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException, IMQException { if (QueryMonitor.isLowMemory()) { throw new IMQException( "Index creation canceled due to low memory"); } Object indexKey = null; RegionEntry re = null; indexKey = this.isFirstItrOnEntry ? this.indexedExpr.evaluate(this.initContext) : modifiedIndexExpr.evaluate(this.initContext); if (indexKey == null) { indexKey = IndexManager.NULL; } LocalRegion.NonTXEntry temp = null; if (this.isFirstItrOnEntry && this.additionalProj != null) { temp = (LocalRegion.NonTXEntry) additionalProj.evaluate(this.initContext); } else { temp = (LocalRegion.NonTXEntry) (((RuntimeIterator) currentRuntimeIters.get(0)) .evaluate(this.initContext)); } re = temp.getRegionEntry(); basicAddMapping(indexKey, re); }
RuntimeIterator iter = (RuntimeIterator) currentRuntimeIters.get(0); iter.setCurrent(value); indxResultSet = iter.evaluate(expansionContext); indxResultSet = value; } else { for (int i = 1; i < iteratorSize; i++) { RuntimeIterator iter = (RuntimeIterator) currentRuntimeIters.get(i); tuple[i] = iter.evaluate(expansionContext);
} else { temp = (LocalRegion.NonTXEntry) ((RuntimeIterator) currrentRuntimeIters.get(0)) .evaluate(this.initContext); indxResultSet = this.isFirstItrOnEntry ? this.additionalProj == null ? temp : ((RuntimeIterator) currrentRuntimeIters.get(0)).evaluate(this.initContext) : this.additionalProj.evaluate(this.initContext); } else { for (; i < this.iteratorSize; i++) { RuntimeIterator iter = (RuntimeIterator) currrentRuntimeIters.get(i); tuple[i] = iter.evaluate(this.initContext);
private void applyProjectionForIndexInit(List currentRuntimeIters) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException, IMQException { if (QueryMonitor.isLowMemory()) { throw new IMQException( "Index creation canceled due to low memory"); } Object indexKey = this.isFirstItrOnEntry ? this.indexedExpr.evaluate(this.initContext) : modifiedIndexExpr.evaluate(this.initContext); if (indexKey == null) { indexKey = IndexManager.NULL; } // if the first key is PdxString set the flag so that rest of the keys // would be converted to PdxString if (!isIndexedPdxKeysFlagSet) { setPdxStringFlag(indexKey); } indexKey = getPdxStringForIndexedPdxKeys(indexKey); LocalRegion.NonTXEntry temp = null; if (this.isFirstItrOnEntry && this.additionalProj != null) { temp = (LocalRegion.NonTXEntry) additionalProj.evaluate(this.initContext); } else { temp = (LocalRegion.NonTXEntry) (((RuntimeIterator) currentRuntimeIters.get(0)) .evaluate(this.initContext)); } RegionEntry re = temp.getRegionEntry(); indexStore.addMapping(indexKey, re); }
evalRcvr = rcvrItr.evaluate(context);
for (int i = 0; i < len; i++) { RuntimeIterator iter = (RuntimeIterator) currrentRuntimeIters.get(i); values[i] = iter.evaluate(context);