jackc/pgx · error
anyArrayArrayReflect: cannot scan array with length
Error message
anyArrayArrayReflect: cannot scan array with length %v into %v
What it means
Returned by anyArrayArrayReflect.SetDimensions when a one-dimensional PostgreSQL array's length differs from the length of the pre-existing destination slice. The reflect-based path can only fill an already-sized slice, not grow or shrink it.
Solutions
- Scan into a fresh slice (nil or correctly sized) rather than a pre-populated one
- Use a pointer-to-slice target so pgtype can allocate the right length
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pgtype/builtin_wrappers.go:940 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/9b1997de039854a8.
Report an issue: GitHub.
Appendix: source
Thrown at pgtype/builtin_wrappers.go:940
func (a anyArrayArrayReflect) Index(i int) any {
return a.array.Index(i).Interface()
}
func (a anyArrayArrayReflect) IndexType() any {
return reflect.New(a.array.Type().Elem()).Elem().Interface()
}
func (a *anyArrayArrayReflect) SetDimensions(dimensions []ArrayDimension) error {
if dimensions == nil {
return fmt.Errorf("anyArrayArrayReflect: cannot scan NULL into %v", a.array.Type().String())
}
if len(dimensions) != 1 {
return fmt.Errorf("anyArrayArrayReflect: cannot scan multi-dimensional array into %v", a.array.Type().String())
}
if int(dimensions[0].Length) != a.array.Len() {
return fmt.Errorf("anyArrayArrayReflect: cannot scan array with length %v into %v", dimensions[0].Length, a.array.Type().String())
}
return nil
}
func (a *anyArrayArrayReflect) ScanIndex(i int) any {
return a.array.Index(i).Addr().Interface()
}
func (a *anyArrayArrayReflect) ScanIndexType() any {
return reflect.New(a.array.Type().Elem()).Interface()
}
View on GitHub (pinned to ec1a0befd2)