jackc/pgx · error

missing range separator

Error message

missing range separator: %v

What it means

parseUntypedTextRange expected ',' separating the lower and upper bounds of a range literal but read a different rune. The malformed range text (e.g. missing comma between bounds) is the faulting input.

Solutions

  1. Ensure exactly one ',' separates the range's lower and upper bounds
  2. Check for malformed separators in the input
  3. Re-format the value through PostgreSQL casting before scanning
Defensive patterns

Strategy: validation

When it happens

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

Appendix: source

Thrown at pgtype/range.go:75

		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)
		}

		r, _, err = buf.ReadRune()
		if err != nil {

View on GitHub (pinned to ec1a0befd2)