Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20200219.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20200219.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20200219.sql (revision a10358301bfda5766c7b91e97ed82ee303a287a5) @@ -0,0 +1,23 @@ +CREATE FUNCTION UUID_V4() + RETURNS CHAR(36) +BEGIN + -- Generate 8 2-byte strings that we will combine into a UUIDv4 + SET @h1 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'); + SET @h2 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'); + SET @h3 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'); + SET @h6 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'); + SET @h7 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'); + SET @h8 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0'); + + -- 4th section will start with a 4 indicating the version + SET @h4 = CONCAT('4', LPAD(HEX(FLOOR(RAND() * 0x0fff)), 3, '0')); + + -- 5th section first half-byte can only be 8, 9 A or B + SET @h5 = CONCAT(HEX(FLOOR(RAND() * 4 + 8)), + LPAD(HEX(FLOOR(RAND() * 0x0fff)), 3, '0')); + + -- Build the complete UUID + RETURN LOWER(CONCAT( + @h1, @h2, '-', @h3, '-', @h4, '-', @h5, '-', @h6, @h7, @h8 + )); +END; \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20200220.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20200220.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20200220.sql (revision a10358301bfda5766c7b91e97ed82ee303a287a5) @@ -0,0 +1,19 @@ +SET AUTOCOMMIT = 0; +set FOREIGN_KEY_CHECKS = 0; + +-- LDEV-4962 Use random UUIDs v4 for user portraits + +ALTER TABLE lams_cr_node ADD COLUMN temp BIGINT; + +UPDATE lams_cr_node AS n JOIN lams_user AS u USING (portrait_uuid) +SET n.temp = u.user_id, + n.portrait_uuid = UUID_TO_BIN(UUID_V4()); + +UPDATE lams_cr_node AS n JOIN lams_user AS u ON n.temp = u.user_id +SET u.portrait_uuid = n.portrait_uuid; + +ALTER TABLE lams_cr_node DROP COLUMN temp; + +COMMIT; +SET AUTOCOMMIT = 1; +set FOREIGN_KEY_CHECKS = 1; \ No newline at end of file