jackc/pgx · error

invalid length for Box

Error message

invalid length for Box: %v

What it means

A text box value '(x1,y1),(x2,y2)' needs at least 11 characters (plus quotes if present); shorter input cannot possibly contain two coordinate pairs and is rejected before parsing.

Solutions

  1. Supply the full text form '(x1,y1),(x2,y2)'
  2. Fix upstream data that truncated box strings
  3. Validate user-provided geometric strings before scanning
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pgtype/box.go:183 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/36a235d153c3d3ab. Report an issue: GitHub.

Appendix: source

Thrown at pgtype/box.go:183

		P: [2]Vec2{
			{math.Float64frombits(x1), math.Float64frombits(y1)},
			{math.Float64frombits(x2), math.Float64frombits(y2)},
		},
		Valid: true,
	})
}

type scanPlanTextAnyToBoxScanner struct{}

func (scanPlanTextAnyToBoxScanner) Scan(src []byte, dst any) error {
	scanner := (dst).(BoxScanner)

	if src == nil {
		return scanner.ScanBox(Box{})
	}

	if len(src) < 11 {
		return fmt.Errorf("invalid length for Box: %v", len(src))
	}

	// Expected format: (x1,y1),(x2,y2)
	sp1, sp2, found := strings.Cut(string(src[1:len(src)-1]), "),(")
	if !found {
		return fmt.Errorf("invalid format for Box")
	}

	sx1, sy1, found := strings.Cut(sp1, ",")
	if !found {
		return fmt.Errorf("invalid format for Box")
	}
	sx2, sy2, found := strings.Cut(sp2, ",")
	if !found {
		return fmt.Errorf("invalid format for Box")
	}

	x1, err := strconv.ParseFloat(sx1, 64)

View on GitHub (pinned to ec1a0befd2)