From 82d071d07fb636198fa04fc68def2f802b846e8f Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 29 Jul 2019 17:39:41 +0800 Subject: [PATCH] fix bug --- session_get.go | 2 +- session_get_test.go | 113 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 113 insertions(+), 2 deletions(-) diff --git a/session_get.go b/session_get.go index ef999eeb..ad2627f4 100644 --- a/session_get.go +++ b/session_get.go @@ -138,7 +138,7 @@ func (session *Session) nocacheGet(beanKind reflect.Kind, table *core.Table, bea return true, err } if res.Valid { - *(bean.(*int)) = int(res.Int64) + *(bean.(*int8)) = int8(res.Int64) } return true, nil case *int16: diff --git a/session_get_test.go b/session_get_test.go index 1f7d052b..0679b7ab 100644 --- a/session_get_test.go +++ b/session_get_test.go @@ -10,8 +10,8 @@ import ( "testing" "time" - "xorm.io/core" "github.com/stretchr/testify/assert" + "xorm.io/core" ) func TestGetVar(t *testing.T) { @@ -56,6 +56,69 @@ func TestGetVar(t *testing.T) { assert.Equal(t, true, has) assert.EqualValues(t, 28, age2) + var age3 int8 + has, err = testEngine.Table("get_var").Cols("age").Get(&age3) + assert.NoError(t, err) + assert.Equal(t, true, has) + assert.EqualValues(t, 28, age3) + + var age4 int16 + has, err = testEngine.Table("get_var").Cols("age"). + Where("age > ?", 20). + And("age < ?", 30). + Get(&age4) + assert.NoError(t, err) + assert.Equal(t, true, has) + assert.EqualValues(t, 28, age4) + + var age5 int32 + has, err = testEngine.Table("get_var").Cols("age"). + Where("age > ?", 20). + And("age < ?", 30). + Get(&age5) + assert.NoError(t, err) + assert.Equal(t, true, has) + assert.EqualValues(t, 28, age5) + + var age6 int + has, err = testEngine.Table("get_var").Cols("age").Get(&age6) + assert.NoError(t, err) + assert.Equal(t, true, has) + assert.EqualValues(t, 28, age6) + + var age7 int64 + has, err = testEngine.Table("get_var").Cols("age"). + Where("age > ?", 20). + And("age < ?", 30). + Get(&age7) + assert.NoError(t, err) + assert.Equal(t, true, has) + assert.EqualValues(t, 28, age7) + + var age8 int8 + has, err = testEngine.Table("get_var").Cols("age").Get(&age8) + assert.NoError(t, err) + assert.Equal(t, true, has) + assert.EqualValues(t, 28, age8) + + var age9 int16 + has, err = testEngine.Table("get_var").Cols("age"). + Where("age > ?", 20). + And("age < ?", 30). + Get(&age9) + assert.NoError(t, err) + assert.Equal(t, true, has) + assert.EqualValues(t, 28, age9) + + var age10 int32 + has, err = testEngine.Table("get_var").Cols("age"). + Where("age > ?", 20). + And("age < ?", 30). + Get(&age10) + assert.NoError(t, err) + assert.Equal(t, true, has) + assert.EqualValues(t, 28, age10) + var id sql.NullInt64 has, err = testEngine.Table("get_var").Cols("id").Get(&id) assert.NoError(t, err) @@ -466,4 +529,52 @@ func TestGetNullVar(t *testing.T) { assert.NoError(t, err) assert.True(t, has) assert.EqualValues(t, 0, age2) + + var age3 int16 + has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age3) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, 0, age3) + + var age4 int32 + has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age4) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, 0, age4) + + var age5 int64 + has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age5) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, 0, age5) + + var age6 uint + has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age6) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, 0, age6) + + var age7 uint8 + has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age7) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, 0, age7) + + var age8 int16 + has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age8) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, 0, age8) + + var age9 int32 + has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age9) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, 0, age9) + + var age10 int64 + has, err = testEngine.Table(new(TestGetNullVarStruct)).Where("id = ?", 1).Cols("age").Get(&age10) + assert.NoError(t, err) + assert.True(t, has) + assert.EqualValues(t, 0, age10) }