graphprotocol / graphprotocol/graph-node

[Bug] Ordering by children can be nondeterministic

Offen
#5,359 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug Stale
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.