chore(DB): import pending SQL update file

Referenced commit(s): 394ae6fd00
This commit is contained in:
AzerothCoreBot
2021-03-21 19:15:15 +00:00
parent 394ae6fd00
commit acfba80174

View File

@@ -0,0 +1,52 @@
-- DB update 2021_01_25_00 -> 2021_03_21_00
DROP PROCEDURE IF EXISTS `updateDb`;
DELIMITER //
CREATE PROCEDURE updateDb ()
proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE';
SELECT COUNT(*) INTO @COLEXISTS
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_auth' AND COLUMN_NAME = '2021_01_25_00';
IF @COLEXISTS = 0 THEN LEAVE proc; END IF;
START TRANSACTION;
ALTER TABLE version_db_auth CHANGE COLUMN 2021_01_25_00 2021_03_21_00 bit;
SELECT sql_rev INTO OK FROM version_db_auth WHERE sql_rev = '1615629613255169700'; IF OK <> 'FALSE' THEN LEAVE proc; END IF;
--
-- START UPDATING QUERIES
--
INSERT INTO `version_db_auth` (`sql_rev`) VALUES ('1615629613255169700');
-- update `account` structure
-- sha_pass_hash/s/v kept around for now, for backwards compatibility
ALTER TABLE `account`
DROP COLUMN `sessionkey`,
ADD COLUMN `salt` BINARY(32) AFTER `username`,
ADD COLUMN `verifier` BINARY(32) AFTER `salt`,
ADD COLUMN `session_key` BINARY(40) AFTER `verifier`,
MODIFY COLUMN `s` VARCHAR(64) NOT NULL DEFAULT 'dummy value, use `salt` instead',
MODIFY COLUMN `v` VARCHAR(64) NOT NULL DEFAULT 'dummy value, use `verifier` instead';
UPDATE `account` SET `salt`=REVERSE(UNHEX(`s`)), `s`=DEFAULT WHERE LENGTH(`s`)=64;
UPDATE `account` SET `verifier`=REVERSE(UNHEX(`v`)), `v`=DEFAULT WHERE LENGTH(`v`)=64;
ALTER TABLE `account`
DROP COLUMN `session_key`,
ADD COLUMN `session_key` BINARY(40) DEFAULT NULL AFTER `verifier`;
UPDATE `account` SET `salt`=UNHEX(CONCAT(MD5(RAND()),MD5(RAND()))), `verifier`=UNHEX(CONCAT(MD5(RAND()),MD5(RAND()))) WHERE `salt` IS NULL OR `verifier` IS NULL;
ALTER TABLE `account`
DROP COLUMN `s`,
DROP COLUMN `v`,
DROP COLUMN `sha_pass_hash`,
MODIFY COLUMN `salt` BINARY(32) NOT NULL,
MODIFY COLUMN `verifier` BINARY(32) NOT NULL;
--
-- END UPDATING QUERIES
--
COMMIT;
END //
DELIMITER ;
CALL updateDb();
DROP PROCEDURE IF EXISTS `updateDb`;