From 214a34a5a851924d53a69760bea602fe034f9346 Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Tue, 13 Aug 2019 17:16:58 +0200 Subject: [PATCH] Always use subquery filters for subquery targets in the group views --- .../Monitoring/Backend/Ido/Query/HostgroupQuery.php | 11 ++--------- .../Backend/Ido/Query/ServicegroupQuery.php | 11 ++--------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostgroupQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostgroupQuery.php index 8b6b74435..15372ded2 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostgroupQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostgroupQuery.php @@ -3,8 +3,6 @@ namespace Icinga\Module\Monitoring\Backend\Ido\Query; -use Icinga\Exception\NotImplementedError; - /** * Query for host groups */ @@ -276,13 +274,8 @@ class HostgroupQuery extends IdoQuery protected function joinSubQuery(IdoQuery $query, $name, $filter, $and, $negate, &$additionalFilter) { if ($name === 'hostgroup') { - if (! $and) { - // IN AND NOT IN works for OR filters w/o subquery joins - throw new NotImplementedError(''); - } else { - // Propagate that the "parent" query has to be filtered as well - $additionalFilter = clone $filter; - } + // Propagate that the "parent" query has to be filtered as well + $additionalFilter = clone $filter; $this->requireVirtualTable('members'); diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicegroupQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicegroupQuery.php index d43c7d7a3..8ad3de7c7 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicegroupQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicegroupQuery.php @@ -3,8 +3,6 @@ namespace Icinga\Module\Monitoring\Backend\Ido\Query; -use Icinga\Exception\NotImplementedError; - class ServicegroupQuery extends IdoQuery { protected $groupBase = array( @@ -290,13 +288,8 @@ class ServicegroupQuery extends IdoQuery return ['so.object_id', 'so.object_id']; } elseif ($name === 'servicegroup') { - if (! $and) { - // IN AND NOT IN for OR filters works w/o subquery joins - throw new NotImplementedError(''); - } else { - // Propagate that the "parent" query has to be filtered as well - $additionalFilter = clone $filter; - } + // Propagate that the "parent" query has to be filtered as well + $additionalFilter = clone $filter; $this->requireVirtualTable('members');