graphprotocol / graphprotocol/graph-node

[Bug] Ordering by children can be nondeterministic

Ouverte
#5,359 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug Stale
Langage dominant
Rust
Étoiles
3.2k
Forks
1.1k
Merge moyen
4 j 1 h
PR mergées (30 j)
1

Description

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.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Aucun fichier ni test n’est nommé dans l’issue. Reproduisez la requête GraphQL avec plusieurs parents pointant vers un enfant, examinez l’ordre du SQL généré et suivez le point d’entrée de la génération de requête responsable du tri par child__id. C’est terminé lorsque les résultats équivalents sont déterministes lorsque les valeurs de l’enfant joint sont à égalité, tout en préservant l’ordre demandé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
graphql, rust, sql
Domaine
backend-api-design, databases
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
42/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.