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: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to