[MM-40952] migrations: Add if statements for some queries (#19359)
* migrations: add if statements for some queries * add better checks to upgrade posts v6 migration * use "is null" instead of "= null" * fix down script for users v6 * reflect review comments
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
509f49c813
Коммит
56c7da5817
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
@@ -38,4 +38,28 @@ PREPARE alterIfNotExists FROM @preparedStatement;
|
|||||||
EXECUTE alterIfNotExists;
|
EXECUTE alterIfNotExists;
|
||||||
DEALLOCATE PREPARE alterIfNotExists;
|
DEALLOCATE PREPARE alterIfNotExists;
|
||||||
|
|
||||||
|
CREATE PROCEDURE Migrate_If_Version_Below_5280 ()
|
||||||
|
BEGIN
|
||||||
|
DECLARE
|
||||||
|
CURRENT_DB_VERSION TEXT;
|
||||||
|
DECLARE
|
||||||
|
SYSTEMS_TABLE_EXISTS INT;
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE
|
||||||
|
TABLE_NAME = 'Systems'
|
||||||
|
AND table_schema = DATABASE() INTO SYSTEMS_TABLE_EXISTS;
|
||||||
|
IF (SYSTEMS_TABLE_EXISTS > 0) THEN
|
||||||
|
SELECT
|
||||||
|
Value
|
||||||
|
FROM
|
||||||
|
Systems
|
||||||
|
WHERE
|
||||||
|
Name = 'Version' INTO CURRENT_DB_VERSION;
|
||||||
|
IF(INET_ATON(CURRENT_DB_VERSION) < INET_ATON('5.28.0')) THEN
|
||||||
UPDATE Commands SET PluginId = '' WHERE PluginId IS NULL;
|
UPDATE Commands SET PluginId = '' WHERE PluginId IS NULL;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
CALL Migrate_If_Version_Below_5280 ();
|
||||||
|
DROP PROCEDURE IF EXISTS Migrate_If_Version_Below_5280;
|
||||||
|
|||||||
@@ -27,20 +27,23 @@ PREPARE alterIfNotExists FROM @preparedStatement;
|
|||||||
EXECUTE alterIfNotExists;
|
EXECUTE alterIfNotExists;
|
||||||
DEALLOCATE PREPARE alterIfNotExists;
|
DEALLOCATE PREPARE alterIfNotExists;
|
||||||
|
|
||||||
CREATE PROCEDURE MigrateRoles ()
|
CREATE PROCEDURE Migrate_If_Version_Below_500 ()
|
||||||
BEGIN DECLARE
|
BEGIN
|
||||||
SchemaVersion TEXT;
|
DECLARE
|
||||||
SELECT Value FROM Systems WHERE Name = 'Version' INTO SchemaVersion;
|
CURRENT_DB_VERSION TEXT;
|
||||||
IF(SchemaVersion = '4.10.0') THEN
|
SELECT
|
||||||
|
Value
|
||||||
|
FROM
|
||||||
|
Systems
|
||||||
|
WHERE
|
||||||
|
Name = 'Version' INTO CURRENT_DB_VERSION;
|
||||||
|
IF(INET_ATON(CURRENT_DB_VERSION) < INET_ATON('5.0.0')) THEN
|
||||||
UPDATE Roles SET SchemeManaged = 0
|
UPDATE Roles SET SchemeManaged = 0
|
||||||
WHERE Name NOT IN ('system_user', 'system_admin', 'team_user', 'team_admin', 'channel_user', 'channel_admin');
|
WHERE Name NOT IN ('system_user', 'system_admin', 'team_user', 'team_admin', 'channel_user', 'channel_admin');
|
||||||
|
|
||||||
END IF;
|
END IF;
|
||||||
END;
|
END;
|
||||||
|
CALL Migrate_If_Version_Below_500 ();
|
||||||
Call MigrateRoles();
|
DROP PROCEDURE IF EXISTS Migrate_If_Version_Below_500;
|
||||||
DROP PROCEDURE IF EXISTS MigrateRoles;
|
|
||||||
|
|
||||||
SET @preparedStatement = (SELECT IF(
|
SET @preparedStatement = (SELECT IF(
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -98,4 +98,19 @@ PREPARE createIndexIfNotExists FROM @preparedStatement;
|
|||||||
EXECUTE createIndexIfNotExists;
|
EXECUTE createIndexIfNotExists;
|
||||||
DEALLOCATE PREPARE createIndexIfNotExists;
|
DEALLOCATE PREPARE createIndexIfNotExists;
|
||||||
|
|
||||||
|
CREATE PROCEDURE Migrate_If_Version_Below_5120 ()
|
||||||
|
BEGIN
|
||||||
|
DECLARE
|
||||||
|
CURRENT_DB_VERSION TEXT;
|
||||||
|
SELECT
|
||||||
|
Value
|
||||||
|
FROM
|
||||||
|
Systems
|
||||||
|
WHERE
|
||||||
|
Name = 'Version' INTO CURRENT_DB_VERSION;
|
||||||
|
IF(INET_ATON(CURRENT_DB_VERSION) < INET_ATON('5.12.0')) THEN
|
||||||
DELETE FROM Sessions where ExpiresAt > 3000000000000;
|
DELETE FROM Sessions where ExpiresAt > 3000000000000;
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
CALL Migrate_If_Version_Below_5120 ();
|
||||||
|
DROP PROCEDURE IF EXISTS Migrate_If_Version_Below_5120;
|
||||||
|
|||||||
@@ -86,14 +86,19 @@ PREPARE alterIfNotExists FROM @preparedStatement;
|
|||||||
EXECUTE alterIfNotExists;
|
EXECUTE alterIfNotExists;
|
||||||
DEALLOCATE PREPARE alterIfNotExists;
|
DEALLOCATE PREPARE alterIfNotExists;
|
||||||
|
|
||||||
CREATE PROCEDURE SharedChannelsSupport ()
|
CREATE PROCEDURE Migrate_If_Version_Below_5350 ()
|
||||||
BEGIN DECLARE
|
BEGIN
|
||||||
SchemaVersion TEXT;
|
DECLARE
|
||||||
SELECT Value FROM Systems WHERE Name = 'Version' INTO SchemaVersion;
|
CURRENT_DB_VERSION TEXT;
|
||||||
IF(SchemaVersion = '5.34.0') THEN
|
SELECT
|
||||||
|
Value
|
||||||
|
FROM
|
||||||
|
Systems
|
||||||
|
WHERE
|
||||||
|
Name = 'Version' INTO CURRENT_DB_VERSION;
|
||||||
|
IF(INET_ATON(CURRENT_DB_VERSION) < INET_ATON('5.35.0')) THEN
|
||||||
UPDATE UploadSessions SET RemoteId='', ReqFileId='' WHERE RemoteId IS NULL;
|
UPDATE UploadSessions SET RemoteId='', ReqFileId='' WHERE RemoteId IS NULL;
|
||||||
END IF;
|
END IF;
|
||||||
END;
|
END;
|
||||||
|
CALL Migrate_If_Version_Below_5350 ();
|
||||||
Call SharedChannelsSupport();
|
DROP PROCEDURE IF EXISTS Migrate_If_Version_Below_5350;
|
||||||
DROP PROCEDURE IF EXISTS SharedChannelsSupport;
|
|
||||||
|
|||||||
@@ -36,7 +36,25 @@ PREPARE createIndexIfNotExists FROM @preparedStatement;
|
|||||||
EXECUTE createIndexIfNotExists;
|
EXECUTE createIndexIfNotExists;
|
||||||
DEALLOCATE PREPARE createIndexIfNotExists;
|
DEALLOCATE PREPARE createIndexIfNotExists;
|
||||||
|
|
||||||
UPDATE Threads
|
CREATE PROCEDURE Migrate_Empty_Threads ()
|
||||||
|
BEGIN
|
||||||
|
DECLARE
|
||||||
|
EMPTY_THREADS_EXIST INT;
|
||||||
|
SELECT
|
||||||
|
COUNT(*)
|
||||||
|
FROM
|
||||||
|
Threads
|
||||||
|
WHERE
|
||||||
|
ChannelId IS NULL INTO EMPTY_THREADS_EXIST;
|
||||||
|
IF(EMPTY_THREADS_EXIST > 0) THEN
|
||||||
|
UPDATE
|
||||||
|
Threads
|
||||||
INNER JOIN Posts ON Posts.Id = Threads.PostId
|
INNER JOIN Posts ON Posts.Id = Threads.PostId
|
||||||
SET Threads.ChannelId=Posts.ChannelId
|
SET
|
||||||
WHERE Threads.ChannelId IS NULL;
|
Threads.ChannelId = Posts.ChannelId
|
||||||
|
WHERE
|
||||||
|
Threads.ChannelId IS NULL;
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
CALL Migrate_Empty_Threads ();
|
||||||
|
DROP PROCEDURE IF EXISTS Migrate_Empty_Threads;
|
||||||
|
|||||||
@@ -58,8 +58,23 @@ PREPARE alterIfExists FROM @preparedStatement;
|
|||||||
EXECUTE alterIfExists;
|
EXECUTE alterIfExists;
|
||||||
DEALLOCATE PREPARE alterIfExists;
|
DEALLOCATE PREPARE alterIfExists;
|
||||||
|
|
||||||
|
CREATE PROCEDURE Migrate_If_Version_Below_350 ()
|
||||||
|
BEGIN
|
||||||
|
DECLARE
|
||||||
|
CURRENT_DB_VERSION TEXT;
|
||||||
|
SELECT
|
||||||
|
Value
|
||||||
|
FROM
|
||||||
|
Systems
|
||||||
|
WHERE
|
||||||
|
Name = 'Version' INTO CURRENT_DB_VERSION;
|
||||||
|
IF(INET_ATON(CURRENT_DB_VERSION) < INET_ATON('3.5.0')) THEN
|
||||||
UPDATE Users SET Roles = 'system_user' WHERE Roles = '';
|
UPDATE Users SET Roles = 'system_user' WHERE Roles = '';
|
||||||
UPDATE Users SET Roles = 'system_user system_admin' WHERE Roles = 'system_admin';
|
UPDATE Users SET Roles = 'system_user system_admin' WHERE Roles = 'system_admin';
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
CALL Migrate_If_Version_Below_350 ();
|
||||||
|
DROP PROCEDURE IF EXISTS Migrate_If_Version_Below_350;
|
||||||
|
|
||||||
SET @preparedStatement = (SELECT IF(
|
SET @preparedStatement = (SELECT IF(
|
||||||
(
|
(
|
||||||
@@ -106,7 +121,22 @@ PREPARE alterIfExists FROM @preparedStatement;
|
|||||||
EXECUTE alterIfExists;
|
EXECUTE alterIfExists;
|
||||||
DEALLOCATE PREPARE alterIfExists;
|
DEALLOCATE PREPARE alterIfExists;
|
||||||
|
|
||||||
|
CREATE PROCEDURE Migrate_If_Version_Below_4100 ()
|
||||||
|
BEGIN
|
||||||
|
DECLARE
|
||||||
|
CURRENT_DB_VERSION TEXT;
|
||||||
|
SELECT
|
||||||
|
Value
|
||||||
|
FROM
|
||||||
|
Systems
|
||||||
|
WHERE
|
||||||
|
Name = 'Version' INTO CURRENT_DB_VERSION;
|
||||||
|
IF(INET_ATON(CURRENT_DB_VERSION) < INET_ATON('4.10.0')) THEN
|
||||||
UPDATE Users SET AuthData=LOWER(AuthData) WHERE AuthService = 'saml';
|
UPDATE Users SET AuthData=LOWER(AuthData) WHERE AuthService = 'saml';
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
CALL Migrate_If_Version_Below_4100 ();
|
||||||
|
DROP PROCEDURE IF EXISTS Migrate_If_Version_Below_4100;
|
||||||
|
|
||||||
SET @preparedStatement = (SELECT IF(
|
SET @preparedStatement = (SELECT IF(
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ SET @tmp_count_root := 0;
|
|||||||
IF(MentionCountRoot_EXIST = 1) THEN
|
IF(MentionCountRoot_EXIST = 1) THEN
|
||||||
SELECT @tmp_count_root := COUNT(*)
|
SELECT @tmp_count_root := COUNT(*)
|
||||||
FROM ChannelMembers
|
FROM ChannelMembers
|
||||||
WHERE MsgCountRoot = NULL
|
WHERE MsgCountRoot IS NULL
|
||||||
OR MentionCountRoot = NULL;
|
OR MentionCountRoot IS NULL;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
SET @preparedStatement =
|
SET @preparedStatement =
|
||||||
|
|||||||
@@ -36,9 +36,10 @@ SET @preparedStatement = (SELECT IF(
|
|||||||
WHERE table_name = 'Users'
|
WHERE table_name = 'Users'
|
||||||
AND table_schema = DATABASE()
|
AND table_schema = DATABASE()
|
||||||
AND column_name = 'Timezone'
|
AND column_name = 'Timezone'
|
||||||
AND column_default = NULL
|
AND column_type = 'varchar(256)'
|
||||||
|
AND column_default IS NULL
|
||||||
) > 0,
|
) > 0,
|
||||||
'ALTER TABLE Users ALTER Timezone SET DEFAULT `{"automaticTimezone":"","manualTimezone":"","useAutomaticTimezone":"true"}`;',
|
'ALTER TABLE Users ALTER Timezone SET DEFAULT \'{"automaticTimezone":"","manualTimezone":"","useAutomaticTimezone":"true"}\';',
|
||||||
'SELECT 1'
|
'SELECT 1'
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ SET @preparedStatement = (SELECT IF(
|
|||||||
WHERE table_name = 'Users'
|
WHERE table_name = 'Users'
|
||||||
AND table_schema = DATABASE()
|
AND table_schema = DATABASE()
|
||||||
AND column_name = 'Timezone'
|
AND column_name = 'Timezone'
|
||||||
AND column_default != NULL
|
AND column_default IS NOT NULL
|
||||||
) > 0,
|
) > 0,
|
||||||
'ALTER TABLE Users ALTER Timezone DROP DEFAULT;',
|
'ALTER TABLE Users ALTER Timezone DROP DEFAULT;',
|
||||||
'SELECT 1'
|
'SELECT 1'
|
||||||
|
|||||||
@@ -1,15 +1,30 @@
|
|||||||
CREATE PROCEDURE MigrateRootId_Posts () BEGIN DECLARE ParentId_EXIST INT;
|
CREATE PROCEDURE MigrateRootId_Posts ()
|
||||||
SELECT COUNT(*)
|
BEGIN
|
||||||
FROM INFORMATION_SCHEMA.COLUMNS
|
DECLARE ParentId_EXIST INT;
|
||||||
|
DECLARE Alter_FileIds INT;
|
||||||
|
DECLARE Alter_Props INT;
|
||||||
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
WHERE TABLE_NAME = 'Posts'
|
WHERE TABLE_NAME = 'Posts'
|
||||||
AND table_schema = DATABASE()
|
AND table_schema = DATABASE()
|
||||||
AND COLUMN_NAME = 'ParentId' INTO ParentId_EXIST;
|
AND COLUMN_NAME = 'ParentId' INTO ParentId_EXIST;
|
||||||
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE table_name = 'Posts'
|
||||||
|
AND table_schema = DATABASE()
|
||||||
|
AND column_name = 'FileIds'
|
||||||
|
AND column_type != 'text' INTO Alter_FileIds;
|
||||||
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE table_name = 'Posts'
|
||||||
|
AND table_schema = DATABASE()
|
||||||
|
AND column_name = 'Props'
|
||||||
|
AND column_type != 'JSON' INTO Alter_Props;
|
||||||
|
IF (Alter_Props OR Alter_FileIds) THEN
|
||||||
IF(ParentId_EXIST > 0) THEN
|
IF(ParentId_EXIST > 0) THEN
|
||||||
UPDATE Posts SET RootId = ParentId WHERE RootId = '' AND RootId != ParentId;
|
UPDATE Posts SET RootId = ParentId WHERE RootId = '' AND RootId != ParentId;
|
||||||
ALTER TABLE Posts MODIFY COLUMN FileIds text, MODIFY COLUMN Props JSON, DROP COLUMN ParentId;
|
ALTER TABLE Posts MODIFY COLUMN FileIds text, MODIFY COLUMN Props JSON, DROP COLUMN ParentId;
|
||||||
ELSE
|
ELSE
|
||||||
ALTER TABLE Posts MODIFY COLUMN FileIds text, MODIFY COLUMN Props JSON;
|
ALTER TABLE Posts MODIFY COLUMN FileIds text, MODIFY COLUMN Props JSON;
|
||||||
END IF;
|
END IF;
|
||||||
|
END IF;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CALL MigrateRootId_Posts ();
|
CALL MigrateRootId_Posts ();
|
||||||
|
|||||||
@@ -14,18 +14,21 @@ CREATE TABLE IF NOT EXISTS roles (
|
|||||||
ALTER TABLE roles ADD COLUMN IF NOT EXISTS builtin boolean;
|
ALTER TABLE roles ADD COLUMN IF NOT EXISTS builtin boolean;
|
||||||
|
|
||||||
DO $$
|
DO $$
|
||||||
<< migrate_roles >>
|
<< migrate_if_version_below_500 >>
|
||||||
|
DECLARE
|
||||||
|
current_db_version VARCHAR(100) := '';
|
||||||
BEGIN
|
BEGIN
|
||||||
IF((
|
|
||||||
SELECT
|
SELECT
|
||||||
value
|
value INTO current_db_version
|
||||||
FROM systems
|
FROM
|
||||||
|
systems
|
||||||
WHERE
|
WHERE
|
||||||
Name = 'Version') = '4.10.0') THEN
|
name = 'Version';
|
||||||
|
IF (string_to_array(current_db_version, '.') < string_to_array('5.0.0', '.')) THEN
|
||||||
UPDATE Roles SET SchemeManaged = false
|
UPDATE Roles SET SchemeManaged = false
|
||||||
WHERE Name NOT IN ('system_user', 'system_admin', 'team_user', 'team_admin', 'channel_user', 'channel_admin');
|
WHERE Name NOT IN ('system_user', 'system_admin', 'team_user', 'team_admin', 'channel_user', 'channel_admin');
|
||||||
END IF;
|
END IF;
|
||||||
END migrate_roles
|
END migrate_if_version_below_500
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
ALTER TABLE roles ALTER COLUMN permissions TYPE TEXT;
|
ALTER TABLE roles ALTER COLUMN permissions TYPE TEXT;
|
||||||
|
|||||||
@@ -19,4 +19,19 @@ CREATE INDEX IF NOT EXISTS idx_sessions_expires_at ON sessions (expiresat);
|
|||||||
CREATE INDEX IF NOT EXISTS idx_sessions_create_at ON sessions (createat);
|
CREATE INDEX IF NOT EXISTS idx_sessions_create_at ON sessions (createat);
|
||||||
CREATE INDEX IF NOT EXISTS idx_sessions_last_activity_at ON sessions (lastactivityat);
|
CREATE INDEX IF NOT EXISTS idx_sessions_last_activity_at ON sessions (lastactivityat);
|
||||||
|
|
||||||
|
DO $$
|
||||||
|
<< migrate_if_version_below_5120 >>
|
||||||
|
DECLARE
|
||||||
|
current_db_version VARCHAR(100) := '';
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
value INTO current_db_version
|
||||||
|
FROM
|
||||||
|
systems
|
||||||
|
WHERE
|
||||||
|
name = 'Version';
|
||||||
|
IF (string_to_array(current_db_version, '.') < string_to_array('5.12.0', '.')) THEN
|
||||||
DELETE FROM sessions where expiresat > 3000000000000;
|
DELETE FROM sessions where expiresat > 3000000000000;
|
||||||
|
END IF;
|
||||||
|
END migrate_if_version_below_5120
|
||||||
|
$$;
|
||||||
|
|||||||
@@ -18,15 +18,18 @@ ALTER TABLE uploadsessions ADD COLUMN IF NOT EXISTS remoteid VARCHAR(26);
|
|||||||
ALTER TABLE uploadsessions ADD COLUMN IF NOT EXISTS reqfileid VARCHAR(26);
|
ALTER TABLE uploadsessions ADD COLUMN IF NOT EXISTS reqfileid VARCHAR(26);
|
||||||
|
|
||||||
DO $$
|
DO $$
|
||||||
<< shared_channel_support >>
|
<< migrate_if_version_below_5350 >>
|
||||||
|
DECLARE
|
||||||
|
current_db_version VARCHAR(100) := '';
|
||||||
BEGIN
|
BEGIN
|
||||||
IF((
|
|
||||||
SELECT
|
SELECT
|
||||||
value
|
value INTO current_db_version
|
||||||
FROM systems
|
FROM
|
||||||
|
systems
|
||||||
WHERE
|
WHERE
|
||||||
Name = 'Version') = '5.34.0') THEN
|
name = 'Version';
|
||||||
|
IF (string_to_array(current_db_version, '.') < string_to_array('5.35.0', '.')) THEN
|
||||||
UPDATE UploadSessions SET RemoteId='', ReqFileId='' WHERE RemoteId IS NULL;
|
UPDATE UploadSessions SET RemoteId='', ReqFileId='' WHERE RemoteId IS NULL;
|
||||||
END IF;
|
END IF;
|
||||||
END shared_channel_support
|
END migrate_if_version_below_5350
|
||||||
$$;
|
$$;
|
||||||
|
|||||||
@@ -9,8 +9,27 @@ ALTER TABLE threads ADD COLUMN IF NOT EXISTS channelid VARCHAR(26);
|
|||||||
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_threads_channel_id ON threads (channelid);
|
CREATE INDEX IF NOT EXISTS idx_threads_channel_id ON threads (channelid);
|
||||||
|
|
||||||
UPDATE threads
|
DO $$
|
||||||
SET channelId=posts.channelid
|
<< migrate_empty_threads >>
|
||||||
FROM posts
|
DECLARE
|
||||||
WHERE posts.id=threads.postid
|
empty_threads_exist boolean := FALSE;
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
count(*) != 0 INTO empty_threads_exist
|
||||||
|
FROM
|
||||||
|
threads
|
||||||
|
WHERE
|
||||||
|
channelid IS NULL;
|
||||||
|
IF empty_threads_exist THEN
|
||||||
|
UPDATE
|
||||||
|
threads
|
||||||
|
SET
|
||||||
|
channelId = posts.channelid
|
||||||
|
FROM
|
||||||
|
posts
|
||||||
|
WHERE
|
||||||
|
posts.id = threads.postid
|
||||||
AND threads.channelid IS NULL;
|
AND threads.channelid IS NULL;
|
||||||
|
END IF;
|
||||||
|
END migrate_empty_threads
|
||||||
|
$$;
|
||||||
|
|||||||
@@ -29,8 +29,37 @@ ALTER TABLE users DROP COLUMN IF EXISTS lastpingat;
|
|||||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS position VARCHAR(128);
|
ALTER TABLE users ADD COLUMN IF NOT EXISTS position VARCHAR(128);
|
||||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS timezone VARCHAR(256) DEFAULT '{"automaticTimezone":"","manualTimezone":"","useAutomaticTimezone":"true"}';
|
ALTER TABLE users ADD COLUMN IF NOT EXISTS timezone VARCHAR(256) DEFAULT '{"automaticTimezone":"","manualTimezone":"","useAutomaticTimezone":"true"}';
|
||||||
ALTER TABLE users ALTER COLUMN position TYPE VARCHAR(128);
|
ALTER TABLE users ALTER COLUMN position TYPE VARCHAR(128);
|
||||||
|
|
||||||
|
DO $$
|
||||||
|
<< migrate_if_version_below_4100 >>
|
||||||
|
DECLARE
|
||||||
|
current_db_version VARCHAR(100) := '';
|
||||||
|
BEGIN
|
||||||
|
SELECT
|
||||||
|
value INTO current_db_version
|
||||||
|
FROM
|
||||||
|
systems
|
||||||
|
WHERE
|
||||||
|
name = 'Version';
|
||||||
|
IF (string_to_array(current_db_version, '.') < string_to_array('4.10.0', '.')) THEN
|
||||||
UPDATE Users SET AuthData=LOWER(AuthData) WHERE AuthService = 'saml';
|
UPDATE Users SET AuthData=LOWER(AuthData) WHERE AuthService = 'saml';
|
||||||
ALTER TABLE users ALTER COLUMN roles TYPE VARCHAR(256);
|
END IF;
|
||||||
|
END migrate_if_version_below_4100
|
||||||
|
$$;
|
||||||
|
|
||||||
|
DO $$
|
||||||
|
DECLARE
|
||||||
|
column_exist boolean := false;
|
||||||
|
BEGIN
|
||||||
|
SELECT count(*) != 0 INTO column_exist
|
||||||
|
FROM information_schema.columns
|
||||||
|
WHERE table_name = 'users'
|
||||||
|
AND column_name = 'roles'
|
||||||
|
AND NOT data_type = 'varchar(256)';
|
||||||
|
IF column_exist THEN
|
||||||
|
ALTER TABLE users ALTER COLUMN roles TYPE varchar(256);
|
||||||
|
END IF;
|
||||||
|
END $$;
|
||||||
|
|
||||||
CREATE INDEX IF NOT EXISTS idx_users_update_at ON users (updateat);
|
CREATE INDEX IF NOT EXISTS idx_users_update_at ON users (updateat);
|
||||||
CREATE INDEX IF NOT EXISTS idx_users_create_at ON users (createat);
|
CREATE INDEX IF NOT EXISTS idx_users_create_at ON users (createat);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ SELECT count(*) != 0 INTO msg_count_root_exist
|
|||||||
AND column_name = 'mentioncountroot';
|
AND column_name = 'mentioncountroot';
|
||||||
|
|
||||||
IF mention_count_root_exist THEN
|
IF mention_count_root_exist THEN
|
||||||
tmp_count_root := (SELECT count(*) FROM channelmembers WHERE msgcountroot = NULL OR mentioncountroot = NULL);
|
tmp_count_root := (SELECT count(*) FROM channelmembers WHERE msgcountroot IS NULL OR mentioncountroot IS NULL);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
ALTER TABLE channelmembers ADD COLUMN IF NOT EXISTS mentioncountroot bigint;
|
ALTER TABLE channelmembers ADD COLUMN IF NOT EXISTS mentioncountroot bigint;
|
||||||
|
|||||||
@@ -2,17 +2,31 @@ DO $$
|
|||||||
<<migrate_root_id>>
|
<<migrate_root_id>>
|
||||||
DECLARE
|
DECLARE
|
||||||
parentid_exist boolean := false;
|
parentid_exist boolean := false;
|
||||||
|
alter_fileids boolean := false;
|
||||||
|
alter_props boolean := false;
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT count(*) != 0 INTO parentid_exist
|
SELECT count(*) != 0 INTO parentid_exist
|
||||||
FROM information_schema.columns
|
FROM information_schema.columns
|
||||||
WHERE table_name = 'posts'
|
WHERE table_name = 'posts'
|
||||||
AND column_name = 'parentid';
|
AND column_name = 'parentid';
|
||||||
|
SELECT count(*) != 0 INTO alter_fileids
|
||||||
|
FROM information_schema.columns
|
||||||
|
WHERE table_name = 'posts'
|
||||||
|
AND column_name = 'fileids'
|
||||||
|
AND data_type = 'character varying'
|
||||||
|
AND character_maximum_length != 300;
|
||||||
|
SELECT count(*) != 0 INTO alter_props
|
||||||
|
FROM information_schema.columns
|
||||||
|
WHERE table_name = 'posts'
|
||||||
|
AND column_name = 'props'
|
||||||
|
AND data_type != 'jsonb';
|
||||||
|
IF alter_fileids OR alter_props THEN
|
||||||
IF parentid_exist THEN
|
IF parentid_exist THEN
|
||||||
UPDATE posts SET rootid = parentid WHERE rootid = '' AND rootid != parentid;
|
UPDATE posts SET rootid = parentid WHERE rootid = '' AND rootid != parentid;
|
||||||
ALTER TABLE posts ALTER COLUMN fileids TYPE varchar(300), ALTER COLUMN props TYPE jsonb USING props::jsonb, DROP COLUMN ParentId;
|
ALTER TABLE posts ALTER COLUMN fileids TYPE varchar(300), ALTER COLUMN props TYPE jsonb USING props::jsonb, DROP COLUMN ParentId;
|
||||||
ELSE
|
ELSE
|
||||||
ALTER TABLE posts ALTER COLUMN fileids TYPE varchar(300), ALTER COLUMN props TYPE jsonb USING props::jsonb;
|
ALTER TABLE posts ALTER COLUMN fileids TYPE varchar(300), ALTER COLUMN props TYPE jsonb USING props::jsonb;
|
||||||
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END migrate_root_id $$;
|
END migrate_root_id $$;
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user