aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/go-xorm/xorm/session_insert.go
diff options
context:
space:
mode:
authorpeter zhang <admin@ddatsh.com>2017-04-27 07:47:16 +0800
committer无闻 <u@gogs.io>2017-04-26 19:47:16 -0400
commit10ee2e0dad6471e8912cc833faf33db7eaa55fa8 (patch)
treeb1d2f03768781a31d7a68d2c5a9a7140e170f261 /vendor/github.com/go-xorm/xorm/session_insert.go
parent6500aafcb867e37379b1f238198e95134b09ac4e (diff)
vendor: update xorm version for fix git clone error build with golang 1.8.1 (#4460)
Diffstat (limited to 'vendor/github.com/go-xorm/xorm/session_insert.go')
-rw-r--r--vendor/github.com/go-xorm/xorm/session_insert.go38
1 files changed, 29 insertions, 9 deletions
diff --git a/vendor/github.com/go-xorm/xorm/session_insert.go b/vendor/github.com/go-xorm/xorm/session_insert.go
index 96e969c2..2c8ad782 100644
--- a/vendor/github.com/go-xorm/xorm/session_insert.go
+++ b/vendor/github.com/go-xorm/xorm/session_insert.go
@@ -67,7 +67,9 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
return 0, errors.New("could not insert a empty slice")
}
- session.Statement.setRefValue(sliceValue.Index(0))
+ if err := session.Statement.setRefValue(sliceValue.Index(0)); err != nil {
+ return 0, err
+ }
if len(session.Statement.TableName()) <= 0 {
return 0, ErrTableNotFound
@@ -210,13 +212,29 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
}
cleanupProcessorsClosures(&session.beforeClosures)
- statement := fmt.Sprintf("INSERT INTO %s (%v%v%v) VALUES (%v)",
- session.Engine.Quote(session.Statement.TableName()),
- session.Engine.QuoteStr(),
- strings.Join(colNames, session.Engine.QuoteStr()+", "+session.Engine.QuoteStr()),
- session.Engine.QuoteStr(),
- strings.Join(colMultiPlaces, "),("))
-
+ var sql = "INSERT INTO %s (%v%v%v) VALUES (%v)"
+ var statement string
+ if session.Engine.dialect.DBType() == core.ORACLE {
+ sql = "INSERT ALL INTO %s (%v%v%v) VALUES (%v) SELECT 1 FROM DUAL"
+ temp := fmt.Sprintf(") INTO %s (%v%v%v) VALUES (",
+ session.Engine.Quote(session.Statement.TableName()),
+ session.Engine.QuoteStr(),
+ strings.Join(colNames, session.Engine.QuoteStr()+", "+session.Engine.QuoteStr()),
+ session.Engine.QuoteStr())
+ statement = fmt.Sprintf(sql,
+ session.Engine.Quote(session.Statement.TableName()),
+ session.Engine.QuoteStr(),
+ strings.Join(colNames, session.Engine.QuoteStr()+", "+session.Engine.QuoteStr()),
+ session.Engine.QuoteStr(),
+ strings.Join(colMultiPlaces, temp))
+ } else {
+ statement = fmt.Sprintf(sql,
+ session.Engine.Quote(session.Statement.TableName()),
+ session.Engine.QuoteStr(),
+ strings.Join(colNames, session.Engine.QuoteStr()+", "+session.Engine.QuoteStr()),
+ session.Engine.QuoteStr(),
+ strings.Join(colMultiPlaces, "),("))
+ }
res, err := session.exec(statement, args...)
if err != nil {
return 0, err
@@ -281,7 +299,9 @@ func (session *Session) InsertMulti(rowsSlicePtr interface{}) (int64, error) {
}
func (session *Session) innerInsert(bean interface{}) (int64, error) {
- session.Statement.setRefValue(rValue(bean))
+ if err := session.Statement.setRefValue(rValue(bean)); err != nil {
+ return 0, err
+ }
if len(session.Statement.TableName()) <= 0 {
return 0, ErrTableNotFound
}