jackc/pgx · error
unexpected trailing data
Error message
unexpected trailing data: %v
What it means
The range parsed successfully but non-whitespace bytes remain in the buffer after the closing bracket. This trailing-content guard fires last, so the whole literal was structurally valid yet contains extra data the parser refuses to ignore.
Solutions
- Strip any trailing garbage beyond the closing bracket
- Check for concatenated values caused by a formatting bug upstream
- Reject input that does not parse completely rather than silently ignoring the remainder
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pgtype/range.go:109 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of jackc/pgx@ec1a0befd2 (2026-08-04).
Data as JSON: /api/errors/cb66506adf86f36f.
Report an issue: GitHub.
Appendix: source
Thrown at pgtype/range.go:109
r, _, err = buf.ReadRune()
if err != nil {
return nil, fmt.Errorf("missing upper bound: %w", err)
}
switch r {
case ')':
utr.UpperType = Exclusive
case ']':
utr.UpperType = Inclusive
default:
return nil, fmt.Errorf("missing upper bound, instead got: %v", string(r))
}
}
skipWhitespace(buf)
if buf.Len() > 0 {
return nil, fmt.Errorf("unexpected trailing data: %v", buf.String())
}
return utr, nil
}
func rangeParseValue(buf *bytes.Buffer) (string, error) {
r, _, err := buf.ReadRune()
if err != nil {
return "", err
}
if r == '"' {
return rangeParseQuotedValue(buf)
}
buf.UnreadRune()
s := &bytes.Buffer{}
for {View on GitHub (pinned to ec1a0befd2)