jackc/pgx · error
float8
Error message
float8: %w
What it means
Wrapping error from the binary float8 scan plan: the payload was not exactly 8 bytes, so pgio.Uint64Exact failed. A float8 on the wire is a single uint64 bit pattern; any other length means corrupted data.
Solutions
- Treat as protocol/data corruption — verify the column type and connection integrity
- Check pgx/server version compatibility
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pgtype/float8.go:250 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/5f88ae320caa4c3b.
Report an issue: GitHub.
Appendix: source
Thrown at pgtype/float8.go:250
return scanPlanTextAnyToFloat64Scanner{}
case Int64Scanner:
return scanPlanTextAnyToInt64Scanner{}
}
}
return nil
}
type scanPlanBinaryFloat8ToFloat64 struct{}
func (scanPlanBinaryFloat8ToFloat64) Scan(src []byte, dst any) error {
if src == nil {
return fmt.Errorf("cannot scan NULL into %T", dst)
}
raw, err := pgio.Uint64Exact(src)
if err != nil {
return fmt.Errorf("float8: %w", err)
}
n := int64(raw)
f := (dst).(*float64)
*f = math.Float64frombits(uint64(n))
return nil
}
type scanPlanBinaryFloat8ToFloat64Scanner struct{}
func (scanPlanBinaryFloat8ToFloat64Scanner) Scan(src []byte, dst any) error {
s := (dst).(Float64Scanner)
if src == nil {
return s.ScanFloat64(Float8{})
}
View on GitHub (pinned to ec1a0befd2)