Skip to content

Commit 852fc94

Browse files
authored
Merge pull request #129 from dolmen/apply-ParameterConverter-on-Row-values
Apply parameter converter on row values
2 parents 4d2035c + 92e5f46 commit 852fc94

File tree

2 files changed

+11
-14
lines changed

2 files changed

+11
-14
lines changed

rows.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,17 @@ func (r *Rows) AddRow(values ...driver.Value) *Rows {
126126

127127
row := make([]driver.Value, len(r.cols))
128128
for i, v := range values {
129+
// Convert user-friendly values (such as int or driver.Valuer)
130+
// to database/sql native value (driver.Value such as int64)
131+
var err error
132+
v, err = driver.DefaultParameterConverter.ConvertValue(v)
133+
if err != nil {
134+
panic(fmt.Errorf(
135+
"row #%d, column #%d (%q) type %T: %s",
136+
len(r.rows)+1, i, r.cols[i], values[i], err,
137+
))
138+
}
139+
129140
row[i] = v
130141
}
131142

stubs_test.go

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,6 @@ func (ni *NullInt) Scan(value interface{}) error {
2323
switch v := value.(type) {
2424
case nil:
2525
ni.Integer, ni.Valid = 0, false
26-
27-
// FIXME int, int8, int16, int32 types are handled here but that should not
28-
// be necessary: only int64 is a driver.Value
29-
// Unfortunately, the sqlmock testsuite currently relies on that because
30-
// sqlmock doesn't properly limits itself internally to pure driver.Value.
31-
case int:
32-
ni.Integer, ni.Valid = v, true
33-
case int8:
34-
ni.Integer, ni.Valid = int(v), true
35-
case int16:
36-
ni.Integer, ni.Valid = int(v), true
37-
case int32:
38-
ni.Integer, ni.Valid = int(v), true
39-
4026
case int64:
4127
const maxUint = ^uint(0)
4228
const minUint = 0

0 commit comments

Comments
 (0)