jackc/pgx · error
multirange element
Error message
multirange element %d: %w
What it means
During binary multirange decoding, each element is read via a length-prefixed value from the reader. This wrapper annotates a reader-level failure with the element index, firing when the payload runs out or is malformed while reading element i's bytes.
Solutions
- Verify the binary multirange payload is complete and uncorrupted
- Use text format for multirange columns
- Report as a driver bug if the value came straight from PostgreSQL
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pgtype/multirange.go:233 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/2776d84d59495ee5.
Report an issue: GitHub.
Appendix: source
Thrown at pgtype/multirange.go:233
err := multirange.SetLen(elementCount)
if err != nil {
return err
}
if elementCount == 0 {
return r.Finish()
}
elementScanPlan := c.ElementType.Codec.PlanScan(m, c.ElementType.OID, BinaryFormatCode, multirange.ScanIndex(0))
if elementScanPlan == nil {
elementScanPlan = m.PlanScan(c.ElementType.OID, BinaryFormatCode, multirange.ScanIndex(0))
}
for i := range elementCount {
elem := multirange.ScanIndex(i)
elemSrc, _ := r.Value()
if err := r.Err(); err != nil {
return fmt.Errorf("multirange element %d: %w", i, err)
}
err = elementScanPlan.Scan(elemSrc, elem)
if err != nil {
return fmt.Errorf("failed to scan multirange element %d: %w", i, err)
}
}
return r.Finish()
}
func (c *MultirangeCodec) decodeText(m *Map, multirangeOID uint32, src []byte, multirange MultirangeSetter) error {
elements, err := parseUntypedTextMultirange(src)
if err != nil {
return err
}
err = multirange.SetLen(len(elements))
if err != nil {View on GitHub (pinned to ec1a0befd2)