Fix cache bug

This commit is contained in:
Lunny Xiao 2020-02-27 08:09:29 +08:00
parent 489d996183
commit fe31f0c906
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
5 changed files with 18 additions and 18 deletions

View File

@ -130,7 +130,7 @@ func NewSimpleLogger3(out io.Writer, prefix string, flag int, l LogLevel) *Simpl
// Error implement ILogger
func (s *SimpleLogger) Error(v ...interface{}) {
if s.level <= LOG_ERR {
s.ERR.Output(2, fmt.Sprint(v...))
s.ERR.Output(2, fmt.Sprintln(v...))
}
return
}
@ -146,7 +146,7 @@ func (s *SimpleLogger) Errorf(format string, v ...interface{}) {
// Debug implement ILogger
func (s *SimpleLogger) Debug(v ...interface{}) {
if s.level <= LOG_DEBUG {
s.DEBUG.Output(2, fmt.Sprint(v...))
s.DEBUG.Output(2, fmt.Sprintln(v...))
}
return
}
@ -162,7 +162,7 @@ func (s *SimpleLogger) Debugf(format string, v ...interface{}) {
// Info implement ILogger
func (s *SimpleLogger) Info(v ...interface{}) {
if s.level <= LOG_INFO {
s.INFO.Output(2, fmt.Sprint(v...))
s.INFO.Output(2, fmt.Sprintln(v...))
}
return
}
@ -178,7 +178,7 @@ func (s *SimpleLogger) Infof(format string, v ...interface{}) {
// Warn implement ILogger
func (s *SimpleLogger) Warn(v ...interface{}) {
if s.level <= LOG_WARNING {
s.WARN.Output(2, fmt.Sprint(v...))
s.WARN.Output(2, fmt.Sprintln(v...))
}
return
}

View File

@ -72,9 +72,9 @@ func (session *Session) Clone() *Session {
// Init reset the session as the init status.
func (session *Session) Init() {
session.statement.Reset()
session.statement.dialect = session.engine.dialect
session.statement.Engine = session.engine
session.statement.Reset()
session.showSQL = session.engine.showSQL
session.isAutoCommit = true
session.isCommitedOrRollbacked = false

View File

@ -282,7 +282,7 @@ func (session *Session) cacheGet(bean interface{}, sqlStr string, args ...interf
tableName := session.statement.TableName()
cacher := session.engine.getCacher(tableName)
session.engine.logger.Debug("[cacheGet] find sql:", newsql, args)
session.engine.logger.Debug("[cache] Get SQL:", newsql, args)
table := session.statement.RefTable
ids, err := caches.GetCacheSql(cacher, tableName, newsql, args)
if err != nil {
@ -318,19 +318,19 @@ func (session *Session) cacheGet(bean interface{}, sqlStr string, args ...interf
}
ids = []schemas.PK{pk}
session.engine.logger.Debug("[cacheGet] cache ids:", newsql, ids)
session.engine.logger.Debug("[cache] cache ids:", newsql, ids)
err = caches.PutCacheSql(cacher, ids, tableName, newsql, args)
if err != nil {
return false, err
}
} else {
session.engine.logger.Debug("[cacheGet] cache hit sql:", newsql, ids)
session.engine.logger.Debug("[cache] cache hit:", newsql, ids)
}
if len(ids) > 0 {
structValue := reflect.Indirect(reflect.ValueOf(bean))
id := ids[0]
session.engine.logger.Debug("[cacheGet] get bean:", tableName, id)
session.engine.logger.Debug("[cache] get bean:", tableName, id)
sid, err := id.ToString()
if err != nil {
return false, err
@ -343,10 +343,10 @@ func (session *Session) cacheGet(bean interface{}, sqlStr string, args ...interf
return has, err
}
session.engine.logger.Debug("[cacheGet] cache bean:", tableName, id, cacheBean)
session.engine.logger.Debug("[cache] cache bean:", tableName, id, cacheBean)
cacher.PutBean(tableName, sid, cacheBean)
} else {
session.engine.logger.Debug("[cacheGet] cache hit bean:", tableName, id, cacheBean)
session.engine.logger.Debug("[cache] cache hit:", tableName, id, cacheBean)
has = true
}
structValue.Set(reflect.Indirect(reflect.ValueOf(cacheBean)))

View File

@ -587,10 +587,6 @@ func (statement *Statement) SetExpr(column string, expression interface{}) *Stat
return statement
}
func (statement *Statement) quoteColumnMap() []string {
return statement.dialect.Quoter().Strings(statement.columnMap)
}
// Distinct generates "DISTINCT col1, col2 " statement
func (statement *Statement) Distinct(columns ...string) *Statement {
statement.IsDistinct = true

View File

@ -234,8 +234,12 @@ func TestUpdateIgnoreOnlyFromDBFields(t *testing.T) {
})
assert.NoError(t, err)
record := assertGetRecord()
record.OnlyFromDBField = "test"
testEngine.Update(record)
assertGetRecord()
_, err = testEngine.ID(1).Update(&TestOnlyFromDBField{
OnlyToDBField: "b",
OnlyFromDBField: "test",
})
assert.NoError(t, err)
assertGetRecord()
}