jackc/pgx · error
array element
Error message
array element %d: %w
What it means
While iterating binary array elements, the pgio reader hit a read error (truncated or malformed element data) at element index %d. The underlying error describes the exact reader failure; the array message ended early or is corrupt.
Solutions
- Inspect the wrapped reader error to confirm truncation vs. corruption
- Fail the scan and discard the malformed result
- If persistent, check for network issues or a non-PostgreSQL server/proxy mangling binary data
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pgtype/array_codec.go:296 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/063c85239da9e2ff.
Report an issue: GitHub.
Appendix: source
Thrown at pgtype/array_codec.go:296
err = array.SetDimensions(arrayHeader.Dimensions)
if err != nil {
return err
}
if elementCount == 0 {
return r.Finish()
}
elementScanPlan := c.ElementType.Codec.PlanScan(m, c.ElementType.OID, BinaryFormatCode, array.ScanIndex(0))
if elementScanPlan == nil {
elementScanPlan = m.PlanScan(c.ElementType.OID, BinaryFormatCode, array.ScanIndex(0))
}
for i := range elementCount {
elem := array.ScanIndex(i)
elemSrc, _ := r.Value()
if err := r.Err(); err != nil {
return fmt.Errorf("array element %d: %w", i, err)
}
err = elementScanPlan.Scan(elemSrc, elem)
if err != nil {
return fmt.Errorf("failed to scan array element %d: %w", i, err)
}
}
return r.Finish()
}
func (c *ArrayCodec) decodeText(m *Map, arrayOID uint32, src []byte, array ArraySetter) error {
uta, err := parseUntypedTextArray(string(src))
if err != nil {
return err
}
// The element loop below indexes the value sized by SetDimensions, so the
// dimensions and the parsed elements must agree.View on GitHub (pinned to ec1a0befd2)