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 4857995

Browse files
authored
Fix sync2 with custom table name (#1445)
* fix sync2 with custom table name * fix bug on postgres * fix bug on postgres
1 parent da95db5 commit 4857995

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

session_schema.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,12 +245,17 @@ func (session *Session) Sync2(beans ...interface{}) error {
245245
if err != nil {
246246
return err
247247
}
248-
tbName := engine.TableName(bean)
249-
tbNameWithSchema := engine.TableName(tbName, true)
248+
var tbName string
249+
if len(session.statement.AltTableName) > 0 {
250+
tbName = session.statement.AltTableName
251+
} else {
252+
tbName = engine.TableName(bean)
253+
}
254+
tbNameWithSchema := engine.tbNameWithSchema(tbName)
250255

251256
var oriTable *core.Table
252257
for _, tb := range tables {
253-
if strings.EqualFold(tb.Name, tbName) {
258+
if strings.EqualFold(engine.tbNameWithSchema(tb.Name), engine.tbNameWithSchema(tbName)) {
254259
oriTable = tb
255260
break
256261
}

session_schema_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,31 @@ func TestSyncTable(t *testing.T) {
119119
assert.EqualValues(t, "sync_table1", tables[0].Name)
120120
}
121121

122+
func TestSyncTable2(t *testing.T) {
123+
assert.NoError(t, prepareEngine())
124+
125+
assert.NoError(t, testEngine.Table("sync_tablex").Sync2(new(SyncTable1)))
126+
127+
tables, err := testEngine.DBMetas()
128+
assert.NoError(t, err)
129+
assert.EqualValues(t, 1, len(tables))
130+
assert.EqualValues(t, "sync_tablex", tables[0].Name)
131+
assert.EqualValues(t, 3, len(tables[0].Columns()))
132+
133+
type SyncTable4 struct {
134+
SyncTable1 `xorm:"extends"`
135+
NewCol string
136+
}
137+
138+
assert.NoError(t, testEngine.Table("sync_tablex").Sync2(new(SyncTable4)))
139+
tables, err = testEngine.DBMetas()
140+
assert.NoError(t, err)
141+
assert.EqualValues(t, 1, len(tables))
142+
assert.EqualValues(t, "sync_tablex", tables[0].Name)
143+
assert.EqualValues(t, 4, len(tables[0].Columns()))
144+
assert.EqualValues(t, colMapper.Obj2Table("NewCol"), tables[0].Columns()[3].Name)
145+
}
146+
122147
func TestIsTableExist(t *testing.T) {
123148
assert.NoError(t, prepareEngine())
124149

0 commit comments

Comments
 (0)