Skip to content

Commit 195c99c

Browse files
committed
further fixes to set in Scan()
1 parent 0e95b1a commit 195c99c

18 files changed

+41
-61
lines changed

bool.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,11 @@ func (b Bool) IsZero() bool {
126126

127127
// Scan implements the Scanner interface.
128128
func (b *Bool) Scan(value interface{}) error {
129-
b.set = true
130129
if value == nil {
131-
b.Bool, b.Valid = false, false
130+
b.Bool, b.Valid, b.set = false, false, true
132131
return nil
133132
}
134-
b.Valid = true
133+
b.Valid, b.set = true, true
135134
return convert.ConvertAssign(&b.Bool, value)
136135
}
137136

byte.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,21 +119,18 @@ func (b Byte) IsZero() bool {
119119

120120
// Scan implements the Scanner interface.
121121
func (b *Byte) Scan(value interface{}) error {
122-
b.set = true
123122
if value == nil {
124-
b.Byte, b.Valid = 0, false
123+
b.Byte, b.Valid, b.set = 0, false, false
125124
return nil
126125
}
127126

128127
val := value.(string)
129128
if len(val) == 0 {
130-
b.Valid = false
131-
b.Byte = 0
129+
b.Byte, b.Valid, b.set = 0, false, false
132130
return nil
133131
}
134132

135-
b.Valid = true
136-
b.Byte = byte(val[0])
133+
b.Byte, b.Valid, b.set = val[0], true, true
137134
return nil
138135
}
139136

bytes.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,11 @@ func (b Bytes) IsZero() bool {
117117

118118
// Scan implements the Scanner interface.
119119
func (b *Bytes) Scan(value interface{}) error {
120-
b.set = true
121120
if value == nil {
122-
b.Bytes, b.Valid = []byte{}, false
121+
b.Bytes, b.Valid, b.set = nil, false, false
123122
return nil
124123
}
125-
b.Valid = true
124+
b.Valid, b.set = true, true
126125
return convert.ConvertAssign(&b.Bytes, value)
127126
}
128127

float32.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,11 @@ func (f Float32) IsZero() bool {
115115

116116
// Scan implements the Scanner interface.
117117
func (f *Float32) Scan(value interface{}) error {
118-
f.set = true
119118
if value == nil {
120-
f.Float32, f.Valid = 0, false
119+
f.Float32, f.Valid, f.set = 0, false, false
121120
return nil
122121
}
123-
f.Valid = true
122+
f.Valid, f.set = true, true
124123
return convert.ConvertAssign(&f.Float32, value)
125124
}
126125

float64.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,11 @@ func (f Float64) IsZero() bool {
110110

111111
// Scan implements the Scanner interface.
112112
func (f *Float64) Scan(value interface{}) error {
113-
f.set = true
114113
if value == nil {
115-
f.Float64, f.Valid = 0, false
114+
f.Float64, f.Valid, f.set = 0, false, false
116115
return nil
117116
}
118-
f.Valid = true
117+
f.Valid, f.set = true, true
119118
return convert.ConvertAssign(&f.Float64, value)
120119
}
121120

int.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,11 @@ func (i Int) IsZero() bool {
117117

118118
// Scan implements the Scanner interface.
119119
func (i *Int) Scan(value interface{}) error {
120-
i.set = true
121120
if value == nil {
122-
i.Int, i.Valid = 0, false
121+
i.Int, i.Valid, i.set = 0, false, false
123122
return nil
124123
}
125-
i.Valid = true
124+
i.Valid, i.set = true, true
126125
return convert.ConvertAssign(&i.Int, value)
127126
}
128127

int16.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ func (i Int16) IsSet() bool {
4848
func (i *Int16) UnmarshalJSON(data []byte) error {
4949
i.set = true
5050
if bytes.Equal(data, NullBytes) {
51-
i.Valid = false
52-
i.Int16 = 0
51+
i.Int16, i.Valid = 0, false
5352
return nil
5453
}
5554

@@ -62,8 +61,7 @@ func (i *Int16) UnmarshalJSON(data []byte) error {
6261
return fmt.Errorf("json: %d overflows max int16 value", x)
6362
}
6463

65-
i.Int16 = int16(x)
66-
i.Valid = true
64+
i.Int16, i.Valid = int16(x), true
6765
return nil
6866
}
6967

@@ -121,12 +119,11 @@ func (i Int16) IsZero() bool {
121119

122120
// Scan implements the Scanner interface.
123121
func (i *Int16) Scan(value interface{}) error {
124-
i.set = true
125122
if value == nil {
126-
i.Int16, i.Valid = 0, false
123+
i.Int16, i.Valid, i.set = 0, false, false
127124
return nil
128125
}
129-
i.Valid = true
126+
i.Valid, i.set = true, true
130127
return convert.ConvertAssign(&i.Int16, value)
131128
}
132129

int32.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,11 @@ func (i Int32) IsZero() bool {
122122

123123
// Scan implements the Scanner interface.
124124
func (i *Int32) Scan(value interface{}) error {
125-
i.set = true
126125
if value == nil {
127-
i.Int32, i.Valid = 0, false
126+
i.Int32, i.Valid, i.set = 0, false, false
128127
return nil
129128
}
130-
i.Valid = true
129+
i.Valid, i.set = true, true
131130
return convert.ConvertAssign(&i.Int32, value)
132131
}
133132

int64.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,11 @@ func (i Int64) IsZero() bool {
110110

111111
// Scan implements the Scanner interface.
112112
func (i *Int64) Scan(value interface{}) error {
113-
i.set = true
114113
if value == nil {
115-
i.Int64, i.Valid = 0, false
114+
i.Int64, i.Valid, i.set = 0, false, false
116115
return nil
117116
}
118-
i.Valid = true
117+
i.Valid, i.set = true, true
119118
return convert.ConvertAssign(&i.Int64, value)
120119
}
121120

int8.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,11 @@ func (i Int8) IsZero() bool {
121121

122122
// Scan implements the Scanner interface.
123123
func (i *Int8) Scan(value interface{}) error {
124-
i.set = true
125124
if value == nil {
126-
i.Int8, i.Valid = 0, false
125+
i.Int8, i.Valid, i.set = 0, false, false
127126
return nil
128127
}
129-
i.Valid = true
128+
i.Valid, i.set = true, true
130129
return convert.ConvertAssign(&i.Int8, value)
131130
}
132131

0 commit comments

Comments
 (0)