REST: Send empty first-page pageToken when rest-page-size is set
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 82/100
Rechercherichtung
Beginne beim REST-Katalog-Paginierungscode für list_tables, list_views und list_namespaces und untersuche anschließend das Query-Parsing des SigV4-Adapters. Sende bei der ersten Anfrage einen leeren pageToken, wenn rest-page-size gesetzt ist, und erhalte im Adapter leere Query-Werte. Überprüfe, dass die Anfrage pageToken= enthält und dass die Paginierung mit einer Seitengröße von 1 funktioniert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Apache Iceberg version
0.12.0 (latest release)
Please describe the bug 🐞
When rest-page-size is set, list_tables, list_views and list_namespaces send pageSize without pageToken on the first request:
GET /v1/namespaces/ns/tables?pageSize=100
The REST spec says servers must return all results in one response when pageToken is not set, and that clients start pagination by sending an empty pageToken (PageToken). So compliant servers ignore rest-page-size, and some servers fail on the request. With tabulario/iceberg-rest:1.6.0 and namespaces a, b, c:
RestCatalog("t", uri=uri).list_namespaces()
# [('a',), ('b',), ('c',)]
RestCatalog("t", uri=uri, **{"rest-page-size": "1"}).list_namespaces()
# ServerError: NumberFormatException: Cannot parse null string
GET /v1/namespaces?pageSize=1 -> 500 NumberFormatException
GET /v1/namespaces?pageSize=1&pageToken= -> {"namespaces": [["a"]], "next-page-token": "1"}
The first request should include pageToken= when rest-page-size is set. The Java client always sends pageToken, starting with an empty value. The SigV4 adapter also needs to keep blank query values, since parse_qsl drops them by default.
rest-page-size was added in #3377. The same error in apache/iceberg-rest-fixture was reported in apache/iceberg#13119.
Willingness to contribute
- I can contribute a fix for this bug independently
- I would be willing to contribute a fix for this bug with guidance from the Iceberg community
- I cannot contribute a fix for this bug at this time
- Vorherrschende Sprache
- Python
- Sterne
- 1.2k
- Forks
- 618
- Ø Merge
- 1 T. 3 Std.
- Gemergte PRs (30 T.)
- 45
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/iceberg-python
-
CLI: --output=json list-refs emits one object per retention property instead of per refEvtl. vergeben @tomron hat das vor 1 Tag übernommen. Offenkind:bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 87/100
apache/iceberg-python#4098 ·
Maintainer antworten meist innerhalb von 1 Tag
-
PyArrowFileIO: every small S3 write is a 3-request multipart upload; expose allow_delayed_openOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
apache/iceberg-python#4093 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
View does not expose metadata_location: RestCatalog.load_view discards it from the server's responseEvtl. vergeben @Soumo-git-hub hat das vor 6 Tagen übernommen. Offenkind:bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
apache/iceberg-python#4073 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
apache/iceberg-python#4010 · 3 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
to_bytes silently rescales a Decimal with a negative scaleEvtl. vergeben @Rodrigo-Palma hat das vor 26 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
apache/iceberg-python#3996 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in apache/iceberg-python
Ähnliche Issues
-
Atomic append fails to create a missing fileEvtl. vergeben @harbinresearcher hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
fabiocaccamo/python-fsutil#201 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
task
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
danparshall/claude_researcher#87 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
GhostManager/Ghostwriter#998 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
datajoint/datajoint-python#1586 ·
Maintainer antworten meist innerhalb von 1 Tag