@Override public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env, IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException { return AUnionType.createNullableType(BuiltinType.ADOUBLE, "OptionalDouble"); } }
private OrderedListOfAnyTypeComputer(boolean nullable) { IAType t = AOrderedListType.FULL_OPEN_ORDEREDLIST_TYPE; type = nullable ? AUnionType.createNullableType(t) : t; }
@Override public IAType getResultType(ILogicalExpression expr, IAType... types) throws AlgebricksException { IAType resultType = BuiltinType.ASTRING; if (nullable) { resultType = AUnionType.createNullableType(resultType); } return resultType; }
private AInt64TypeComputer(boolean nullable) { IAType t = BuiltinType.AINT64; type = nullable ? AUnionType.createNullableType(t) : t; }
@Override public IAType getResultType(ILogicalExpression expr, IAType... types) throws AlgebricksException { return AUnionType.createNullableType(BuiltinType.ASTRING); } }
@Override public IAType getResultType(ILogicalExpression expr, IAType... knownTypes) throws AlgebricksException { IAType t = knownTypes[0]; return nullable ? AUnionType.createNullableType(t) : t; } }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { return AUnionType.createNullableType(BuiltinType.AINTERVAL, "IntervalOrNullResult"); }
@Override public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env, IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException { return new ARecordType(null, new String[] { "m1", "m2", "count" }, new IAType[] { AUnionType.createNullableType(BuiltinType.ADOUBLE, "OptionalDouble"), AUnionType.createNullableType(BuiltinType.ADOUBLE, "OptionalDouble"), BuiltinType.AINT64 }, false); } }
@Override public IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { IAType inputType = strippedInputTypes[0]; return inputType.getTypeTag() == ATypeTag.ANY ? inputType : AUnionType.createNullableType(inputType); } }
private OrderedListOfAStringTypeComputer(boolean nullable) { IAType t = new AOrderedListType(BuiltinType.ASTRING, null); type = nullable ? AUnionType.createNullableType(t) : t; }
@Override public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env, IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException { return new ARecordType(null, new String[] { "sum", "count" }, new IAType[] { AUnionType.createNullableType(BuiltinType.ADOUBLE, "OptionalDouble"), BuiltinType.AINT64 }, false); } }
public static IAType createUnknownableType(IAType type, String typeName) { IAType resultType = createNullableType(type, typeName); resultType = createMissableType(resultType, typeName); return resultType; }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { IAType strippedInputType = strippedInputTypes[0]; switch (strippedInputType.getTypeTag()) { case BOOLEAN: case TINYINT: case SMALLINT: case INTEGER: case BIGINT: case FLOAT: case DOUBLE: // these types cannot result in NULL output return BuiltinType.ADOUBLE; default: return AUnionType.createNullableType(BuiltinType.ADOUBLE); } } }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { IAType strippedInputType = strippedInputTypes[0]; switch (strippedInputType.getTypeTag()) { case BOOLEAN: case TINYINT: case SMALLINT: case INTEGER: case BIGINT: case FLOAT: case DOUBLE: // these types cannot result in NULL output return BuiltinType.AINT64; default: return AUnionType.createNullableType(BuiltinType.AINT64); } } }
public static IAType createNullableType(IAType t) { if (t != null && t.getTypeTag() == ATypeTag.NULL) { return t; } String s = t != null ? t.getTypeName() : null; return createNullableType(t, s == null ? null : s + "?"); }
private static IAType getResultType(IAType type, byte category) { if (type.getTypeTag() == ATypeTag.ANY) { return type; } if (category == CERTAIN) { return type; } IAType resultType = type; if ((category & NULLABLE) != 0 || (category & NULL) != 0) { resultType = AUnionType.createNullableType(resultType); } if ((category & MISSABLE) != 0 || (category & MISSING) != 0) { resultType = AUnionType.createMissableType(resultType); } return resultType; }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { IAType type = strippedInputTypes[0]; if (type.getTypeTag().isListType()) { return AUnionType.createNullableType(((AbstractCollectionType) type).getItemType()); } return BuiltinType.ANY; } }
private IAType createOutputType(IAType primeType, ATypeTag quantifier, SourceLocation sourceLoc) throws CompilationException { if (quantifier == null || primeType.getTypeTag() == ATypeTag.ANY) { return primeType; } switch (quantifier) { case MISSING: return AUnionType.createMissableType(primeType); case NULL: return AUnionType.createNullableType(primeType, null); default: throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc, "Unexpected quantifier: " + quantifier); } } }
@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 (nullable) { itemType = AUnionType.createNullableType(itemType); } if (missable) { itemType = AUnionType.createMissableType(itemType); } return itemType; } }
@Override protected IAType getResultType(ILogicalExpression expr, IAType... strippedInputTypes) throws AlgebricksException { IAType argType = strippedInputTypes[0]; switch (argType.getTypeTag()) { case ARRAY: case MULTISET: if (makeOpen) { argType = DefaultOpenFieldType.getDefaultOpenFieldType(argType.getTypeTag()); } if (makeNullable) { return AUnionType.createNullableType(argType); } else { return argType; } default: return BuiltinType.ANY; } } }