[Bug] Deleted rows take vector search top-k slots in data-evolution tables
Maintainer thường phản hồi trong vòng 3 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
- 57/100
Hướng nghiên cứu
Start with LiveRowGlobalIndexReader::VisitVectorSearch and compare its vector path with the full-text path that loads live rows before searching shards. The issue suggests combining VectorSearch.pre_filter with shard live rows through ReplacePreFilter, using GlobalIndexLiveRowFilter::LiveRows, or loading live rows before fan-out. Add coverage for the reproduction with three deleted nearest rows and verify that a limit of 3 returns 3 live rows when enough matches pass the filters.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Search before asking
- I searched in the issues and found nothing similar.
Paimon-cpp version
main at commit 50ef548ec87cc444a153fb2a03789f9be768d610, with #448 applied.
Minimal reproduce step
- Create a data-evolution table with row tracking and
deletion-vectors.enabled = true. Write 10 rows with a vector column, then build a vector global index on that column. - Delete the three rows nearest to a query vector, using deletion vectors.
- Search for that vector with
limit = 3throughGlobalIndexScan::CreateReader→VisitVectorSearch. - Pass the result to
ScanContextBuilder::SetGlobalIndexResult, then scan and read.
What doesn't meet your expectations?
The index still ranks the deleted rows, so they take all three top-k slots. The read then drops them, because deletion vectors are applied only at read time. The query returns 0 rows instead of 3.
#448 (for #403) excludes deleted rows only from full-text ranking: LiveRowGlobalIndexReader::VisitVectorSearch delegates unchanged, and live rows are loaded only before a full-text search fans out to the shards. Java filters vector search with the same live rows (apache/paimon#8459).
Expected: limit = k returns k live rows whenever at least k live rows pass the search's pre_filter and predicate.
Anything else?
Follow-up of #403 / #448.
Suggestions:
VectorSearchalready carries apre_filterover global row ids, soLiveRowGlobalIndexReader::VisitVectorSearchcan combine it with the live rows of the shard throughReplacePreFilter, reusingGlobalIndexLiveRowFilter::LiveRows, and pass the search on unchanged when the whole shard is live.- Load live rows on the visiting thread before a vector search fans out to the shards, as
LiveRowUnionGlobalIndexReaderdoes for full-text search.
Are you willing to submit a PR?
- I'm willing to submit a PR!
- Ngôn ngữ chính
- C++
- Star
- 70
- Fork
- 36
- Merge trung bình
- 3 ngày 16 giờ
- Pull request đã merge (30 ngày)
- 38
Chuẩn bị môi trường
- 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/paimon-cpp
-
[Feature] Split the table hierarchy and materialize the store a table is served byCó thể đã có người làm @lucasfang đã nhận 6 ngày trước. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
apache/paimon-cpp#459 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
[Feature] Support hybrid file-index queries with full-text search, vector search, and predicateĐang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
apache/paimon-cpp#452 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 8/100
apache/paimon-cpp#435 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
apache/paimon-cpp#410 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
apache/paimon-cpp#409 ·
Maintainer thường phản hồi trong vòng 3 ngày
Tất cả issue của apache/paimon-cpp
Issue tương tự
-
Rifle-variant weapon offsets are saved under the pistol's name [FRIK-093]Có thể đã có người làm @rollingrock đã nhận hôm nay. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
rollingrock/Fallout-4-VR-Body#182 ·
-
[Bug] [Go] Ack returns nil when the server answers with a non-OK statusCó thể đã có người làm @leizhiyuan đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
apache/rocketmq-clients#1465 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 68/100
cp-algorithms/cp-algorithms#1738 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
KhronosGroup/Vulkan-Tutorial#534 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 2 ngày