Fix int time deleted bug

This commit is contained in:
Lunny Xiao 2020-02-21 17:24:28 +08:00
parent 35b2813796
commit d6e31ce715
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
2 changed files with 40 additions and 2 deletions

View File

@ -92,10 +92,11 @@ func (engine *Engine) BufferSize(size int) *Session {
// CondDeleted returns the conditions whether a record is soft deleted.
func (engine *Engine) CondDeleted(colName string) builder.Cond {
cond := builder.IsNull{colName}.Or(builder.Eq{colName: 0})
if engine.dialect.DBType() == core.MSSQL {
return builder.IsNull{colName}
return cond
}
return builder.IsNull{colName}.Or(builder.Eq{colName: zeroTime1})
return cond.Or(builder.Eq{colName: zeroTime1})
}
// ShowSQL show SQL statement or not on logger if log level is great than INFO

View File

@ -477,3 +477,40 @@ func TestCustomTimeUserDeletedDiffLoc(t *testing.T) {
assert.EqualValues(t, formatTime(time.Time(user3.DeletedAt)), formatTime(time.Time(user4.DeletedAt)))
fmt.Println("user3", user3.DeletedAt, user4.DeletedAt)
}
func TestDeletedInt64(t *testing.T) {
assert.NoError(t, prepareEngine())
type DeletedInt64Struct struct {
Id int64
Deleted int64 `xorm:"deleted default(0) notnull"` // timestamp
}
assertSync(t, new(DeletedInt64Struct))
var d1 DeletedInt64Struct
cnt, err := testEngine.Insert(&d1)
assert.NoError(t, err)
assert.EqualValues(t, 1, cnt)
var d2 DeletedInt64Struct
has, err := testEngine.ID(d1.Id).Get(&d2)
assert.NoError(t, err)
assert.True(t, has)
assert.EqualValues(t, d1, d2)
cnt, err = testEngine.ID(d1.Id).NoAutoCondition().Delete(&d1)
assert.NoError(t, err)
assert.EqualValues(t, 1, cnt)
var d3 DeletedInt64Struct
has, err = testEngine.ID(d1.Id).Get(&d3)
assert.NoError(t, err)
assert.False(t, has)
var d4 DeletedInt64Struct
has, err = testEngine.ID(d1.Id).Unscoped().Get(&d4)
assert.NoError(t, err)
assert.True(t, has)
assert.EqualValues(t, d1, d4)
}