From 59b5ef7b80b835e90f71f8bc2285de207d3bb141 Mon Sep 17 00:00:00 2001 From: Sergey Konovalov Date: Sun, 25 Sep 2022 19:05:38 +0300 Subject: [PATCH] [schema] Add SQL upgrade script from 7.1 to 7.2; For ONLYOFFICE/DocumentServer#1911 --- DocService/sources/DocsCoServer.js | 2 +- schema/mysql/upgrade/upgradev720.sql | 32 +++++++++++++++++++++++ schema/postgresql/upgrade/upgradev720.sql | 21 +++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 schema/mysql/upgrade/upgradev720.sql create mode 100644 schema/postgresql/upgrade/upgradev720.sql diff --git a/DocService/sources/DocsCoServer.js b/DocService/sources/DocsCoServer.js index 14a42ca1..82f8323b 100644 --- a/DocService/sources/DocsCoServer.js +++ b/DocService/sources/DocsCoServer.js @@ -3487,7 +3487,7 @@ exports.install = function(server, callbackFunction) { } } }); - if (-1 !== index) { + if (-1 !== index || 0 === res.length) { callbackFunction(); } else { operationContext.global.logger.error('DB table "%s" does not contain %s column, columns info: %j', tableName, tableRequiredColumn, res); diff --git a/schema/mysql/upgrade/upgradev720.sql b/schema/mysql/upgrade/upgradev720.sql new file mode 100644 index 00000000..51e483c2 --- /dev/null +++ b/schema/mysql/upgrade/upgradev720.sql @@ -0,0 +1,32 @@ +DELIMITER DLM00 + +DROP PROCEDURE IF EXISTS upgrade720 DLM00 + +CREATE PROCEDURE upgrade720() +BEGIN + + IF NOT EXISTS(SELECT * FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'task_result' AND COLUMN_NAME = 'tenant') THEN + SET SQL_SAFE_UPDATES=0; + ALTER TABLE `task_result` ADD COLUMN `tenant` VARCHAR(255) NULL FIRST; + UPDATE `task_result` SET `tenant`='localhost' WHERE `tenant` IS NULL; + ALTER TABLE `task_result` CHANGE COLUMN `tenant` `tenant` VARCHAR(255) NOT NULL; + ALTER TABLE `task_result` DROP PRIMARY KEY; + ALTER TABLE `task_result` ADD PRIMARY KEY (`tenant`, `id`); + SET SQL_SAFE_UPDATES=1; + END IF; + + IF NOT EXISTS(SELECT * FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'doc_changes' AND COLUMN_NAME = 'tenant') THEN + SET SQL_SAFE_UPDATES=0; + ALTER TABLE `doc_changes` ADD COLUMN `tenant` VARCHAR(255) NULL FIRST; + UPDATE `doc_changes` SET `tenant`='localhost' WHERE `tenant` IS NULL; + ALTER TABLE `doc_changes` CHANGE COLUMN `tenant` `tenant` VARCHAR(255) NOT NULL; + ALTER TABLE `doc_changes` DROP PRIMARY KEY; + ALTER TABLE `doc_changes` ADD PRIMARY KEY (`tenant`, `id`,`change_id`); + SET SQL_SAFE_UPDATES=1; + END IF; + +END DLM00 + +CALL upgrade720() DLM00 + +DELIMITER ; diff --git a/schema/postgresql/upgrade/upgradev720.sql b/schema/postgresql/upgrade/upgradev720.sql new file mode 100644 index 00000000..09799580 --- /dev/null +++ b/schema/postgresql/upgrade/upgradev720.sql @@ -0,0 +1,21 @@ +DO $$ + BEGIN + BEGIN + ALTER TABLE "task_result" ADD COLUMN "tenant" varchar(255) COLLATE "default" NOT NULL DEFAULT 'localhost'; + ALTER TABLE "task_result" ALTER COLUMN "tenant" DROP DEFAULT; + ALTER TABLE "task_result" DROP CONSTRAINT IF EXISTS task_result_pkey; + ALTER TABLE "task_result" ADD PRIMARY KEY ("tenant", "id"); + EXCEPTION + WHEN duplicate_column THEN RAISE NOTICE 'column `tenant` already exists.'; + END; + + BEGIN + ALTER TABLE "doc_changes" ADD COLUMN "tenant" varchar(255) COLLATE "default" NOT NULL DEFAULT 'localhost'; + ALTER TABLE "doc_changes" ALTER COLUMN "tenant" DROP DEFAULT; + ALTER TABLE "doc_changes" DROP CONSTRAINT IF EXISTS doc_changes_pkey; + ALTER TABLE "doc_changes" ADD PRIMARY KEY ("tenant", "id", "change_id"); + EXCEPTION + WHEN duplicate_column THEN RAISE NOTICE 'column `tenant` already exists.'; + END; + END; +$$