[Bug] ORCA: "bogus index qualification" when a filter on an INCLUDE-only index column is pushed into the index qual
Maintainer thường phản hồi trong vòng 2 ngày
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
Tái hiện lỗi bằng ví dụ SQL, sau đó đọc nodeIndexscan.c quanh dòng 1249 và so sánh đầu ra ORCA EXPLAIN khi optimizer bị vô hiệu hóa. Bản sửa hoàn tất khi bộ lọc INCLUDE-only-column không còn gây ra điều kiện chỉ mục không hợp lệ và truy vấn trả về hai hàng như mong đợi với cả hai thiết lập optimizer.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Apache Cloudberry version
main branch (recent build)
What happened
With ORCA enabled, a query filtering on a column that is only an INCLUDE column of an index fails at execution time with an internal error:
ERROR: bogus index qualification (nodeIndexscan.c:1249)
ORCA generates an index scan on bogus_i and pushes c1 into the index qualification (EXPLAIN shows Index Cond: (c1 = true)), but c1 is a non-key INCLUDE column and ExecIndexBuildScanKeys rejects it. Line number is from current main. With optimizer = off the query returns the correct 2 rows.
Found by SQLancer.
What you think should happen instead
The query should return the two rows where c1 is true, with either optimizer.
How to reproduce
CREATE TABLE bogus_t (c0 boolean, c1 boolean);
CREATE INDEX bogus_i ON bogus_t (c0) INCLUDE (c1);
INSERT INTO bogus_t VALUES (true, true), (false, true), (true, false);
SET optimizer = on;
SELECT * FROM bogus_t WHERE c1;
-- ERROR: bogus index qualification (nodeIndexscan.c:1249)
SET optimizer = off;
SELECT * FROM bogus_t WHERE c1;
-- 2 rows
Operating System
Linux
Anything else
Found while running SQLancer against Cloudberry main (3-segment demo cluster, --enable-cassert). See the proposal to run SQLancer continuously: https://github.com/apache/cloudberry/discussions/1952
Are you willing to submit PR?
- Yes, I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
- Ngôn ngữ chính
- C
- Star
- 1.4k
- Fork
- 248
- Merge trung bình
- 4 ngày 17 giờ
- Pull request đã merge (30 ngày)
- 39
Chuẩn bị môi trường
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/cloudberry
-
type: Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
apache/cloudberry#1885 · 2 reaction ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
apache/cloudberry#1825 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
type: Bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 65/100
apache/cloudberry#2048 · 5 bình luận · 1 reaction · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
-
type: Bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 40/100
apache/cloudberry#2047 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
-
type: Bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
apache/cloudberry#2046 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của apache/cloudberry
Issue tương tự
-
Add c++23 mapping to nvccĐang mởfeature request
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
FujiNetWIFI/fujinet-firmware#1730 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
-
[openssl] update to 3.6.5Đang mởcategory:port-update
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 2 ngày