feat(table-catalog): add external catalog bridge sync (#3569)

Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
This commit is contained in:
Henry Guo
2026-06-18 15:30:41 +08:00
committed by GitHub
parent 8cf11af649
commit 51409c40ef
7 changed files with 1014 additions and 42 deletions
+1 -1
View File
@@ -179,7 +179,7 @@ current unsupported inventory is:
- automatic maintenance scheduling: external scheduler hook supported through the worker run endpoint; built-in periodic scheduling is not claimed
- compaction rewrite: controlled run-once support for unpartitioned Parquet binpack through metadata maintenance; built-in periodic scheduling, sort compaction, delete-file rewrite, and row-level compaction are not claimed
- row-level delete/update/merge commits: standard catalog commit validates append, overwrite, delete, and replace snapshot manifests for table-warehouse scope, referenced object existence, current-live-file deletes, and stale add/delete conflicts; end-to-end SQL DML client coverage remains a compatibility validation item
- external catalog bridges: metadata import/register is supported, but Polaris/Glue/DLF/Hive synchronization is unsupported
- external catalog bridges: metadata import/register and operator-supplied metadata pointer sync are supported for Polaris/Glue/DLF/Hive identity boundaries; online vendor SDK polling and policy mirroring are not claimed
- multi-table transactions: not a short-term production claim
## Credential Boundary
+2 -2
View File
@@ -166,9 +166,9 @@ UNSUPPORTED_INVENTORY: list[dict[str, str]] = [
},
{
"capability": "external-catalog-bridge",
"status": "metadata-import-only",
"status": "operator-sync-supported",
"roadmap_area": "external-catalog",
"expected_behavior": "catalog import/register supports an existing Iceberg metadata location, while Polaris, Glue, DLF, and Hive synchronization remain unsupported",
"expected_behavior": "catalog import/register and operator-supplied external metadata pointer sync are supported for Polaris, Glue, DLF, and Hive identity boundaries; online vendor SDK polling and policy mirroring are not claimed",
},
{
"capability": "multi-table-transactions",
@@ -747,6 +747,8 @@ class PyIcebergSmokeConfigTest(unittest.TestCase):
self.assertIn("background-maintenance-worker", capabilities)
self.assertIn("external-catalog-bridge", capabilities)
self.assertIn("multi-table-transactions", capabilities)
external_bridge = next(entry for entry in inventory if entry["capability"] == "external-catalog-bridge")
self.assertEqual(external_bridge["status"], "operator-sync-supported")
for entry in inventory:
self.assertIn("status", entry)
self.assertIn("roadmap_area", entry)