Skip to content

feat(format): specify carried-column storage and allow carrying a keyed column - #8856

Open
vivek-bharathan wants to merge 1 commit into
lance-format:mainfrom
vivek-bharathan:vb/covering-storage-format
Open

feat(format): specify carried-column storage and allow carrying a keyed column#8856
vivek-bharathan wants to merge 1 commit into
lance-format:mainfrom
vivek-bharathan:vb/covering-storage-format

Conversation

@vivek-bharathan

Copy link
Copy Markdown
Contributor

#8535 declared IndexMetadata.covering_fields but left the physical side unspecified; this specifies it -- carried values are extra columns in auxiliary.idx, discovered by exclusion against the quantizer's internal columns and bound to their source fields by a new covering_field_ids metadata key, with no index_version bump.

It also permits an index to carry a column it is also keyed on, the only case where an id repeats in fields, so readers must take the carried set from covering_fields rather than subtract the keyed prefix.

Adds VectorQueryProto.covering_projection (field 15) to reserve the tag; no writer emits carried values yet, so the implementation follows separately.

@github-actions github-actions Bot added A-format On-disk format: protos and format spec docs format-change A change to the format spec, which requires a vote. Remove if minor (e.g. fixing typo). enhancement New feature or request labels Aug 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Important

Format specification vote

This PR modifies the Lance format specification, so it requires 3 binding +1 votes from PMC members (excluding the proposer) and a minimum 72-hour voting period, weekends excluded, before it can merge. Vote by approving this PR (+1) or requesting changes (−1, a veto). See the voting process.

Status: ❌ Blocked — 0 of 3 required approvals

Approvals (this commit) none (0/3)
Vetoes none
Voting period ends Wed 2026-09-02 20:59 UTC (13:59 PDT)

Updated automatically by the format-spec vote gate, which re-checks every 15 minutes — just voted? Re-check now (press Run workflow; leave the input blank to re-check every open format PR). A PMC member may apply the format-waived label to waive the vote for a trivial edit (typo, wording, formatting).

lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added the K-changes Latest Gatekeeper recommendation requests changes. label Aug 28, 2026
…ed column

lance-format#8535 declared `IndexMetadata.covering_fields` but left the physical side unspecified;
this specifies it -- carried values are extra columns in `auxiliary.idx`, discovered by
exclusion against the quantizer's internal columns and bound to their source fields by a
new `covering_field_ids` metadata key, with no `index_version` bump.

It also permits an index to carry a column it is also keyed on, the only case where an id
repeats in `fields`, so readers must take the carried set from `covering_fields` rather
than subtract the keyed prefix.

The "Current state" note becomes a rule about verifying each segment rather than a snapshot
of which writers exist, so it stays accurate as implementations land instead of needing an
edit to this spec each time one does.

Adds `VectorQueryProto.covering_projection` (field 15) to reserve the tag, with the one
initializer the new field forces on `query_to_proto`; no writer emits carried values yet,
so the implementation follows separately.
@vivek-bharathan
vivek-bharathan force-pushed the vb/covering-storage-format branch from fb3db9d to 201a9e1 Compare August 29, 2026 00:31
@lance-gatekeeper lance-gatekeeper Bot removed the K-changes Latest Gatekeeper recommendation requests changes. label Aug 29, 2026

@lance-gatekeeper lance-gatekeeper Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gate recommendation: approve.

The new optional per-segment covering projection is represented explicitly while preserving absent-state behavior, and the distributed query serializer remains compatible with the generated schema.

@lance-gatekeeper lance-gatekeeper Bot added the K-approved Latest Gatekeeper recommendation permits acceptance. label Aug 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-format On-disk format: protos and format spec docs enhancement New feature or request format-change A change to the format spec, which requires a vote. Remove if minor (e.g. fixing typo). K-approved Latest Gatekeeper recommendation permits acceptance.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant