Full Mattermost server source with integrated Community Enterprise features. Includes vendor directory for offline/air-gapped builds. Structure: - enterprise-impl/: Enterprise feature implementations - enterprise-community/: Init files that register implementations - enterprise/: Bridge imports (community_imports.go) - vendor/: All dependencies for offline builds Build (online): go build ./cmd/mattermost Build (offline/air-gapped): go build -mod=vendor ./cmd/mattermost 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1392 lines
46 KiB
SQL
1392 lines
46 KiB
SQL
/* ==> mysql/000041_create_upload_sessions.up.sql <== */
|
|
/* Release 5.37 was meant to contain the index idx_uploadsessions_type, but a bug prevented that.
|
|
This part of the migration #41 adds such index */
|
|
/* ==> mysql/000075_alter_upload_sessions_index.up.sql <== */
|
|
/* ==> mysql/000090_create_enums.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateUploadSessions ()
|
|
BEGIN
|
|
-- 'CREATE INDEX idx_uploadsessions_type ON UploadSessions(Type);'
|
|
DECLARE CreateIndex BOOLEAN;
|
|
DECLARE CreateIndexQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'DROP INDEX idx_uploadsessions_user_id ON UploadSessions; CREATE INDEX idx_uploadsessions_user_id ON UploadSessions(UserId);'
|
|
DECLARE AlterIndex BOOLEAN;
|
|
DECLARE AlterIndexQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE UploadSessions MODIFY COLUMN Type ENUM("attachment", "import");'
|
|
DECLARE AlterColumn BOOLEAN;
|
|
DECLARE AlterColumnQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'UploadSessions'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_uploadsessions_type'
|
|
INTO CreateIndex;
|
|
|
|
SELECT IFNULL(GROUP_CONCAT(column_name ORDER BY seq_in_index), '') = 'Type' FROM information_schema.statistics
|
|
WHERE table_name = 'UploadSessions'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_uploadsessions_user_id'
|
|
GROUP BY index_name
|
|
INTO AlterIndex;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'UploadSessions'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Type'
|
|
AND REPLACE(LOWER(column_type), '"', "'") != "enum('attachment','import')"
|
|
INTO AlterColumn;
|
|
|
|
IF CreateIndex THEN
|
|
SET CreateIndexQuery = 'ADD INDEX idx_uploadsessions_type (Type)';
|
|
END IF;
|
|
|
|
IF AlterIndex THEN
|
|
SET AlterIndexQuery = 'DROP INDEX idx_uploadsessions_user_id, ADD INDEX idx_uploadsessions_user_id (UserId)';
|
|
END IF;
|
|
|
|
IF AlterColumn THEN
|
|
SET AlterColumnQuery = 'MODIFY COLUMN Type ENUM("attachment", "import")';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', CreateIndexQuery, AlterIndexQuery, AlterColumnQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE UploadSessions ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateUploadSessions procedure starting.') AS DEBUG;
|
|
CALL MigrateUploadSessions();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateUploadSessions procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateUploadSessions;
|
|
|
|
/* ==> mysql/000055_create_crt_thread_count_and_unreads.up.sql <== */
|
|
/* fixCRTThreadCountsAndUnreads Marks threads as read for users where the last
|
|
reply time of the thread is earlier than the time the user viewed the channel.
|
|
Marking a thread means setting the mention count to zero and setting the
|
|
last viewed at time of the the thread as the last viewed at time
|
|
of the channel */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateThreadMemberships ()
|
|
BEGIN
|
|
-- UPDATE ThreadMemberships SET LastViewed = ..., UnreadMentions = ..., LastUpdated = ...
|
|
DECLARE UpdateThreadMemberships BOOLEAN;
|
|
DECLARE UpdateThreadMembershipsQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) = 0 FROM Systems
|
|
WHERE Name = 'CRTThreadCountsAndUnreadsMigrationComplete'
|
|
INTO UpdateThreadMemberships;
|
|
|
|
IF UpdateThreadMemberships THEN
|
|
UPDATE ThreadMemberships INNER JOIN (
|
|
SELECT PostId, UserId, ChannelMembers.LastViewedAt AS CM_LastViewedAt, Threads.LastReplyAt
|
|
FROM Threads INNER JOIN ChannelMembers ON ChannelMembers.ChannelId = Threads.ChannelId
|
|
WHERE Threads.LastReplyAt <= ChannelMembers.LastViewedAt
|
|
) AS q ON ThreadMemberships.Postid = q.PostId AND ThreadMemberships.UserId = q.UserId
|
|
SET LastViewed = q.CM_LastViewedAt + 1, UnreadMentions = 0, LastUpdated = (SELECT (SELECT ROUND(UNIX_TIMESTAMP(NOW(3))*1000)));
|
|
INSERT INTO Systems VALUES('CRTThreadCountsAndUnreadsMigrationComplete', 'true');
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateThreadMemberships procedure starting.') AS DEBUG;
|
|
CALL MigrateThreadMemberships();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateThreadMemberships procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateThreadMemberships;
|
|
|
|
/* ==> mysql/000056_upgrade_channels_v6.0.up.sql <== */
|
|
/* ==> mysql/000070_upgrade_cte_v6.1.up.sql <== */
|
|
/* ==> mysql/000090_create_enums.up.sql <== */
|
|
/* ==> mysql/000076_upgrade_lastrootpostat.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateChannels ()
|
|
BEGIN
|
|
-- 'DROP INDEX idx_channels_team_id ON Channels;'
|
|
DECLARE DropIndex BOOLEAN;
|
|
DECLARE DropIndexQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'CREATE INDEX idx_channels_team_id_display_name ON Channels(TeamId, DisplayName);'
|
|
DECLARE CreateIndexTeamDisplay BOOLEAN;
|
|
DECLARE CreateIndexTeamDisplayQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'CREATE INDEX idx_channels_team_id_type ON Channels(TeamId, Type);'
|
|
DECLARE CreateIndexTeamType BOOLEAN;
|
|
DECLARE CreateIndexTeamTypeQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Channels ADD COLUMN LastRootPostAt bigint DEFAULT 0;''
|
|
-- UPDATE Channels INNER JOIN ...
|
|
DECLARE AddLastRootPostAt BOOLEAN;
|
|
DECLARE AddLastRootPostAtQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Channels MODIFY COLUMN Type ENUM("D", "O", "G", "P");',
|
|
DECLARE ModifyColumn BOOLEAN;
|
|
DECLARE ModifyColumnQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Channels ALTER COLUMN LastRootPostAt SET DEFAULT 0;',
|
|
DECLARE SetDefault BOOLEAN;
|
|
DECLARE SetDefaultQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'UPDATE Channels SET LastRootPostAt = ...',
|
|
DECLARE UpdateLastRootPostAt BOOLEAN;
|
|
DECLARE UpdateLastRootPostAtQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Channels'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_channels_team_id'
|
|
INTO DropIndex;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Channels'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_channels_team_id_display_name'
|
|
INTO CreateIndexTeamDisplay;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Channels'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_channels_team_id_type'
|
|
INTO CreateIndexTeamType;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_NAME = 'Channels'
|
|
AND table_schema = DATABASE()
|
|
AND COLUMN_NAME = 'LastRootPostAt'
|
|
INTO AddLastRootPostAt;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Channels'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Type'
|
|
AND REPLACE(LOWER(column_type), '"', "'") != "enum('d','o','g','p')"
|
|
INTO ModifyColumn;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_NAME = 'Channels'
|
|
AND TABLE_SCHEMA = DATABASE()
|
|
AND COLUMN_NAME = 'LastRootPostAt'
|
|
AND (COLUMN_DEFAULT IS NULL OR COLUMN_DEFAULT != 0)
|
|
INTO SetDefault;
|
|
|
|
IF DropIndex THEN
|
|
SET DropIndexQuery = 'DROP INDEX idx_channels_team_id';
|
|
END IF;
|
|
|
|
IF CreateIndexTeamDisplay THEN
|
|
SET CreateIndexTeamDisplayQuery = 'ADD INDEX idx_channels_team_id_display_name (TeamId, DisplayName)';
|
|
END IF;
|
|
|
|
IF CreateIndexTeamType THEN
|
|
SET CreateIndexTeamTypeQuery = 'ADD INDEX idx_channels_team_id_type (TeamId, Type)';
|
|
END IF;
|
|
|
|
IF AddLastRootPostAt THEN
|
|
SET AddLastRootPostAtQuery = 'ADD COLUMN LastRootPostAt bigint DEFAULT 0';
|
|
END IF;
|
|
|
|
IF ModifyColumn THEN
|
|
SET ModifyColumnQuery = 'MODIFY COLUMN Type ENUM("D", "O", "G", "P")';
|
|
END IF;
|
|
|
|
IF SetDefault THEN
|
|
SET SetDefaultQuery = 'ALTER COLUMN LastRootPostAt SET DEFAULT 0';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', DropIndexQuery, CreateIndexTeamDisplayQuery, CreateIndexTeamTypeQuery, AddLastRootPostAtQuery, ModifyColumnQuery, SetDefaultQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Channels ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
|
|
IF AddLastRootPostAt THEN
|
|
UPDATE Channels INNER JOIN (
|
|
SELECT Channels.Id channelid, COALESCE(MAX(Posts.CreateAt), 0) AS lastrootpost
|
|
FROM Channels LEFT JOIN Posts FORCE INDEX (idx_posts_channel_id_update_at) ON Channels.Id = Posts.ChannelId
|
|
WHERE Posts.RootId = '' GROUP BY Channels.Id
|
|
) AS q ON q.channelid = Channels.Id
|
|
SET LastRootPostAt = lastrootpost;
|
|
END IF;
|
|
|
|
-- Cover the case where LastRootPostAt was already present and there are rows with it set to NULL
|
|
IF (SELECT COUNT(*) FROM Channels WHERE LastRootPostAt IS NULL) THEN
|
|
-- fixes migrate cte and sets the LastRootPostAt for channels that don't have it set
|
|
UPDATE Channels INNER JOIN (
|
|
SELECT Channels.Id channelid, COALESCE(MAX(Posts.CreateAt), 0) AS lastrootpost
|
|
FROM Channels LEFT JOIN Posts FORCE INDEX (idx_posts_channel_id_update_at) ON Channels.Id = Posts.ChannelId
|
|
WHERE Posts.RootId = ''
|
|
GROUP BY Channels.Id
|
|
) AS q ON q.channelid = Channels.Id
|
|
SET LastRootPostAt = lastrootpost
|
|
WHERE LastRootPostAt IS NULL;
|
|
-- sets LastRootPostAt to 0, for channels with no posts
|
|
UPDATE Channels SET LastRootPostAt=0 WHERE LastRootPostAt IS NULL;
|
|
END IF;
|
|
|
|
END//
|
|
DELIMITER ;
|
|
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateChannels procedure starting.') AS DEBUG;
|
|
CALL MigrateChannels();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateChannels procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateChannels;
|
|
|
|
/* ==> mysql/000057_upgrade_command_webhooks_v6.0.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateCommandWebhooks ()
|
|
BEGIN
|
|
DECLARE DropParentId BOOLEAN;
|
|
|
|
SELECT COUNT(*)
|
|
FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_NAME = 'CommandWebhooks'
|
|
AND table_schema = DATABASE()
|
|
AND COLUMN_NAME = 'ParentId'
|
|
INTO DropParentId;
|
|
|
|
IF DropParentId THEN
|
|
UPDATE CommandWebhooks SET RootId = ParentId WHERE RootId = '' AND RootId != ParentId;
|
|
ALTER TABLE CommandWebhooks DROP COLUMN ParentId;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateCommandWebhooks procedure starting.') AS DEBUG;
|
|
CALL MigrateCommandWebhooks();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateCommandWebhooks procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateCommandWebhooks;
|
|
|
|
/* ==> mysql/000054_create_crt_channelmembership_count.up.sql <== */
|
|
/* ==> mysql/000058_upgrade_channelmembers_v6.0.up.sql <== */
|
|
/* ==> mysql/000067_upgrade_channelmembers_v6.1.up.sql <== */
|
|
/* ==> mysql/000097_create_posts_priority.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateChannelMembers ()
|
|
BEGIN
|
|
-- 'ALTER TABLE ChannelMembers MODIFY COLUMN NotifyProps JSON;',
|
|
DECLARE ModifyNotifyProps BOOLEAN;
|
|
DECLARE ModifyNotifyPropsQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'DROP INDEX idx_channelmembers_user_id ON ChannelMembers;',
|
|
DECLARE DropIndex BOOLEAN;
|
|
DECLARE DropIndexQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'CREATE INDEX idx_channelmembers_user_id_channel_id_last_viewed_at ON ChannelMembers(UserId, ChannelId, LastViewedAt);'
|
|
DECLARE CreateIndexLastViewedAt BOOLEAN;
|
|
DECLARE CreateIndexLastViewedAtQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'CREATE INDEX idx_channelmembers_channel_id_scheme_guest_user_id ON ChannelMembers(ChannelId, SchemeGuest, UserId);'
|
|
DECLARE CreateIndexSchemeGuest BOOLEAN;
|
|
DECLARE CreateIndexSchemeGuestQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE ChannelMembers MODIFY COLUMN Roles text;',
|
|
DECLARE ModifyRoles BOOLEAN;
|
|
DECLARE ModifyRolesQuery TEXT DEFAULT NOT NULL;
|
|
|
|
-- 'ALTER TABLE ChannelMembers ADD COLUMN UrgentMentionCount bigint(20);',
|
|
DECLARE AddUrgentMentionCount BOOLEAN;
|
|
DECLARE AddUrgentMentionCountQuery TEXT DEFAULT NOT NULL;
|
|
|
|
DECLARE MigrateMemberships BOOLEAN;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'ChannelMembers'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'NotifyProps'
|
|
AND LOWER(column_type) != 'json'
|
|
INTO ModifyNotifyProps;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'ChannelMembers'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_channelmembers_user_id'
|
|
INTO DropIndex;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'ChannelMembers'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_channelmembers_user_id_channel_id_last_viewed_at'
|
|
INTO CreateIndexLastViewedAt;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'ChannelMembers'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_channelmembers_channel_id_scheme_guest_user_id'
|
|
INTO CreateIndexSchemeGuest;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'ChannelMembers'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Roles'
|
|
AND LOWER(column_type) != 'text'
|
|
INTO ModifyRoles;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'ChannelMembers'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'UrgentMentionCount'
|
|
INTO AddUrgentMentionCount;
|
|
|
|
SELECT COUNT(*) = 0 FROM Systems
|
|
WHERE Name = 'CRTChannelMembershipCountsMigrationComplete'
|
|
INTO MigrateMemberships;
|
|
|
|
IF ModifyNotifyProps THEN
|
|
SET ModifyNotifyPropsQuery = 'MODIFY COLUMN NotifyProps JSON';
|
|
END IF;
|
|
|
|
IF DropIndex THEN
|
|
SET DropIndexQuery = 'DROP INDEX idx_channelmembers_user_id';
|
|
END IF;
|
|
|
|
IF CreateIndexLastViewedAt THEN
|
|
SET CreateIndexLastViewedAtQuery = 'ADD INDEX idx_channelmembers_user_id_channel_id_last_viewed_at (UserId, ChannelId, LastViewedAt)';
|
|
END IF;
|
|
|
|
IF CreateIndexSchemeGuest THEN
|
|
SET CreateIndexSchemeGuestQuery = 'ADD INDEX idx_channelmembers_channel_id_scheme_guest_user_id (ChannelId, SchemeGuest, UserId)';
|
|
END IF;
|
|
|
|
IF ModifyRoles THEN
|
|
SET ModifyRolesQuery = 'MODIFY COLUMN Roles text';
|
|
END IF;
|
|
|
|
IF AddUrgentMentionCount THEN
|
|
SET AddUrgentMentionCountQuery = 'ADD COLUMN UrgentMentionCount bigint(20)';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', ModifyNotifyPropsQuery, DropIndexQuery, CreateIndexLastViewedAtQuery, CreateIndexSchemeGuestQuery, ModifyRolesQuery, AddUrgentMentionCountQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE ChannelMembers ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
|
|
IF MigrateMemberships THEN
|
|
UPDATE ChannelMembers INNER JOIN Channels ON Channels.Id = ChannelMembers.ChannelId
|
|
SET MentionCount = 0, MentionCountRoot = 0, MsgCount = Channels.TotalMsgCount, MsgCountRoot = Channels.TotalMsgCountRoot, LastUpdateAt = (SELECT (SELECT ROUND(UNIX_TIMESTAMP(NOW(3))*1000)))
|
|
WHERE ChannelMembers.LastViewedAt >= Channels.LastPostAt;
|
|
INSERT INTO Systems VALUES('CRTChannelMembershipCountsMigrationComplete', 'true');
|
|
END IF;
|
|
|
|
END//
|
|
DELIMITER ;
|
|
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateChannelMembers procedure starting.') AS DEBUG;
|
|
CALL MigrateChannelMembers();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateChannelMembers procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateChannelMembers;
|
|
|
|
/* ==> mysql/000059_upgrade_users_v6.0.up.sql <== */
|
|
/* ==> mysql/000074_upgrade_users_v6.3.up.sql <== */
|
|
/* ==> mysql/000077_upgrade_users_v6.5.up.sql <== */
|
|
/* ==> mysql/000088_remaining_migrations.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateUsers ()
|
|
BEGIN
|
|
-- 'ALTER TABLE Users MODIFY COLUMN Props JSON;',
|
|
DECLARE ChangeProps BOOLEAN;
|
|
DECLARE ChangePropsQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Users MODIFY COLUMN NotifyProps JSON;',
|
|
DECLARE ChangeNotifyProps BOOLEAN;
|
|
DECLARE ChangeNotifyPropsQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Users ALTER Timezone DROP DEFAULT;',
|
|
DECLARE DropTimezoneDefault BOOLEAN;
|
|
DECLARE DropTimezoneDefaultQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Users MODIFY COLUMN Timezone JSON;',
|
|
DECLARE ChangeTimezone BOOLEAN;
|
|
DECLARE ChangeTimezoneQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Users MODIFY COLUMN Roles text;',
|
|
DECLARE ChangeRoles BOOLEAN;
|
|
DECLARE ChangeRolesQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Users DROP COLUMN AcceptedTermsOfServiceId;',
|
|
DECLARE DropTermsOfService BOOLEAN;
|
|
DECLARE DropTermsOfServiceQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Users DROP COLUMN AcceptedServiceTermsId;',
|
|
DECLARE DropServiceTerms BOOLEAN;
|
|
DECLARE DropServiceTermsQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Users DROP COLUMN ThemeProps',
|
|
DECLARE DropThemeProps BOOLEAN;
|
|
DECLARE DropThemePropsQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Users'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Props'
|
|
AND LOWER(column_type) != 'json'
|
|
INTO ChangeProps;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Users'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'NotifyProps'
|
|
AND LOWER(column_type) != 'json'
|
|
INTO ChangeNotifyProps;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Users'
|
|
AND column_default IS NOT NULL
|
|
INTO DropTimezoneDefault;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Users'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Timezone'
|
|
AND LOWER(column_type) != 'json'
|
|
INTO ChangeTimezone;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Users'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Roles'
|
|
AND LOWER(column_type) != 'text'
|
|
INTO ChangeRoles;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Users'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'AcceptedTermsOfServiceId'
|
|
INTO DropTermsOfService;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Users'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'AcceptedServiceTermsId'
|
|
INTO DropServiceTerms;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Users'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'ThemeProps'
|
|
INTO DropThemeProps;
|
|
|
|
IF ChangeProps THEN
|
|
SET ChangePropsQuery = 'MODIFY COLUMN Props JSON';
|
|
END IF;
|
|
|
|
IF ChangeNotifyProps THEN
|
|
SET ChangeNotifyPropsQuery = 'MODIFY COLUMN NotifyProps JSON';
|
|
END IF;
|
|
|
|
IF DropTimezoneDefault THEN
|
|
SET DropTimezoneDefaultQuery = 'ALTER Timezone DROP DEFAULT';
|
|
END IF;
|
|
|
|
IF ChangeTimezone THEN
|
|
SET ChangeTimezoneQuery = 'MODIFY COLUMN Timezone JSON';
|
|
END IF;
|
|
|
|
IF ChangeRoles THEN
|
|
SET ChangeRolesQuery = 'MODIFY COLUMN Roles text';
|
|
END IF;
|
|
|
|
IF DropTermsOfService THEN
|
|
SET DropTermsOfServiceQuery = 'DROP COLUMN AcceptedTermsOfServiceId';
|
|
END IF;
|
|
|
|
IF DropServiceTerms THEN
|
|
SET DropServiceTermsQuery = 'DROP COLUMN AcceptedServiceTermsId';
|
|
END IF;
|
|
|
|
IF DropThemeProps THEN
|
|
INSERT INTO Preferences(UserId, Category, Name, Value) SELECT Id, '', '', ThemeProps FROM Users WHERE Users.ThemeProps != 'null';
|
|
SET DropThemePropsQuery = 'DROP COLUMN ThemeProps';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', ChangePropsQuery, ChangeNotifyPropsQuery, DropTimezoneDefaultQuery, ChangeTimezoneQuery, ChangeRolesQuery, DropTermsOfServiceQuery, DropServiceTermsQuery, DropThemePropsQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Users ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateUsers procedure starting.') AS DEBUG;
|
|
CALL MigrateUsers();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateUsers procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateUsers;
|
|
|
|
/* ==> mysql/000060_upgrade_jobs_v6.0.up.sql <== */
|
|
/* ==> mysql/000069_upgrade_jobs_v6.1.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateJobs ()
|
|
BEGIN
|
|
-- 'ALTER TABLE Jobs MODIFY COLUMN Data JSON;',
|
|
DECLARE ModifyData BOOLEAN;
|
|
DECLARE ModifyDataQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'CREATE INDEX idx_jobs_status_type ON Jobs(Status, Type);'
|
|
DECLARE CreateIndex BOOLEAN;
|
|
DECLARE CreateIndexQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Jobs'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Data'
|
|
AND LOWER(column_type) != 'JSON'
|
|
INTO ModifyData;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Jobs'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_jobs_status_type'
|
|
INTO CreateIndex;
|
|
|
|
IF ModifyData THEN
|
|
SET ModifyDataQuery = 'MODIFY COLUMN Data JSON';
|
|
END IF;
|
|
|
|
IF CreateIndex THEN
|
|
SET CreateIndexQuery = 'ADD INDEX idx_jobs_status_type (Status, Type)';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', ModifyDataQuery, CreateIndexQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Jobs ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateJobs procedure starting.') AS DEBUG;
|
|
CALL MigrateJobs();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateJobs procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateJobs;
|
|
|
|
/* ==> mysql/000061_upgrade_link_metadata_v6.0.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateLinkMetadata ()
|
|
BEGIN
|
|
-- ALTER TABLE LinkMetadata MODIFY COLUMN Data JSON;
|
|
DECLARE ModifyData BOOLEAN;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'LinkMetadata'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Data'
|
|
AND LOWER(column_type) != 'JSON'
|
|
INTO ModifyData;
|
|
|
|
IF ModifyData THEN
|
|
ALTER TABLE LinkMetadata MODIFY COLUMN Data JSON;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateLinkMetadata procedure starting.') AS DEBUG;
|
|
CALL MigrateLinkMetadata();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateLinkMetadata procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateLinkMetadata;
|
|
|
|
/* ==> mysql/000062_upgrade_sessions_v6.0.up.sql <== */
|
|
/* ==> mysql/000071_upgrade_sessions_v6.1.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateSessions ()
|
|
BEGIN
|
|
-- 'ALTER TABLE Sessions MODIFY COLUMN Props JSON;',
|
|
DECLARE ModifyProps BOOLEAN;
|
|
DECLARE ModifyPropsQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Sessions MODIFY COLUMN Roles text;',
|
|
DECLARE ModifyRoles BOOLEAN;
|
|
DECLARE ModifyRolesQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Sessions'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Props'
|
|
AND LOWER(column_type) != 'json'
|
|
INTO ModifyProps;
|
|
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Sessions'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Roles'
|
|
AND LOWER(column_type) != 'text'
|
|
INTO ModifyRoles;
|
|
|
|
IF ModifyProps THEN
|
|
SET ModifyPropsQuery = 'MODIFY COLUMN Props JSON';
|
|
END IF;
|
|
|
|
IF ModifyRoles THEN
|
|
SET ModifyRolesQuery = 'MODIFY COLUMN Roles text';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', ModifyPropsQuery, ModifyRolesQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Sessions ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateSessions procedure starting.') AS DEBUG;
|
|
CALL MigrateSessions();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateSessions procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateSessions;
|
|
|
|
/* ==> mysql/000063_upgrade_threads_v6.0.up.sql <== */
|
|
/* ==> mysql/000083_threads_threaddeleteat.up.sql <== */
|
|
/* ==> mysql/000096_threads_threadteamid.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateThreads ()
|
|
BEGIN
|
|
-- 'ALTER TABLE Threads MODIFY COLUMN Participants JSON;'
|
|
DECLARE ChangeParticipants BOOLEAN;
|
|
DECLARE ChangeParticipantsQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Threads DROP COLUMN DeleteAt;'
|
|
DECLARE DropDeleteAt BOOLEAN;
|
|
DECLARE DropDeleteAtQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Threads ADD COLUMN ThreadDeleteAt bigint(20);'
|
|
DECLARE CreateThreadDeleteAt BOOLEAN;
|
|
DECLARE CreateThreadDeleteAtQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Threads DROP COLUMN TeamId;'
|
|
DECLARE DropTeamId BOOLEAN;
|
|
DECLARE DropTeamIdQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Threads ADD COLUMN ThreadTeamId varchar(26) DEFAULT NULL;'
|
|
DECLARE CreateThreadTeamId BOOLEAN;
|
|
DECLARE CreateThreadTeamIdQuery TEXT DEFAULT NULL;
|
|
|
|
-- CREATE INDEX idx_threads_channel_id_last_reply_at ON Threads(ChannelId, LastReplyAt);
|
|
DECLARE CreateIndex BOOLEAN;
|
|
DECLARE CreateIndexQuery TEXT DEFAULT NULL;
|
|
|
|
-- DROP INDEX idx_threads_channel_id ON Threads;
|
|
DECLARE DropIndex BOOLEAN;
|
|
DECLARE DropIndexQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Threads'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Participants'
|
|
AND LOWER(column_type) != 'json'
|
|
INTO ChangeParticipants;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Threads'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'DeleteAt'
|
|
INTO DropDeleteAt;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Threads'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'ThreadDeleteAt'
|
|
INTO CreateThreadDeleteAt;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Threads'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'TeamId'
|
|
INTO DropTeamId;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Threads'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'ThreadTeamId'
|
|
INTO CreateThreadTeamId;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Threads'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_threads_channel_id_last_reply_at'
|
|
INTO CreateIndex;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Threads'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_threads_channel_id'
|
|
INTO DropIndex;
|
|
|
|
IF ChangeParticipants THEN
|
|
SET ChangeParticipantsQuery = 'MODIFY COLUMN Participants JSON';
|
|
END IF;
|
|
|
|
IF DropDeleteAt THEN
|
|
SET DropDeleteAtQuery = 'DROP COLUMN DeleteAt';
|
|
END IF;
|
|
|
|
IF CreateThreadDeleteAt THEN
|
|
SET CreateThreadDeleteAtQuery = 'ADD COLUMN ThreadDeleteAt bigint(20)';
|
|
END IF;
|
|
|
|
IF DropTeamId THEN
|
|
SET DropTeamIdQuery = 'DROP COLUMN TeamId';
|
|
END IF;
|
|
|
|
IF CreateThreadTeamId THEN
|
|
SET CreateThreadTeamIdQuery = 'ADD COLUMN ThreadTeamId varchar(26) DEFAULT NULL';
|
|
END IF;
|
|
|
|
IF CreateIndex THEN
|
|
SET CreateIndexQuery = 'ADD INDEX idx_threads_channel_id_last_reply_at (ChannelId, LastReplyAt)';
|
|
END IF;
|
|
|
|
IF DropIndex THEN
|
|
SET DropIndexQuery = 'DROP INDEX idx_threads_channel_id';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', ChangeParticipantsQuery, DropDeleteAtQuery, CreateThreadDeleteAtQuery, DropTeamIdQuery, CreateThreadTeamIdQuery, CreateIndexQuery, DropIndexQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Threads ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
|
|
UPDATE Threads, Posts
|
|
SET Threads.ThreadDeleteAt = Posts.DeleteAt
|
|
WHERE Posts.Id = Threads.PostId
|
|
AND Threads.ThreadDeleteAt IS NULL;
|
|
|
|
UPDATE Threads, Channels
|
|
SET Threads.ThreadTeamId = Channels.TeamId
|
|
WHERE Channels.Id = Threads.ChannelId
|
|
AND Threads.ThreadTeamId IS NULL;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateThreads procedure starting.') AS DEBUG;
|
|
CALL MigrateThreads();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateThreads procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateThreads;
|
|
|
|
/* ==> mysql/000064_upgrade_status_v6.0.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateStatus ()
|
|
BEGIN
|
|
-- 'CREATE INDEX idx_status_status_dndendtime ON Status(Status, DNDEndTime);'
|
|
DECLARE CreateIndex BOOLEAN;
|
|
DECLARE CreateIndexQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'DROP INDEX idx_status_status ON Status;',
|
|
DECLARE DropIndex BOOLEAN;
|
|
DECLARE DropIndexQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Status'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_status_status_dndendtime'
|
|
INTO CreateIndex;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Status'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_status_status'
|
|
INTO DropIndex;
|
|
|
|
IF CreateIndex THEN
|
|
SET CreateIndexQuery = 'ADD INDEX idx_status_status_dndendtime (Status, DNDEndTime)';
|
|
END IF;
|
|
|
|
IF DropIndex THEN
|
|
SET DropIndexQuery = 'DROP INDEX idx_status_status';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', CreateIndexQuery, DropIndexQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Status ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateStatus procedure starting.') AS DEBUG;
|
|
CALL MigrateStatus ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateStatus procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateStatus;
|
|
|
|
/* ==> mysql/000065_upgrade_groupchannels_v6.0.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateGroupChannels ()
|
|
BEGIN
|
|
-- 'CREATE INDEX idx_groupchannels_schemeadmin ON GroupChannels(SchemeAdmin);'
|
|
DECLARE CreateIndex BOOLEAN;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'GroupChannels'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_groupchannels_schemeadmin'
|
|
INTO CreateIndex;
|
|
|
|
IF CreateIndex THEN
|
|
CREATE INDEX idx_groupchannels_schemeadmin ON GroupChannels(SchemeAdmin);
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateGroupChannels procedure starting.') AS DEBUG;
|
|
CALL MigrateGroupChannels ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateGroupChannels procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateGroupChannels;
|
|
|
|
/* ==> mysql/000066_upgrade_posts_v6.0.up.sql <== */
|
|
/* ==> mysql/000080_posts_createat_id.up.sql <== */
|
|
/* ==> mysql/000095_remove_posts_parentid.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigratePosts ()
|
|
BEGIN
|
|
-- DROP COLUMN ParentId
|
|
DECLARE DropParentId BOOLEAN;
|
|
DECLARE DropParentIdQuery TEXT DEFAULT NULL;
|
|
|
|
-- MODIFY COLUMN FileIds
|
|
DECLARE ModifyFileIds BOOLEAN;
|
|
DECLARE ModifyFileIdsQuery TEXT DEFAULT NULL;
|
|
|
|
-- MODIFY COLUMN Props
|
|
DECLARE ModifyProps BOOLEAN;
|
|
DECLARE ModifyPropsQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'CREATE INDEX idx_posts_root_id_delete_at ON Posts(RootId, DeleteAt);'
|
|
DECLARE CreateIndexRootId BOOLEAN;
|
|
DECLARE CreateIndexRootIdQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'DROP INDEX idx_posts_root_id ON Posts;',
|
|
DECLARE DropIndex BOOLEAN;
|
|
DECLARE DropIndexQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'CREATE INDEX idx_posts_create_at_id on Posts(CreateAt, Id) LOCK=NONE;'
|
|
DECLARE CreateIndexCreateAt BOOLEAN;
|
|
DECLARE CreateIndexCreateAtQuery TEXT DEFAULT NULL;
|
|
|
|
-- Condition to control whether to update the RootId column.
|
|
DECLARE UpdateRootId BOOLEAN;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE TABLE_NAME = 'Posts'
|
|
AND table_schema = DATABASE()
|
|
AND COLUMN_NAME = 'ParentId'
|
|
INTO DropParentId;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Posts'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'FileIds'
|
|
AND LOWER(column_type) != 'text'
|
|
INTO ModifyFileIds;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Posts'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Props'
|
|
AND LOWER(column_type) != 'json'
|
|
INTO ModifyProps;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Posts'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_posts_root_id_delete_at'
|
|
INTO CreateIndexRootId;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Posts'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_posts_root_id'
|
|
INTO DropIndex;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Posts'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_posts_create_at_id'
|
|
INTO CreateIndexCreateAt;
|
|
|
|
IF DropParentId THEN
|
|
SET DropParentIdQuery = 'DROP COLUMN ParentId';
|
|
SELECT COUNT(*) FROM Posts WHERE RootId != ParentId INTO UpdateRootId;
|
|
IF UpdateRootId THEN
|
|
UPDATE Posts SET RootId = ParentId WHERE RootId = '' AND RootId != ParentId;
|
|
END IF;
|
|
END IF;
|
|
|
|
IF ModifyFileIds THEN
|
|
SET ModifyFileIdsQuery = 'MODIFY COLUMN FileIds text';
|
|
END IF;
|
|
|
|
IF ModifyProps THEN
|
|
SET ModifyPropsQuery = 'MODIFY COLUMN Props JSON';
|
|
END IF;
|
|
|
|
IF CreateIndexRootId THEN
|
|
SET CreateIndexRootIdQuery = 'ADD INDEX idx_posts_root_id_delete_at (RootId, DeleteAt)';
|
|
END IF;
|
|
|
|
IF DropIndex THEN
|
|
SET DropIndexQuery = 'DROP INDEX idx_posts_root_id';
|
|
END IF;
|
|
|
|
IF CreateIndexCreateAt THEN
|
|
SET CreateIndexCreateAtQuery = 'ADD INDEX idx_posts_create_at_id (CreateAt, Id)';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', DropParentIdQuery, ModifyFileIdsQuery, ModifyPropsQuery, CreateIndexRootIdQuery, DropIndexQuery, CreateIndexCreateAtQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Posts ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigratePosts procedure starting.') AS DEBUG;
|
|
CALL MigratePosts ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigratePosts procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigratePosts;
|
|
|
|
/* ==> mysql/000068_upgrade_teammembers_v6.1.up.sql <== */
|
|
/* ==> mysql/000092_add_createat_to_teammembers.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateTeamMembers ()
|
|
BEGIN
|
|
-- 'ALTER TABLE TeamMembers MODIFY COLUMN Roles text;',
|
|
DECLARE ModifyRoles BOOLEAN;
|
|
DECLARE ModifyRolesQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE TeamMembers ADD COLUMN CreateAt bigint DEFAULT 0;',
|
|
DECLARE AddCreateAt BOOLEAN;
|
|
DECLARE AddCreateAtQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'CREATE INDEX idx_teammembers_createat ON TeamMembers(CreateAt);'
|
|
DECLARE CreateIndex BOOLEAN;
|
|
DECLARE CreateIndexQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'TeamMembers'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Roles'
|
|
AND LOWER(column_type) != 'text'
|
|
INTO ModifyRoles;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'TeamMembers'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'CreateAt'
|
|
INTO AddCreateAt;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'TeamMembers'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_teammembers_createat'
|
|
INTO CreateIndex;
|
|
|
|
IF ModifyRoles THEN
|
|
SET ModifyRolesQuery = 'MODIFY COLUMN Roles text';
|
|
END IF;
|
|
|
|
IF AddCreateAt THEN
|
|
SET AddCreateAtQuery = 'ADD COLUMN CreateAt bigint DEFAULT 0';
|
|
END IF;
|
|
|
|
IF CreateIndex THEN
|
|
SET CreateIndexQuery = 'ADD INDEX idx_teammembers_createat (CreateAt)';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', ModifyRolesQuery, AddCreateAtQuery, CreateIndexQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE TeamMembers ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateTeamMembers procedure starting.') AS DEBUG;
|
|
CALL MigrateTeamMembers ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateTeamMembers procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateTeamMembers;
|
|
|
|
/* ==> mysql/000072_upgrade_schemes_v6.3.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateSchemes ()
|
|
BEGIN
|
|
-- 'ALTER TABLE Schemes ADD COLUMN DefaultPlaybookAdminRole VARCHAR(64) DEFAULT "";'
|
|
DECLARE AddDefaultPlaybookAdminRole BOOLEAN;
|
|
DECLARE AddDefaultPlaybookAdminRoleQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Schemes ADD COLUMN DefaultPlaybookMemberRole VARCHAR(64) DEFAULT "";'
|
|
DECLARE AddDefaultPlaybookMemberRole BOOLEAN;
|
|
DECLARE AddDefaultPlaybookMemberRoleQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Schemes ADD COLUMN DefaultRunAdminRole VARCHAR(64) DEFAULT "";'
|
|
DECLARE AddDefaultRunAdminRole BOOLEAN;
|
|
DECLARE AddDefaultRunAdminRoleQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Schemes ADD COLUMN DefaultRunMemberRole VARCHAR(64) DEFAULT "";'
|
|
DECLARE AddDefaultRunMemberRole BOOLEAN;
|
|
DECLARE AddDefaultRunMemberRoleQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Schemes'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'DefaultPlaybookAdminRole'
|
|
INTO AddDefaultPlaybookAdminRole;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Schemes'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'DefaultPlaybookMemberRole'
|
|
INTO AddDefaultPlaybookMemberRole;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Schemes'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'DefaultRunAdminRole'
|
|
INTO AddDefaultRunAdminRole;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Schemes'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'DefaultRunMemberRole'
|
|
INTO AddDefaultRunMemberRole;
|
|
|
|
IF AddDefaultPlaybookAdminRole THEN
|
|
SET AddDefaultPlaybookAdminRoleQuery = 'ADD COLUMN DefaultPlaybookAdminRole VARCHAR(64) DEFAULT ""';
|
|
END IF;
|
|
|
|
IF AddDefaultPlaybookMemberRole THEN
|
|
SET AddDefaultPlaybookMemberRoleQuery = 'ADD COLUMN DefaultPlaybookMemberRole VARCHAR(64) DEFAULT ""';
|
|
END IF;
|
|
|
|
IF AddDefaultRunAdminRole THEN
|
|
SET AddDefaultRunAdminRoleQuery = 'ADD COLUMN DefaultRunAdminRole VARCHAR(64) DEFAULT ""';
|
|
END IF;
|
|
|
|
IF AddDefaultRunMemberRole THEN
|
|
SET AddDefaultRunMemberRoleQuery = 'ADD COLUMN DefaultRunMemberRole VARCHAR(64) DEFAULT ""';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', AddDefaultPlaybookAdminRoleQuery, AddDefaultPlaybookMemberRoleQuery, AddDefaultRunAdminRoleQuery, AddDefaultRunMemberRoleQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Schemes ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateSchemes procedure starting.') AS DEBUG;
|
|
CALL MigrateSchemes ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateSchemes procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateSchemes;
|
|
|
|
/* ==> mysql/000073_upgrade_plugin_key_value_store_v6.3.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigratePluginKeyValueStore ()
|
|
BEGIN
|
|
-- 'ALTER TABLE PluginKeyValueStore MODIFY COLUMN PKey varchar(150);',
|
|
DECLARE ModifyPKey BOOLEAN;
|
|
|
|
SELECT COUNT(*) FROM Information_Schema.Columns
|
|
WHERE table_name = 'PluginKeyValueStore'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'PKey'
|
|
AND LOWER(column_type) != 'varchar(150)'
|
|
INTO ModifyPKey;
|
|
|
|
IF ModifyPKey THEN
|
|
ALTER TABLE PluginKeyValueStore MODIFY COLUMN PKey varchar(150);
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigratePluginKeyValueStore procedure starting.') AS DEBUG;
|
|
CALL MigratePluginKeyValueStore ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigratePluginKeyValueStore procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigratePluginKeyValueStore;
|
|
|
|
/* ==> mysql/000078_create_oauth_mattermost_app_id.up.sql <== */
|
|
/* ==> mysql/000082_upgrade_oauth_mattermost_app_id.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateOAuthApps ()
|
|
BEGIN
|
|
-- 'ALTER TABLE OAuthApps ADD COLUMN MattermostAppID varchar(32);'
|
|
DECLARE AddMattermostAppID BOOLEAN;
|
|
DECLARE AddMattermostAppIDQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'OAuthApps'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'MattermostAppID'
|
|
INTO AddMattermostAppID;
|
|
|
|
IF AddMattermostAppID THEN
|
|
SET AddMattermostAppIDQuery = 'ADD COLUMN MattermostAppID varchar(32) NOT NULL DEFAULT ""';
|
|
SET @query = CONCAT('ALTER TABLE OAuthApps ', CONCAT_WS(', ', AddMattermostAppIDQuery));
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
|
|
IF AddMattermostAppID THEN
|
|
UPDATE OAuthApps SET MattermostAppID = "" WHERE MattermostAppID IS NULL;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateOAuthApps procedure starting.') AS DEBUG;
|
|
CALL MigrateOAuthApps ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateOAuthApps procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateOAuthApps;
|
|
|
|
/* ==> mysql/000079_usergroups_displayname_index.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateUserGroups ()
|
|
BEGIN
|
|
-- 'CREATE INDEX idx_usergroups_displayname ON UserGroups(DisplayName);'
|
|
DECLARE CreateIndex BOOLEAN;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'UserGroups'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_usergroups_displayname'
|
|
INTO CreateIndex;
|
|
|
|
IF CreateIndex THEN
|
|
CREATE INDEX idx_usergroups_displayname ON UserGroups(DisplayName);
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateUserGroups procedure starting.') AS DEBUG;
|
|
CALL MigrateUserGroups ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateUserGroups procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateUserGroups;
|
|
|
|
/* ==> mysql/000081_threads_deleteat.up.sql <== */
|
|
-- Replaced by 000083_threads_threaddeleteat.up.sql
|
|
|
|
/* ==> mysql/000084_recent_searches.up.sql <== */
|
|
CREATE TABLE IF NOT EXISTS RecentSearches (
|
|
UserId CHAR(26),
|
|
SearchPointer int,
|
|
Query json,
|
|
CreateAt bigint NOT NULL,
|
|
PRIMARY KEY (UserId, SearchPointer)
|
|
);
|
|
|
|
/* ==> mysql/000085_fileinfo_add_archived_column.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateFileInfo ()
|
|
BEGIN
|
|
-- 'ALTER TABLE FileInfo ADD COLUMN Archived boolean NOT NULL DEFAULT false;'
|
|
DECLARE AddArchived BOOLEAN;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'FileInfo'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Archived'
|
|
INTO AddArchived;
|
|
|
|
IF AddArchived THEN
|
|
ALTER TABLE FileInfo ADD COLUMN Archived boolean NOT NULL DEFAULT false;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateFileInfo procedure starting.') AS DEBUG;
|
|
CALL MigrateFileInfo ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateFileInfo procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateFileInfo;
|
|
|
|
/* ==> mysql/000086_add_cloud_limits_archived.up.sql <== */
|
|
/* ==> mysql/000090_create_enums.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateTeams ()
|
|
BEGIN
|
|
-- 'ALTER TABLE Teams ADD COLUMN CloudLimitsArchived BOOLEAN NOT NULL DEFAULT FALSE;',
|
|
DECLARE AddCloudLimitsArchived BOOLEAN;
|
|
DECLARE AddCloudLimitsArchivedQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'ALTER TABLE Teams MODIFY COLUMN Type ENUM("I", "O");',
|
|
DECLARE ModifyType BOOLEAN;
|
|
DECLARE ModifyTypeQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Teams'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'CloudLimitsArchived'
|
|
INTO AddCloudLimitsArchived;
|
|
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Teams'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Type'
|
|
AND REPLACE(LOWER(column_type), '"', "'") != "enum('i','o')"
|
|
INTO ModifyType;
|
|
|
|
IF AddCloudLimitsArchived THEN
|
|
SET AddCloudLimitsArchivedQuery = 'ADD COLUMN CloudLimitsArchived BOOLEAN NOT NULL DEFAULT FALSE';
|
|
END IF;
|
|
|
|
IF ModifyType THEN
|
|
SET ModifyTypeQuery = 'MODIFY COLUMN Type ENUM("I", "O")';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', AddCloudLimitsArchivedQuery, ModifyTypeQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Teams ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateTeams procedure starting.') AS DEBUG;
|
|
CALL MigrateTeams ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateTeams procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateTeams;
|
|
|
|
/* ==> mysql/000087_sidebar_categories_index.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateSidebarCategories ()
|
|
BEGIN
|
|
-- 'CREATE INDEX idx_sidebarcategories_userid_teamid on SidebarCategories(UserId, TeamId) LOCK=NONE;'
|
|
DECLARE CreateIndex BOOLEAN;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'SidebarCategories'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_sidebarcategories_userid_teamid'
|
|
INTO CreateIndex;
|
|
|
|
IF CreateIndex THEN
|
|
CREATE INDEX idx_sidebarcategories_userid_teamid on SidebarCategories(UserId, TeamId) LOCK=NONE;
|
|
END IF;
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateSidebarCategories procedure starting.') AS DEBUG;
|
|
CALL MigrateSidebarCategories ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateSidebarCategories procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateSidebarCategories;
|
|
|
|
/* ==> mysql/000088_remaining_migrations.up.sql <== */
|
|
DROP TABLE IF EXISTS JobStatuses;
|
|
DROP TABLE IF EXISTS PasswordRecovery;
|
|
|
|
/* ==> mysql/000089_add-channelid-to-reaction.up.sql <== */
|
|
DELIMITER //
|
|
CREATE PROCEDURE MigrateReactions ()
|
|
BEGIN
|
|
-- 'ALTER TABLE Reactions ADD COLUMN ChannelId varchar(26) NOT NULL DEFAULT "";',
|
|
DECLARE AddChannelId BOOLEAN;
|
|
DECLARE AddChannelIdQuery TEXT DEFAULT NULL;
|
|
|
|
-- 'CREATE INDEX idx_reactions_channel_id ON Reactions(ChannelId);'
|
|
DECLARE CreateIndex BOOLEAN;
|
|
DECLARE CreateIndexQuery TEXT DEFAULT NULL;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Reactions'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'ChannelId'
|
|
INTO AddChannelId;
|
|
|
|
SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Reactions'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_reactions_channel_id'
|
|
INTO CreateIndex;
|
|
|
|
IF AddChannelId THEN
|
|
SET AddChannelIdQuery = 'ADD COLUMN ChannelId varchar(26) NOT NULL DEFAULT ""';
|
|
END IF;
|
|
|
|
IF CreateIndex THEN
|
|
SET CreateIndexQuery = 'ADD INDEX idx_reactions_channel_id (ChannelId)';
|
|
END IF;
|
|
|
|
SET @alterQuery = CONCAT_WS(', ', AddChannelIdQuery, CreateIndexQuery);
|
|
IF @alterQuery <> '' THEN
|
|
SET @query = CONCAT('ALTER TABLE Reactions ', @alterQuery);
|
|
PREPARE stmt FROM @query;
|
|
EXECUTE stmt;
|
|
DEALLOCATE PREPARE stmt;
|
|
END IF;
|
|
|
|
UPDATE Reactions SET ChannelId = COALESCE((select ChannelId from Posts where Posts.Id = Reactions.PostId), '') WHERE ChannelId="";
|
|
END//
|
|
DELIMITER ;
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateReactions procedure starting.') AS DEBUG;
|
|
CALL MigrateReactions ();
|
|
SELECT CONCAT('-- ', NOW(), ' MigrateReactions procedure finished.') AS DEBUG;
|
|
DROP PROCEDURE IF EXISTS MigrateReactions;
|
|
|
|
/* ==> mysql/000091_create_post_reminder.up.sql <== */
|
|
CREATE TABLE IF NOT EXISTS PostReminders (
|
|
PostId varchar(26) NOT NULL,
|
|
UserId varchar(26) NOT NULL,
|
|
TargetTime bigint,
|
|
INDEX idx_postreminders_targettime (TargetTime),
|
|
PRIMARY KEY (PostId, UserId)
|
|
);
|
|
|
|
/* ==> mysql/000093_notify_admin.up.sql <== */
|
|
CREATE TABLE IF NOT EXISTS NotifyAdmin (
|
|
UserId varchar(26) NOT NULL,
|
|
CreateAt bigint(20) DEFAULT NULL,
|
|
RequiredPlan varchar(26) NOT NULL,
|
|
RequiredFeature varchar(100) NOT NULL,
|
|
Trial BOOLEAN NOT NULL,
|
|
PRIMARY KEY (UserId, RequiredFeature, RequiredPlan)
|
|
);
|
|
|
|
/* ==> mysql/000094_threads_teamid.up.sql <== */
|
|
-- Replaced by 000096_threads_threadteamid.up.sql
|
|
|
|
/* ==> mysql/000097_create_posts_priority.up.sql <== */
|
|
CREATE TABLE IF NOT EXISTS PostsPriority (
|
|
PostId varchar(26) NOT NULL,
|
|
ChannelId varchar(26) NOT NULL,
|
|
Priority varchar(32) NOT NULL,
|
|
RequestedAck tinyint(1),
|
|
PersistentNotifications tinyint(1),
|
|
PRIMARY KEY (PostId)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
/* ==> mysql/000098_create_post_acknowledgements.up.sql <== */
|
|
CREATE TABLE IF NOT EXISTS PostAcknowledgements (
|
|
PostId varchar(26) NOT NULL,
|
|
UserId varchar(26) NOT NULL,
|
|
AcknowledgedAt bigint(20) DEFAULT NULL,
|
|
PRIMARY KEY (PostId, UserId)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
/* ==> mysql/000099_create_drafts.up.sql <== */
|
|
/* ==> mysql/000100_add_draft_priority_column.up.sql <== */
|
|
CREATE TABLE IF NOT EXISTS Drafts (
|
|
CreateAt bigint(20) DEFAULT NULL,
|
|
UpdateAt bigint(20) DEFAULT NULL,
|
|
DeleteAt bigint(20) DEFAULT NULL,
|
|
UserId varchar(26) NOT NULL,
|
|
ChannelId varchar(26) NOT NULL,
|
|
RootId varchar(26) DEFAULT '',
|
|
Message text,
|
|
Props text,
|
|
FileIds text,
|
|
Priority text,
|
|
PRIMARY KEY (UserId, ChannelId, RootId)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
/* ==> mysql/000101_create_true_up_review_history.up.sql <== */
|
|
CREATE TABLE IF NOT EXISTS TrueUpReviewHistory (
|
|
DueDate bigint(20),
|
|
Completed boolean,
|
|
PRIMARY KEY (DueDate)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|