Search in sources :

Example 71 with TableSchema

use of org.apache.flink.table.api.TableSchema in project flink by apache.

the class MergeTableLikeUtilTest method mergeOverwritingGeneratedColumnsDuplicate.

@Test
public void mergeOverwritingGeneratedColumnsDuplicate() {
    TableSchema sourceSchema = TableSchema.builder().add(TableColumn.physical("one", DataTypes.INT())).add(TableColumn.computed("two", DataTypes.INT(), "one + 1")).build();
    List<SqlNode> derivedColumns = Collections.singletonList(computedColumn("two", plus("one", "3")));
    Map<FeatureOption, MergingStrategy> mergingStrategies = getDefaultMergingStrategies();
    mergingStrategies.put(FeatureOption.GENERATED, MergingStrategy.OVERWRITING);
    TableSchema mergedSchema = util.mergeTables(mergingStrategies, sourceSchema, derivedColumns, Collections.emptyList(), null);
    TableSchema expectedSchema = TableSchema.builder().add(TableColumn.physical("one", DataTypes.INT())).add(TableColumn.computed("two", DataTypes.INT(), "`one` + 3")).build();
    assertThat(mergedSchema, equalTo(expectedSchema));
}
Also used : FeatureOption(org.apache.flink.sql.parser.ddl.SqlTableLike.FeatureOption) TableSchema(org.apache.flink.table.api.TableSchema) MergingStrategy(org.apache.flink.sql.parser.ddl.SqlTableLike.MergingStrategy) SqlNode(org.apache.calcite.sql.SqlNode) Test(org.junit.Test)

Example 72 with TableSchema

use of org.apache.flink.table.api.TableSchema in project flink by apache.

the class MergeTableLikeUtilTest method mergePhysicalColumns.

@Test
public void mergePhysicalColumns() {
    TableSchema sourceSchema = TableSchema.builder().add(TableColumn.physical("one", DataTypes.INT())).add(TableColumn.physical("two", DataTypes.STRING())).build();
    List<SqlNode> derivedColumns = Arrays.asList(regularColumn("three", DataTypes.INT()), regularColumn("four", DataTypes.STRING()));
    TableSchema mergedSchema = util.mergeTables(getDefaultMergingStrategies(), sourceSchema, derivedColumns, Collections.emptyList(), null);
    TableSchema expectedSchema = TableSchema.builder().add(TableColumn.physical("one", DataTypes.INT())).add(TableColumn.physical("two", DataTypes.STRING())).add(TableColumn.physical("three", DataTypes.INT())).add(TableColumn.physical("four", DataTypes.STRING())).build();
    assertThat(mergedSchema, equalTo(expectedSchema));
}
Also used : TableSchema(org.apache.flink.table.api.TableSchema) SqlNode(org.apache.calcite.sql.SqlNode) Test(org.junit.Test)

Example 73 with TableSchema

use of org.apache.flink.table.api.TableSchema in project flink by apache.

the class MergeTableLikeUtilTest method mergeIncludingMetadataColumnsFailsOnDuplicate.

@Test
public void mergeIncludingMetadataColumnsFailsOnDuplicate() {
    TableSchema sourceSchema = TableSchema.builder().add(TableColumn.physical("one", DataTypes.INT())).add(TableColumn.metadata("two", DataTypes.INT())).build();
    List<SqlNode> derivedColumns = Collections.singletonList(metadataColumn("two", DataTypes.INT(), false));
    thrown.expect(ValidationException.class);
    thrown.expectMessage("A metadata column named 'two' already exists in the base table. You " + "might want to specify EXCLUDING METADATA or OVERWRITING METADATA");
    util.mergeTables(getDefaultMergingStrategies(), sourceSchema, derivedColumns, Collections.emptyList(), null);
}
Also used : TableSchema(org.apache.flink.table.api.TableSchema) SqlNode(org.apache.calcite.sql.SqlNode) Test(org.junit.Test)

Example 74 with TableSchema

use of org.apache.flink.table.api.TableSchema in project flink by apache.

the class MergeTableLikeUtilTest method mergeWithIncludeFailsOnDuplicateRegularColumn.

@Test
public void mergeWithIncludeFailsOnDuplicateRegularColumn() {
    TableSchema sourceSchema = TableSchema.builder().add(TableColumn.physical("one", DataTypes.INT())).build();
    List<SqlNode> derivedColumns = Arrays.asList(regularColumn("two", DataTypes.INT()), regularColumn("two", DataTypes.INT()), regularColumn("four", DataTypes.STRING()));
    thrown.expect(ValidationException.class);
    thrown.expectMessage("A regular Column named 'two' already exists in the table.");
    util.mergeTables(getDefaultMergingStrategies(), sourceSchema, derivedColumns, Collections.emptyList(), null);
}
Also used : TableSchema(org.apache.flink.table.api.TableSchema) SqlNode(org.apache.calcite.sql.SqlNode) Test(org.junit.Test)

Example 75 with TableSchema

use of org.apache.flink.table.api.TableSchema in project flink by apache.

the class MergeTableLikeUtilTest method mergeMetadataColumns.

@Test
public void mergeMetadataColumns() {
    TableSchema sourceSchema = TableSchema.builder().add(TableColumn.physical("one", DataTypes.INT())).add(TableColumn.metadata("two", DataTypes.INT(), false)).add(TableColumn.computed("c", DataTypes.INT(), "ABS(two)")).build();
    List<SqlNode> derivedColumns = Arrays.asList(regularColumn("three", DataTypes.INT()), metadataColumn("four", DataTypes.INT(), true));
    TableSchema mergedSchema = util.mergeTables(getDefaultMergingStrategies(), sourceSchema, derivedColumns, Collections.emptyList(), null);
    TableSchema expectedSchema = TableSchema.builder().add(TableColumn.physical("one", DataTypes.INT())).add(TableColumn.metadata("two", DataTypes.INT(), false)).add(TableColumn.computed("c", DataTypes.INT(), "ABS(two)")).add(TableColumn.physical("three", DataTypes.INT())).add(TableColumn.metadata("four", DataTypes.INT(), true)).build();
    assertThat(mergedSchema, equalTo(expectedSchema));
}
Also used : TableSchema(org.apache.flink.table.api.TableSchema) SqlNode(org.apache.calcite.sql.SqlNode) Test(org.junit.Test)

Aggregations

TableSchema (org.apache.flink.table.api.TableSchema)86 Test (org.junit.Test)54 HashMap (java.util.HashMap)26 CatalogTableImpl (org.apache.flink.table.catalog.CatalogTableImpl)21 SqlNode (org.apache.calcite.sql.SqlNode)19 ObjectPath (org.apache.flink.table.catalog.ObjectPath)19 CatalogTable (org.apache.flink.table.catalog.CatalogTable)18 DataType (org.apache.flink.table.types.DataType)16 ValidationException (org.apache.flink.table.api.ValidationException)14 TableColumn (org.apache.flink.table.api.TableColumn)10 UniqueConstraint (org.apache.flink.table.api.constraints.UniqueConstraint)10 ArrayList (java.util.ArrayList)9 List (java.util.List)9 Map (java.util.Map)9 FeatureOption (org.apache.flink.sql.parser.ddl.SqlTableLike.FeatureOption)9 MergingStrategy (org.apache.flink.sql.parser.ddl.SqlTableLike.MergingStrategy)9 CatalogBaseTable (org.apache.flink.table.catalog.CatalogBaseTable)8 ObjectIdentifier (org.apache.flink.table.catalog.ObjectIdentifier)8 Arrays (java.util.Arrays)7 Configuration (org.apache.flink.configuration.Configuration)7