@Override public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env, IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException { return AUnionType.createUnknownableType(DefaultOpenFieldType.NESTED_OPEN_RECORD_TYPE, "UnknownableOpenRecord"); }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { return AUnionType.createUnknownableType(strippedInputTypes[0]); } }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) { return AUnionType.createUnknownableType(BuiltinType.ABOOLEAN); } }
private static ARecordType getMergePolicyType() { //merge-policy.parameters final String[] parameterNames = { MERGE_POLICY_MERGABLE_SIZE_PARAMETER_NAME, MERGE_POLICY_TOLERANCE_COUNT_PARAMETER_NAME, MERGE_POLICY_NUMBER_COMPONENTS_PARAMETER_NAME }; final IAType[] parametersTypes = { AUnionType.createUnknownableType(BuiltinType.AINT64), AUnionType.createUnknownableType(BuiltinType.AINT64), AUnionType.createUnknownableType(BuiltinType.AINT64) }; final ARecordType parameters = new ARecordType(MERGE_POLICY_PARAMETERS_PARAMETER_NAME, parameterNames, parametersTypes, false); //merge-policy final String[] mergePolicyNames = { MERGE_POLICY_NAME_PARAMETER_NAME, MERGE_POLICY_PARAMETERS_PARAMETER_NAME }; final IAType[] mergePolicyTypes = { BuiltinType.ASTRING, AUnionType.createUnknownableType(parameters) }; return new ARecordType(MERGE_POLICY_PARAMETER_NAME, mergePolicyNames, mergePolicyTypes, false); }
public static IAType createUnknownableType(IAType t) { String s = t != null ? t.getTypeName() : null; return createUnknownableType(t, s == null ? null : s + "?"); }
private static ARecordType getWithObjectType() { final String[] withNames = { MERGE_POLICY_PARAMETER_NAME, STORAGE_BLOCK_COMPRESSION_PARAMETER_NAME }; final IAType[] withTypes = { AUnionType.createUnknownableType(getMergePolicyType()), AUnionType.createUnknownableType(getStorageBlockCompressionType()) }; return new ARecordType("withObject", withNames, withTypes, false); }
/** * Maintains the {@code updatedRecordType} as nullable/missable (?) in case it was originally nullable/missable * @param originalRecordType the original record type * @param updatedRecordType the original record type being enforced/modified with new non-declared fields included * @return {@code updatedRecordType} */ private static IAType keepUnknown(IAType originalRecordType, ARecordType updatedRecordType) { if (originalRecordType.getTypeTag() == ATypeTag.UNION) { return AUnionType.createUnknownableType(updatedRecordType, updatedRecordType.getTypeName()); } return updatedRecordType; }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { ATypeTag tag = strippedInputTypes[0].getTypeTag(); if (tag == ATypeTag.ANY) { return BuiltinType.ANY; } if (tag != ATypeTag.ARRAY && tag != ATypeTag.MULTISET) { return strippedInputTypes[0]; } AbstractCollectionType act = (AbstractCollectionType) strippedInputTypes[0]; IAType t = act.getItemType(); return AUnionType.createUnknownableType(t); } }
return unknownable ? AUnionType.createUnknownableType(leftType) : leftType; return AUnionType.createUnknownableType(rightType); return AUnionType.createUnknownableType(leftType); return unknownable ? AUnionType.createUnknownableType(generalizedComplexType) : generalizedComplexType;
public static IAType getTypeFromTypeName(MetadataNode metadataNode, TxnId txnId, String dataverseName, String typeName, boolean optional) throws AlgebricksException { IAType type = _builtinTypeMap.get(typeName); if (type == null) { try { Datatype dt = metadataNode.getDatatype(txnId, dataverseName, typeName); type = dt.getDatatype(); } catch (RemoteException e) { throw new MetadataException(e); } } if (optional) { type = AUnionType.createUnknownableType(type); } return type; } }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { IAType type = strippedInputTypes[0]; if (type.getTypeTag() == ATypeTag.ANY) { return BuiltinType.ANY; } IAType itemType = ((AbstractCollectionType) type).getItemType(); if (itemType.getTypeTag() == ATypeTag.ANY) { return itemType; } // Could have out-of-bound access or null elements. return AUnionType.createUnknownableType(itemType); }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { IAType argType = strippedInputTypes[0]; IAType outputType = resultType; if (!argType.getTypeTag().isListType() || isUnknownable(((AbstractCollectionType) argType).getItemType())) { outputType = AUnionType.createUnknownableType(outputType); } return outputType; }
if (t2.getTypeTag() == ATypeTag.UNION) { AUnionType unionType = (AUnionType) t2; t2 = AUnionType.createUnknownableType(unionType.getActualType());
fldTypes[j] = tref; } else { // optional fldTypes[j] = AUnionType.createUnknownableType(tref); fldTypes[j] = AUnionType.createUnknownableType(null); fldTypes[j] = t2; } else { // nullable fldTypes[j] = AUnionType.createUnknownableType(t2); IAType t2 = computeOrderedListType(null, oltd, typeMap, incompleteItemTypes, incompleteFieldTypes, defaultDataverse); fldTypes[j] = rtd.getOptionableFields().get(j) ? AUnionType.createUnknownableType(t2) : t2; break; IAType t2 = computeUnorderedListType(null, ultd, typeMap, incompleteItemTypes, incompleteFieldTypes, defaultDataverse); fldTypes[j] = rtd.getOptionableFields().get(j) ? AUnionType.createUnknownableType(t2) : t2; break;
new IAType[] { AUnionType.createUnknownableType(index.getKeyFieldTypes().get(i)) }, true); new IAType[] { AUnionType.createUnknownableType(enforcedRecordType) }, true); new IAType[] { AUnionType.createUnknownableType(enforcedRecordType) }); enforcedRecordType = new ARecordType(bridgeName, ArrayUtils.addAll(parent.getFieldNames(), enforcedRecordType.getTypeName()), AUnionType.createUnknownableType(index.getKeyFieldTypes().get(i)));
resultFieldTypes.toArray(new IAType[n]), true); if (unknownable) { resultType = AUnionType.createUnknownableType(resultType);
if (e2Type.getTypeTag() == ATypeTag.UNION) { AUnionType unionType = (AUnionType) e2Type; e2Type = AUnionType.createUnknownableType(unionType.getActualType());
resultType = AUnionType.createUnknownableType(resultType);
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { if (strippedInputTypes.length < 2) { String functionName = ((AbstractFunctionCallExpression) expr).getFunctionIdentifier().getName(); throw new CompilationException(ErrorCode.COMPILATION_INVALID_NUM_OF_ARGS, expr.getSourceLocation(), functionName); } IAType listType = strippedInputTypes[0]; if (listType.getTypeTag().isListType()) { listType = DefaultOpenFieldType.getDefaultOpenFieldType(listType.getTypeTag()); return AUnionType.createUnknownableType(listType); } else { return BuiltinType.ANY; } } }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { if (isCheckArgumentsCount && (strippedInputTypes.length < minNumArgs || (maxNumArgs > 0 && strippedInputTypes.length > maxNumArgs))) { String functionName = ((AbstractFunctionCallExpression) expr).getFunctionIdentifier().getName(); throw new CompilationException(ErrorCode.COMPILATION_INVALID_NUM_OF_ARGS, expr.getSourceLocation(), functionName); } // output type should be the same as as the type tag at [list index]. The output type is nullable/missable // since the output could be null due to other invalid arguments or the tag at [list index] itself is not list int listIndex = 0; if (listIsLast) { listIndex = strippedInputTypes.length - 1; } IAType listType = strippedInputTypes[listIndex]; if (listType.getTypeTag().isListType()) { if (makeOpen) { listType = DefaultOpenFieldType.getDefaultOpenFieldType(listType.getTypeTag()); } return AUnionType.createUnknownableType(listType); } else { return BuiltinType.ANY; } }