Status
Current state: "Under Discussion"
Discussion thread: http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Primary-keys-in-Table-API-td35138.html
JIRA: here (<- link to https://issues.apache.org/jira/browse/FLINK-XXXX)
...
Page properties | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
...
Code Block | ||
---|---|---|
| ||
CREATE TABLE [catalog_name.][db_name.]table_name
[(col_name1 col_type1 [IN_LINE_CONSTRAINT] [COMMENT col_comment1],
...,
[OUT_OF_LINE_CONSTRAINT])]
[COMMENT table_comment]
[PARTITIONED BY (col_name1, col_name2, ...)]
[OUT_OF_LINE_CONSTRAINT]:=
[CONSTRAINT constraint_name] ((PRIMARY KEY | UNIQUE) (column, ...)) [[NOT] ENFORCED]
[IN_LINE_CONSTRAINT]:=
[CONSTRAINT constraint_name] (PRIMARY KEY | UNIQUE) [[NOT] ENFORCED]
-- possible extension, not part of the FLIP, as we do not have alter statements
ALTER TABLE [catalog_name.][db_name.]table_name
ADD (OUT_OF_LINE_CONSTRAINT) |
DROP CONSTRAINT constraint_name
|
...
In alter statements if a users says to create a primary key on a nullable column the operation should fail.
DDL default value
If a user does not provide the enforcement flag the ENFORCED will be set implicitly. This mode will be unsupported in the initial version and it will throw an exception.
Usage of primary key information for sources and sinks
...
- Add the primary key information to CatalogBaseTable
- Use the primary key information in optimizer
- Modify HiveCatalog connector to provide the primary key information
- Introduce DDL (side note: this is not aimed for 1.10)
Test Plan
We want to make sure, we can leverage the primary key information stored in Hive. This might require changes to the Hive catalog connector in regards to the produced TableSchema.
...