REST create_table omits partition spec-id; Java-based servers (Polaris) reject it
I maintainer di solito rispondono entro 3 giorni
@ninglinLiu ci sta già lavorando.
Dal 25/10/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 66/100
Direzione di ricerca
Inizia da RestCatalog::create_table e controlla come UnboundPartitionSpec serializza il suo spec id opzionale, poiché il bug consiste nel fatto che il campo viene omesso quando non è impostato. Controlla il body serializzato di CreateTableRequest per una partition spec senza chiamata a with_spec_id. È completato quando uno spec id non impostato viene inviato come spec-id: 0 e un test verifica quel body, con il repro di Polaris dell'issue come conferma manuale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Apache Iceberg Rust version
0.10.1 (also present on main at 3bb8167)
Describe the bug
RestCatalog::create_table serializes the partition spec without spec-id when the UnboundPartitionSpec has none set. Since #2610, unset ids are omitted rather than sent as null.
Servers that parse the request with Iceberg Java's PartitionSpecParser require spec-id. For example, Apache Polaris 1.3.0 rejects the request with a bare HTTP 400 Bad Request (WebApplicationException) and logs nothing that points to the cause. Building the spec with .with_spec_id(0) makes the same request succeed.
#2702 notes the same parser behaviour for TableUpdate::AddSpec on the commit path. The create-table path hits it too.
To Reproduce
- Start Polaris 1.3.0 (in-memory persistence, bootstrap credentials) with an internal catalog.
- Create a table through
RestCatalogwith a partition spec built byUnboundPartitionSpec::builder().add_partition_field(...), withoutwith_spec_id. - Polaris answers 400.
The same request body replayed with curl:
"partition-spec": {"fields": [{"source-id": 27, "name": "receive_day", "transform": "day"}]}returns 400."partition-spec": {"spec-id": 0, "fields": [...]}returns 200.- Adding a
field-idwithoutspec-idstill returns 400.
Expected behavior
A table created through the REST catalog with an unbound partition spec is accepted by Java-based REST servers. One option is to send spec-id: 0 in CreateTableRequest when it is unset, since a new table's first spec is always 0.
Willingness to contribute
Happy to test a fix against Polaris.
AI disclosure: drafted with an AI coding assistant; reproduced and verified by me.
- Lingua principale
- Rust
- Stelle
- 1.4k
- Fork
- 612
- Merge medio
- 4g 6h
- PR unite (30g)
- 83
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un 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 apache/iceberg-rust
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
apache/iceberg-rust#3551 ·
I maintainer di solito rispondono entro 3 giorni
-
V1 manifest lists written by Java lose added/existing/deleted file countsForse già presa @kacper-li-airspace-intelligence l’ha presa 15 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/iceberg-rust#3445 ·
I maintainer di solito rispondono entro 3 giorni
-
Rename position delete index to clarify referenced data file keyForse già presa @dragonknightk l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
apache/iceberg-rust#3359 ·
I maintainer di solito rispondono entro 3 giorni
-
Row filter keeps every row for `<` and `<=` on a null column that is missing from the data fileForse già presa @mattfaltyn l’ha presa 7 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
apache/iceberg-rust#3355 · 1 reazione ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/iceberg-rust#3348 ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di apache/iceberg-rust
Issue simili
-
area: library data-loss type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
alplabai/signex#1740 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
test(fslc): the unreadable mutate catalog test pins the Unix I/O error text and fails on WindowsForse già presa @rizumita l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
I maintainer di solito rispondono entro 1 giorno
-
ServerProperties defaults white-list to true, so a fresh --dedicated server silently locks itselfAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
horizon-rust/horizon#3888 ·
I maintainer di solito rispondono entro 1 giorno
-
refactor
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno