From a4d34e265f45bcd128171fc1828103cfdee54164 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Fri, 11 Feb 2022 12:04:05 +0100 Subject: [PATCH] IdoQuery: Don't try to add a `HAVING` without group by rules --- .../Monitoring/Backend/Ido/Query/IdoQuery.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/IdoQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/IdoQuery.php index c6bba49ca..c925191ae 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/IdoQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/IdoQuery.php @@ -616,16 +616,18 @@ abstract class IdoQuery extends DbQuery } } - if ($and || $negate && ! $and) { + if ($and || $negate) { // Having is only required for AND and != filters, // e.g. hostgroup_name=(ping&linux), hostgroup_name!=ping, hostgroup_name!=(ping|linux) $groups = $subQuery->getGroup(); - $group = $groups[0]; - $group = preg_replace('/(?<=^|\s)\w+(?=\.)/', 'sub_$0', $group); + if (! empty($groups)) { + $group = $groups[0]; + $group = preg_replace('/(?<=^|\s)\w+(?=\.)/', 'sub_$0', $group); - $cnt = count($expr); + $cnt = count($expr); - $subQuery->select()->having("COUNT(DISTINCT $group) >= $cnt"); + $subQuery->select()->having("COUNT(DISTINCT $group) >= $cnt"); + } } $subQueryFilter->setColumn(preg_replace(