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 c480086
Browse filesBrowse the repository at this point in the historyBrowse files
Serve canonical constraint records the extension will read
vgi.v3 replaced the descriptor constraint fields with provider-owned
ConstraintInfo records, but Java left a worker only raw nested byte[]
plumbing, negotiated the read profile only for the main catalog through a
hand-written selector, and never checked the rules the extension enforces
at ATTACH, so a mistake surfaced as a failed ATTACH rather than a worker error.
- ConstraintRecord: typed record with a builder (NOT_NULL incl. nested
paths, PRIMARY_KEY, UNIQUE, CHECK, FOREIGN_KEY), explicit enforcement and
validation (no default attestation), encode()/decode(). CatalogTable gains
Builder#constraints(List<ConstraintRecord>, rev) and withConstraintRecords.
- Every catalog path (main, auxiliary, hosted CatalogInterface) advertises
vgi.constraint.records.read.v1 + vgi.expression.duckdb.scalar.v1 when its
tables carry records and selects what the client's offer allows (scalar
only with records), merged into any explicit catalogCapabilities decision.
Hosted catalogs get CatalogInterface#catalogReadProfiles (default: scan).
- TableInfoSerializer refuses, naming table and column path: records that
are not ENFORCED + ALL_ROWS, records owned by another table, duplicate ids,
and Arrow nullability that disagrees with NOT_NULL/PRIMARY_KEY (every
table, recursing into ordinary STRUCTs, skipping the row-id column).
- Legacy descriptor constraint fields still fail, now naming the replacement.
- The example worker drops its hand-written negotiation.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0 commit comments