From 75f02eca0f8e80d653d9b8c00c5bb8e52d26b08f Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 9 Mar 2020 17:37:13 +0800 Subject: [PATCH] Fix batch insert --- core/db_test.go | 1 - dialects/dialect.go | 2 +- dialects/oracle.go | 7 +++---- dialects/time.go | 6 ++++++ session_insert.go | 8 ++++++-- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/core/db_test.go b/core/db_test.go index e9c2d82d..5c5a5781 100644 --- a/core/db_test.go +++ b/core/db_test.go @@ -96,7 +96,6 @@ func BenchmarkOriQuery(b *testing.B) { if err != nil { b.Error(err) } - //fmt.Println(Id, Name, Title, Age, Alias, NickName) } rows.Close() } diff --git a/dialects/dialect.go b/dialects/dialect.go index d06e4f28..c6ce3653 100644 --- a/dialects/dialect.go +++ b/dialects/dialect.go @@ -169,7 +169,7 @@ func (db *Base) DropSequenceSQL(seqName string) (string, error) { } // DropTableSQL returns drop table SQL -func (db *Base) DropTableSQL(tableName, autoincrCol string) (string, bool) { +func (db *Base) DropTableSQL(tableName, autoincrCol string) ([]string, bool) { quote := db.dialect.Quoter().Quote return []string{fmt.Sprintf("DROP TABLE IF EXISTS %s", quote(tableName))}, true } diff --git a/dialects/oracle.go b/dialects/oracle.go index 05a7fa37..e15cf7d0 100644 --- a/dialects/oracle.go +++ b/dialects/oracle.go @@ -692,6 +692,9 @@ func (db *oracle) GetColumns(queryer core.Queryer, ctx context.Context, tableNam var pkName string err := queryer.QueryRowContext(ctx, s, tableName).Scan(&pkName) if err != nil { + if err == sql.ErrNoRows { + err = nil + } return nil, nil, err } @@ -749,8 +752,6 @@ func (db *oracle) GetColumns(queryer core.Queryer, ctx context.Context, tableNam if has { col.IsAutoIncrement = true } - - fmt.Println("-----", pkName, col.Name, col.IsPrimaryKey) } var ( @@ -938,8 +939,6 @@ func parseOracle(driverName, dataSourceName string) (*URI, error) { db.Passwd, _ = u.User.Password() } - fmt.Printf("%#v\n", db) - if db.DBName == "" { return nil, errors.New("dbname is empty") } diff --git a/dialects/time.go b/dialects/time.go index f0bbb765..47ca423f 100644 --- a/dialects/time.go +++ b/dialects/time.go @@ -32,6 +32,9 @@ func FormatColumnTime(dialect Dialect, dbLocation *time.Location, col *schemas.C switch col.SQLType.Name { case schemas.Date: + if dialect.URI().DBType == schemas.ORACLE { + return t, nil + } return t.Format("2006-01-02"), nil case schemas.Time: var layout = "15:04:05" @@ -40,6 +43,9 @@ func FormatColumnTime(dialect Dialect, dbLocation *time.Location, col *schemas.C } return t.Format(layout), nil case schemas.DateTime, schemas.TimeStamp: + if dialect.URI().DBType == schemas.ORACLE { + return t, nil + } var layout = "2006-01-02 15:04:05" if col.Length > 0 { layout += "." + strings.Repeat("0", col.Length) diff --git a/session_insert.go b/session_insert.go index a1bb7007..cb95dd7f 100644 --- a/session_insert.go +++ b/session_insert.go @@ -504,13 +504,17 @@ func (session *Session) genInsertColumns(bean interface{}) ([]string, []interfac } } - if (col.IsCreated || col.IsUpdated) && session.statement.UseAutoTime /*&& isZero(fieldValue.Interface())*/ { + if (col.IsCreated || col.IsUpdated) && session.statement.UseAutoTime { // if time is non-empty, then set to auto time val, t, err := session.engine.nowTime(col) if err != nil { return nil, nil, err } - args = append(args, val) + if session.engine.dialect.URI().DBType == schemas.ORACLE { + args = append(args, t) + } else { + args = append(args, val) + } var colName = col.Name session.afterClosures = append(session.afterClosures, func(bean interface{}) {