bug fixed for sync2

This commit is contained in:
Lunny Xiao 2015-06-27 12:36:38 +08:00
parent 76eef59c8f
commit 2ee7de9fa5
2 changed files with 20 additions and 15 deletions

View File

@ -3889,6 +3889,7 @@ func (s *Session) Sync2(beans ...interface{}) error {
} }
var foundIndexNames = make(map[string]bool) var foundIndexNames = make(map[string]bool)
var addedNames = make(map[string]*core.Index)
for name, index := range table.Indexes { for name, index := range table.Indexes {
var oriIndex *core.Index var oriIndex *core.Index
@ -3912,6 +3913,21 @@ func (s *Session) Sync2(beans ...interface{}) error {
} }
if oriIndex == nil { if oriIndex == nil {
addedNames[name] = index
}
}
for name2, index2 := range oriTable.Indexes {
if _, ok := foundIndexNames[name2]; !ok {
sql := engine.dialect.DropIndexSql(table.Name, index2)
_, err = engine.Exec(sql)
if err != nil {
return err
}
}
}
for name, index := range addedNames {
if index.Type == core.UniqueType { if index.Type == core.UniqueType {
session := engine.NewSession() session := engine.NewSession()
session.Statement.RefTable = table session.Statement.RefTable = table
@ -3928,17 +3944,6 @@ func (s *Session) Sync2(beans ...interface{}) error {
} }
} }
} }
for name2, index2 := range oriTable.Indexes {
if _, ok := foundIndexNames[name2]; !ok {
sql := engine.dialect.DropIndexSql(table.Name, index2)
_, err = engine.Exec(sql)
if err != nil {
return err
}
}
}
}
} }
for _, table := range tables { for _, table := range tables {

View File

@ -17,7 +17,7 @@ import (
) )
const ( const (
Version string = "0.4.3.0526" Version string = "0.4.3.0627"
) )
func regDrvsNDialects() bool { func regDrvsNDialects() bool {