From 24195bb90d2b9b30540ba1372039c758cae59be8 Mon Sep 17 00:00:00 2001 From: Kirill Solomko Date: Mon, 12 Feb 2024 22:31:23 +0100 Subject: [PATCH] MT#59386 address foreign key handling in 6425.up/down * Instead of using "set foreign_key_checks=0" before altering voicemail_spool voicemail_users tables the foreign key voicemail_spool.`v_s_mailboxuser_ref` is dropped instead and re-created after the alter table operations (same lines where "set foreign_key_checks=0" and "set foreign_key_checks=1" were respectively. * That addresses the changed behavior with MariaDB 10.11.6 where "alter table" statements the change columns involved in a foreign key and potentially causing data loss are prohibited even with "set foreign_key_checks=0". * This change is only valid for new deployments and databases with already applied 6425.up are not affected. (cherry picked from commit 25257f1657b3675106fccd45842e71602e839a8c) Change-Id: I2f2a85ca9f9f7d15058f41f5d8eaaec23ec501fa --- db_scripts/base/6425.down | 4 ++-- db_scripts/base/6425.up | 4 ++-- schema/kamailio.sql | 2 +- schema/provisioning.sql | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/db_scripts/base/6425.down b/db_scripts/base/6425.down index 79be2ccb..b3c49ebe 100644 --- a/db_scripts/base/6425.down +++ b/db_scripts/base/6425.down @@ -175,7 +175,7 @@ ALTER TABLE `address` MODIFY `tag` VARCHAR(64) CHARACTER SET latin1; ALTER TABLE `version` DEFAULT CHARACTER SET latin1; ALTER TABLE `version` MODIFY `table_name` varchar(32) CHARACTER SET latin1 NOT NULL; -SET FOREIGN_KEY_CHECKS=0; +ALTER TABLE `voicemail_spool` DROP FOREIGN KEY `v_s_mailboxuser_ref`; ALTER TABLE `voicemail_users` DEFAULT CHARACTER SET latin1; ALTER TABLE `voicemail_users` MODIFY `customer_id` char(36) CHARACTER SET latin1 NOT NULL DEFAULT ''; @@ -211,7 +211,7 @@ ALTER TABLE `voicemail_spool` MODIFY `duration` varchar(16) CHARACTER SET latin1 ALTER TABLE `voicemail_spool` MODIFY `mailboxuser` varchar(255) CHARACTER SET latin1 DEFAULT ''; ALTER TABLE `voicemail_spool` MODIFY `mailboxcontext` varchar(63) CHARACTER SET latin1 DEFAULT ''; -SET FOREIGN_KEY_CHECKS=1; +ALTER TABLE `voicemail_spool` ADD CONSTRAINT `v_s_mailboxuser_ref` FOREIGN KEY (`mailboxuser`) REFERENCES `voicemail_users` (`customer_id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `fax_preferences` DEFAULT CHARACTER SET latin1; ALTER TABLE `fax_preferences` MODIFY `password` varchar(64) CHARACTER SET latin1 default NULL; diff --git a/db_scripts/base/6425.up b/db_scripts/base/6425.up index 2af2ab61..780afe35 100644 --- a/db_scripts/base/6425.up +++ b/db_scripts/base/6425.up @@ -175,7 +175,7 @@ ALTER TABLE `address` MODIFY `tag` VARCHAR(64) CHARACTER SET utf8; ALTER TABLE `version` DEFAULT CHARACTER SET utf8; ALTER TABLE `version` MODIFY `table_name` varchar(32) CHARACTER SET utf8 NOT NULL; -SET FOREIGN_KEY_CHECKS=0; +ALTER TABLE `voicemail_spool` DROP FOREIGN KEY `v_s_mailboxuser_ref`; ALTER TABLE `voicemail_users` DEFAULT CHARACTER SET utf8; ALTER TABLE `voicemail_users` MODIFY `customer_id` char(36) CHARACTER SET utf8 NOT NULL DEFAULT ''; @@ -211,7 +211,7 @@ ALTER TABLE `voicemail_spool` MODIFY `duration` varchar(16) CHARACTER SET utf8 D ALTER TABLE `voicemail_spool` MODIFY `mailboxuser` varchar(255) CHARACTER SET utf8 DEFAULT ''; ALTER TABLE `voicemail_spool` MODIFY `mailboxcontext` varchar(63) CHARACTER SET utf8 DEFAULT ''; -SET FOREIGN_KEY_CHECKS=1; +ALTER TABLE `voicemail_spool` ADD CONSTRAINT `v_s_mailboxuser_ref` FOREIGN KEY (`mailboxuser`) REFERENCES `voicemail_users` (`customer_id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `fax_preferences` DEFAULT CHARACTER SET utf8; ALTER TABLE `fax_preferences` MODIFY `password` varchar(64) CHARACTER SET utf8 default NULL; diff --git a/schema/kamailio.sql b/schema/kamailio.sql index 4400356c..ca98266c 100644 --- a/schema/kamailio.sql +++ b/schema/kamailio.sql @@ -1069,7 +1069,7 @@ INSERT INTO `dom_preferences` VALUES (27,'','0','voip.sipwise.local','play_annou INSERT INTO `dom_preferences` VALUES (28,'','0','voip.sipwise.local','mobile_push_enable',0,'never',NOW()); INSERT INTO `dom_preferences` VALUES (29,'','0','voip.sipwise.local','busy_hg_member_mode',0,'ring',NOW()); INSERT INTO `domain` VALUES (1,'voip.sipwise.local',NOW(),NULL); -INSERT INTO `subscriber` VALUES (1,'no_such_number','voip.sipwise.local','300fe0133470abbd7fbe99ba24f85aa9','6e177569e4b9ee1d16c595f92185561f','e39aa0e7c1a9dbda4e6322fb84f6f0a4','9bcb88b6-541a-43da-8fdc-816f5557ff93','',NOW()); +INSERT INTO `subscriber` VALUES (1,'no_such_number','voip.sipwise.local','bcbf2d8dcd10d379a483244541d37d22','086dd9c520205dbfe720970a435044d8','8f9a540ede124f4c8b98c5064aec496b','9bcb88b6-541a-43da-8fdc-816f5557ff93','',NOW()); INSERT INTO `usr_preferences` VALUES (1,'9bcb88b6-541a-43da-8fdc-816f5557ff93','no_such_number','voip.sipwise.local','cloud_pbx_hunt_policy',0,'none',NOW()); INSERT INTO `usr_preferences` VALUES (5,'9bcb88b6-541a-43da-8fdc-816f5557ff93','no_such_number','voip.sipwise.local','emergency_location_format',0,'cirpack',NOW()); INSERT INTO `usr_preferences` VALUES (6,'9bcb88b6-541a-43da-8fdc-816f5557ff93','no_such_number','voip.sipwise.local','play_announce_before_recording',0,'never',NOW()); diff --git a/schema/provisioning.sql b/schema/provisioning.sql index 24356e4d..cf147ee1 100644 --- a/schema/provisioning.sql +++ b/schema/provisioning.sql @@ -4476,7 +4476,7 @@ INSERT INTO `voip_sound_handles` VALUES (149,'recent_call_deleted',12,1); INSERT INTO `voip_sound_handles` VALUES (150,'ringback_tone',13,1); INSERT INTO `voip_sound_handles` VALUES (151,'aa_timeout',2,1); INSERT INTO `voip_sound_handles` VALUES (152,'aa_default',2,1); -INSERT INTO `voip_subscribers` VALUES (3,'no_such_number',2,'9bcb88b6-541a-43da-8fdc-816f5557ff93','300fe0133470abbd7fbe99ba24f85aa9',0,NULL,NULL,NULL,0,0,'none',NULL,NULL,NULL,NULL,NOW(),NOW()); +INSERT INTO `voip_subscribers` VALUES (3,'no_such_number',2,'9bcb88b6-541a-43da-8fdc-816f5557ff93','bcbf2d8dcd10d379a483244541d37d22',0,NULL,NULL,NULL,0,0,'none',NULL,NULL,NULL,NULL,NOW(),NOW()); INSERT INTO `voip_usr_preferences` VALUES (1,3,97,'none',NOW()); INSERT INTO `voip_usr_preferences` VALUES (7,3,372,'cirpack',NOW()); INSERT INTO `voip_usr_preferences` VALUES (8,3,305,'never',NOW());