Skip to content
This repository was archived by the owner on Sep 7, 2021. It is now read-only.
This repository is currently being migrated. It's locked while the migration is in progress.

Commit 691f6e7

Browse files
authored
fix bug when insert multiple slices with customize table name (#1433)
* fix bug when insert multiple slices with customize table name * fix tests on mssql * fix tests
1 parent 59ed80c commit 691f6e7

File tree

3 files changed

+48
-2
lines changed

3 files changed

+48
-2
lines changed

dialect_mssql.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,9 @@ func (db *mssql) SqlType(c *core.Column) string {
254254
case core.TinyInt:
255255
res = core.TinyInt
256256
c.Length = 0
257+
case core.BigInt:
258+
res = core.BigInt
259+
c.Length = 0
257260
default:
258261
res = t
259262
}

session_insert.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ func (session *Session) Insert(beans ...interface{}) (int64, error) {
2525
defer session.Close()
2626
}
2727

28+
session.autoResetStatement = false
29+
defer func() {
30+
session.autoResetStatement = true
31+
session.resetStatement()
32+
}()
33+
2834
for _, bean := range beans {
2935
switch bean.(type) {
3036
case map[string]interface{}:
@@ -35,7 +41,6 @@ func (session *Session) Insert(beans ...interface{}) (int64, error) {
3541
affected += cnt
3642
case []map[string]interface{}:
3743
s := bean.([]map[string]interface{})
38-
session.autoResetStatement = false
3944
for i := 0; i < len(s); i++ {
4045
cnt, err := session.insertMapInterface(s[i])
4146
if err != nil {
@@ -51,7 +56,6 @@ func (session *Session) Insert(beans ...interface{}) (int64, error) {
5156
affected += cnt
5257
case []map[string]string:
5358
s := bean.([]map[string]string)
54-
session.autoResetStatement = false
5559
for i := 0; i < len(s); i++ {
5660
cnt, err := session.insertMapString(s[i])
5761
if err != nil {

session_insert_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -909,3 +909,42 @@ func TestInsertWhere(t *testing.T) {
909909
assert.EqualValues(t, "trest3", j3.Name)
910910
assert.EqualValues(t, 3, j3.Index)
911911
}
912+
913+
type NightlyRate struct {
914+
ID int64 `xorm:"'id' not null pk BIGINT(20)" json:"id"`
915+
}
916+
917+
func (NightlyRate) TableName() string {
918+
return "prd_nightly_rate"
919+
}
920+
921+
func TestMultipleInsertTableName(t *testing.T) {
922+
assert.NoError(t, prepareEngine())
923+
924+
tableName := `prd_nightly_rate_16`
925+
assert.NoError(t, testEngine.Table(tableName).Sync2(new(NightlyRate)))
926+
927+
trans := testEngine.NewSession()
928+
defer trans.Close()
929+
err := trans.Begin()
930+
assert.NoError(t, err)
931+
932+
rtArr := []interface{}{
933+
[]*NightlyRate{
934+
{ID: 1},
935+
{ID: 2},
936+
},
937+
[]*NightlyRate{
938+
{ID: 3},
939+
{ID: 4},
940+
},
941+
[]*NightlyRate{
942+
{ID: 5},
943+
},
944+
}
945+
946+
_, err = trans.Table(tableName).Insert(rtArr...)
947+
assert.NoError(t, err)
948+
949+
assert.NoError(t, trans.Commit())
950+
}

0 commit comments

Comments
 (0)