`array_concat` with an untyped `NULL` argument fails with "does not support type Int64"
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 80/100
Hướng nghiên cứu
Bắt đầu bằng cách đọc ArrayConcat::coerce_types và ArrayConcat::return_type, đặc biệt là phương án dự phòng coerced_type_with_base_type_only được mô tả trong issue. Tái hiện lỗi bằng SELECT array_concat([1, 2], NULL) trong datafusion-cli, sau đó kiểm tra các bài kiểm thử hiện có về phép nối mảng và trường hợp NULL có kiểu trong #16349. Công việc hoàn tất khi truy vấn có NULL không có kiểu trả về [1, 2] và dạng array_cat được báo cáo được kiểm thử.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
array_concat / array_cat fails to plan when one of the arguments is a plain NULL literal, and the error message names the element type of the other argument:
> SELECT array_concat([1, 2], NULL);
Error during planning: array_concat does not support type Int64
> SELECT array_cat(NULL, [1, 2]);
Error during planning: array_concat does not support type Int64
The same calls work when the NULL is typed (NULL::int[]) or when a NULL appears inside a list, so this is only the untyped literal:
> SELECT array_concat([1, 2], NULL::int[]);
[1, 2]
> SELECT array_concat([1, 2], [NULL]);
[1, 2, NULL]
ArrayConcat::return_type accepts DataType::Null arguments, but ArrayConcat::coerce_types runs every argument through coerced_type_with_base_type_only, whose fallback arm replaces a non-list type with the base type. The Null argument therefore becomes Int64, and the second return_type call rejects it.
To Reproduce
In datafusion-cli:
SELECT array_concat([1, 2], NULL);
SELECT array_cat(NULL, [1, 2]);
SELECT array_concat(['a'], NULL);
Expected behavior
The untyped NULL is treated like a NULL list of the result type and the other arguments are returned, matching PostgreSQL (array_cat(ARRAY[1, 2], NULL) is {1,2}) and the typed-NULL behavior above:
> SELECT array_concat([1, 2], NULL);
[1, 2]
Additional context
Reproduced on main at 6663e4348 (debug build of datafusion-cli).
#16349 covered NULL::int[] arguments; this is the remaining untyped case. I would like to work on this.
- Ngôn ngữ chính
- Rust
- Star
- 9.4k
- Fork
- 2.5k
- Merge trung bình
- 4 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 329
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc 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 apache/datafusion
-
bug help wanted unparser
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
apache/datafusion#26316 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Deduplicate bucket computation in width_bucket_interval_mdn_exactCó thể đã có người làm @nightcityblade đã nhận hôm nay. Đang mởenhancement good first issue help wanted spark tech debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
apache/datafusion#26307 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Use the shared aggr_test_schema in CSV scan tests instead of a local copyCó thể đã có người làm @med9110 đã nhận hôm nay. Đang mởcore enhancement good first issue help wanted tech debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
apache/datafusion#26306 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
gcd benchmarks pass number_rows: 0 for 100k-row inputsCó thể đã có người làm @med9110 đã nhận hôm nay. Đang mởbug functions good first issue help wanted tech debt
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
apache/datafusion#26297 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Struct union type coercion takes field nullability from the wrong field when field order differsCó thể đã có người làm @med9110 đã nhận hôm nay. Đang mởbug help wanted logical-expr tech debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
apache/datafusion#26296 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của apache/datafusion
Issue tương tự
-
Bump anybuf version to ^1.0.0Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
wormhole-foundation/wormhole#5062 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
RUSTSEC-2026-0348: Brotli certificate decompression can allocate up to 1 GiB before authenticationĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 60/100
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 62/100
-
core: Amount::from_str panics on values above 21M BTC instead of returning an errorCó thể đã có người làm @bhuvan-somisetty đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
crate: spate-s3
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày