protected RelDataTypeFactory createTypeFactory() { return new SqlTypeFactoryImpl(); }
public RelDataType createSqlType(SqlTypeName typeName) { if (typeName.allowsPrec()) { return createSqlType(typeName, typeName.getDefaultPrecision()); } assertBasic(typeName); RelDataType newType = new BasicSqlType(typeName); return canonize(newType); }
public RelDataType createTypeWithNullability( final RelDataType type, final boolean nullable) { RelDataType newType; if (type instanceof BasicSqlType) { BasicSqlType sqlType = (BasicSqlType) type; newType = sqlType.createWithNullability(nullable); } else if (type instanceof MultisetSqlType) { newType = copyMultisetType(type, nullable); } else if (type instanceof IntervalSqlType) { newType = copyIntervalType(type, nullable); } else if (type instanceof ObjectSqlType) { newType = copyObjectType(type, nullable); } else { return super.createTypeWithNullability(type, nullable); } return canonize(newType); }
public RelDataType createSqlType(SqlTypeName typeName) { assertBasic(typeName); RelDataType newType = new BasicSqlType(typeName); return canonize(newType); }
resultType = type; if (resultType.getSqlTypeName() == SqlTypeName.ROW) { return leastRestrictiveStructuredType(types); resultType = createSqlType(resultType.getSqlTypeName()); } else if (SqlTypeUtil.isLob(type)) { resultType = createSqlType(type.getSqlTypeName()); } else if (SqlTypeUtil.isBoundedVariableWidth(resultType)) { resultType = createSqlType( resultType.getSqlTypeName(), precision); if (shouldRaggedFixedLengthValueUnionBeVariable()) { if (resultType.getPrecision() != type.getPrecision()) { if (newTypeName == SqlTypeName.CHAR) { createSqlType( newTypeName, precision); createTypeWithCharsetAndCollation( resultType, charset, createSqlType( SqlTypeName.DECIMAL, precision,
public RelDataType createSqlIntervalType( SqlIntervalQualifier intervalQualifier) { RelDataType newType = new IntervalSqlType(intervalQualifier, false); return canonize(newType); }
private RelDataType copyMultisetType(RelDataType type, boolean nullable) { MultisetSqlType mt = (MultisetSqlType) type; RelDataType elementType = copyType(mt.getComponentType()); return new MultisetSqlType(elementType, nullable); }
private RelDataType createDoublePrecisionType() { return createSqlType(SqlTypeName.DOUBLE); }
resultType = type; if (resultType.getSqlTypeName() == SqlTypeName.ROW) { return leastRestrictiveStructuredType(types); resultType = createSqlType(resultType.getSqlTypeName()); } else if (SqlTypeUtil.isLob(type)) { resultType = createSqlType(type.getSqlTypeName()); } else if (SqlTypeUtil.isBoundedVariableWidth(resultType)) { resultType = createSqlType( resultType.getSqlTypeName(), precision); if (shouldRaggedFixedLengthValueUnionBeVariable()) { if (resultType.getPrecision() != type.getPrecision()) { if (newTypeName == SqlTypeName.CHAR) { createSqlType( newTypeName, precision); createTypeWithCharsetAndCollation( resultType, charset, createSqlType( SqlTypeName.DECIMAL, precision,
public RelDataType createSqlType( SqlTypeName typeName, int precision, int scale) { assertBasic(typeName); assert (precision >= 0) || (precision == RelDataType.PRECISION_NOT_SPECIFIED); RelDataType newType = new BasicSqlType(typeName, precision, scale); newType = SqlTypeUtil.addCharsetAndCollation(newType, this); return canonize(newType); }
public RelDataType createMapType( RelDataType keyType, RelDataType valueType) { MapSqlType newType = new MapSqlType(keyType, valueType, false); return canonize(newType); }
private RelDataType copyMultisetType(RelDataType type, boolean nullable) { MultisetSqlType mt = (MultisetSqlType) type; RelDataType elementType = copyType(mt.getComponentType()); return new MultisetSqlType(elementType, nullable); }
private RelDataType createDoublePrecisionType() { return createSqlType(SqlTypeName.DOUBLE); }
protected RelDataTypeFactory createTypeFactory() { return new SqlTypeFactoryImpl(); }
public RelDataType createTypeWithNullability( final RelDataType type, final boolean nullable) { RelDataType newType; if (type instanceof BasicSqlType) { BasicSqlType sqlType = (BasicSqlType) type; newType = sqlType.createWithNullability(nullable); } else if (type instanceof MultisetSqlType) { newType = copyMultisetType(type, nullable); } else if (type instanceof IntervalSqlType) { newType = copyIntervalType(type, nullable); } else if (type instanceof ObjectSqlType) { newType = copyObjectType(type, nullable); } else { return super.createTypeWithNullability(type, nullable); } return canonize(newType); }
public RelDataType createSqlType( SqlTypeName typeName, int precision) { if (typeName.allowsScale()) { return createSqlType(typeName, precision, typeName.getDefaultScale()); } assertBasic(typeName); assert (precision >= 0) || (precision == RelDataType.PRECISION_NOT_SPECIFIED); RelDataType newType = new BasicSqlType(typeName, precision); newType = SqlTypeUtil.addCharsetAndCollation(newType, this); return canonize(newType); }
public RelDataType createSqlType( SqlTypeName typeName, int precision) { assertBasic(typeName); assert (precision >= 0) || (precision == RelDataType.PRECISION_NOT_SPECIFIED); RelDataType newType = new BasicSqlType(typeName, precision); newType = SqlTypeUtil.addCharsetAndCollation(newType, this); return canonize(newType); }
public RelDataType createSqlIntervalType( SqlIntervalQualifier intervalQualifier) { RelDataType newType = new IntervalSqlType(intervalQualifier, false); return canonize(newType); }
RelProtoDataType getRelDataType(DatabaseMetaData metaData, String catalogName, String schemaName, String tableName) throws SQLException { final ResultSet resultSet = metaData.getColumns(catalogName, schemaName, tableName, null); // Temporary type factory, just for the duration of this method. Allowable // because we're creating a proto-type, not a type; before being used, the // proto-type will be copied into a real type factory. final RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(); final RelDataTypeFactory.FieldInfoBuilder fieldInfo = typeFactory.builder(); while (resultSet.next()) { final String columnName = resultSet.getString(4); final int dataType = resultSet.getInt(5); final String typeString = resultSet.getString(6); final int size = resultSet.getInt(7); final int scale = resultSet.getInt(9); RelDataType sqlType = sqlType(typeFactory, dataType, size, scale, typeString); boolean nullable = resultSet.getBoolean(11); fieldInfo.add(columnName, sqlType).nullable(nullable); } resultSet.close(); return RelDataTypeImpl.proto(fieldInfo.build()); }
public RelDataType createSqlType( SqlTypeName typeName, int precision, int scale) { assertBasic(typeName); assert (precision >= 0) || (precision == RelDataType.PRECISION_NOT_SPECIFIED); RelDataType newType = new BasicSqlType(typeName, precision, scale); newType = SqlTypeUtil.addCharsetAndCollation(newType, this); return canonize(newType); }