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; }
/** * The struct type calculation is modified if the 0th iterator is modified to make it dependent * on Entry */ private ObjectType createIndexResultSetType() { List currentIterators = this.initContext.getCurrentIterators(); int len = currentIterators.size(); 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] = this.addnlProjType; } return len == 1 ? fieldTypes[0] : new StructTypeImpl(this.canonicalIterNames, fieldTypes); }
private ObjectType createIndexResultSetType() { List currentIterators = this.initContext.getCurrentIterators(); int len = currentIterators.size(); ObjectType type = null; // String fieldNames[] = new String[len]; ObjectType fieldTypes[] = new ObjectType[len]; int start = this.isFirstItrOnEntry ? 0 : 1; for (; start < len; start++) { RuntimeIterator iter = (RuntimeIterator) currentIterators.get(start); // fieldNames[start] = iter.getInternalId(); fieldTypes[start] = iter.getElementType(); } if (!this.isFirstItrOnEntry) { // fieldNames[0] = "iter1"; fieldTypes[0] = addnlProjType; } type = (len == 1) ? fieldTypes[0] : new StructTypeImpl(this.canonicalIterNames, fieldTypes); return type; }
private ObjectType getFieldTypeOfProjAttrib(ExecutionContext context, CompiledValue cv) throws TypeMismatchException, AmbiguousNameException { // Identify the RuntimeIterator for the compiled value ObjectType retType = TypeUtils.OBJECT_TYPE; try { RuntimeIterator rit = context.findRuntimeIterator(cv); List pathOnItr = cv.getPathOnIterator(rit, context); if (pathOnItr != null) { String path[] = (String[]) pathOnItr.toArray(new String[pathOnItr.size()]); ObjectType ot[] = PathUtils.calculateTypesAlongPath(context, rit.getElementType(), path); retType = ot[ot.length - 1]; } } catch (NameNotFoundException ignore) { // Unable to determine the type Of attribute.It will default to // ObjectType } return retType; }
/** * 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); }
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) {
SelectResults returnSet = null; if (finalList.size() == 1) { ObjectType type = ((RuntimeIterator) finalList.iterator().next()).getElementType(); if (type instanceof StructType) { returnSet = QueryUtils.createStructCollection(context, (StructTypeImpl) type);
if (currentIterators.size() == 1) { RuntimeIterator iter = (RuntimeIterator) currentIterators.get(0); elementType = iter.getElementType(); } else { elementType = createStructTypeForNullProjection(currentIterators, context);
return QueryUtils.createStructCollection(context, type); } else { ObjectType type = ((RuntimeIterator) finalList.iterator().next()).getElementType(); if (type instanceof StructType) { return QueryUtils.createStructCollection(context, (StructTypeImpl) type);
checkType = ((RuntimeIterator) checkList.get(0)).getElementType(); if (useLinkedDataStructure) { checkSet = context.isDistinct() ? new LinkedResultSet(checkType)
break; } else if (expr instanceof RuntimeIterator) { type = ((RuntimeIterator) expr).getElementType(); break; } else {
ObjectType resultType = ((RuntimeIterator) finalItrs.iterator().next()).getElementType(); if (useLinkedDataStructure) { returnSet = context.isDistinct() ? new LinkedResultSet(resultType)
this.addnlProjType = rIter.getElementType(); String name = iterDef.getName(); if (isEmpty(name)) {
ObjectType type = ((RuntimeIterator) finalList.iterator().next()).getElementType(); if (type instanceof StructType) { empty = QueryUtils.createStructCollection(context, (StructTypeImpl) type);
return new CompiledIteratorDef(iterDef.getName(), rItr.getElementType(), getModifiedDependentCompiledValue(context, currItrID, iterDef.getCollectionExpr(), isDependent));
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()); RuntimeIterator iter = (RuntimeIterator) iterators.get(i); fieldNames[i] = iter.getInternalId(); fieldTypes[i] = iter.getElementType();