Support big.Float #1973
|
@ -565,7 +565,7 @@ func (p *sqlite3Driver) GenScanResult(colType string) (interface{}, error) {
|
|||
case "REAL":
|
||||
var s sql.NullFloat64
|
||||
return &s, nil
|
||||
case "NUMERIC":
|
||||
case "NUMERIC", "DECIMAL":
|
||||
var s sql.NullString
|
||||
return &s, nil
|
||||
case "BLOB":
|
||||
|
|
|
@ -771,23 +771,49 @@ func TestGetNil(t *testing.T) {
|
|||
func TestGetBigFloat(t *testing.T) {
|
||||
type GetBigFloat struct {
|
||||
Id int64
|
||||
Money *big.Float `xorm:"numeric"`
|
||||
Money *big.Float `xorm:"numeric(22,2)"`
|
||||
}
|
||||
|
||||
assert.NoError(t, PrepareEngine())
|
||||
assertSync(t, new(GetBigFloat))
|
||||
|
||||
var gf = GetBigFloat{
|
||||
Money: big.NewFloat(999999.99),
|
||||
}
|
||||
_, err := testEngine.Insert(&gf)
|
||||
assert.NoError(t, err)
|
||||
{
|
||||
var gf = GetBigFloat{
|
||||
Money: big.NewFloat(999999.99),
|
||||
}
|
||||
_, err := testEngine.Insert(&gf)
|
||||
assert.NoError(t, err)
|
||||
|
||||
var m big.Float
|
||||
has, err := testEngine.Table("get_big_float").Cols("money").Where("id=?", gf.Id).Get(&m)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.True(t, m.String() == gf.Money.String())
|
||||
//fmt.Println(m.Cmp(gf.Money))
|
||||
//assert.True(t, m.Cmp(gf.Money) == 0, "%v != %v", m.String(), gf.Money.String())
|
||||
var m big.Float
|
||||
has, err := testEngine.Table("get_big_float").Cols("money").Where("id=?", gf.Id).Get(&m)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.True(t, m.String() == gf.Money.String(), "%v != %v", m.String(), gf.Money.String())
|
||||
//fmt.Println(m.Cmp(gf.Money))
|
||||
//assert.True(t, m.Cmp(gf.Money) == 0, "%v != %v", m.String(), gf.Money.String())
|
||||
}
|
||||
|
||||
type GetBigFloat2 struct {
|
||||
Id int64
|
||||
Money *big.Float `xorm:"decimal(22,2)"`
|
||||
}
|
||||
|
||||
assert.NoError(t, PrepareEngine())
|
||||
assertSync(t, new(GetBigFloat2))
|
||||
|
||||
{
|
||||
var gf2 = GetBigFloat2{
|
||||
Money: big.NewFloat(9999999.99),
|
||||
}
|
||||
_, err := testEngine.Insert(&gf2)
|
||||
assert.NoError(t, err)
|
||||
|
||||
var m2 big.Float
|
||||
has, err := testEngine.Table("get_big_float2").Cols("money").Where("id=?", gf2.Id).Get(&m2)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
assert.True(t, m2.String() == gf2.Money.String(), "%v != %v", m2.String(), gf2.Money.String())
|
||||
//fmt.Println(m.Cmp(gf.Money))
|
||||
//assert.True(t, m.Cmp(gf.Money) == 0, "%v != %v", m.String(), gf.Money.String())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user