From: Eric Lippmann Date: Thu, 26 Oct 2017 11:59:37 +0000 (+0200) Subject: ido: Drop unused instance_id indices from comments, downtimes and their related histo... X-Git-Tag: v2.8.0~19^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6f6703042e1db672b30fd2f4da4235f6605a9c2e;p=icinga2 ido: Drop unused instance_id indices from comments, downtimes and their related history tables --- diff --git a/lib/db_ido_mysql/schema/upgrade/2.8.0.sql b/lib/db_ido_mysql/schema/upgrade/2.8.0.sql index 5fed98312..db546d007 100644 --- a/lib/db_ido_mysql/schema/upgrade/2.8.0.sql +++ b/lib/db_ido_mysql/schema/upgrade/2.8.0.sql @@ -9,6 +9,58 @@ SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; +-- -------------------------------------------------------- +-- Helper functions and procedures for DROP INDEX IF EXISTS +-- -------------------------------------------------------- + +DELIMITER // +DROP FUNCTION IF EXISTS ido_index_exists // +CREATE FUNCTION ido_index_exists( + f_table_name varchar(64), + f_index_name varchar(64) +) + RETURNS BOOL + DETERMINISTIC + READS SQL DATA + BEGIN + DECLARE index_exists BOOL DEFAULT FALSE; + SELECT EXISTS ( + SELECT 1 + FROM information_schema.statistics + WHERE table_schema = SCHEMA() + AND table_name = f_table_name + AND index_name = f_index_name + ) INTO index_exists; + RETURN index_exists; + END // + +DROP PROCEDURE IF EXISTS ido_drop_index_if_exists // +CREATE PROCEDURE ido_drop_index_if_exists ( + IN p_table_name varchar(64), + IN p_index_name varchar(64) +) + DETERMINISTIC + MODIFIES SQL DATA + BEGIN + IF ido_index_exists(p_table_name, p_index_name) + THEN + SET @ido_drop_index_sql = CONCAT('ALTER TABLE `', SCHEMA(), '`.`', p_table_name, '` DROP INDEX `', p_index_name, '`'); + PREPARE stmt FROM @ido_drop_index_sql; + EXECUTE stmt; + DEALLOCATE PREPARE stmt; + SET @ido_drop_index_sql = NULL; + END IF; + END // +DELIMITER ; + +CALL ido_drop_index_if_exists('icinga_downtimehistory', 'instance_id'); +CALL ido_drop_index_if_exists('icinga_scheduleddowntime', 'instance_id'); +CALL ido_drop_index_if_exists('icinga_commenthistory', 'instance_id'); +CALL ido_drop_index_if_exists('icinga_comments', 'instance_id'); + +DROP FUNCTION ido_index_exists; +DROP PROCEDURE ido_drop_index_if_exists; + -- ----------------------------------------- -- #5458 IDO: Improve downtime removal/cancel -- ----------------------------------------- diff --git a/lib/db_ido_pgsql/schema/upgrade/2.8.0.sql b/lib/db_ido_pgsql/schema/upgrade/2.8.0.sql index 8e49f17eb..cae9b6699 100644 --- a/lib/db_ido_pgsql/schema/upgrade/2.8.0.sql +++ b/lib/db_ido_pgsql/schema/upgrade/2.8.0.sql @@ -7,6 +7,11 @@ -- Please check https://docs.icinga.com for upgrading information! -- ----------------------------------------- +ALTER TABLE icinga_downtimehistory DROP CONSTRAINT IF EXISTS UQ_downtimehistory; +ALTER TABLE icinga_scheduleddowntime DROP CONSTRAINT IF EXISTS UQ_scheduleddowntime; +ALTER TABLE icinga_commenthistory DROP CONSTRAINT IF EXISTS UQ_commenthistory; +ALTER TABLE icinga_comments DROP CONSTRAINT IF EXISTS UQ_comments; + -- ----------------------------------------- -- #5458 IDO: Improve downtime removal/cancel -- -----------------------------------------