fix bug on cache delete

This commit is contained in:
Lunny Xiao 2017-09-02 22:12:26 +08:00
parent 763e1b21e6
commit 27b7a61203
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
2 changed files with 31 additions and 1 deletions

View File

@ -29,6 +29,7 @@ func (session *Session) cacheDelete(sqlStr string, args ...interface{}) error {
cacher := session.engine.getCacher2(session.statement.RefTable)
tableName := session.statement.TableName()
pkColumns := session.statement.RefTable.PKColumns()
ids, err := core.GetCacheSql(cacher, tableName, newsql, args)
if err != nil {
resultsSlice, err := session.queryBytes(newsql, args...)
@ -40,7 +41,7 @@ func (session *Session) cacheDelete(sqlStr string, args ...interface{}) error {
for _, data := range resultsSlice {
var id int64
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 {
return errors.New("no id")
} else if col.SQLType.IsText() {

View File

@ -137,3 +137,32 @@ func TestDeleted(t *testing.T) {
assert.NoError(t, err)
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)
}