Skip to content

refactor: make index file versions exact - #8028

Merged
Xuanwo merged 40 commits into
mainfrom
xuanwo/exact-version-stack-11-index-consumers
Aug 11, 2026
Merged

refactor: make index file versions exact#8028
Xuanwo merged 40 commits into
mainfrom
xuanwo/exact-version-stack-11-index-consumers

Conversation

@Xuanwo

@Xuanwo Xuanwo commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Part 11/12 of #7877. Depends on #8027.

This is an independently reviewable step toward the final layout demonstrated in #7979.

This PR converts scalar and vector index readers, writers, shufflers, and distributed mergers to exact ConcreteFileVersion identities. Dataset-backed indexes inherit the dataset format explicitly; legacy dataset physical indexes map explicitly to V2.0.

With the last transitional consumers migrated, this PR removes file-version ordering and implicit conversions between selectors and exact formats. Remaining version decisions are exhaustive matches at declared boundaries rather than >=, max, or selector round-trips.

Validation:

  • index format inheritance tests
  • legacy dataset physical-index format test
  • V3 shuffler tests
  • cargo clippy --all --tests --benches -- -D warnings
  • Python and Java binding checks

Xuanwo added 28 commits July 21, 2026 16:47
…mat-identity

# Conflicts:
#	rust/lance-file/src/reader.rs
#	rust/lance/src/dataset/transaction.rs
…o xuanwo/exact-version-stack-09-selector-ownership
…xuanwo/exact-version-stack-10-dataset-operations
…xuanwo/exact-version-stack-11-index-consumers
@github-actions github-actions Bot added A-python Python bindings A-index Vector index, linalg, tokenizer labels Jul 27, 2026
@github-actions github-actions Bot added A-java Java bindings + JNI A-encoding Encoding, IO, file reader/writer labels Jul 27, 2026
Xuanwo added 8 commits August 8, 2026 02:00
…stack-10-dataset-operations

# Conflicts:
#	rust/lance-encoding/benches/common/mod.rs
#	rust/lance-encoding/src/array_encoding/physical/bitpack.rs
#	rust/lance-encoding/src/array_encoding/physical/fixed_size_binary.rs
#	rust/lance-encoding/src/array_encoding/strategy.rs
#	rust/lance-encoding/src/compression.rs
#	rust/lance-encoding/src/encoder.rs
#	rust/lance-encoding/src/encodings/logical/primitive.rs
#	rust/lance-encoding/src/encodings/logical/primitive/sparse/writer.rs
#	rust/lance-encoding/src/lib.rs
#	rust/lance-encoding/src/testing.rs
#	rust/lance-file/src/reader.rs
#	rust/lance-file/src/version.rs
#	rust/lance-file/src/versions/mod.rs
#	rust/lance-file/src/versions/v1/encoding/plain.rs
#	rust/lance-file/src/versions/v1/mod.rs
#	rust/lance-file/src/versions/v2_0/mod.rs
#	rust/lance-file/src/versions/v2_0/reader.rs
#	rust/lance-file/src/versions/v2_0/writer.rs
#	rust/lance-file/src/versions/v2_1/compression.rs
#	rust/lance-file/src/versions/v2_1/mod.rs
#	rust/lance-file/src/versions/v2_2/compression.rs
#	rust/lance-file/src/versions/v2_2/mod.rs
#	rust/lance-file/src/versions/v2_3/compression.rs
#	rust/lance-file/src/versions/v2_3/mod.rs
#	rust/lance-file/src/writer.rs
#	rust/lance-file/src/writer/structural.rs
#	rust/lance-file/src/writer_tests.rs
#	rust/lance-file/test_data/exact_versions/README.md
#	rust/lance-index/src/vector/hnsw/builder.rs
#	rust/lance-index/src/vector/utils.rs
#	rust/lance-table/src/format.rs
#	rust/lance-table/src/format/fragment.rs
#	rust/lance-table/src/format/manifest.rs
#	rust/lance-table/src/io/commit.rs
#	rust/lance/src/dataset.rs
#	rust/lance/src/dataset/builder.rs
#	rust/lance/src/dataset/fragment.rs
#	rust/lance/src/dataset/fragment/write.rs
#	rust/lance/src/dataset/index.rs
#	rust/lance/src/dataset/mem_wal/memtable/flush.rs
#	rust/lance/src/dataset/optimize.rs
#	rust/lance/src/dataset/optimize/binary_copy.rs
#	rust/lance/src/dataset/scanner.rs
#	rust/lance/src/dataset/schema_evolution.rs
#	rust/lance/src/dataset/statistics.rs
#	rust/lance/src/dataset/tests/dataset_index.rs
#	rust/lance/src/dataset/tests/dataset_io.rs
#	rust/lance/src/dataset/tests/dataset_merge_update.rs
#	rust/lance/src/dataset/tests/dataset_overlay_index_masking.rs
#	rust/lance/src/dataset/transaction.rs
#	rust/lance/src/dataset/updater.rs
#	rust/lance/src/dataset/versions/mod.rs
#	rust/lance/src/dataset/write.rs
#	rust/lance/src/dataset/write/commit.rs
#	rust/lance/src/dataset/write/insert.rs
#	rust/lance/src/dataset/write/merge_insert.rs
#	rust/lance/src/index/vector/ivf/io.rs
#	rust/lance/src/index/vector/pq.rs
#	rust/lance/src/io/commit.rs
#	rust/lance/src/io/commit/conflict_resolver.rs
…stack-10-dataset-operations

# Conflicts:
#	rust/lance-table/src/io/commit.rs
…stack-10-dataset-operations

# Conflicts:
#	rust/lance/src/dataset/transaction.rs
Base automatically changed from xuanwo/exact-version-stack-10-dataset-operations to main August 11, 2026 06:38
Xuanwo added 3 commits August 11, 2026 15:23
…xuanwo/exact-version-stack-11-index-consumers

# Conflicts:
#	java/lance-jni/src/blocking_dataset.rs
#	rust/lance-file/src/version.rs
@Xuanwo
Xuanwo marked this pull request as ready for review August 11, 2026 08:00

@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 change puts persisted format identity at the correct boundary: dataset and shard metadata now flow as exact versions through index writers and reader dispatch, while legacy V1→V2.0 and the fixed V2.1 two-file shuffle contract remain intact. This is preferable to retaining selector round-trips, which would leave future release-policy aliases able to affect persisted dispatch.

Please mark this PR with the breaking-change label.

@lance-gatekeeper lance-gatekeeper Bot added the K-approved Latest Gatekeeper recommendation permits acceptance. label Aug 11, 2026
…stack-11-index-consumers

# Conflicts:
#	rust/lance-table/src/io/commit/external_manifest.rs
@lance-gatekeeper lance-gatekeeper Bot removed the K-approved Latest Gatekeeper recommendation permits acceptance. label Aug 11, 2026
@Xuanwo
Xuanwo merged commit bd4d8c0 into main Aug 11, 2026
40 checks passed
@Xuanwo
Xuanwo deleted the xuanwo/exact-version-stack-11-index-consumers branch August 11, 2026 09:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-encoding Encoding, IO, file reader/writer A-index Vector index, linalg, tokenizer A-java Java bindings + JNI A-python Python bindings breaking-change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants