Skip to content

feat: enable the fragment reuse index on stable row id datasets - #9120

Open
brendanclement wants to merge 2 commits into
lance-format:mainfrom
brendanclement:brendanclement/oss-2189-enable-fragment-reuse-index-even-when-srid-is-enabled
Open

brendanclement wants to merge 2 commits into
lance-format:mainfrom
brendanclement:brendanclement/oss-2189-enable-fragment-reuse-index-even-when-srid-is-enabled

Conversation

@brendanclement

@brendanclement brendanclement commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Part of the stable row ID GA work in §5.1. Enables defer_index_remap on datasets with stable row IDs.

Compaction, index loading, and maintenance now decide whether to apply FRI mappings based on the identifiers each index stores. Indexes that store stable row IDs keep their entries and update fragment coverage as needed. Indexes that store physical row addresses use the FRI. JSON indexes follow the identifier type of their underlying index.

Sets the reader and writer feature flag from #9119 for stable-row-ID datasets with an FRI. Shallow clones preserve the flag, and metadata-only index repairs preserve the source location of index files.

FRI creation remains opt-in through defer_index_remap and depends on indexed data or an existing FRI chain. Enabling it by default and the remaining cleanup integration are follow-up work.

Depends on #9119.

@github-actions github-actions Bot added A-python Python bindings A-index Vector index, linalg, tokenizer 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-enable-fragment-reuse-index-even-when-srid-is-enabled branch 2 times, most recently from ec31dd7 to 1b17fdc Compare September 10, 2026 17:05
@brendanclement
brendanclement force-pushed the brendanclement/oss-2189-enable-fragment-reuse-index-even-when-srid-is-enabled branch 5 times, most recently from 404d41e to 6222bf0 Compare September 16, 2026 22:00
@brendanclement
brendanclement marked this pull request as ready for review September 16, 2026 22:02
@github-actions

github-actions Bot commented Sep 16, 2026

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), at least one of them on the latest commit, 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.

Approvals carry over across pushes, so a rebase or a typo fix does not send everyone back to re-vote. Whoever approves the latest commit is vouching that nothing substantive has changed since the earlier approvals; if something has, ask for fresh votes.

Status: ❌ Blocked — 0 of 3 required approvals

Approvals none (0/3)
Latest commit approved by none — one PMC member must approve the latest commit
Vetoes none
Voting period ends Mon 2026-09-21 22:02 UTC (15:02 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 K-changes Latest Gatekeeper recommendation requests changes. and removed K-changes Latest Gatekeeper recommendation requests changes. labels Sep 16, 2026
@brendanclement
brendanclement force-pushed the brendanclement/oss-2189-enable-fragment-reuse-index-even-when-srid-is-enabled branch from 6222bf0 to a70d498 Compare September 18, 2026 16:34
@github-actions github-actions Bot added the A-docs Documentation label Sep 18, 2026
@lance-gatekeeper lance-gatekeeper Bot removed the K-changes Latest Gatekeeper recommendation requests changes. label Sep 18, 2026
Comment thread docs/src/guide/performance.md Outdated
@westonpace westonpace added the format-waived Author attests no format vote is needed label Sep 18, 2026
lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added the K-changes Latest Gatekeeper recommendation requests changes. label Sep 18, 2026
@brendanclement
brendanclement force-pushed the brendanclement/oss-2189-enable-fragment-reuse-index-even-when-srid-is-enabled branch from a70d498 to 09c42ce Compare September 18, 2026 17:57
@lance-gatekeeper lance-gatekeeper Bot removed the K-changes Latest Gatekeeper recommendation requests changes. label Sep 18, 2026
lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added the K-approved Latest Gatekeeper recommendation permits acceptance. label Sep 18, 2026
@lance-gatekeeper lance-gatekeeper Bot added K-approved Latest Gatekeeper recommendation permits acceptance. and removed K-approved Latest Gatekeeper recommendation permits acceptance. labels Sep 18, 2026
@brendanclement
brendanclement force-pushed the brendanclement/oss-2189-enable-fragment-reuse-index-even-when-srid-is-enabled branch from 09c42ce to ad7e62a Compare September 18, 2026 18:32
@lance-gatekeeper lance-gatekeeper Bot removed the K-approved Latest Gatekeeper recommendation permits acceptance. label Sep 18, 2026
lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added the K-changes Latest Gatekeeper recommendation requests changes. label Sep 18, 2026
@brendanclement
brendanclement force-pushed the brendanclement/oss-2189-enable-fragment-reuse-index-even-when-srid-is-enabled branch from ad7e62a to 7513ebf Compare September 18, 2026 19:41
@lance-gatekeeper lance-gatekeeper Bot removed the K-changes Latest Gatekeeper recommendation requests changes. label Sep 18, 2026
lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added the K-approved Latest Gatekeeper recommendation permits acceptance. label Sep 18, 2026
@brendanclement
brendanclement force-pushed the brendanclement/oss-2189-enable-fragment-reuse-index-even-when-srid-is-enabled branch from 7513ebf to 662da11 Compare September 18, 2026 21:13
On a stable-row-id dataset most indices store stable row ids, which a
fragment reuse index must not remap: stable ids start at 0 and collide
with fragment 0's row addresses. Index loading, merging and building now
hand the fragment reuse index only to indices that store row addresses.
Cleanup and remap_column_index treat stable-id indices as needing only
their fragment coverage repaired, and the manifest build derives the
FLAG_FRAG_REUSE_WITH_STABLE_ROW_IDS compatibility flag, which this build
now supports.

A JSON index answers in its target's domain; both domain predicates now
follow the target, and malformed JSON details are an error rather than a
guess. Under stable row ids the rewrite branch no longer recalculates the
fragment reuse index's own coverage, which the eager path never touched.
Compaction with defer_index_remap no longer rejects stable row ids. The
row addresses the fragment reuse index records are derived from the
fragment metadata (every physical row minus the deletion vector), which
is what the scan yields without stable row ids, while the row id
sequences are rechunked as before.

Closes lance-format#8977
@lance-gatekeeper lance-gatekeeper Bot removed the K-approved Latest Gatekeeper recommendation permits acceptance. label Sep 18, 2026
lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added the K-approved Latest Gatekeeper recommendation permits acceptance. label Sep 18, 2026
@brendanclement
brendanclement force-pushed the brendanclement/oss-2189-enable-fragment-reuse-index-even-when-srid-is-enabled branch from 662da11 to 670460d Compare September 18, 2026 21:21
@lance-gatekeeper lance-gatekeeper Bot removed the K-approved Latest Gatekeeper recommendation permits acceptance. label Sep 18, 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.

This revision rebases the same change series onto the updated base. The feature-flag integration preserves the newly reserved tagged-FRI bit as unsupported while enabling stable-row-ID FRI; the focused feature-flag suite passes, and the prior FRI correctness evidence remains valid.

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

Labels

A-docs Documentation A-format On-disk format: protos and format spec docs A-index Vector index, linalg, tokenizer A-python Python bindings enhancement New feature or request format-change A change to the format spec, which requires a vote. Remove if minor (e.g. fixing typo). format-waived Author attests no format vote is needed K-approved Latest Gatekeeper recommendation permits acceptance.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants