refactor get #1967

Merged
lunny merged 7 commits from lunny/refactor_get into master 2021-07-06 08:06:05 +00:00
2 changed files with 8 additions and 3 deletions
Showing only changes of commit 44f6fc09ab - Show all commits

View File

@ -78,6 +78,7 @@ func genScanResultsByBean(bean interface{}) (interface{}, bool, error) {
*string,
*int, *int8, *int16, *int32, *int64,
*uint, *uint8, *uint16, *uint32, *uint64,
*float32, *float64,
*bool:
return t, false, nil
case *time.Time:
@ -117,6 +118,10 @@ func genScanResultsByBean(bean interface{}) (interface{}, bool, error) {
return new(uint16), true, nil
case reflect.Uint8:
return new(uint8), true, nil
case reflect.Float32:
return new(float32), true, nil
case reflect.Float64:
return new(float64), true, nil
default:
return nil, false, fmt.Errorf("unsupported type: %#v", bean)
}
@ -177,7 +182,7 @@ func (engine *Engine) scanStringInterface(rows *core.Rows, types []*sql.ColumnTy
}
// scan is a wrap of driver.Scan but will automatically change the input values according requirements
func (engine *Engine) scan(rows *core.Rows, types []*sql.ColumnType, vv ...interface{}) error {
func (engine *Engine) scan(rows *core.Rows, fields []string, types []*sql.ColumnType, vv ...interface{}) error {
var scanResults = make([]interface{}, 0, len(types))
var replaces = make([]bool, 0, len(types))
var err error
@ -188,7 +193,7 @@ func (engine *Engine) scan(rows *core.Rows, types []*sql.ColumnType, vv ...inter
var useNullable = true
if engine.driver.Features().SupportNullable {
nullable, ok := types[0].Nullable()
useNullable = ok && !nullable
useNullable = ok && nullable
}
if useNullable {

View File

@ -256,7 +256,7 @@ func (session *Session) getVars(rows *core.Rows, types []*sql.ColumnType, fields
}
}
err := session.engine.scan(rows, types, scanResults...)
err := session.engine.scan(rows, fields, types, scanResults...)
if err != nil {
return true, err
}