bug(python): read_transaction raises TypeError on a Rewrite with rewritten indices
I maintainer di solito rispondono entro 2 giorni
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 75/100
Direzione di ricerca
Inizia in python/src/transaction.rs a impl IntoPyObject for PyLance<&RewrittenIndex>; passa solo gli ID dell'indice vecchio e nuovo. Confronta la dataclass LanceOperation.RewrittenIndex e l'implementazione FromPyObject corrispondente, che legge tutti e cinque i campi, quindi aggiorna la conversione per fornire i tre mancanti. Riproduci con lo snippet dell'issue dopo la ricompilazione, oppure esegui i test delle transazioni Python; fatto significa che read_transaction riesce per una compaction indicizzata BTREE e i dati dell'indice riscritti completano un round-trip.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug
LanceDataset.read_transaction raises TypeError on a Rewrite that rewrote an index, for example a compaction of a stable-row-id table that has a BTREE index.
import tempfile, lance, pyarrow as pa
uri = tempfile.mkdtemp()
ds = lance.write_dataset(pa.table({"id": pa.array(range(64), pa.int64())}), uri,
enable_stable_row_ids=True, max_rows_per_file=16)
ds.create_scalar_index("id", "BTREE")
ds.optimize.compact_files(target_rows_per_fragment=64)
ds = lance.dataset(uri)
ds.read_transaction(ds.version)
# TypeError: LanceOperation.RewrittenIndex.__init__() missing 3 required positional
# arguments: 'new_details_type_url', 'new_details_value', and 'new_index_version'
Observed on pylance 14.0.3 (PyPI, aarch64 Linux, Python 3.13). The same code is on main (a33c468).
Cause
impl IntoPyObject for PyLance<&RewrittenIndex> in python/src/transaction.rs calls the class with (old_id, new_id) only. The LanceOperation.RewrittenIndex dataclass requires five fields, and the matching FromPyObject impl already reads all five.
With BITMAP, LABEL_LIST, INVERTED or no index the same compaction's transaction reads back, because its rewritten_indices is empty.
Impact
Any reader of a compaction commit's transaction fails on such a table. That includes a catalog that judges staged commits under managed versioning, and anything that walks read_transaction over a table's history.
- Lingua principale
- Rust
- Stelle
- 7.3k
- Fork
- 929
- Merge medio
- 2g 22h
- PR unite (30g)
- 572
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di lance-format/lance
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
lance-format/lance#10782 ·
I maintainer di solito rispondono entro 2 giorni
-
Upgrade DataFusion for the unparser stack-overflow fixForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
lance-format/lance#8225 ·
I maintainer di solito rispondono entro 2 giorni
-
enhancement
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
lance-format/lance#6425 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
Expose compute_pq_distanceForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertaenhancement
Difficoltà 1/5 1-3 ore Idoneità per principianti 62/100
lance-format/lance#5675 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
documentation
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
lance-format/lance#5240 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di lance-format/lance
Issue simili
-
comp-rbac
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
ClickHouse/ClickHouse#131875 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
storytold/photocraft#15232 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
forge: fork preflight reads still send `requireCanonical: false`, which Rootstock rejects (-32603)Forse già presa @Ynyesto l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
foundry-rs/foundry#18485 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
bondybondbond/rushcut#238 · 1 commento ·
-
area: app type: bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno