public static RelDataType createMultisetType( RelDataTypeFactory typeFactory, RelDataType type, boolean nullable) { RelDataType ret = typeFactory.createMultisetType(type, -1); return typeFactory.createTypeWithNullability(ret, nullable); }
public static RelDataType createMultisetType( RelDataTypeFactory typeFactory, RelDataType type, boolean nullable) { RelDataType ret = typeFactory.createMultisetType(type, -1); return typeFactory.createTypeWithNullability(ret, nullable); }
public static RelDataType createMultisetType( RelDataTypeFactory typeFactory, RelDataType type, boolean nullable) { RelDataType ret = typeFactory.createMultisetType(type, -1); return typeFactory.createTypeWithNullability(ret, nullable); }
protected RelDataType convertToStruct(RelDataType type) { // "MULTISET [<expr>, ...]" needs to be wrapped in a record if // <expr> has a scalar type. // For example, "MULTISET [8, 9]" has type // "RECORD(INTEGER EXPR$0 NOT NULL) NOT NULL MULTISET NOT NULL". final RelDataType componentType = type.getComponentType(); if (componentType == null || componentType.isStruct()) { return type; } final RelDataTypeFactory typeFactory = validator.getTypeFactory(); final RelDataType structType = toStruct(componentType, getNode()); final RelDataType collectionType; switch (type.getSqlTypeName()) { case ARRAY: collectionType = typeFactory.createArrayType(structType, -1); break; case MULTISET: collectionType = typeFactory.createMultisetType(structType, -1); break; default: throw new AssertionError(type); } return typeFactory.createTypeWithNullability(collectionType, type.isNullable()); }
protected RelDataType convertToStruct(RelDataType type) { // "MULTISET [<expr>, ...]" needs to be wrapped in a record if // <expr> has a scalar type. // For example, "MULTISET [8, 9]" has type // "RECORD(INTEGER EXPR$0 NOT NULL) NOT NULL MULTISET NOT NULL". final RelDataType componentType = type.getComponentType(); if (componentType == null || componentType.isStruct()) { return type; } final RelDataTypeFactory typeFactory = validator.getTypeFactory(); final RelDataType structType = toStruct(componentType, getNode()); final RelDataType collectionType; switch (type.getSqlTypeName()) { case ARRAY: collectionType = typeFactory.createArrayType(structType, -1); break; case MULTISET: collectionType = typeFactory.createMultisetType(structType, -1); break; default: throw new AssertionError(type); } return typeFactory.createTypeWithNullability(collectionType, type.isNullable()); }
typeFactory.createMultisetType( flattenRecordType( typeFactory,
type = typeFactory.createMultisetType(type, -1); break;
type = typeFactory.createMultisetType(type, -1); break;
typeFactory.createMultisetType( flattenRecordType( typeFactory,
typeFactory.createMultisetType( flattenRecordType( typeFactory,
componentType.isNullable()); boolean isn = type.isNullable(); type = typeFactory.createMultisetType(tt, -1); type = typeFactory.createTypeWithNullability(type, isn);
componentType.isNullable()); boolean isn = type.isNullable(); type = typeFactory.createMultisetType(tt, -1); type = typeFactory.createTypeWithNullability(type, isn);
@Test public void testTypeDump() { RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT); RelDataType t1 = typeFactory.builder() .add("f0", SqlTypeName.DECIMAL, 5, 2) .add("f1", SqlTypeName.VARCHAR, 10) .build(); TestUtil.assertEqualsVerbose( TestUtil.fold( "f0 DECIMAL(5, 2) NOT NULL,", "f1 VARCHAR(10) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL"), Util.toLinux(RelOptUtil.dumpType(t1) + "\n")); RelDataType t2 = typeFactory.builder() .add("f0", t1) .add("f1", typeFactory.createMultisetType(t1, -1)) .build(); TestUtil.assertEqualsVerbose( TestUtil.fold( "f0 RECORD (", " f0 DECIMAL(5, 2) NOT NULL,", " f1 VARCHAR(10) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL) NOT NULL,", "f1 RECORD (", " f0 DECIMAL(5, 2) NOT NULL,", " f1 VARCHAR(10) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL) NOT NULL MULTISET NOT NULL"), Util.toLinux(RelOptUtil.dumpType(t2) + "\n")); }
@Test public void testTypeDump() { RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT); RelDataType t1 = typeFactory.builder() .add("f0", SqlTypeName.DECIMAL, 5, 2) .add("f1", SqlTypeName.VARCHAR, 10) .build(); TestUtil.assertEqualsVerbose( TestUtil.fold( "f0 DECIMAL(5, 2) NOT NULL,", "f1 VARCHAR(10) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL"), Util.toLinux(RelOptUtil.dumpType(t1) + "\n")); RelDataType t2 = typeFactory.builder() .add("f0", t1) .add("f1", typeFactory.createMultisetType(t1, -1)) .build(); TestUtil.assertEqualsVerbose( TestUtil.fold( "f0 RECORD (", " f0 DECIMAL(5, 2) NOT NULL,", " f1 VARCHAR(10) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL) NOT NULL,", "f1 RECORD (", " f0 DECIMAL(5, 2) NOT NULL,", " f1 VARCHAR(10) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL) NOT NULL MULTISET NOT NULL"), Util.toLinux(RelOptUtil.dumpType(t2) + "\n")); }