jackc/pgx · error

missing range separator

Error message

missing range separator: %w

What it means

The parser hit end of input while trying to read the ',' that must separate the lower and upper bounds of a range. The wrapped error is the buffer read failure, so the literal ended before the separator appeared.

Solutions

  1. Ensure the range literal contains both bounds separated by a comma
  2. Validate the string matches the "[lower,upper)" shape before scanning
  3. Reject truncated user input early
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pgtype/range.go:72 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/e29cc4d98ac44cda. Report an issue: GitHub.

Appendix: source

Thrown at pgtype/range.go:72

	r, _, err = buf.ReadRune()
	if err != nil {
		return nil, fmt.Errorf("invalid lower value: %w", err)
	}
	buf.UnreadRune()

	if r == ',' {
		utr.LowerType = Unbounded
	} else {
		utr.Lower, err = rangeParseValue(buf)
		if err != nil {
			return nil, fmt.Errorf("invalid lower value: %w", err)
		}
	}

	r, _, err = buf.ReadRune()
	if err != nil {
		return nil, fmt.Errorf("missing range separator: %w", err)
	}
	if r != ',' {
		return nil, fmt.Errorf("missing range separator: %v", r)
	}

	r, _, err = buf.ReadRune()
	if err != nil {
		return nil, fmt.Errorf("invalid upper value: %w", err)
	}

	if r == ')' || r == ']' {
		utr.UpperType = Unbounded
	} else {
		buf.UnreadRune()
		utr.Upper, err = rangeParseValue(buf)
		if err != nil {
			return nil, fmt.Errorf("invalid upper value: %w", err)
		}

View on GitHub (pinned to ec1a0befd2)