Migrate kolab cache tables to utf8mb4

This commit is contained in:
Aleksander Machniak 2021-10-11 10:48:05 +02:00
parent 971c8d715c
commit c2556f00e3
6 changed files with 62 additions and 18 deletions

View file

@ -1,7 +1,6 @@
/**
* libkolab database schema
*
* @version 1.2
* @author Thomas Bruederli
* @licence GNU AGPL
*/
@ -20,7 +19,7 @@ CREATE TABLE `kolab_folders` (
`objectcount` BIGINT DEFAULT NULL,
PRIMARY KEY(`folder_id`),
INDEX `resource_type` (`resource`, `type`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
DROP TABLE IF EXISTS `kolab_cache`;
@ -45,7 +44,7 @@ CREATE TABLE `kolab_cache_contact` (
PRIMARY KEY(`folder_id`,`msguid`),
INDEX `contact_type` (`folder_id`,`type`),
INDEX `contact_uid2msguid` (`folder_id`,`uid`,`msguid`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
DROP TABLE IF EXISTS `kolab_cache_event`;
@ -64,7 +63,7 @@ CREATE TABLE `kolab_cache_event` (
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY(`folder_id`,`msguid`),
INDEX `event_uid2msguid` (`folder_id`,`uid`,`msguid`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
DROP TABLE IF EXISTS `kolab_cache_task`;
@ -83,7 +82,7 @@ CREATE TABLE `kolab_cache_task` (
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY(`folder_id`,`msguid`),
INDEX `task_uid2msguid` (`folder_id`,`uid`,`msguid`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
DROP TABLE IF EXISTS `kolab_cache_journal`;
@ -102,7 +101,7 @@ CREATE TABLE `kolab_cache_journal` (
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY(`folder_id`,`msguid`),
INDEX `journal_uid2msguid` (`folder_id`,`uid`,`msguid`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
DROP TABLE IF EXISTS `kolab_cache_note`;
@ -119,7 +118,7 @@ CREATE TABLE `kolab_cache_note` (
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY(`folder_id`,`msguid`),
INDEX `note_uid2msguid` (`folder_id`,`uid`,`msguid`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
DROP TABLE IF EXISTS `kolab_cache_file`;
@ -138,7 +137,7 @@ CREATE TABLE `kolab_cache_file` (
PRIMARY KEY(`folder_id`,`msguid`),
INDEX `folder_filename` (`folder_id`, `filename`),
INDEX `file_uid2msguid` (`folder_id`,`uid`,`msguid`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
DROP TABLE IF EXISTS `kolab_cache_configuration`;
@ -157,7 +156,7 @@ CREATE TABLE `kolab_cache_configuration` (
PRIMARY KEY(`folder_id`,`msguid`),
INDEX `configuration_type` (`folder_id`,`type`),
INDEX `configuration_uid2msguid` (`folder_id`,`uid`,`msguid`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
DROP TABLE IF EXISTS `kolab_cache_freebusy`;
@ -176,8 +175,8 @@ CREATE TABLE `kolab_cache_freebusy` (
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY(`folder_id`,`msguid`),
INDEX `freebusy_uid2msguid` (`folder_id`,`uid`,`msguid`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
/*!40014 SET FOREIGN_KEY_CHECKS=1 */;
REPLACE INTO `system` (`name`, `value`) VALUES ('libkolab-version', '2019092900');
REPLACE INTO `system` (`name`, `value`) VALUES ('libkolab-version', '2021101100');

View file

@ -0,0 +1,46 @@
-- changing table format and dropping foreign keys is needed for some versions of MySQL
ALTER TABLE `kolab_cache_contact` DROP FOREIGN KEY `fk_kolab_cache_contact_folder`;
ALTER TABLE `kolab_cache_event` DROP FOREIGN KEY`fk_kolab_cache_event_folder`;
ALTER TABLE `kolab_cache_task` DROP FOREIGN KEY`fk_kolab_cache_task_folder`;
ALTER TABLE `kolab_cache_journal` DROP FOREIGN KEY`fk_kolab_cache_journal_folder`;
ALTER TABLE `kolab_cache_note` DROP FOREIGN KEY`fk_kolab_cache_note_folder`;
ALTER TABLE `kolab_cache_file` DROP FOREIGN KEY`fk_kolab_cache_file_folder`;
ALTER TABLE `kolab_cache_configuration` DROP FOREIGN KEY`fk_kolab_cache_configuration_folder`;
ALTER TABLE `kolab_cache_freebusy` DROP FOREIGN KEY`fk_kolab_cache_freebusy_folder`;
ALTER TABLE `kolab_folders` ROW_FORMAT=DYNAMIC;
ALTER TABLE `kolab_cache_contact` ROW_FORMAT=DYNAMIC;
ALTER TABLE `kolab_cache_event` ROW_FORMAT=DYNAMIC;
ALTER TABLE `kolab_cache_task` ROW_FORMAT=DYNAMIC;
ALTER TABLE `kolab_cache_journal` ROW_FORMAT=DYNAMIC;
ALTER TABLE `kolab_cache_note` ROW_FORMAT=DYNAMIC;
ALTER TABLE `kolab_cache_file` ROW_FORMAT=DYNAMIC;
ALTER TABLE `kolab_cache_configuration` ROW_FORMAT=DYNAMIC;
ALTER TABLE `kolab_cache_freebusy` ROW_FORMAT=DYNAMIC;
ALTER TABLE `kolab_folders` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `kolab_cache_contact` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `kolab_cache_event` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `kolab_cache_task` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `kolab_cache_journal` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `kolab_cache_note` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `kolab_cache_file` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `kolab_cache_configuration` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `kolab_cache_freebusy` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `kolab_cache_contact` ADD CONSTRAINT `fk_kolab_cache_contact_folder` FOREIGN KEY (`folder_id`)
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `kolab_cache_event` ADD CONSTRAINT `fk_kolab_cache_event_folder` FOREIGN KEY (`folder_id`)
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `kolab_cache_task` ADD CONSTRAINT `fk_kolab_cache_task_folder` FOREIGN KEY (`folder_id`)
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `kolab_cache_journal` ADD CONSTRAINT `fk_kolab_cache_journal_folder` FOREIGN KEY (`folder_id`)
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `kolab_cache_note` ADD CONSTRAINT `fk_kolab_cache_note_folder` FOREIGN KEY (`folder_id`)
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `kolab_cache_file` ADD CONSTRAINT `fk_kolab_cache_file_folder` FOREIGN KEY (`folder_id`)
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `kolab_cache_configuration` ADD CONSTRAINT `fk_kolab_cache_configuration_folder` FOREIGN KEY (`folder_id`)
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `kolab_cache_freebusy` ADD CONSTRAINT `fk_kolab_cache_freebusy_folder` FOREIGN KEY (`folder_id`)
REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE;

View file

@ -1,11 +1,9 @@
/**
* libkolab database schema
*
* @version 1.2
* @author Aleksander Machniak
* @licence GNU AGPL
**/
*/
CREATE TABLE "kolab_folders" (
"folder_id" number NOT NULL PRIMARY KEY,
@ -175,4 +173,4 @@ CREATE TABLE "kolab_cache_freebusy" (
CREATE INDEX "kolab_cache_fb_uid2msguid" ON "kolab_cache_freebusy" ("folder_id", "uid", "msguid");
INSERT INTO "system" ("name", "value") VALUES ('libkolab-version', '2019092900');
INSERT INTO "system" ("name", "value") VALUES ('libkolab-version', '2021101100');

View file

@ -0,0 +1 @@
-- empty

View file

@ -1,10 +1,9 @@
/**
* libkolab database schema
*
* @version 1.2
* @author Thomas Bruederli
* @licence GNU AGPL
**/
*/
CREATE TABLE kolab_folders (
folder_id INTEGER NOT NULL PRIMARY KEY,
@ -148,4 +147,4 @@ CREATE TABLE kolab_cache_freebusy (
CREATE INDEX ix_freebusy_uid2msguid ON kolab_cache_freebusy(folder_id,uid,msguid);
INSERT INTO system (name, value) VALUES ('libkolab-version', '2019092900');
INSERT INTO system (name, value) VALUES ('libkolab-version', '2021101100');

View file

@ -0,0 +1 @@
-- empty