diff --git a/pgtype/bool.go b/pgtype/bool.go index 3a3eef48..308ba304 100644 --- a/pgtype/bool.go +++ b/pgtype/bool.go @@ -13,6 +13,11 @@ type Bool struct { } func (dst *Bool) Set(src interface{}) error { + if src == nil { + *dst = Bool{Status: Null} + return nil + } + switch value := src.(type) { case bool: *dst = Bool{Bool: value, Status: Present} diff --git a/pgtype/bool_test.go b/pgtype/bool_test.go index 2712e3b0..04d9337d 100644 --- a/pgtype/bool_test.go +++ b/pgtype/bool_test.go @@ -29,6 +29,7 @@ func TestBoolSet(t *testing.T) { {source: "f", result: pgtype.Bool{Bool: false, Status: pgtype.Present}}, {source: _bool(true), result: pgtype.Bool{Bool: true, Status: pgtype.Present}}, {source: _bool(false), result: pgtype.Bool{Bool: false, Status: pgtype.Present}}, + {source: nil, result: pgtype.Bool{Status: pgtype.Null}}, } for i, tt := range successfulTests {