You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit dc3e164
Browse filesBrowse the repository at this point in the historyBrowse files
Workers moving to vgi.v3 hit failures the SDK should have absorbed or caught
in-process. This addresses each one.
- Signature-tolerant dispatch (vgi/catalog/_dispatch.py): the worker always
passes client_capabilities= to catalog_attach, options= to schema_create,
aliases/security/comment/tags/column_comments to view_create, and so on, so
a 2.x override with explicit parameters raised TypeError on every ATTACH.
call_catalog() inspects the override and passes only what it accepts,
mapping column_path to column_name for top-level paths. A dropped argument
emits a DeprecationWarning plus one log line; a meaningful value (barrier
view, schema options, nested path, constraint definitions) raises instead
of being silently ignored.
- Nullability is derived from records (served_table_schema): a non-nullable
field no NOT_NULL/PRIMARY_KEY record names is served nullable, a field a
record names is served non-nullable, recursing into ordinary structs and
skipping is_row_id, extension and logical-type storage. Applied on every
serve path (tables list, table_get, catalog_contents, time travel).
- Constrained writable tables: ReadOnlyCatalogInterface advertises
vgi.constraint.enforce.v1 when a table has records and write functions, so
they are no longer stripped to read-only. If enforcement is not negotiated
the worker still serves read-only but logs a warning saying why.
- Declared indexes: vgi.index.definition.read.v1 is advertised automatically;
the example fixture's hand-written override is gone. index_definition() and
TypedValueBatch.from_values() build definitions without hand-assembling
records; Index.options defaults to the definition's options.
- validate_constraint_records() mirrors DecodeNativeConstraints: owner table
and schema, duplicate ids, case-insensitive duplicate names, one PRIMARY
KEY, path resolution (nested only for NOT_NULL, never is_row_id), FK same
schema/MATCH SIMPLE/NO_ACTION|RESTRICT, CHECK profile/context/grammar.
validate_foreign_key_targets() checks referenced tables and keys across the
catalog (registry build, tables list, catalog_contents).
- CHECK and generated-column grammars are checked with DuckDB's own parser
(json_serialize_sql) when haybarn/duckdb is installed, mirroring
ParseNumericCheck and the generated Scalar walk. validate_generated_columns()
applies VIRTUAL/nullable/type/owner/context rules; legacy
generated_expression metadata is translated to the canonical record.
- Client: DEFAULT_CLIENT_CAPABILITIES (what the Python client decodes) is the
default catalog_attach offer; the CLI reuses it.
- Public helpers: catalog_capabilities_for(), CatalogCapabilities.union(),
SqlExpression.scalar().
- Legacy API: TableInfo(not_null_constraints=...) and SqlExpression("x") raise
TypeErrors naming the replacement; Table's legacy fields type-check only as
(); ForeignKeyDef/ForeignKeyInfo are @deprecated. Constrained CREATE TABLE
stays refused (no SDK catalog can enforce it) with a message naming what is
unsupported.
- Cross-SDK example test expects ENFORCED + ALL_ROWS records.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0 commit comments