`graphql.resolve` crashes backend process on invalid `BigInt` filter value (`signal 6`, Postgres enters recovery)
@olirice is already working on this.
Since May 14, 2026.
Assessment
This issue has not been assessed yet.
Description
Describe the bug
pg_graphql crashes a PostgreSQL backend process (SIGABRT / signal 6) when a GraphQL filter passes a non-numeric string to a BigInt field.
Instead of returning a GraphQL validation/coercion error, the backend process is terminated while running:
SELECT graphql.resolve($1, $2, $3)
After that, Postgres restarts and clients see recovery/pool errors
To Reproduce
- Ensure a GraphQL-exposed type has a
BIGINTcolumn (in our case this isversion). - Run this GraphQL operation through
graphql.resolve:
query GetJobDetails($definitionFilter: jobDefinitionViewFilter, $runtimeFilter: jobsViewFilter) {
jobDefinitionViewCollection(filter: $definitionFilter) {
edges {
node {
id
version
displayName
}
}
}
jobsViewCollection(filter: $runtimeFilter, first: 1) {
edges {
node {
state
}
}
}
}
- Use variables where the
BigInt-typed filter value is not numeric:
{
"definitionFilter": {
"environment": { "eq": "dev" },
"name": { "eq": "job-name" },
"version": { "eq": "not-an-int" }
},
"runtimeFilter": {
"environment": { "eq": "dev" },
"name": { "eq": "job-name" }
}
}
- Observe PostgreSQL logs:
client backend ... was terminated by signal 6: AbortedFailed process was running: SELECT graphql.resolve($1, $2, $3)- followed by recovery mode and pooler login failures.
Expected behavior
A clear and concise description of what you expected to happen.
The invalid BigInt input should return a normal GraphQL/SQL error (similar to invalid input syntax for type bigint) and should not crash the backend process.
Screenshots
If applicable, add screenshots to help explain your problem.
Versions:
- PostgreSQL:
PostgreSQL 18.1 on aarch64-unknown-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit - pg_graphql commit ref: unknown in packaged build (extension version is
1.5.12)
Additional context
- Plain Postgres cast handles this correctly without crashing:
SELECT 'not-an-int'::bigint;->ERROR: invalid input syntax for type bigint: "not-an-int"
- The crash appears specific to the
graphql.resolvepath. - Observed app-side error after crash:
Lost connection to the database server.
Security
If you beleive you have identified a security vulnerability in pg_graphql, please follow the instructions at security.txt and wait for a response before opening a GitHub issue.
- Dominant language
- Rust
- Stars
- 3.4k
- Forks
- 141
- Avg merge
- 19m
- Merged PRs (30d)
- 2
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from supabase/pg_graphql
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
supabase/pg_graphql#646 ·
-
triage-required
supabase/pg_graphql#642 · 1 assignee ·
-
triage-required
supabase/pg_graphql#629 · 1 assignee ·
-
triage-required
supabase/pg_graphql#617 · 1 comment · 1 assignee ·
-
question
supabase/pg_graphql#602 · 12 comments · 1 reaction · 1 assignee ·
All issues in supabase/pg_graphql
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100