jackc/pgx · error
cannot scan NULL into *float64
Error message
cannot scan NULL into *float64
What it means
ScanInt64 was given a NULL Int8 while scanning into *float64, which cannot represent NULL. Null guard in float64Wrapper's conversion path; the column value is NULL but the Go destination is a non-nullable float64.
Solutions
- Use COALESCE in the query to supply a default
- Scan into pgtype.Float8 or *float64 pointer to handle NULLs
- Ensure the queried column is NOT NULL
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pgtype/builtin_wrappers.go:351 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/4e6f6981c96cf7aa.
Report an issue: GitHub.
Appendix: source
Thrown at pgtype/builtin_wrappers.go:351
return fmt.Errorf("cannot scan NULL into *float32")
}
*w = float32Wrapper(v.Float64)
return nil
}
func (w float32Wrapper) Float64Value() (Float8, error) {
return Float8{Float64: float64(w), Valid: true}, nil
}
type float64Wrapper float64
func (w float64Wrapper) SkipUnderlyingTypePlan() {}
func (w *float64Wrapper) ScanInt64(v Int8) error {
if !v.Valid {
return fmt.Errorf("cannot scan NULL into *float64")
}
*w = float64Wrapper(v.Int64)
return nil
}
func (w float64Wrapper) Int64Value() (Int8, error) {
if w > math.MaxInt64 {
return Int8{}, fmt.Errorf("%f is greater than maximum value for int64", w)
}
return Int8{Int64: int64(w), Valid: true}, nil
}
func (w *float64Wrapper) ScanFloat64(v Float8) error {
if !v.Valid {
return fmt.Errorf("cannot scan NULL into *float64")View on GitHub (pinned to ec1a0befd2)