apache / apache/iceberg-python
Delete/Overwrite/Upsert with string key containing dot (.) hangs indefinitely
- Vorherrschende Sprache
- Python
- Sterne
- 1.1k
- Forks
- 581
- Ø Merge
- 1 T. 17 Std.
- Gemergte PRs (30 T.)
- 77
Beschreibung
### Apache Iceberg version
None
### Please describe the bug 🐞
### Description
Any operation that rewrites data (delete/ overwrite/ upsert) is extremely slow or unresponsive, even on very small tables. Appending rows works as expected.
### Steps to Reproduce
```
from pyiceberg.schema import Schema
from pyiceberg.types import NestedField, StringType
import pyarrow as pa
# Create table
schema = Schema(
NestedField(field_id=1, name="load_id", field_type=StringType(), required=True),
NestedField(field_id=2, name="status", field_type=StringType(), required=True),
identifier_field_ids=[1],
)
catalog.create_table(identifier="test.test_load", schema=schema)
tbl = catalog.load_table("test.test_load")
df = pa.Table.from_pylist(
[
{"load_id": "123.123", "status": "started"},
{"load_id": "456.456", "status": "done"},
],
schema=tbl.schema().as_arrow(),
)
tbl.append(df)
# Delete with dot in string key → hangs indefinitely
tbl.delete(delete_filter="load_id == '123.123'")
```
### Observed Behavior
- append: completes quickly.
- delete with string containing dot (e.g., "123.123"): runs indefinitely or takes 10+ minutes without returning a response.
- overwrite and upsert with string containing dot: same behavior — operation never completes or is extremely slow.
### Environment
- PyIceberg version: `0.10.0`
- Catalog: `REST`
- Python version: `3.12`
- Storage: `AWS S3 tables`
### 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
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginnen Sie damit, die bereitgestellte Python-Reproduktion für die PyIceberg-Tabelle auszuführen, und verfolgen Sie den Einstiegspunkt tbl.delete mit dem Filter load_id == '123.123'. Vergleichen Sie das Verhalten von delete, overwrite und upsert mit und ohne Punkt; abgeschlossen ist die Aufgabe, wenn diese Operationen für String-Schlüssel, die Punkte enthalten, zügig abgeschlossen werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- aws, python
- Bereich
- data-engineering, databases
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 55/100