Skip to content

feat(format): feature flag for a fragment reuse index on stable row id tables - #9119

Open
brendanclement wants to merge 1 commit into
lance-format:mainfrom
brendanclement:brendanclement/oss-2189-frag-reuse-stable-row-id-feature-flag
Open

feat(format): feature flag for a fragment reuse index on stable row id tables#9119
brendanclement wants to merge 1 commit into
lance-format:mainfrom
brendanclement:brendanclement/oss-2189-frag-reuse-stable-row-id-feature-flag

Conversation

@brendanclement

@brendanclement brendanclement commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Proposes a reader/writer feature flag, FLAG_FRAG_REUSE_WITH_STABLE_ROW_IDS, for a table version that uses stable row IDs and carries a Fragment Reuse Index (FRI).

The FRI records how physical row addresses moved during compaction. On a stable row ID table most indices store stable row IDs, not addresses, and those entries must never be remapped through the FRI. An implementation that applies the FRI to such an index returns wrong rows when reading and persists a corrupt index when merging or optimizing. Setting this flag on affected table versions makes older implementations fail to open the table with an unsupported error, rather than applying the FRI to every index.

Today compaction does not write an FRI for stable row ID tables. We plan to change that and need the flag in place first so older readers and writers fail closed. This PR defines and documents the flag, and in a follow-up PR I will enable support alongside the index loading changes, so no intermediate build can open such a table and misread it.

Part of #8977

@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 Sep 10, 2026
@brendanclement
brendanclement force-pushed the brendanclement/oss-2189-frag-reuse-stable-row-id-feature-flag branch from 0fe8685 to f1655f5 Compare September 10, 2026 05:18
…d tables

Reserve reader/writer feature flag 1 << 9 for a table version that uses
stable row ids and carries a fragment reuse index. The index records how
physical row addresses moved; entries of an index that stores stable row
ids must not be remapped through it, so builds without domain-aware index
loading must refuse such a table. This build defines the bit but does not
support it yet; support lands with the implementation.

Part of lance-format#8977
@brendanclement
brendanclement force-pushed the brendanclement/oss-2189-frag-reuse-stable-row-id-feature-flag branch from f1655f5 to 059faf8 Compare September 10, 2026 17:05
@brendanclement
brendanclement marked this pull request as ready for review September 10, 2026 17:13
@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 Tue 2026-09-15 17:13 UTC (10:13 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 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 format-only reservation establishes the necessary compatibility fence: bit 9 is documented for stable-row-ID fragment reuse, while this revision still rejects bits 8 and 9 until their implementations land. PR #9120 is correctly separated as the dependent implementation.

@lance-gatekeeper lance-gatekeeper Bot added the K-approved Latest Gatekeeper recommendation permits acceptance. label Sep 10, 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