NUMERIC reads: full digits arrive, the decode drops them
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 52/100
Hướng nghiên cứu
Bắt đầu tại src/crate/client/http.py ở dòng 244 và tái hiện ví dụ NUMERIC với CrateDB 6.4.2. So sánh việc giải mã orjson hiện tại với stdlib json.loads bằng cách sử dụng parse_float=Decimal, sau đó xác định cách một tùy chọn kết nối nên cung cấp các lần đọc số chính xác trong khi vẫn giữ nguyên hành vi float hiện có; được xem là hoàn tất khi các chữ số được báo cáo được giữ lại và tùy chọn được bao phủ bằng việc kiểm tra.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
The read-side follow-up promised in crate/sqlalchemy-cratedb#300, with the measurement #652 was missing. As @matriv said there, the full number reaches the client; the digits are dropped by this driver's decode.
On CrateDB 6.4.2, with 1.234567890123456789012345 stored in a NUMERIC(38, 24) column, the raw /_sql response carries every digit:
{"cols":["n"],"rows":[[1.234567890123456789012345]],"rowcount":1,"duration":105.078}
cursor.fetchone()[0] on the same query returns 1.2345678901234567, a float. The response is decoded with orjson.loads (http.py line 244), which parses every JSON number to a float64 and has no parse_float hook; stdlib json.loads(raw, parse_float=Decimal) on those bytes returns Decimal('1.234567890123456789012345').
Writes are already exact, since Decimal goes out as a string (#751). A stdlib decode with parse_float=Decimal would make reads match, but it changes the returned type for every float column and gives up orjson's speed, so it likely wants to be a connection option rather than the default.
- Ngôn ngữ chính
- Python
- Star
- 85
- Fork
- 34
- Merge trung bình
- 3 ngày 1 giờ
- Pull request đã merge (30 ngày)
- 4
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của crate/crate-python
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
crate/crate-python#794 · 2 bình luận ·
-
enhancement
crate/crate-python#833 · 1 người được giao ·
-
Add async/asyncio support Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
crate/crate-python#820 · 1 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
crate/crate-python#751 · 7 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
crate/crate-python#729 · 1 bình luận ·
Tất cả issue của crate/crate-python
Issue tương tự
-
bug confirmed issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
open-webui/open-webui#30750 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100