Skip to content

v0.41.0

Choose a tag to compare

@rustyconover rustyconover released this 06 Oct 15:57
· 126 commits to main since this release

Client: load a whole catalog with catalog_contents

VGI protocol stays at 2.1.0 — compatible with the current vgi DuckDB extension and 0.40.x workers.

  • Client.load_catalog(attach=, previous=, transaction_opaque_data=) returns a CatalogSnapshot (schemas, version, etag, source, not_modified, fallback_reason). It makes one catalog_contents call when the attach advertises supports_catalog_contents, and uses catalog_schemas plus the per-schema RPCs otherwise, skipping kinds whose estimated_object_count is 0. catalog_contents is never sent to a worker that doesn't advertise it.
  • Fallback: any failure or malformed answer falls back to the per-schema RPCs and records fallback_reason. An older snapshot is retried once.
  • Revalidation: pass previous= to send its etag as if_none_match. A not_modified answer keeps the held contents.
  • Transactions: a load inside a transaction always uses the per-schema RPCs.
  • Fix: a malformed catalog_contents item now raises CatalogClientError instead of escaping as a bare ArrowInvalid/KeyError.
  • New vgi-client catalog contents CLI command; the attach output shows supports_catalog_contents.
  • The six contents_* fixture catalogs are now the cross-SDK catalog_contents contract: the vgi integration tests run them against every SDK.