Fix object-list filter preflight plan traversal and argument identification
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 52/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- fsharp, graphql
- Bereich
- api, backend-api-design
Rechercherichtung
Beginne mit der Preflight-Prüfung der ObjectListFilter-Anfrage und der Traversierung des ausführbaren Plans und sieh dir anschließend zur Kontextgewinnung die Diskussion zum verknüpften Pull Request an. Verfolge verzögerte, gestreamte, Live- und verschachtelte Collection-Pläne und überprüfe die Behandlung des Einschlussstatus sowie die Identifizierung des von der Middleware hinzugefügten nullable-Arguments ObjectListFilter. Als erledigt gilt die Aufgabe, wenn umschließende und verschachtelte Filter koerziert werden, während ausgeschlossene oder nicht verwandte Filterargumente akzeptiert werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
The object-list filter request preflight does not accurately follow the executable plan and can both miss invalid filters and reject valid requests.
The preflight should traverse deferred, streamed, live, and nested collection plans while only coercing the nullable ObjectListFilter argument added by the object-list filter middleware.
Source: https://github.com/fsprojects/FSharp.Data.GraphQL/pull/612#pullrequestreview-5253463363
Repro steps
-
Execute a query where an object-list filter is inside an
@defer,@stream, or@livewrapper, or inside a nested collection element plan. -
Observe that request-level filter coercion can be bypassed.
-
Execute a query containing an excluded subtree or an unrelated field with an argument such as
filter: String. -
Observe that the preflight can treat that argument as the middleware's object-list filter and reject an otherwise valid request.
Expected behavior
The preflight should:
- traverse
@defer,@stream, and@livewrappers transparently; - traverse collection element plans and nested filtered fields;
- skip nodes excluded by execution directives;
- coerce only fields whose definition contains the middleware-added nullable
ObjectListFilterargument.
Actual behavior
The traversal stops at wrappers and collection element plans, allowing wrapped or nested list filters to bypass request-level coercion. It also ignores inclusion state and identifies arguments by the name filter, which can incorrectly reject excluded subtrees or unrelated filter arguments.
Known workarounds
Avoid wrapping or nesting object-list-filtered fields and avoid unrelated arguments named filter. These are not practical general-purpose workarounds.
Related information
- Operating system: All
- Branch:
dev/ observed while reviewingtask-seq-field-streaming-fixes - .NET Runtime, CoreCLR or Mono Version: .NET 10
- Performance information, links to performance testing scripts: N/A
- Vorherrschende Sprache
- F#
- Sterne
- 407
- Forks
- 74
- Ø Merge
- 15 Std. 59 Min.
- Gemergte PRs (30 T.)
- 20
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus fsprojects/FSharp.Data.GraphQL
-
Introspection emits JSON-serialized value as `defaultValue` instead of a GraphQL literal (breaks enum defaults)Evtl. vergeben @xperiandri hat das vor 9 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 65/100
fsprojects/FSharp.Data.GraphQL#623 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
fsprojects/FSharp.Data.GraphQL#596 ·
Maintainer antworten meist innerhalb von 1 Tag
-
`documentId` has different values for the same query contentEvtl. vergeben @xperiandri hat das vor 147 Tagen übernommen. Offen
fsprojects/FSharp.Data.GraphQL#573 · 1 Reaktion · 2 zugewiesene Personen ·
Maintainer antworten meist innerhalb von 1 Tag
-
FR: Suave packageEvtl. vergeben @xperiandri hat das vor 147 Tagen übernommen. Offen
fsprojects/FSharp.Data.GraphQL#566 · 1 Kommentar · 1 Reaktion · 2 zugewiesene Personen ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
fsprojects/FSharp.Data.GraphQL#542 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in fsprojects/FSharp.Data.GraphQL
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
stripe/stripe-ruby#1994 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
KalicoCrew/kalico#1012 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Fehler]: /abdeckstift wirft 500 — part_type aus der Phonemreduction-Umbenennung nicht mitgezogenOffenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
wort-schule/wort.schule#787 ·
-
A numeric literal is parsed in the host's culture, so 1.5 is 15 in a made EXE on a comma-decimal OSOffenbug interpreter silently-wrong small
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
Maintainer antworten meist innerhalb von 1 Tag