fix bug on cache delete
This commit is contained in:
parent
763e1b21e6
commit
27b7a61203
|
@ -29,6 +29,7 @@ func (session *Session) cacheDelete(sqlStr string, args ...interface{}) error {
|
||||||
|
|
||||||
cacher := session.engine.getCacher2(session.statement.RefTable)
|
cacher := session.engine.getCacher2(session.statement.RefTable)
|
||||||
tableName := session.statement.TableName()
|
tableName := session.statement.TableName()
|
||||||
|
pkColumns := session.statement.RefTable.PKColumns()
|
||||||
ids, err := core.GetCacheSql(cacher, tableName, newsql, args)
|
ids, err := core.GetCacheSql(cacher, tableName, newsql, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
resultsSlice, err := session.queryBytes(newsql, args...)
|
resultsSlice, err := session.queryBytes(newsql, args...)
|
||||||
|
@ -40,7 +41,7 @@ func (session *Session) cacheDelete(sqlStr string, args ...interface{}) error {
|
||||||
for _, data := range resultsSlice {
|
for _, data := range resultsSlice {
|
||||||
var id int64
|
var id int64
|
||||||
var pk core.PK = make([]interface{}, 0)
|
var pk core.PK = make([]interface{}, 0)
|
||||||
for _, col := range session.statement.RefTable.PKColumns() {
|
for _, col := range pkColumns {
|
||||||
if v, ok := data[col.Name]; !ok {
|
if v, ok := data[col.Name]; !ok {
|
||||||
return errors.New("no id")
|
return errors.New("no id")
|
||||||
} else if col.SQLType.IsText() {
|
} else if col.SQLType.IsText() {
|
||||||
|
|
|
@ -137,3 +137,32 @@ func TestDeleted(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.EqualValues(t, 2, len(records3))
|
assert.EqualValues(t, 2, len(records3))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCacheDelete(t *testing.T) {
|
||||||
|
assert.NoError(t, prepareEngine())
|
||||||
|
|
||||||
|
cacher := NewLRUCacher(NewMemoryStore(), 1000)
|
||||||
|
testEngine.SetDefaultCacher(cacher)
|
||||||
|
|
||||||
|
type CacheDeleteStruct struct {
|
||||||
|
Id int64
|
||||||
|
}
|
||||||
|
|
||||||
|
err := testEngine.CreateTables(&CacheDeleteStruct{})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = testEngine.Insert(&CacheDeleteStruct{})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
aff, err := testEngine.Delete(&CacheDeleteStruct{
|
||||||
|
Id: 1,
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, aff, 1)
|
||||||
|
|
||||||
|
aff, err = testEngine.Unscoped().Delete(&CacheDeleteStruct{
|
||||||
|
Id: 1,
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, aff, 0)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue