[Bug]: GraphQL fields listed after a fragment spread are silently dropped
Les mainteneurs répondent en général sous 7 jours
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 76/100
Piste de recherche
Commencez dans src/Core/Resolvers/Sql Query Structures/SqlQueryStructure.cs et lisez AddGraphQLFields, en vous concentrant sur la manière dont les branches de propagation de fragment et de fragment inline traitent les sélections restantes. Vérifiez les tests GraphQL existants pour les sélections de fragments et ajoutez des tests pour les champs qui suivent les deux formes de fragment. Le travail est terminé lorsque les champs scalaires et de relation qui suivent un fragment sont inclus dans la requête SQL et renvoyés, tandis que le comportement existant des fragments continue de fonctionner.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Note: The below was written and discovered by claude but I have independently verified it myself as well.
What happened?
When a selection set contains a fragment spread (or inline fragment), every field listed after it in the same selection set is never added to the SQL query. Those fields come back null with no error. This applies to both scalar fields and relationship fields.
Repro:
query {
book_by_pk(id: 1) {
...bookFields
title
publishers { name }
}
}
fragment bookFields on book { id }
Expected: id, title and publishers are populated.
Actual: id is populated; title and publishers are null.
The same query works if ...bookFields is moved to the end of the selection set, or removed.
Cause: in SqlQueryStructure.AddGraphQLFields, both the FragmentSpread and the InlineFragment branches recurse into the fragment and then return;. That exits the foreach over the remaining selections. These look like they should be continue;:
https://github.com/Azure/data-api-builder/blob/main/src/Core/Resolvers/Sql%20Query%20Structures/SqlQueryStructure.cs (the two return; statements after the recursive AddGraphQLFields calls)
The return; dates from #1236, which added fragment support for #1235. The Cosmos path (GenerateQueryColumns) iterates over every selection and isn't affected.
Version
2.1.5
What database are you using?
Azure SQL
What hosting model are you using?
Container Apps
Which API approach are you accessing DAB through?
GraphQL
Relevant log output
Code of Conduct
- I agree to follow this project's Code of Conduct
- Langage dominant
- C#
- Étoiles
- 1.5k
- Forks
- 380
- Merge moyen
- 4 j 10 h
- PR mergées (30 j)
- 7
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Azure/data-api-builder
-
pgsql
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Azure/data-api-builder#3598 ·
Les mainteneurs répondent en général sous 7 jours
-
2.x cli mcp-server
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Azure/data-api-builder#3576 ·
Les mainteneurs répondent en général sous 7 jours
-
2.x health-endpoint
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Azure/data-api-builder#3570 ·
Les mainteneurs répondent en général sous 7 jours
-
2.x telemetry
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Azure/data-api-builder#3564 ·
Les mainteneurs répondent en général sous 7 jours
-
2.x telemetry
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Azure/data-api-builder#3562 ·
Les mainteneurs répondent en général sous 7 jours
Toutes les issues de Azure/data-api-builder
Issues similaires
-
Playground selection bar: comes back after Apply or scrolling while focus is in the Markdown paneOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
sillsdev/SIL.TextEditing#175 ·
Les mainteneurs répondent en général sous 1 jour
-
needs attention untriaged
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet#3666 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
MicrosoftLearning/eShopOnWeb#466 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
stryker-mutator/stryker-net#3974 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
Les mainteneurs répondent en général sous 1 jour