Skip to content

Commit 42dfede

Browse files
committed
workaround github.com/go-sql-driver/mysql/pull/1424 not released
1 parent 31781fc commit 42dfede

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

dump.go

+18-1
Original file line numberDiff line numberDiff line change
@@ -383,11 +383,28 @@ func (table *table) Init() error {
383383

384384
table.values = make([]interface{}, len(tt))
385385
for i, tp := range tt {
386-
table.values[i] = reflect.New(tp.ScanType()).Interface()
386+
table.values[i] = reflect.New(reflectColumnType(tp)).Interface()
387387
}
388388
return nil
389389
}
390390

391+
func reflectColumnType(tp *sql.ColumnType) reflect.Type {
392+
// workaround https://github.com/go-sql-driver/mysql/pull/1424 till it's released
393+
nullable, _ := tp.Nullable()
394+
switch tp.DatabaseTypeName() {
395+
case "TINYBLOB", "MEDIUMBLOB", "LONGBLOB", "BLOB",
396+
"VARBINARY", "BINARY", "BIT", "GEOMETRY":
397+
return reflect.TypeOf([]byte{})
398+
case "TINYTEXT", "MEDIUMTEXT", "LONGTEXT", "TEXT",
399+
"VARCHAR", "CHAR", "DECIMAL", "ENUM", "SET", "JSON", "TIME":
400+
if nullable {
401+
return reflect.TypeOf(sql.NullString{})
402+
}
403+
return reflect.TypeOf("")
404+
}
405+
return tp.ScanType()
406+
}
407+
391408
func (table *table) Next() bool {
392409
if table.rows == nil {
393410
if err := table.Init(); err != nil {

0 commit comments

Comments
 (0)