fix #1075 and replace #1076 (#1101)

* fix #1075 and replace #1076

* fix bug when session resue
This commit is contained in:
Lunny Xiao 2019-01-20 12:45:38 +08:00 committed by GitHub
parent 5271caa592
commit 6fe3ab6075
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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()