lance-format / lance-format/lance
bug: compaction fails determinstically on a very small-fragment dataset
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 7.1k
- Forks
- 852
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 272
Description
Description
Invalid user input: projection supplied fewer column indices than its fields require (ran out at field '..'), at rust/lance-file/src/versions/v2_0/reader.rs:249:13. The dataset is a case of 1 row-per-fragment, and everycompaction fails within ~1.5 seconds, so the fragmentation continues. The error originates in validate_field_length, which walks the projected schema and consumes one entry from the projection's column_indices per value-bearing field; for at least one data file in the dataset, the projection supplies fewer column indices than the schema walk requires, running out at the field named in the error. Working hypothesis is a schema-evolution mismatch: some fragments' data files were written under an earlier schema (before a later-added column), and the ReaderProjection built from the current dataset schema doesn't line up with those files' physical column layout. Observing this on both lance 11.0.0-beta.22 and 12.0.0-beta.16.
Steps to reproduce
Can work to provide the offending data set
Expected behavior
No response
Lance version
11.0.0-beta.22
Language binding
Rust
Environment
No response
Logs / traceback
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The failure is reported at rust/lance-file/src/versions/v2_0/reader.rs:249:13, in validate_field_length; first obtain the offending one-row-per-fragment dataset and reproduce compaction. Compare the ReaderProjection with the affected data file's schema and physical layout, then verify compaction completes without the projection error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- data-engineering
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 42/100