fix #1075 and replace #1076 #1101

Merged
lunny merged 2 commits from lunny/fix_master_exec into master 2019-01-20 04:45:39 +00:00
3 changed files with 17 additions and 3 deletions

View File

@ -74,6 +74,13 @@ func (eg *EngineGroup) Close() error {
return nil
}
// NewSession returned a group session
func (eg *EngineGroup) NewSession() *Session {
sess := eg.Engine.NewSession()
sess.sessionType = groupSession
return sess
}
// Master returns the master engine
func (eg *EngineGroup) Master() *Engine {
return eg.Engine

View File

@ -18,6 +18,13 @@ import (
"github.com/go-xorm/core"
)
type sessionType int
const (
engineSession sessionType = iota
groupSession
)
// Session keep a pointer to sql.DB and provides all execution of all
// kind of database operations.
type Session struct {
@ -52,8 +59,8 @@ type Session struct {
lastSQL string
lastSQLArgs []interface{}
err error
ctx context.Context
ctx context.Context
sessionType sessionType
}
// Clone copy all the session's content and return a new session

View File

@ -49,7 +49,7 @@ func (session *Session) queryRows(sqlStr string, args ...interface{}) (*core.Row
if session.isAutoCommit {
var db *core.DB
if session.engine.engineGroup != nil {
if session.sessionType == groupSession {
db = session.engine.engineGroup.Slave().DB()
} else {
db = session.DB()