This commit is contained in:
Lunny Xiao 2016-07-28 23:26:14 +08:00
parent dddc985b86
commit 01a03a3092
4 changed files with 13 additions and 27 deletions

View File

@ -1 +1 @@
xorm v0.5.5.0711
xorm v0.5.5.0728

View File

@ -1291,9 +1291,9 @@ func (session *Session) Find(rowsSlicePtr interface{}, condiBean ...interface{})
}
}
session.Statement.Params = append(session.Statement.joinArgs, append(session.Statement.Params, session.Statement.BeanArgs...)...)
session.Statement.attachInSql()
session.Statement.Params = append(append(append(session.Statement.joinArgs, session.Statement.Params...),
session.Statement.BeanArgs...), session.Statement.inParams...)
sqlStr = session.Statement.genSelectSQL(columnStr)
args = session.Statement.Params
@ -1874,7 +1874,6 @@ func (session *Session) _row2Bean(rows *core.Rows, fields []string, fieldsCount
// !<winxxp>! 增加支持sql.Scanner接口的结构如sql.NullString
hasAssigned = true
if err := nulVal.Scan(vv.Interface()); err != nil {
//fmt.Println("sql.Sanner error:", err.Error())
session.Engine.logger.Error("sql.Sanner error:", err.Error())
hasAssigned = false
}
@ -2469,13 +2468,11 @@ func (session *Session) str2Time(col *core.Column, data string) (outTime time.Ti
if err == nil {
x = time.Unix(sd, 0)
// !nashtsai! HACK mymysql driver is casuing Local location being change to CHAT and cause wrong time conversion
//fmt.Println(x.In(session.Engine.TZLocation), "===")
if col.TimeZone == nil {
x = x.In(session.Engine.TZLocation)
} else {
x = x.In(col.TimeZone)
}
//fmt.Println(x, "=====")
session.Engine.logger.Debugf("time(0) key[%v]: %+v | sdata: [%v]\n", col.FieldName, x, sdata)
} else {
session.Engine.logger.Debugf("time(0) err key[%v]: %+v | sdata: [%v]\n", col.FieldName, x, sdata)

View File

@ -46,6 +46,7 @@ type Statement struct {
WhereStr string
IdParam *core.PK
Params []interface{}
inParams []interface{}
OrderStr string
JoinStr string
joinArgs []interface{}
@ -90,6 +91,7 @@ func (statement *Statement) Init() {
statement.LimitN = 0
statement.WhereStr = ""
statement.Params = make([]interface{}, 0)
statement.inParams = make([]interface{}, 0)
statement.OrderStr = ""
statement.UseCascade = true
statement.JoinStr = ""
@ -432,7 +434,6 @@ func buildUpdates(engine *Engine, table *core.Table, bean interface{},
}
APPEND:
//fmt.Println("==", col.Name, "==", fmt.Sprintf("%v", val))
args = append(args, val)
if col.IsPrimaryKey && engine.dialect.DBType() == "ql" {
continue
@ -821,7 +822,7 @@ func (statement *Statement) attachInSql() {
statement.ConditionStr += " " + statement.Engine.dialect.AndStr() + " "
}
statement.ConditionStr += inSql
statement.Params = append(statement.Params, inArgs...)
statement.inParams = inArgs
}
}
@ -873,7 +874,6 @@ func (statement *Statement) Cols(columns ...string) *Statement {
}
newColumns := statement.col2NewColsWithQuote(columns...)
//fmt.Println("=====", columns, newColumns, cols)
statement.ColumnStr = strings.Join(newColumns, ", ")
statement.ColumnStr = strings.Replace(statement.ColumnStr, statement.Engine.quote("*"), "*", -1)
return statement
@ -1166,7 +1166,8 @@ func (statement *Statement) genGetSql(bean interface{}) (string, []interface{})
}
statement.attachInSql() // !admpub! fix bug:Iterate func missing "... IN (...)"
return statement.genSelectSQL(columnStr), append(append(statement.joinArgs, statement.Params...), statement.BeanArgs...)
return statement.genSelectSQL(columnStr), append(append(append(statement.joinArgs, statement.Params...),
statement.BeanArgs...), statement.inParams...)
}
func (s *Statement) genAddColumnStr(col *core.Column) (string, []interface{}) {
@ -1176,20 +1177,6 @@ func (s *Statement) genAddColumnStr(col *core.Column) (string, []interface{}) {
return sql, []interface{}{}
}
/*func (s *Statement) genAddIndexStr(idxName string, cols []string) (string, []interface{}) {
quote := s.Engine.Quote
colstr := quote(strings.Join(cols, quote(", ")))
sql := fmt.Sprintf("CREATE INDEX %v ON %v (%v);", quote(idxName), quote(s.TableName()), colstr)
return sql, []interface{}{}
}
func (s *Statement) genAddUniqueStr(uqeName string, cols []string) (string, []interface{}) {
quote := s.Engine.Quote
colstr := quote(strings.Join(cols, quote(", ")))
sql := fmt.Sprintf("CREATE UNIQUE INDEX %v ON %v (%v);", quote(uqeName), quote(s.TableName()), colstr)
return sql, []interface{}{}
}*/
func (statement *Statement) buildConditions(table *core.Table, bean interface{}, includeVersion bool, includeUpdated bool, includeNil bool, includeAutoIncr bool, addedTableName bool) ([]string, []interface{}) {
return buildConditions(statement.Engine, table, bean, includeVersion, includeUpdated, includeNil, includeAutoIncr, statement.allUseBool, statement.useAllCols,
statement.unscoped, statement.mustColumnMap, statement.TableName(), statement.TableAlias, addedTableName)
@ -1213,7 +1200,8 @@ func (statement *Statement) genCountSql(bean interface{}) (string, []interface{}
id = ""
}
statement.attachInSql()
return statement.genSelectSQL(fmt.Sprintf("count(%v)", id)), append(append(statement.joinArgs, statement.Params...), statement.BeanArgs...)
return statement.genSelectSQL(fmt.Sprintf("count(%v)", id)), append(append(append(statement.joinArgs, statement.Params...),
statement.BeanArgs...), statement.inParams...)
}
func (statement *Statement) genSumSql(bean interface{}, columns ...string) (string, []interface{}) {
@ -1233,7 +1221,8 @@ func (statement *Statement) genSumSql(bean interface{}, columns ...string) (stri
for _, colName := range columns {
sumStrs = append(sumStrs, fmt.Sprintf("sum(%s)", colName))
}
return statement.genSelectSQL(strings.Join(sumStrs, ", ")), append(append(statement.joinArgs, statement.Params...), statement.BeanArgs...)
return statement.genSelectSQL(strings.Join(sumStrs, ", ")), append(append(append(statement.joinArgs, statement.Params...),
statement.BeanArgs...), statement.inParams...)
}
func (statement *Statement) genSelectSQL(columnStr string) (a string) {

View File

@ -17,7 +17,7 @@ import (
const (
// Version show the xorm's version
Version string = "0.5.5.0711"
Version string = "0.5.5.0728"
)
func regDrvsNDialects() bool {