Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Fix object-list filter preflight plan traversal and argument identification

Offen
#613 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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

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
  1. Execute a query where an object-list filter is inside an @defer, @stream, or @live wrapper, or inside a nested collection element plan.

  2. Observe that request-level filter coercion can be bypassed.

  3. Execute a query containing an excluded subtree or an unrelated field with an argument such as filter: String.

  4. 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 @live wrappers 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 ObjectListFilter argument.
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 reviewing task-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

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus fsprojects/FSharp.Data.GraphQL

Alle Issues in fsprojects/FSharp.Data.GraphQL

Ähnliche Issues

Weitere Issues zu Backend & API Design

Neue Issues direkt in Ihr Postfach

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