swapna267 commented on code in PR #12116:
URL: https://github.com/apache/iceberg/pull/12116#discussion_r1947295585
##########
flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java:
##########
@@ -384,13 +395,6 @@ public void renameTable(ObjectPath tablePath, String
newTableName, boolean ignor
@Override
public void createTable(ObjectPath tablePath, CatalogBaseTable table,
boolean ignoreIfExists)
throws CatalogException, TableAlreadyExistException {
- if (Objects.equals(
- table.getOptions().get("connector"),
FlinkDynamicTableFactory.FACTORY_IDENTIFIER)) {
- throw new IllegalArgumentException(
- "Cannot create the table with 'connector'='iceberg' table property
in "
- + "an iceberg catalog, Please create table with
'connector'='iceberg' property in a non-iceberg catalog or "
- + "create table without 'connector'='iceberg' related properties
in an iceberg table.");
- }
Review Comment:
createTable in this catalog is called only when Source table is an Iceberg
Table. Currently the Catalog information comes when Catalog is created.
Following are the scenarios when getTable / createTable methods in this
Catalog are being used.
1. Create Iceberg table in Iceberg catalog -> Only createTable is called,
where Catalog instance has all catalog related info.
2. Create table in iceberg catalog catalog1 like table in iceberg catalog
catalog1 -> getTable() sets schema/partitioning info , which is used to create
the table with same schema/partitioning as source in Catalog1.
3. Create table in iceberg catalog catalog2 like table in iceberg catalog
catalog1 -> getTable() sets schema/partitioning info , which is used to create
the table with same schema/partitioning as source in Catalog2.
4. Create table in Flink catalog like table in iceberg catalog -> getTable()
is only called to get the source table info and createTable called on Flink
catalog, where connector/iceberg catalog properties are being used to
instantiate FlinkDynamicTableFactory.
When createTable is invoked, currently there is no easy way to differentiate
between Case 2) / Case 3) / Case 4) Or user is doing
```
CREATE TABLE `hive_catalog`.`default`.`sample_like`
WITH ('connector'='iceberg', 'catalog-name'='')
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]