diff --git a/kernel/av/table.go b/kernel/av/table.go index 0ceb4791f..29a54a178 100644 --- a/kernel/av/table.go +++ b/kernel/av/table.go @@ -257,12 +257,12 @@ func (value *Value) Compare(other *Value) int { } func (value *Value) CompareOperator(filter *ViewFilter, attrView *AttributeView, rowID string) bool { - key, _ := attrView.GetKey(value.KeyID) - if nil == key { - return false - } + if nil != value.Rollup && KeyTypeRollup == value.Type && nil != filter.Value && KeyTypeRollup == filter.Value.Type { + key, _ := attrView.GetKey(value.KeyID) + if nil == key { + return false + } - if nil != value.Rollup && KeyTypeRollup == key.Type && nil != filter.Value && KeyTypeRollup == filter.Value.Type { relKey, _ := attrView.GetKey(key.Rollup.RelationKeyID) if nil == relKey { return false @@ -284,24 +284,22 @@ func (value *Value) CompareOperator(filter *ViewFilter, attrView *AttributeView, continue } - if destVal.compareOperator(filter, key.Type) { + if destVal.compareOperator(filter) { return true } } return false } - - return value.compareOperator(filter, key.Type) + return value.compareOperator(filter) } -func (value *Value) compareOperator(filter *ViewFilter, keyType KeyType) bool { +func (value *Value) compareOperator(filter *ViewFilter) bool { if nil == filter || (nil == filter.Value && nil == filter.RelativeDate) { return true } operator := filter.Operator - - switch keyType { + switch value.Type { case KeyTypeBlock: if nil != value.Block && nil != filter.Value.Block { switch operator {