`older_than` reads a naive datetime as UTC and expires snapshots it should keep
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
Direzione di ricerca
Parti da older_than e segui il modo in cui converte il limite con datetime_to_millis; il riproduttore dell’issue mostra il risultato errato per un datetime locale naive. Controlla i test di scadenza esistenti e aggiungi un caso con un fuso orario diverso da UTC insieme al riproduttore fornito. Il lavoro è completato quando i limiti locali naive mantengono gli snapshot previsti a est e a ovest di UTC, mentre i datetime aware continuano a funzionare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Apache Iceberg version
0.12.0 (latest release)
Please describe the bug 🐞
Currently, older_than converts its cutoff with datetime_to_millis, which takes a naive datetime as UTC, so in Tokyo the docs' older_than(datetime.now() - timedelta(days=3)) keeps only 63 hours of snapshots. An aware datetime is read correctly.
import os, time, tempfile
os.environ["TZ"] = "Asia/Tokyo" # UTC+9, any zone east of UTC does it
time.tzset()
from datetime import datetime, timedelta
import pyarrow as pa
from pyiceberg.catalog.sql import SqlCatalog
cat = SqlCatalog("c", uri="sqlite:///:memory:", warehouse=f"file://{tempfile.mkdtemp()}")
cat.create_namespace("ns")
t = cat.create_table("ns.t", schema=pa.schema([("x", pa.int64())]))
for x in (1, 2, 3):
t.append(pa.table({"x": [x]}))
t.maintenance.expire_snapshots().older_than(datetime.now() - timedelta(hours=1)).commit()
print(len(cat.load_table("ns.t").snapshots()))
# 1, should be 3
# all three snapshots are seconds old, so none is older than an hour
West of UTC the cutoff lands early instead, so it keeps snapshots it should expire.
tested on pyiceberg 0.12.0 and main
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
- Lingua principale
- Python
- Stelle
- 1.2k
- Fork
- 654
- Merge medio
- 2g 11h
- PR unite (30g)
- 122
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna 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-python
-
`inspect.files()` and the other file metadata tables raise `ArrowInvalid` when a snapshot has no manifestsForse già presa @YuangGao l’ha presa 10 giorni fa. Apertakind:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/iceberg-python#4269 ·
I maintainer di solito rispondono entro 1 giorno
-
`inspect.entries()` raises TypeError when a data file has no column_sizesForse già presa @Rahul-cs50 l’ha presa 14 giorni fa. Apertakind:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/iceberg-python#4186 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
REST: Send empty first-page pageToken when rest-page-size is setForse già presa @ehddnr301 l’ha presa 32 giorni fa. Apertakind:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
apache/iceberg-python#4096 ·
I maintainer di solito rispondono entro 1 giorno
-
PyArrowFileIO: every small S3 write is a 3-request multipart upload; expose allow_delayed_openForse già presa @David-Banquet l’ha presa 29 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
apache/iceberg-python#4093 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
apache/iceberg-python#4010 · 4 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/iceberg-python
Issue simili
-
Unknown stop ID in slow zone data crashes post formatting and skips the rest of that day's postsApertabackend bug tm-new-volunteer
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
transitmatters/mbta-slow-zone-bot#81 · 1 commento ·
-
area:schema documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
risk:high type:ci
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
spacetelescope/rdmt-spire#49 ·
I maintainer di solito rispondono entro 1 giorno