yunfengzhou-hub opened a new pull request, #10706: URL: https://github.com/apache/paimon/pull/10706
### Purpose Closes #10692, part of the PIP-39 umbrella #10690. This adds the engine-neutral part of [PIP-39](https://cwiki.apache.org/confluence/spaces/PAIMON/pages/398000424): the two options that make a table a lake-stream table, and the catalog guards that keep such a table's identity and data intact. No engine routes a read or a write yet. - `lakestream.store` (catalog option) names the Lakestream Store implementation. - `lakestream.enabled` (table option) marks a table as a lake-stream table. It is mutable, so the mode can be turned off again with `ALTER TABLE` instead of by dropping the table. - `renameTable` and `replaceTable` are rejected while the option is `true`. The identifier is what resolves the corresponding table in the store, so a rename breaks that lookup, and a replace can discard data the store has not tiered into Paimon yet, or drop the option without the store being told. The rejection says to turn the option off first. - Column changes stay allowed and still update only the Paimon table; reconciling the store's schema is the store's own responsibility. The guards sit in `AbstractCatalog`, and additionally in `JdbcCatalog` and `RESTCatalog`, because those two override `renameTable` / `replaceTable` without delegating to `super`. `FileSystemCatalog` and `HiveCatalog` only override the `*Impl` hooks, which `AbstractCatalog` calls after the guard, so they need no change; `CachingCatalog` and `DelegateCatalog` delegate. The generated configuration reference is updated for both options. Regenerating also reorders one unrelated entry (`continuous-compaction.initial-scan-mode`) that sits out of alphabetical order in the committed file; that hunk is left out to keep this change to what it is about. ### Tests Six cases added to `CatalogTestBase`, so they run for every catalog implementation rather than only the filesystem one: - `testRenameLakeStreamTableIsRejected`, which also asserts the table is untouched: the original name still resolves and the target name was never created - `testRenameTableWithLakeStreamDisabledIsAllowed` - `testAlterLakeStreamTableColumnIsAllowed` - `testReplaceLakeStreamTableIsRejected`, which also asserts the option is still `true` afterwards - `testDropLakeStreamTableIsAllowed`, because a mis-configured table has to stay correctable and dropping never consults the store - `testDisableLakeStreamModeThenRenameIsAllowed` -- 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]
