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) {
|
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 {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -55,7 +61,31 @@ func directCreateTable(engine *Engine, t *testing.T) {
|
||||||
panic(err)
|
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 {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -86,6 +116,30 @@ func mapper(engine *Engine, t *testing.T) {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
panic(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) {
|
func insert(engine *Engine, t *testing.T) {
|
||||||
|
@ -98,7 +152,17 @@ func insert(engine *Engine, t *testing.T) {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
if user.Uid <= 0 {
|
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)
|
panic(err)
|
||||||
}
|
}
|
||||||
if id <= 0 {
|
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{
|
users2 := []*Userinfo{
|
||||||
|
@ -188,7 +254,9 @@ func insertMulti(engine *Engine, t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if id <= 0 {
|
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)
|
t.Error(err)
|
||||||
panic(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{}
|
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
|
var id int64 = 0
|
||||||
pkValue := table.PKColumn().ValueOf(bean)
|
|
||||||
if !pkValue.IsValid() || pkValue.Int() != 0 || !pkValue.CanSet() {
|
|
||||||
return 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
id, err = res.LastInsertId()
|
id, err = res.LastInsertId()
|
||||||
if err != nil || id <= 0 {
|
if err != nil || id <= 0 {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pkValue := table.PKColumn().ValueOf(bean)
|
||||||
|
if !pkValue.IsValid() || pkValue.Int() != 0 || !pkValue.CanSet() {
|
||||||
|
return id, nil
|
||||||
|
}
|
||||||
|
|
||||||
var v interface{} = id
|
var v interface{} = id
|
||||||
switch pkValue.Type().Kind() {
|
switch pkValue.Type().Kind() {
|
||||||
case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int:
|
case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int:
|
||||||
|
@ -1654,17 +1655,12 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(res) < 1 {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if table.Cacher != nil && session.Statement.UseCache {
|
if table.Cacher != nil && session.Statement.UseCache {
|
||||||
session.cacheInsert(session.Statement.TableName())
|
session.cacheInsert(session.Statement.TableName())
|
||||||
}
|
}
|
||||||
|
|
||||||
pkValue := table.PKColumn().ValueOf(bean)
|
if len(res) < 1 {
|
||||||
if !pkValue.IsValid() || pkValue.Int() != 0 || !pkValue.CanSet() {
|
return 0, errors.New("insert no error but not returned id")
|
||||||
return 0, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
idByte := res[0][table.PrimaryKey]
|
idByte := res[0][table.PrimaryKey]
|
||||||
|
@ -1673,6 +1669,11 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pkValue := table.PKColumn().ValueOf(bean)
|
||||||
|
if !pkValue.IsValid() || pkValue.Int() != 0 || !pkValue.CanSet() {
|
||||||
|
return id, nil
|
||||||
|
}
|
||||||
|
|
||||||
var v interface{} = id
|
var v interface{} = id
|
||||||
switch pkValue.Type().Kind() {
|
switch pkValue.Type().Kind() {
|
||||||
case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int:
|
case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int:
|
||||||
|
|
Loading…
Reference in New Issue