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)
|
||||
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() {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue