Skip to content

Commit dc4f2a4

Browse files
icholynelsam
authored andcommitted
Fix SqlTyper return type (#355)
1 parent 659d466 commit dc4f2a4

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

db.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"database/sql/driver"
1919
"errors"
2020
"fmt"
21+
"log"
2122
"reflect"
2223
"strconv"
2324
"strings"
@@ -324,6 +325,9 @@ func (m *DbMap) readStructColumns(t reflect.Type) (cols []*ColumnMap, primaryKey
324325
}
325326
if typer, ok := value.(SqlTyper); ok {
326327
gotype = reflect.TypeOf(typer.SqlType())
328+
} else if typer, ok := value.(legacySqlTyper); ok {
329+
log.Printf("Deprecation Warning: update your SqlType methods to return a driver.Value")
330+
gotype = reflect.TypeOf(typer.SqlType())
327331
} else if valuer, ok := value.(driver.Valuer); ok {
328332
// Only check for driver.Valuer if SqlTyper wasn't
329333
// found.

gorp.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ func (os OracleString) Value() (driver.Value, error) {
5151
// it returns nil for its empty value, it needs to implement SqlTyper
5252
// to have its column type detected properly during table creation.
5353
type SqlTyper interface {
54+
SqlType() driver.Value
55+
}
56+
57+
// legacySqlTyper prevents breaking clients who depended on the previous
58+
// SqlTyper interface
59+
type legacySqlTyper interface {
5460
SqlType() driver.Valuer
5561
}
5662

0 commit comments

Comments
 (0)