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