fix error when get null var
This commit is contained in:
parent
b757473de7
commit
ee843129cf
|
@ -114,6 +114,8 @@ func (session *Session) nocacheGet(beanKind reflect.Kind, table *core.Table, bea
|
||||||
return true, rows.Scan(&bean)
|
return true, rows.Scan(&bean)
|
||||||
case *sql.NullInt64, *sql.NullBool, *sql.NullFloat64, *sql.NullString:
|
case *sql.NullInt64, *sql.NullBool, *sql.NullFloat64, *sql.NullString:
|
||||||
return true, rows.Scan(bean)
|
return true, rows.Scan(bean)
|
||||||
|
case *string, *int, *int8, *int16, *int32, *int64, *uint, *uint8, *uint16, *uint32, *uint64:
|
||||||
|
return true, rows.Scan(&bean)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch beanKind {
|
switch beanKind {
|
||||||
|
@ -142,6 +144,9 @@ func (session *Session) nocacheGet(beanKind reflect.Kind, table *core.Table, bea
|
||||||
err = rows.ScanSlice(bean)
|
err = rows.ScanSlice(bean)
|
||||||
case reflect.Map:
|
case reflect.Map:
|
||||||
err = rows.ScanMap(bean)
|
err = rows.ScanMap(bean)
|
||||||
|
case reflect.String, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
|
||||||
|
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
||||||
|
err = rows.Scan(&bean)
|
||||||
default:
|
default:
|
||||||
err = rows.Scan(bean)
|
err = rows.Scan(bean)
|
||||||
}
|
}
|
||||||
|
|
|
@ -433,3 +433,37 @@ func TestGetCustomTableInterface(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.True(t, has)
|
assert.True(t, has)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetNullVar(t *testing.T) {
|
||||||
|
type TestGetNullVarStruct struct {
|
||||||
|
Id int64
|
||||||
|
Name string
|
||||||
|
Age int
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.NoError(t, prepareEngine())
|
||||||
|
assertSync(t, new(TestGetNullVarStruct))
|
||||||
|
|
||||||
|
affected, err := testEngine.Exec("insert into " + testEngine.TableName(new(TestGetNullVarStruct), true) + " (name,age) values (null,null)")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
a, _ := affected.RowsAffected()
|
||||||
|
assert.EqualValues(t, 1, a)
|
||||||
|
|
||||||
|
var name string
|
||||||
|
has, err := testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("name").Get(&name)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, has)
|
||||||
|
assert.EqualValues(t, "", name)
|
||||||
|
|
||||||
|
var age int
|
||||||
|
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, has)
|
||||||
|
assert.EqualValues(t, 0, age)
|
||||||
|
|
||||||
|
var age2 int8
|
||||||
|
has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age2)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, has)
|
||||||
|
assert.EqualValues(t, 0, age2)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue