apache / apache/iceberg-python

Delete/Overwrite/Upsert with string key containing dot (.) hangs indefinitely

Đang mở
#2,512 3 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
1.1k
Fork
581
Merge trung bình
1 ngày 17 giờ
Pull request đã merge (30 ngày)
78

Mô tả

### 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

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu bằng cách chạy bản tái hiện Python được cung cấp trên bảng PyIceberg và theo dõi điểm vào tbl.delete với bộ lọc load_id == '123.123'. So sánh hành vi của delete, overwrite và upsert khi có và không có dấu chấm; được xem là hoàn tất khi các thao tác này hoàn thành nhanh chóng đối với các khóa chuỗi chứa dấu chấm.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
aws, python
Lĩnh vực
data-engineering, databases
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.