graphprotocol / graphprotocol/graph-node
[Bug] Ordering by children can be nondeterministic
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Rust
- Sterne
- 3.2k
- Forks
- 1.1k
- Ø Merge
- 4 T. 1 Std.
- Gemergte PRs (30 T.)
- 1
Beschreibung
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.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
In der Issue wird keine Datei und kein Test genannt. Reproduziere die GraphQL-Abfrage mit mehreren Eltern, die auf ein Kind verweisen, untersuche die Sortierung des generierten SQL und verfolge den Einstiegspunkt der Abfragegenerierung, der für die Sortierung nach child__id verantwortlich ist. Als abgeschlossen gilt die Aufgabe, wenn äquivalente Ergebnisse deterministisch sind, sobald die verbundenen Kindwerte gleich sind, und dabei die angeforderte Sortierung erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- graphql, rust, sql
- Bereich
- backend-api-design, databases
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100