Private GIT

Skip to content
Snippets Groups Projects
Unverified Commit 4592a805 authored by Kevin Duret's avatar Kevin Duret Committed by GitHub
Browse files

fix(sql): add index in centreon_acl for topcounter (#5992)

* fix(sql): add index in centreon_acl for topcounter

Refs: #5974

* enh(update): add acl index on updgrade
parent a913ea34
Branches
Tags
No related merge requests found
......@@ -129,10 +129,13 @@ $query_svc_status = "SELECT " .
"AND h.host_id = s.host_id " .
"AND (h.name NOT LIKE '_Module_%' OR h.name LIKE '_Module_Meta%') ";
if (!$obj->is_admin) {
$query_svc_status .= "AND s.service_id IN ( " .
"SELECT DISTINCT service_id " .
$query_svc_status .= "AND EXISTS (" .
"SELECT service_id " .
"FROM centreon_acl " .
"WHERE centreon_acl.group_id IN (" . $obj->grouplistStr . ")) ";
"WHERE centreon_acl.host_id = h.host_id " .
"AND centreon_acl.service_id = s.service_id " .
"AND centreon_acl.group_id IN (" . $obj->grouplistStr . ")" .
") ";
}
$DBRESULT = $obj->DBC->query($query_svc_status);
$svc_stat = array_map("myDecode", $DBRESULT->fetchRow());
......
......@@ -15,7 +15,8 @@ CREATE TABLE `centreon_acl` (
`host_id` int(11) DEFAULT NULL,
`service_id` int(11) DEFAULT NULL,
`group_id` int(11) DEFAULT NULL,
KEY `index1` (`group_id`,`host_id`,`service_id`)
KEY `index1` (`group_id`,`host_id`,`service_id`),
KEY `index2` (`host_id`,`service_id`,`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
......
<?php
/*
* Copyright 2005-2016 Centreon
* Centreon is developped by : Julien Mathis and Romain Le Merlus under
* GPL Licence 2.0.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation ; either version 2 of the License.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, see <http://www.gnu.org/licenses>.
*
* Linking this program statically or dynamically with other modules is making a
* combined work based on this program. Thus, the terms and conditions of the GNU
* General Public License cover the whole combination.
*
* As a special exception, the copyright holders of this program give Centreon
* permission to link this program with independent modules to produce an executable,
* regardless of the license terms of these independent modules, and to copy and
* distribute the resulting executable under terms of Centreon choice, provided that
* Centreon also meet, for each linked independent module, the terms and conditions
* of the license of that module. An independent module is a module which is not
* derived from this program. If you modify this program, you may extend this
* exception to your version of the program, but you are not obliged to do so. If you
* do not wish to do so, delete this exception statement from your version.
*
* For more information : contact@centreon.com
*
*
*/
/* Update comments unique key */
if (isset($pearDBO)) {
$query = "SELECT count(*) AS number " .
"FROM INFORMATION_SCHEMA.STATISTICS " .
"WHERE table_schema = '" . $conf_centreon['dbcstg'] . "' " .
"AND table_name = 'centreon_acl' " .
"AND index_name='index1'";
$res = $pearDBO->query($query);
$data = $res->fetchRow();
if ($data['number'] == 0) {
$pearDBO->query('ALTER TABLE centreon_acl ADD INDEX `index2` (`host_id`,`service_id`,`group_id`)');
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment