private void doNestedIterationsForIndexInit(int level, List runtimeIterators) throws TypeMismatchException, AmbiguousNameException, FunctionDomainException, NameResolutionException, QueryInvocationTargetException, IMQException { if (level == 1) { ++this.initEntriesUpdated; } if (level == this.iteratorSize) { applyProjectionForIndexInit(runtimeIterators); } else { RuntimeIterator rIter = (RuntimeIterator) runtimeIterators.get(level); Collection collection = rIter.evaluateCollection(this.initContext); if (collection == null) { return; } for (Object aCollection : collection) { rIter.setCurrent(aCollection); doNestedIterationsForIndexInit(level + 1, runtimeIterators); } } }
if (!TypeUtils.OBJECT_TYPE.equals(itr.getElementType()) && itr.containsProperty(this, name, numArgs, mustBeMethod)) { hits.add(itr); } else if (TypeUtils.OBJECT_TYPE.equals(itr.getElementType())) { if (foundOneUnknown) {
currItrator.setCurrent(value); for (int i = 0; i < itrs.size(); i++) { RuntimeIterator iter = (RuntimeIterator) itrs.get(i); tuple[i] = iter.evaluate(context); tuples.add(currItrator.evaluate(context)); Collection nextLevelValues = nextItr.evaluateCollection(context);
/** * This function creates a StructType using Internal IDs of the iterators as the field names for * the StructType. It should be invoked iff the iterators size is greater than 1 * * @param runTimeIterators List of RuntimeIterator objects * @return StructType object * */ static StructType createStructTypeForRuntimeIterators(List runTimeIterators) { int len = runTimeIterators.size(); String[] fieldNames = new String[len]; String[] indexAlternativeFieldNames = new String[len]; ObjectType[] fieldTypes = new ObjectType[len]; // use an Iterator as the chances are that we will be sending // LinkedList rather than ArrayList Iterator itr = runTimeIterators.iterator(); int i = 0; while (itr.hasNext()) { RuntimeIterator iter = (RuntimeIterator) itr.next(); fieldNames[i] = iter.getInternalId(); indexAlternativeFieldNames[i] = iter.getIndexInternalID(); fieldTypes[i++] = iter.getElementType(); } return new StructTypeImpl(fieldNames, indexAlternativeFieldNames, fieldTypes); }
/** * This function should be used to create a StructType for those queries which have * as * projection attribute (implying null projection attribute) & multiple from clauses */ private StructTypeImpl createStructTypeForNullProjection(List currentIterators, ExecutionContext context) { int len = currentIterators.size(); String fieldNames[] = new String[len]; ObjectType fieldTypes[] = new ObjectType[len]; String fldName = null; for (int i = 0; i < len; i++) { RuntimeIterator iter = (RuntimeIterator) currentIterators.get(i); // fieldNames[i] = iter.getName(); if ((fldName = iter.getName()) == null) { fldName = generateProjectionName(iter, context); } fieldNames[i] = fldName; fieldTypes[i] = iter.getElementType(); } return new StructTypeImpl(fieldNames, fieldTypes); }
values[j++] = ((RuntimeIterator) itr.next()).evaluate(context); resultSet.add(((RuntimeIterator) itr.next()).evaluate(context)); if (currentLevel.getCmpIteratorDefn().getCollectionExpr() .getType() == OQLLexerTokenTypes.RegionPath) { key = currentLevel.getCmpIteratorDefn().getName() + ':' + currentLevel.getDefinition(); } else if (currentLevel.getCmpIteratorDefn().getCollectionExpr() .getType() == OQLLexerTokenTypes.LITERAL_select) { useDerivedResults = false; CompiledValue path = currentLevel.getCmpIteratorDefn().getCollectionExpr(); if (useDerivedResults && derivedResults != null && path.hasIdentifierAtLeafNode()) { key = getCompiledIdFromPath(path).getId() + ':' + currentLevel.getDefinition(); if (derivedResults.containsKey(key)) { c = derivedResults.get(key); } else { c = currentLevel.evaluateCollection(context); c = currentLevel.evaluateCollection(context); currentLevel.setCurrent(aC); doNestedIterationsForIndex(expansionItrs.hasNext(), resultSet, finalItrs, expansionItrs, context, iterOps, limit, derivedResults);
if (itr == null) { itr = (RuntimeIterator) set.iterator().next(); if (itr.getScopeID() == this.currentScope().getScopeID()) { rgnPath = (String) this.indpndtItrToRgnMap.get(itr); currItr.setIndexInternalID((mgr == null || (tempIndexID = mgr.getCanonicalizedIteratorName(itrDef.genFromClause(this))) == null) ? currItr.getInternalId() : tempIndexID);
String definition = rIter.getDefinition(); this.canonicalizedIteratorDefinitions[i] = definition; rIter.setIndexInternalID(this.canonicalizedIteratorNames[i]); tempBuff.append(definition).append(' ').append(this.canonicalizedIteratorNames[i]) .append(", "); this.addnlProjType = rIter.getElementType(); String name = iterDef.getName(); if (isEmpty(name)) { if (rIter.getDefinition().contains(this.canonicalizedIteratorNames[0])) { newItr = (CompiledIteratorDef) getModifiedDependentCompiledValue(this.context, i, iterDef, true);
private ObjectType createIndexResultSetType() { List currentIterators = this.initContext.getCurrentIterators(); int len = currentIterators.size(); ObjectType type = null; ObjectType fieldTypes[] = new ObjectType[len]; int start = this.isFirstItrOnEntry ? 0 : 1; for (; start < len; start++) { RuntimeIterator iter = (RuntimeIterator) currentIterators.get(start); fieldTypes[start] = iter.getElementType(); } if (!this.isFirstItrOnEntry) { fieldTypes[0] = addnlProjType; } type = (len == 1) ? fieldTypes[0] : new StructTypeImpl(this.canonicalIterNames, fieldTypes); return type; }
CompiledIteratorDef iterDef = (CompiledIteratorDef) cv; RuntimeIterator rItr = (RuntimeIterator) context.getCurrentIterators().get(currItrID); String canonFrmClause = rItr.getDefinition(); return new CompiledIteratorDef(iterDef.getName(), rItr.getElementType(), getModifiedDependentCompiledValue(context, currItrID, iterDef.getCollectionExpr(), isDependent)); if (isDependent) { String name; if ((name = rItr0.getName()) != null && name.equals(id.getId())) {
protected void evaluateCollectionForIndependentIterator(ExecutionContext context, RuntimeIterator rIter) throws RegionNotFoundException, TypeMismatchException { try { rIter.evaluateCollection(context); } catch (QueryExecutionTimeoutException qet) { throw qet; } catch (RegionNotFoundException re) { throw re; } catch (NotAuthorizedException e) { throw e; } catch (QueryExecutionCanceledException e) { throw e; } catch (CacheClosedException e) { throw e; } catch (Exception e) { if (logger.isDebugEnabled()) { logger.debug("Exception while getting runtime iterator.", e); } throw new TypeMismatchException( "Exception in evaluating the Collection Expression in getRuntimeIterator() even though the Collection is independent of any RuntimeIterator", e); } }
if (projExpr instanceof RuntimeIterator) { RuntimeIterator rIter = (RuntimeIterator) projExpr; name = rIter.getDefinition(); int index = name.lastIndexOf('.'); if (index > 0) { name = name.substring(index + 1); } else { name = rIter.getInternalId();
String definition = this.getCanonicalizedIteratorDefinitions()[0]; for (RuntimeIterator itr : indItrs) { if (itr.getDefinition().equals(regionPath) || itr.getDefinition().equals(definition)) { if (itr.getName() != null) { CompiledValue path = info._path(); if (path.getType() == OQLLexerTokenTypes.Identifier || itr.getName().equals(pathName)) { return itr;
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); }
if (rIter.getScopeID() != context.currentScope().getScopeID() /* context.getScopeCount() */ || (regionPath = context.getRegionPathForIndependentRuntimeIterator(rIter)) == null) { return null; while (iterator.hasNext()) { RuntimeIterator rIterator = (RuntimeIterator) iterator.next(); definitions[i++] = rIterator.getDefinition();
RuntimeIterator runtimeItr = getRuntimeIteratorForThisIndex(expansionContext); if (runtimeItr != null) { runtimeItr.setCurrent(value); if (iteratorSize == 1 && !structType) { 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);
rIter = new RuntimeIterator(this, type); rIter.setDefinition(fromClause);
String definition = rIter.getDefinition(); this.canonicalizedIteratorDefinitions = new String[1]; this.canonicalizedIteratorDefinitions[0] = definition; name = imgr.putCanonicalizedIteratorNameIfAbsent(definition); rIter.setIndexInternalID(name); this.canonicalizedIteratorNames = new String[1]; this.canonicalizedIteratorNames[0] = name;
resultFieldsItrMapping = new RuntimeIterator[len]; String fieldName = null; String lhsID = ich1.indpndntItr.getInternalId(); String rhsID = ich2.indpndntItr.getInternalId(); for (int i = 0; i < len; ++i) { fieldName = fieldNames[i]; int len = val.length; for (int i = 0; i < len; ++i) { resultFieldsItrMapping[i].setCurrent(val[i]);
int len = iterators.size(); if (len == 1) { ObjectType elementType = ((RuntimeIterator) iterators.get(0)).getElementType(); emptySet = context.isDistinct() ? new ResultsSet(elementType) : new ResultsBag(elementType, 0, context.getCachePerfStats()); for (int i = 0; i < len; i++) { RuntimeIterator iter = (RuntimeIterator) iterators.get(i); fieldNames[i] = iter.getInternalId(); fieldTypes[i] = iter.getElementType();