sundapeng commented on code in PR #8728:
URL: https://github.com/apache/paimon/pull/8728#discussion_r3610960395


##########
paimon-core/src/main/java/org/apache/paimon/rest/RESTCatalog.java:
##########
@@ -567,8 +575,13 @@ public void createTable(Identifier identifier, Schema 
schema, boolean ignoreIfEx
             checkNotBranch(identifier, "createTable");
             checkNotSystemTable(identifier, "createTable");
             validateCreateTable(schema, dataTokenEnabled);
-            createExternalTablePathIfNotExist(schema);
             tableDefaultOptions.forEach(schema.options()::putIfAbsent);

Review Comment:
   🟡 **[minor] [migration]** createTable 顺序交换:`table-default.path` 现在会参与 
external-path 建目录与 managed-table 内外部判定
   
   diff 把 `tableDefaultOptions.forEach(schema.options()::putIfAbsent)` 移到了 
`createExternalTablePathIfNotExist` **之前**(此前在其后)。两个副作用:(1) 若 catalog 配置了 
`table-default.path`,`createExternalTablePathIfNotExist` 现在会为**每个**建表请求 mkdir 
这个默认路径——此前 defaults 对它不可见;(2) `validateManagedFormatTableCatalog` 的 `isExternal 
= schema.options().containsKey(PATH.key())` 在 defaults 合并**之后**计算,所以在配置了 
`table-default.path` 的 catalog 中创建的内部 managed format table 会被误判为 external 
而被拒绝("Managed format table must be an internal table")。两者都是对存量 CREATE TABLE 
流程的行为变更,仅在该 catalog 配置下显现,但共享 catalog 配置 `table-default.path` 是合理场景。
   
   **证据**:RESTCatalog.java:578-584:defaults 在 578 合并,externality 在 583 由合并后的 
options 推导,`createExternalTablePathIfNotExist` 在 
584;`createExternalTablePathIfNotExist`(1373-1383 行)会 mkdir 
`options.get(PATH.key())`。父提交中 `createExternalTablePathIfNotExist` 在 defaults 
应用之前执行。
   
   **建议**:用用户显式指定的 options(合并 tableDefaultOptions 之前快照 option map)计算 
externality;`createExternalTablePathIfNotExist` 也保持在合并 defaults 之前的 schema 
上执行,或显式排除把 `table-default.path` 当作 external 标记。



-- 
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]

Reply via email to