Skip to content

fix: run operations named IntrospectionQuery like any other request - #253

Draft
TwoDCube wants to merge 1 commit into
test/integrationfrom
fix/introspection-query-name
Draft

TwoDCube wants to merge 1 commit into
test/integrationfrom
fix/introspection-query-name

Conversation

@TwoDCube

Copy link
Copy Markdown
Member

Fixes a bug recorded by the tests in #247. Stacked on #247 (base test/integration), so this is a draft until #246 and #247 merge.

Bug

src/http.rs returned early for any request with operationName: "IntrospectionQuery" and executed it without the database transaction, the request counter and the config. Resolvers take those from the context with unwrap()/data_unchecked(). The operation name is chosen by the client, so query IntrospectionQuery { colleagues { id } } panicked and returned HTTP 500.

Fix

Remove the shortcut, so every operation runs with the context the resolvers expect.

Trade-off: introspection now opens and commits a transaction that runs no queries, so it needs MySQL to be reachable. Keeping the shortcut safely would require checking that a document selects only __schema/__type/__typename fields. That seems not worth the code for how rarely introspection runs.

Tests

  • operation_named_introspection_query_can_select_data is no longer ignored.
  • introspection_query_is_answered still passes.
  • No snapshots change.
  • cargo clippy --workspace --all-targets -D warnings is clean. CI=true cargo test --workspace passes against MySQL 8.4 and Redis 6.2.

🤖 Generated with Claude Code

The GraphQL handler executed any request whose operation name was
"IntrospectionQuery" without the database transaction, request counter and
config the resolvers expect. The operation name is chosen by the client, so
any such operation that selected data panicked and returned HTTP 500. Drop
the shortcut: introspection now runs in a transaction like other requests.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@verseghy-prow

verseghy-prow Bot commented Sep 14, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: TwoDCube

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@verseghy-prow verseghy-prow Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/work-in-progress

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant