jackc/pgx · error
invalid format for lseg
Error message
invalid format for lseg
What it means
Parsing the textual lseg form '[(x1,y1),(x2,y2)]' proceeds in stages: split the two points on '),(', then split each point on ','. This guard fires at any stage where the expected separator is missing, i.e. the inner content is not structured as two comma-separated coordinate pairs.
Solutions
- Store lseg values in canonical '[(x1,y1),(x2,y2)]' format
- Validate and normalize strings before writing them to the column
- Use binary format encoding for lseg columns
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pgtype/lseg.go:189 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/6921ab2b83e9f0dc.
Report an issue: GitHub.
Appendix: source
Thrown at pgtype/lseg.go:189
}
type scanPlanTextAnyToLsegScanner struct{}
func (scanPlanTextAnyToLsegScanner) Scan(src []byte, dst any) error {
scanner := (dst).(LsegScanner)
if src == nil {
return scanner.ScanLseg(Lseg{})
}
if len(src) < 11 {
return fmt.Errorf("invalid length for lseg: %v", len(src))
}
// Expected format: [(x1,y1),(x2,y2)]
sp1, sp2, found := strings.Cut(string(src[2:len(src)-2]), "),(")
if !found {
return fmt.Errorf("invalid format for lseg")
}
sx1, sy1, found := strings.Cut(sp1, ",")
if !found {
return fmt.Errorf("invalid format for lseg")
}
sx2, sy2, found := strings.Cut(sp2, ",")
if !found {
return fmt.Errorf("invalid format for lseg")
}
x1, err := strconv.ParseFloat(sx1, 64)
if err != nil {
return err
}
y1, err := strconv.ParseFloat(sy1, 64)
if err != nil {
return errView on GitHub (pinned to ec1a0befd2)