Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Bug] Store limit dedup emits duplicates on id-only scans because ProjectionStage mutates the stored column

Đã đóng Phù hợp với người mới
#3,407 0 bình luận 1 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Một pull request liên quan đã được merge.

  • #3408 của @vaidikgarg-bit — đã merge

Đá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
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
java, postgresql
Lĩnh vực
backend, databases

Hướng nghiên cứu

Bắt đầu từ nhánh BACKEND_COLUMN trong ProjectionStage.java và theo dõi cách MapLimitIterator lưu trữ và xuất các cột trong quá trình PRIMARY_SCAN chỉ theo id với LIMIT_DEDUP. Triển khai việc thay thế cột được đề xuất và thêm một bài kiểm thử hồi quy chiếu từng hàng được xuất trước khi đọc hàng tiếp theo. Hoàn tất khi các hàng giống nhau từng byte vẫn được khử trùng lặp sau khi chiếu; issue báo cáo 100 hàng khi không có thay đổi và 200 hàng khi có thay đổi.

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

Mô tả

In the review of #3404, @bitflicker64 found that MapLimitIterator keeps each emitted RocksDBSession.BackendColumn in its dedup set and passes the same object downstream. On an id-only PRIMARY_SCAN (null_property = true, no property list, condition, order-by or aggregation) with dedup_option = LIMIT_DEDUP, ProjectionStage.handle() then sets column.value = new byte[0] in place (ProjectionStage.java, the BACKEND_COLUMN branch). The stored key changes after insertion, so it no longer equals a later byte-equal row, and the duplicate is emitted again. Their probe gave 100 rows without the reset and 200 with it.

Only a gRPC client that sets dedup_option reaches this today, since StoreQueryParam fixes it to NONE.

Proposed fix: have ProjectionStage replace the column instead of mutating it (result.setColumn(BackendColumn.of(column.name, new byte[0]))), plus a regression test that runs each emitted row through the projection before reading the next. I'd like to work on this.

Ngôn ngữ chính
Java
Star
3.2k
Fork
642
Merge trung bình
1 ngày 7 giờ
Pull request đã merge (30 ngày)
122

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/hugegraph

Tất cả issue của apache/hugegraph

Issue tương tự

Thêm issue về Java

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.