feat(storage): add the five missing Iceberg catalog capabilities - #76
Conversation
The Iceberg namespace and table splits cover create, list, load, update,
rename and delete, but the Iceberg REST Catalog exposes five more
operations that no feature id currently describes:
- GET /namespaces/{ns} load_namespace_metadata
- HEAD /namespaces/{ns} namespace_exists
- POST /namespaces/{ns}/properties update_namespace_properties
- POST /namespaces/{ns}/register register_table
- HEAD /namespaces/{ns}/tables/{t} table_exists
supabase-flutter implements all five today and has nowhere to declare
them, so they end up registered against a capability they do not
implement purely to satisfy the new-symbol check.
|
Warning Review limit reached
Next review available in: 59 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Every Iceberg catalog operation now has a feature id, so loadNamespaceMetadata, namespaceExists, updateNamespaceProperties, registerTable and tableExists move out of the top-level supporting bucket into entries of their own. That also gives RegisterTableRequest and UpdateNamespacePropertiesResult a real owner, leaving nothing at the top level but genuinely shared types.
Problem
#74 splits the two bundled Iceberg entries into nine per-operation feature IDs: create, list and delete for namespaces; create, list, load, update, rename and delete for tables.
The Iceberg REST Catalog exposes five more operations that no feature ID describes:
GET /namespaces/{ns}storage.analytics.load_namespace_metadataHEAD /namespaces/{ns}storage.analytics.namespace_existsPOST /namespaces/{ns}/propertiesstorage.analytics.update_namespace_propertiesPOST /namespaces/{ns}/registerstorage.analytics.register_tableHEAD /namespaces/{ns}/tables/{table}storage.analytics.table_existsThis is not theoretical. supabase-flutter implements all five today:
Because
check-api-symbolsrequires every public symbol to be registered somewhere, and there is no ID that fits, those methods currently have to be declared against a capability they do not implement just to keep CI green. That is visible in supabase/supabase-flutter#1666, where the whole Iceberg symbol list is replicated across every split ID, and in supabase/supabase-flutter#1667, where they sit in a supporting bucket with a comment explaining they have no home.Splitting a bundled capability into per-verb IDs is only lossless if the verbs cover the surface. These five are the gap.
Change
Adds the five feature IDs to
capabilities/storage.yaml, in the existinganalyticsgroup, following the descriptions already used for the split entries.No SDK currently declares anything under
storage.analytics, so every SDK except Flutter is unaffected. They staynot_implementedby omission, which is accurate.Test plan
npm run validate:OK — capability matrix is valid.storage.analyticscapabilities, so nothing regresses there.Related