diff --git a/schema/mysql-migrations/upgrade_177.sql b/schema/mysql-migrations/upgrade_177.sql new file mode 100644 index 00000000..edceab04 --- /dev/null +++ b/schema/mysql-migrations/upgrade_177.sql @@ -0,0 +1,20 @@ +ALTER TABLE icinga_service_set ADD COLUMN uuid VARBINARY(16) DEFAULT NULL AFTER id; +SET @tmp_uuid = LOWER(CONCAT( + LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'), + LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'), '-', + LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'), '-', + '4', + LPAD(HEX(FLOOR(RAND() * 0x0fff)), 3, '0'), '-', + HEX(FLOOR(RAND() * 4 + 8)), + LPAD(HEX(FLOOR(RAND() * 0x0fff)), 3, '0'), '-', + LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'), + LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'), + LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0') +)); +UPDATE icinga_service_set SET uuid = UNHEX(LPAD(LPAD(HEX(id), 8, '0'), 32, REPLACE(@tmp_uuid, '-', ''))) WHERE uuid IS NULL; +ALTER TABLE icinga_service_set MODIFY COLUMN uuid VARBINARY(16) NOT NULL, ADD UNIQUE INDEX uuid (uuid); + + +INSERT INTO director_schema_migration + (schema_version, migration_time) + VALUES ('177', NOW()); diff --git a/schema/pgsql-migrations/upgrade_177.sql b/schema/pgsql-migrations/upgrade_177.sql new file mode 100644 index 00000000..09784b1a --- /dev/null +++ b/schema/pgsql-migrations/upgrade_177.sql @@ -0,0 +1,8 @@ +ALTER TABLE icinga_service_set ADD COLUMN uuid bytea UNIQUE CHECK(LENGTH(uuid) = 16); +UPDATE icinga_service_set SET uuid = decode(replace(gen_random_uuid()::text, '-', ''), 'hex') WHERE uuid IS NULL; +ALTER TABLE icinga_service_set ALTER COLUMN uuid SET NOT NULL; +CREATE UNIQUE INDEX service_set_uuid ON icinga_service_set (uuid); + +INSERT INTO director_schema_migration +(schema_version, migration_time) +VALUES (177, NOW()); diff --git a/schema/pgsql.sql b/schema/pgsql.sql index 44970d39..b73d84da 100644 --- a/schema/pgsql.sql +++ b/schema/pgsql.sql @@ -813,6 +813,7 @@ ALTER TABLE icinga_host_template_choice CREATE TABLE icinga_service_set ( id serial, + uuid bytea UNIQUE CHECK(LENGTH(uuid) = 16), host_id integer DEFAULT NULL, object_name character varying(128) NOT NULL, object_type enum_object_type_all NOT NULL, @@ -828,6 +829,7 @@ CREATE TABLE icinga_service_set ( CREATE UNIQUE INDEX service_set_name ON icinga_service_set (object_name, host_id); CREATE INDEX service_set_host ON icinga_service_set (host_id); +CREATE UNIQUE INDEX service_set_uuid ON icinga_service_set (uuid); CREATE TABLE icinga_service_template_choice (