mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-07-03 02:51:04 +02:00
iss-merge-rowid-overlap-corrupts-filtered-reads / lance#7444: an
update-style merge_insert over a merge-written fragment legally reuses the
updated rows' stable row ids (row-id-lineage spec: updates preserve
_rowid) while the superseded fragment keeps its full sequence plus a
deletion vector. A later delete leaves the overlapping id range sparsely
tiled, and lance-table 7.0.0's RowIdIndex::new asserted dense tiling —
failing every filtered read that builds the id→address map ("Wrong range"
debug assert; "all columns in a record batch must have the same length"
or a silently-wrong batch in release).
The upstream fix (lance#7480, merged 2026-07-01) landed hours AFTER
v8.0.0 was cut, so no release ≤ 8.0.0 carries it. Consume it now as a
vendored pin: vendor/lance-table is the pristine published 7.0.0 source
plus ONLY the #7480 rowids/index.rs hunk (drop the false tiling assert;
hard-error on the true invariant — one live id claimed by two fragments)
and upstream's regression unit test, wired via [patch.crates-io]. The fix
is read-side only, so already-written graphs become readable as-is — no
data repair.
Removal condition (see vendor/lance-table/README.omnigraph.md): drop the
vendor dir + patch entry at the first Lance bump whose lance-table ships
lance#7480 (9.0.0, or a backported 8.0.1). The surface guard
filtered_scan_tolerates_merge_update_row_id_overlap keeps that honest in
both directions.
Turns the previous commit's red tests green. Full workspace gate passes
(cargo test --workspace --locked --no-fail-fast, 68 suites).
80 lines
2 KiB
TOML
80 lines
2 KiB
TOML
[package]
|
|
name = "lance-table"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
authors.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
readme = "README.md"
|
|
description = "Utilities for the Lance table format"
|
|
keywords.workspace = true
|
|
categories.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[dependencies]
|
|
lance-arrow.workspace = true
|
|
lance-core.workspace = true
|
|
lance-file.workspace = true
|
|
lance-io.workspace = true
|
|
arrow.workspace = true
|
|
arrow-array.workspace = true
|
|
arrow-buffer.workspace = true
|
|
arrow-ipc.workspace = true
|
|
arrow-schema.workspace = true
|
|
async-trait.workspace = true
|
|
aws-credential-types = { workspace = true, optional = true }
|
|
aws-sdk-dynamodb = { workspace = true, optional = true, default-features = false, features = ["default-https-client", "rt-tokio"] }
|
|
byteorder.workspace = true
|
|
bytes.workspace = true
|
|
chrono.workspace = true
|
|
deepsize.workspace = true
|
|
futures.workspace = true
|
|
log.workspace = true
|
|
object_store.workspace = true
|
|
prost.workspace = true
|
|
prost-types.workspace = true
|
|
rand.workspace = true
|
|
rangemap.workspace = true
|
|
roaring.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
semver.workspace = true
|
|
snafu.workspace = true
|
|
tokio.workspace = true
|
|
tracing.workspace = true
|
|
url.workspace = true
|
|
uuid.workspace = true
|
|
|
|
[dev-dependencies]
|
|
lance-datagen.workspace = true
|
|
arrow-schema.workspace = true
|
|
criterion.workspace = true
|
|
pretty_assertions.workspace = true
|
|
proptest.workspace = true
|
|
rstest.workspace = true
|
|
|
|
[target.'cfg(target_os = "linux")'.dev-dependencies]
|
|
pprof = { workspace = true }
|
|
|
|
[build-dependencies]
|
|
prost-build.workspace = true
|
|
protobuf-src = { version = "2.1", optional = true }
|
|
|
|
[features]
|
|
dynamodb = ["dep:aws-sdk-dynamodb", "dep:aws-credential-types", "lance-io/aws"]
|
|
protoc = ["dep:protobuf-src"]
|
|
|
|
[package.metadata.docs.rs]
|
|
# docs.rs uses an older version of Ubuntu that does not have the necessary protoc version
|
|
features = ["protoc"]
|
|
|
|
[[bench]]
|
|
name = "row_id_index"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "manifest_intern"
|
|
harness = false
|
|
|
|
[lints]
|
|
workspace = true
|