remove unnecessary resetStatement and some improvements
This commit is contained in:
parent
12a20c56b9
commit
6c62e95ed6
|
@ -78,7 +78,6 @@ func (session *Session) cacheDelete(sqlStr string, args ...interface{}) error {
|
|||
|
||||
// Delete records, bean's non-empty fields are conditions
|
||||
func (session *Session) Delete(bean interface{}) (int64, error) {
|
||||
defer session.resetStatement()
|
||||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
|
|
|
@ -14,7 +14,6 @@ import (
|
|||
|
||||
// Exist returns true if the record exist otherwise return false
|
||||
func (session *Session) Exist(bean ...interface{}) (bool, error) {
|
||||
defer session.resetStatement()
|
||||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
|
|
|
@ -23,11 +23,13 @@ const (
|
|||
// are conditions. beans could be []Struct, []*Struct, map[int64]Struct
|
||||
// map[int64]*Struct
|
||||
func (session *Session) Find(rowsSlicePtr interface{}, condiBean ...interface{}) error {
|
||||
defer session.resetStatement()
|
||||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
return session.find(rowsSlicePtr, condiBean...)
|
||||
}
|
||||
|
||||
func (session *Session) find(rowsSlicePtr interface{}, condiBean ...interface{}) error {
|
||||
sliceValue := reflect.Indirect(reflect.ValueOf(rowsSlicePtr))
|
||||
if sliceValue.Kind() != reflect.Slice && sliceValue.Kind() != reflect.Map {
|
||||
return errors.New("needs a pointer to a slice or a map")
|
||||
|
@ -296,7 +298,7 @@ func (session *Session) cacheFind(t reflect.Type, sqlStr string, rowsSlicePtr in
|
|||
cacher := session.engine.getCacher2(table)
|
||||
ids, err := core.GetCacheSql(cacher, tableName, newsql, args)
|
||||
if err != nil {
|
||||
rows, err := session.DB().Query(newsql, args...)
|
||||
rows, err := session.NoCache().queryRows(newsql, args...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -368,9 +370,6 @@ func (session *Session) cacheFind(t reflect.Type, sqlStr string, rowsSlicePtr in
|
|||
}
|
||||
|
||||
if len(ides) > 0 {
|
||||
newSession := session.engine.NewSession()
|
||||
defer newSession.Close()
|
||||
|
||||
slices := reflect.New(reflect.SliceOf(t))
|
||||
beans := slices.Interface()
|
||||
|
||||
|
@ -380,18 +379,18 @@ func (session *Session) cacheFind(t reflect.Type, sqlStr string, rowsSlicePtr in
|
|||
ff = append(ff, ie[0])
|
||||
}
|
||||
|
||||
newSession.In("`"+table.PrimaryKeys[0]+"`", ff...)
|
||||
session.In("`"+table.PrimaryKeys[0]+"`", ff...)
|
||||
} else {
|
||||
for _, ie := range ides {
|
||||
cond := builder.NewCond()
|
||||
for i, name := range table.PrimaryKeys {
|
||||
cond = cond.And(builder.Eq{"`" + name + "`": ie[i]})
|
||||
}
|
||||
newSession.Or(cond)
|
||||
session.Or(cond)
|
||||
}
|
||||
}
|
||||
|
||||
err = newSession.NoCache().Find(beans)
|
||||
err = session.NoCache().find(beans)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@ import (
|
|||
// Get retrieve one record from database, bean's non-empty fields
|
||||
// will be as conditions
|
||||
func (session *Session) Get(bean interface{}) (bool, error) {
|
||||
defer session.resetStatement()
|
||||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
|
@ -127,7 +126,7 @@ func (session *Session) cacheGet(bean interface{}, sqlStr string, args ...interf
|
|||
table := session.statement.RefTable
|
||||
if err != nil {
|
||||
var res = make([]string, len(table.PrimaryKeys))
|
||||
rows, err := session.DB().Query(newsql, args...)
|
||||
rows, err := session.NoCache().queryRows(newsql, args...)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
|
|
@ -22,7 +22,6 @@ func (session *Session) Insert(beans ...interface{}) (int64, error) {
|
|||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
defer session.resetStatement()
|
||||
|
||||
for _, bean := range beans {
|
||||
sliceValue := reflect.Indirect(reflect.ValueOf(bean))
|
||||
|
@ -280,7 +279,6 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
|
|||
|
||||
// InsertMulti insert multiple records
|
||||
func (session *Session) InsertMulti(rowsSlicePtr interface{}) (int64, error) {
|
||||
defer session.resetStatement()
|
||||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
|
@ -532,7 +530,6 @@ func (session *Session) innerInsert(bean interface{}) (int64, error) {
|
|||
// The in parameter bean must a struct or a point to struct. The return
|
||||
// parameter is inserted and error
|
||||
func (session *Session) InsertOne(bean interface{}) (int64, error) {
|
||||
defer session.resetStatement()
|
||||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
|
|
|
@ -19,6 +19,10 @@ func (session *Session) Rows(bean interface{}) (*Rows, error) {
|
|||
// are conditions. beans could be []Struct, []*Struct, map[int64]Struct
|
||||
// map[int64]*Struct
|
||||
func (session *Session) Iterate(bean interface{}, fun IterFunc) error {
|
||||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
|
||||
rows, err := session.Rows(bean)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -16,7 +16,6 @@ import (
|
|||
|
||||
// Ping test if database is ok
|
||||
func (session *Session) Ping() error {
|
||||
defer session.resetStatement()
|
||||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
|
@ -35,7 +34,6 @@ func (session *Session) CreateTable(bean interface{}) error {
|
|||
}
|
||||
|
||||
func (session *Session) createTable(bean interface{}) error {
|
||||
defer session.resetStatement()
|
||||
v := rValue(bean)
|
||||
if err := session.statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
|
@ -56,7 +54,6 @@ func (session *Session) CreateIndexes(bean interface{}) error {
|
|||
}
|
||||
|
||||
func (session *Session) createIndexes(bean interface{}) error {
|
||||
defer session.resetStatement()
|
||||
v := rValue(bean)
|
||||
if err := session.statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
|
@ -81,7 +78,6 @@ func (session *Session) CreateUniques(bean interface{}) error {
|
|||
}
|
||||
|
||||
func (session *Session) createUniques(bean interface{}) error {
|
||||
defer session.resetStatement()
|
||||
v := rValue(bean)
|
||||
if err := session.statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
|
@ -107,7 +103,6 @@ func (session *Session) DropIndexes(bean interface{}) error {
|
|||
}
|
||||
|
||||
func (session *Session) dropIndexes(bean interface{}) error {
|
||||
defer session.resetStatement()
|
||||
v := rValue(bean)
|
||||
if err := session.statement.setRefValue(v); err != nil {
|
||||
return err
|
||||
|
@ -133,7 +128,6 @@ func (session *Session) DropTable(beanOrTableName interface{}) error {
|
|||
}
|
||||
|
||||
func (session *Session) dropTable(beanOrTableName interface{}) error {
|
||||
defer session.resetStatement()
|
||||
tableName, err := session.engine.tableName(beanOrTableName)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -172,7 +166,6 @@ func (session *Session) IsTableExist(beanOrTableName interface{}) (bool, error)
|
|||
}
|
||||
|
||||
func (session *Session) isTableExist(tableName string) (bool, error) {
|
||||
defer session.resetStatement()
|
||||
sqlStr, args := session.engine.dialect.TableCheckSql(tableName)
|
||||
results, err := session.queryBytes(sqlStr, args...)
|
||||
return len(results) > 0, err
|
||||
|
@ -196,8 +189,6 @@ func (session *Session) IsTableEmpty(bean interface{}) (bool, error) {
|
|||
}
|
||||
|
||||
func (session *Session) isTableEmpty(tableName string) (bool, error) {
|
||||
defer session.resetStatement()
|
||||
|
||||
var total int64
|
||||
sqlStr := fmt.Sprintf("select count(*) from %s", session.engine.Quote(tableName))
|
||||
err := session.queryRow(sqlStr).Scan(&total)
|
||||
|
@ -213,8 +204,6 @@ func (session *Session) isTableEmpty(tableName string) (bool, error) {
|
|||
|
||||
// find if index is exist according cols
|
||||
func (session *Session) isIndexExist2(tableName string, cols []string, unique bool) (bool, error) {
|
||||
defer session.resetStatement()
|
||||
|
||||
indexes, err := session.engine.dialect.GetIndexes(tableName)
|
||||
if err != nil {
|
||||
return false, err
|
||||
|
@ -232,8 +221,6 @@ func (session *Session) isIndexExist2(tableName string, cols []string, unique bo
|
|||
}
|
||||
|
||||
func (session *Session) addColumn(colName string) error {
|
||||
defer session.resetStatement()
|
||||
|
||||
col := session.statement.RefTable.GetColumn(colName)
|
||||
sql, args := session.statement.genAddColumnStr(col)
|
||||
_, err := session.exec(sql, args...)
|
||||
|
@ -241,18 +228,13 @@ func (session *Session) addColumn(colName string) error {
|
|||
}
|
||||
|
||||
func (session *Session) addIndex(tableName, idxName string) error {
|
||||
defer session.resetStatement()
|
||||
|
||||
index := session.statement.RefTable.Indexes[idxName]
|
||||
sqlStr := session.engine.dialect.CreateIndexSql(tableName, index)
|
||||
|
||||
_, err := session.exec(sqlStr)
|
||||
return err
|
||||
}
|
||||
|
||||
func (session *Session) addUnique(tableName, uqeName string) error {
|
||||
defer session.resetStatement()
|
||||
|
||||
index := session.statement.RefTable.Indexes[uqeName]
|
||||
sqlStr := session.engine.dialect.CreateIndexSql(tableName, index)
|
||||
_, err := session.exec(sqlStr)
|
||||
|
|
|
@ -45,7 +45,7 @@ func (session *Session) cacheUpdate(sqlStr string, args ...interface{}) error {
|
|||
session.engine.logger.Debug("[cacheUpdate] get cache sql", newsql, args[nStart:])
|
||||
ids, err := core.GetCacheSql(cacher, tableName, newsql, args[nStart:])
|
||||
if err != nil {
|
||||
rows, err := session.DB().Query(newsql, args[nStart:]...)
|
||||
rows, err := session.NoCache().queryRows(newsql, args[nStart:]...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -144,7 +144,6 @@ func (session *Session) cacheUpdate(sqlStr string, args ...interface{}) error {
|
|||
// You should call UseBool if you have bool to use.
|
||||
// 2.float32 & float64 may be not inexact as conditions
|
||||
func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int64, error) {
|
||||
defer session.resetStatement()
|
||||
if session.isAutoClose {
|
||||
defer session.Close()
|
||||
}
|
||||
|
@ -249,8 +248,7 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
|
|||
}
|
||||
}
|
||||
|
||||
st := session.statement
|
||||
defer session.resetStatement()
|
||||
st := &session.statement
|
||||
|
||||
var sqlStr string
|
||||
var condArgs []interface{}
|
||||
|
|
Loading…
Reference in New Issue