graphprotocol / graphprotocol/graph-node
[Bug] Ordering by children can be nondeterministic
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Rust
- Star
- 3.2k
- Fork
- 1.1k
- Merge trung bình
- 4 ngày 1 giờ
- Pull request đã merge (30 ngày)
- 1
Mô tả
Bug report
With a schema like
type Parent @entity {
id: Bytes!
child: Child!
}
type Child @entity {
id: Bytes!
}
the result for a query like
query { parents(orderBy: child__id) } { id } }
is nondeterministic if multiple parents point to the same child. To make this entirely clear, assume there is only one instance of Child. The SQL query that gets generated is roughly
select *
from parent p
left join child c on (c.id = p.child)
where ...
order by c.id
But when multiple rows in p have the same p.child, that ordering is ill-defined. We'd need to change that to order by c.id, p.id to make that deterministic.
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.
Hướng nghiên cứu
Issue không nêu tên file hoặc test nào. Hãy tái hiện truy vấn GraphQL với nhiều parent cùng trỏ đến một child, kiểm tra thứ tự của SQL được sinh ra và lần theo entry point của quá trình tạo truy vấn chịu trách nhiệm sắp xếp theo child__id. Hoàn thành khi các kết quả tương đương là xác định trong trường hợp các giá trị child được join bị hòa, đồng thời vẫn giữ thứ tự được yêu cầu.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- graphql, rust, sql
- Lĩnh vực
- backend-api-design, databases
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 42/100