jackc/pgx · error
invalid length for Path
Error message
invalid length for Path: %v
What it means
The textual path format '((x1,y1),...)' or '[(x1,y1),...]' has a 7-byte minimum (two parenthesized point pairs with delimiters). This guard fires before parsing when the source is shorter, so the string cannot possibly be a well-formed path literal.
Solutions
- Verify the stored string matches the '((x1,y1),(x2,y2))' path text format
- Fix any custom code writing truncated path strings
- Use binary format for the column
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pgtype/path.go:217 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/ad5bd3d0c600ed77.
Report an issue: GitHub.
Appendix: source
Thrown at pgtype/path.go:217
return scanner.ScanPath(Path{
P: points,
Closed: closed,
Valid: true,
})
}
type scanPlanTextAnyToPathScanner struct{}
func (scanPlanTextAnyToPathScanner) Scan(src []byte, dst any) error {
scanner := (dst).(PathScanner)
if src == nil {
return scanner.ScanPath(Path{})
}
if len(src) < 7 {
return fmt.Errorf("invalid length for Path: %v", len(src))
}
closed := src[0] == '('
points := make([]Vec2, 0)
// Expected format: ((x1,y1),...,(xn,yn)) or [(x1,y1),...,(xn,yn)]
str := string(src[1 : len(src)-1])
for {
if len(str) == 0 || str[0] != '(' {
return fmt.Errorf("invalid format for Path")
}
body, rest, found := strings.Cut(str[1:], ")")
if !found {
return fmt.Errorf("invalid format for Path")
}
sx, sy, found := strings.Cut(body, ",")View on GitHub (pinned to ec1a0befd2)