checked params for InsertMulti, fixed issue #193, thanks to @blu3gui7ar
This commit is contained in:
parent
d2f6f4f1e8
commit
10fb4dbb78
48
session.go
48
session.go
|
@ -1986,20 +1986,22 @@ func (session *Session) Insert(beans ...interface{}) (int64, error) {
|
||||||
for _, bean := range beans {
|
for _, bean := range beans {
|
||||||
sliceValue := reflect.Indirect(reflect.ValueOf(bean))
|
sliceValue := reflect.Indirect(reflect.ValueOf(bean))
|
||||||
if sliceValue.Kind() == reflect.Slice {
|
if sliceValue.Kind() == reflect.Slice {
|
||||||
if session.Engine.SupportInsertMany() {
|
size := sliceValue.Len()
|
||||||
cnt, err := session.innerInsertMulti(bean)
|
if size > 0 {
|
||||||
if err != nil {
|
if session.Engine.SupportInsertMany() {
|
||||||
return affected, err
|
cnt, err := session.innerInsertMulti(bean)
|
||||||
}
|
|
||||||
affected += cnt
|
|
||||||
} else {
|
|
||||||
size := sliceValue.Len()
|
|
||||||
for i := 0; i < size; i++ {
|
|
||||||
cnt, err := session.innerInsert(sliceValue.Index(i).Interface())
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return affected, err
|
return affected, err
|
||||||
}
|
}
|
||||||
affected += cnt
|
affected += cnt
|
||||||
|
} else {
|
||||||
|
for i := 0; i < size; i++ {
|
||||||
|
cnt, err := session.innerInsert(sliceValue.Index(i).Interface())
|
||||||
|
if err != nil {
|
||||||
|
return affected, err
|
||||||
|
}
|
||||||
|
affected += cnt
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -2176,16 +2178,24 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
|
||||||
|
|
||||||
// Insert multiple records
|
// Insert multiple records
|
||||||
func (session *Session) InsertMulti(rowsSlicePtr interface{}) (int64, error) {
|
func (session *Session) InsertMulti(rowsSlicePtr interface{}) (int64, error) {
|
||||||
err := session.newDb()
|
sliceValue := reflect.Indirect(reflect.ValueOf(rowsSlicePtr))
|
||||||
if err != nil {
|
if sliceValue.Kind() == reflect.Slice {
|
||||||
return 0, err
|
if sliceValue.Len() > 0 {
|
||||||
|
err := session.newDb()
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
defer session.resetStatement()
|
||||||
|
if session.IsAutoClose {
|
||||||
|
defer session.Close()
|
||||||
|
}
|
||||||
|
return session.innerInsertMulti(rowsSlicePtr)
|
||||||
|
} else {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 0, ErrParamsType
|
||||||
}
|
}
|
||||||
defer session.resetStatement()
|
|
||||||
if session.IsAutoClose {
|
|
||||||
defer session.Close()
|
|
||||||
}
|
|
||||||
|
|
||||||
return session.innerInsertMulti(rowsSlicePtr)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *Session) byte2Time(col *core.Column, data []byte) (outTime time.Time, outErr error) {
|
func (session *Session) byte2Time(col *core.Column, data []byte) (outTime time.Time, outErr error) {
|
||||||
|
|
Loading…
Reference in New Issue