Fix object-list filter preflight plan traversal and argument identification
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 52/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- fsharp, graphql
调研方向
先从 ObjectListFilter 请求的预检和可执行计划遍历开始,然后查看关联 pull request 的讨论以了解上下文。跟踪 deferred、streamed、live 和 nested collection 计划,并验证包含状态的处理以及对 middleware 添加的 nullable ObjectListFilter 参数的识别。完成标准是 wrapped 和 nested 过滤器会被强制转换,同时排除的或无关的过滤器参数会被接受。
由索引模型根据 Issue 内容生成。
描述
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
- 主要语言
- F#
- 星标
- 406
- 派生
- 74
- 平均合并
- 1 天 8 小时
- 30 天内合并 PR
- 14
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
fsprojects/FSharp.Data.GraphQL 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 45/100
-
fsprojects/FSharp.Data.GraphQL#573 · 1 个 reaction · 已指派 2 人 ·
-
fsprojects/FSharp.Data.GraphQL#566 · 1 条评论 · 1 个 reaction · 已指派 2 人 ·
-
难度 5/5 一周以上 新手友好度 30/100
-
难度 5/5 一周以上 新手友好度 25/100
查看 fsprojects/FSharp.Data.GraphQL 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
speaches-ai/speaches#678 ·
-
难度 2/5 1-3 小时 新手友好度 65/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's 未关闭bug ecr
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 75/100
conda-forge/spacy-feedstock#177 ·
-
难度 2/5 1-3 小时 新手友好度 70/100