From 719075ca9761639691d5795ccffa4982abc3f944 Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Fri, 16 Oct 2020 13:36:00 +0300 Subject: [PATCH] [#99] Fix no-root search matcher Wrong boolean operation order made matcher return false on `non-root` search query with non-regular objects. Instead it should return true for `non-root` query and false for `root` query. Signed-off-by: Alex Vanin --- pkg/services/object/search/query/v1/v1.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/services/object/search/query/v1/v1.go b/pkg/services/object/search/query/v1/v1.go index 0b704d37..eecc2187 100644 --- a/pkg/services/object/search/query/v1/v1.go +++ b/pkg/services/object/search/query/v1/v1.go @@ -45,8 +45,8 @@ func (q *Query) Match(obj *object.Object, handler func(*objectSDK.ID)) { default: match = headerEqual(obj, key, q.filters[i].Value()) case objectSDK.KeyRoot: - match = (q.filters[i].Value() == objectSDK.ValRoot) == !obj.HasParent() && - obj.GetType() == objectSDK.TypeRegular + match = (q.filters[i].Value() == objectSDK.ValRoot) == (!obj.HasParent() && + obj.GetType() == objectSDK.TypeRegular) case objectSDK.KeyLeaf: match = (q.filters[i].Value() == objectSDK.ValLeaf) == (par == nil) }