insert return bug fixed
This commit is contained in:
parent
be50e0c659
commit
a1062be8d0
90
base_test.go
90
base_test.go
|
@ -43,7 +43,13 @@ type Userdetail struct {
|
|||
}
|
||||
|
||||
func directCreateTable(engine *Engine, t *testing.T) {
|
||||
err := engine.Sync(&Userinfo{})
|
||||
err := engine.DropTables(&Userinfo{}, &Userdetail{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.Sync(&Userinfo{}, &Userdetail{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
|
@ -55,7 +61,31 @@ func directCreateTable(engine *Engine, t *testing.T) {
|
|||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.CreateTables(&Userinfo{})
|
||||
err = engine.CreateTables(&Userinfo{}, &Userdetail{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.CreateIndexes(&Userinfo{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.CreateIndexes(&Userdetail{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.CreateUniques(&Userinfo{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.CreateUniques(&Userdetail{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
|
@ -86,6 +116,30 @@ func mapper(engine *Engine, t *testing.T) {
|
|||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.CreateIndexes(&Userinfo{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.CreateIndexes(&Userdetail{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.CreateUniques(&Userinfo{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = engine.CreateUniques(&Userdetail{})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func insert(engine *Engine, t *testing.T) {
|
||||
|
@ -98,7 +152,17 @@ func insert(engine *Engine, t *testing.T) {
|
|||
panic(err)
|
||||
}
|
||||
if user.Uid <= 0 {
|
||||
t.Error(errors.New("not return id error"))
|
||||
err = errors.New("not return id error")
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
user.Uid = 0
|
||||
_, err = engine.Insert(&user)
|
||||
if err == nil {
|
||||
err = errors.New("insert failed but no return error")
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -171,7 +235,9 @@ func insertMulti(engine *Engine, t *testing.T) {
|
|||
panic(err)
|
||||
}
|
||||
if id <= 0 {
|
||||
t.Error(errors.New("not return id error"))
|
||||
err = errors.New("not return id error")
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
users2 := []*Userinfo{
|
||||
|
@ -188,7 +254,9 @@ func insertMulti(engine *Engine, t *testing.T) {
|
|||
}
|
||||
|
||||
if id <= 0 {
|
||||
t.Error(errors.New("not return id error"))
|
||||
err = errors.New("not return id error")
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -201,6 +269,18 @@ func insertTwoTable(engine *Engine, t *testing.T) {
|
|||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if userinfo.Uid <= 0 {
|
||||
err = errors.New("not return id error")
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if userdetail.Id <= 0 {
|
||||
err = errors.New("not return id error")
|
||||
t.Error(err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
type Condi map[string]interface{}
|
||||
|
|
23
session.go
23
session.go
|
@ -1627,16 +1627,17 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
|||
}
|
||||
|
||||
var id int64 = 0
|
||||
pkValue := table.PKColumn().ValueOf(bean)
|
||||
if !pkValue.IsValid() || pkValue.Int() != 0 || !pkValue.CanSet() {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
id, err = res.LastInsertId()
|
||||
if err != nil || id <= 0 {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
pkValue := table.PKColumn().ValueOf(bean)
|
||||
if !pkValue.IsValid() || pkValue.Int() != 0 || !pkValue.CanSet() {
|
||||
return id, nil
|
||||
}
|
||||
|
||||
var v interface{} = id
|
||||
switch pkValue.Type().Kind() {
|
||||
case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int:
|
||||
|
@ -1654,17 +1655,12 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
|||
return 0, err
|
||||
}
|
||||
|
||||
if len(res) < 1 {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if table.Cacher != nil && session.Statement.UseCache {
|
||||
session.cacheInsert(session.Statement.TableName())
|
||||
}
|
||||
|
||||
pkValue := table.PKColumn().ValueOf(bean)
|
||||
if !pkValue.IsValid() || pkValue.Int() != 0 || !pkValue.CanSet() {
|
||||
return 0, nil
|
||||
if len(res) < 1 {
|
||||
return 0, errors.New("insert no error but not returned id")
|
||||
}
|
||||
|
||||
idByte := res[0][table.PrimaryKey]
|
||||
|
@ -1673,6 +1669,11 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
|||
return 0, err
|
||||
}
|
||||
|
||||
pkValue := table.PKColumn().ValueOf(bean)
|
||||
if !pkValue.IsValid() || pkValue.Int() != 0 || !pkValue.CanSet() {
|
||||
return id, nil
|
||||
}
|
||||
|
||||
var v interface{} = id
|
||||
switch pkValue.Type().Kind() {
|
||||
case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int:
|
||||
|
|
Loading…
Reference in New Issue