From 928f478aabfd1756dc799bf12cb69cfb0291f1dd Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 17 Apr 2024 11:29:46 +0800 Subject: [PATCH] :art: Database date filter excludes empty values https://github.com/siyuan-note/siyuan/issues/11061 --- kernel/av/filter.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/kernel/av/filter.go b/kernel/av/filter.go index 8ad9ec0e0..d23da4141 100644 --- a/kernel/av/filter.go +++ b/kernel/av/filter.go @@ -88,7 +88,7 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, rowID st return true } - if nil != value.Rollup && KeyTypeRollup == value.Type && nil != filter && nil != filter.Value && KeyTypeRollup == filter.Value.Type && + if nil != value.Rollup && KeyTypeRollup == value.Type && nil != filter.Value && KeyTypeRollup == filter.Value.Type && nil != filter.Value.Rollup && 0 < len(filter.Value.Rollup.Contents) { // 单独处理汇总类型的比较 @@ -134,7 +134,7 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, rowID st return false } - if nil != value.Relation && KeyTypeRelation == value.Type && 0 < len(value.Relation.Contents) && nil != filter && nil != filter.Value && KeyTypeRelation == filter.Value.Type && + if nil != value.Relation && KeyTypeRelation == value.Type && 0 < len(value.Relation.Contents) && nil != filter.Value && KeyTypeRelation == filter.Value.Type && nil != filter.Value.Relation && 0 < len(filter.Value.Relation.BlockIDs) { // 单独处理关联类型的比较 @@ -240,6 +240,19 @@ func (value *Value) filter(other *Value, relativeDate, relativeDate2 *RelativeDa } case KeyTypeDate: if nil != value.Date { + switch operator { + case FilterOperatorIsEmpty: + return !value.Date.IsNotEmpty + case FilterOperatorIsNotEmpty: + return value.Date.IsNotEmpty + } + + if !value.Date.IsNotEmpty { + // 空值不进行比较,直接排除 + // Database date filter excludes empty values https://github.com/siyuan-note/siyuan/issues/11061 + return false + } + if nil != relativeDate { // 使用相对时间比较