Sfoglia il codice sorgente

bug fixed for sync2

xormplus 10 anni fa
parent
commit
e719da1ec1
2 ha cambiato i file con 21 aggiunte e 16 eliminazioni
  1. 19 14
      session.go
  2. 2 2
      xorm.go

+ 19 - 14
session.go

@@ -4005,6 +4005,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
@@ -4028,20 +4029,7 @@ func (s *Session) Sync2(beans ...interface{}) error {
 				}
 				}
 
 
 				if oriIndex == nil {
 				if oriIndex == nil {
-					if index.Type == core.UniqueType {
-						session := engine.NewSession()
-						session.Statement.RefTable = table
-						defer session.Close()
-						err = session.addUnique(table.Name, name)
-					} else if index.Type == core.IndexType {
-						session := engine.NewSession()
-						session.Statement.RefTable = table
-						defer session.Close()
-						err = session.addIndex(table.Name, name)
-					}
-					if err != nil {
-						return err
-					}
+					addedNames[name] = index
 				}
 				}
 			}
 			}
 
 
@@ -4054,6 +4042,23 @@ func (s *Session) Sync2(beans ...interface{}) error {
 					}
 					}
 				}
 				}
 			}
 			}
+
+			for name, index := range addedNames {
+				if index.Type == core.UniqueType {
+					session := engine.NewSession()
+					session.Statement.RefTable = table
+					defer session.Close()
+					err = session.addUnique(table.Name, name)
+				} else if index.Type == core.IndexType {
+					session := engine.NewSession()
+					session.Statement.RefTable = table
+					defer session.Close()
+					err = session.addIndex(table.Name, name)
+				}
+				if err != nil {
+					return err
+				}
+			}
 		}
 		}
 	}
 	}
 
 

+ 2 - 2
xorm.go

@@ -17,7 +17,7 @@ import (
 )
 )
 
 
 const (
 const (
-	Version string = "1.0.0"
+	Version string = "0.4.3.0627"
 )
 )
 
 
 func regDrvsNDialects() bool {
 func regDrvsNDialects() bool {
@@ -39,7 +39,7 @@ func regDrvsNDialects() bool {
 	for driverName, v := range providedDrvsNDialects {
 	for driverName, v := range providedDrvsNDialects {
 		if driver := core.QueryDriver(driverName); driver == nil {
 		if driver := core.QueryDriver(driverName); driver == nil {
 			core.RegisterDriver(driverName, v.getDriver())
 			core.RegisterDriver(driverName, v.getDriver())
-			core.RegisterDialect(v.dbType, v.getDialect())
+			core.RegisterDialect(v.dbType, v.getDialect)
 		}
 		}
 	}
 	}
 	return true
 	return true