diff --git a/.travis.yml b/.travis.yml index 200c6e8b..90773768 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,6 @@ go: - 1.7 before_install: - - sudo apt-get update -qq - - sudo apt-get install -y libpam-dev install: - go get github.com/go-xorm/core diff --git a/session.go b/session.go index 0223d1ef..10033313 100644 --- a/session.go +++ b/session.go @@ -1119,11 +1119,12 @@ func (session *Session) Count(bean interface{}) (int64, error) { } else { err = session.Tx.QueryRow(sqlStr, args...).Scan(&total) } - if err != nil { - return 0, err + + if err == sql.ErrNoRows || err == nil { + return total, nil } - return total, nil + return 0, err } // Sum call sum some column. bean's non-empty fields are conditions. @@ -1151,11 +1152,11 @@ func (session *Session) Sum(bean interface{}, columnName string) (float64, error } else { err = session.Tx.QueryRow(sqlStr, args...).Scan(&res) } - if err != nil { - return 0, err - } - return res, nil + if err == sql.ErrNoRows || err == nil { + return res, nil + } + return 0, err } // Sums call sum some columns. bean's non-empty fields are conditions. @@ -1183,11 +1184,11 @@ func (session *Session) Sums(bean interface{}, columnNames ...string) ([]float64 } else { err = session.Tx.QueryRow(sqlStr, args...).ScanSlice(&res) } - if err != nil { - return nil, err - } - return res, nil + if err == sql.ErrNoRows || err == nil { + return res, nil + } + return nil, err } // SumsInt sum specify columns and return as []int64 instead of []float64 @@ -1215,11 +1216,11 @@ func (session *Session) SumsInt(bean interface{}, columnNames ...string) ([]int6 } else { err = session.Tx.QueryRow(sqlStr, args...).ScanSlice(&res) } - if err != nil { - return nil, err - } - return res, nil + if err == sql.ErrNoRows || err == nil { + return res, nil + } + return nil, err } func (session *Session) noCacheFind(sliceValue reflect.Value, sqlStr string, args ...interface{}) error { @@ -1499,10 +1500,13 @@ func (session *Session) isTableEmpty(tableName string) (bool, error) { } var total int64 - sql := fmt.Sprintf("select count(*) from %s", session.Engine.Quote(tableName)) - err := session.DB().QueryRow(sql).Scan(&total) - session.saveLastSQL(sql) + sqlStr := fmt.Sprintf("select count(*) from %s", session.Engine.Quote(tableName)) + err := session.DB().QueryRow(sqlStr).Scan(&total) + session.saveLastSQL(sqlStr) if err != nil { + if err == sql.ErrNoRows { + err = nil + } return true, err }