SKIP1018=1
fi
+# If running on a Galera cluster, YOU MUST BRING THE CLUSTER DOWN TO A
+# SINGLE NODE before performing this migration (and preferably also
+# disable Galera temporarily) because the schema rewrites will almost
+# certainly exceed the hard limits on Galera writeset size (128K maximum
+# rows or 4GB total writeset size, whichever comes first).
+
if mysql --skip-reconnect $* <<END-OF-DATA
USE ${db_name};
ALTER TABLE BaseFiles
MODIFY FileIndex INTEGER UNSIGNED DEFAULT 0;
-DROP INDEX JobId on File;
-DROP INDEX JobId_2 on File;
+DROP INDEX IF EXISTS JobId on File;
+DROP INDEX IF EXISTS JobId_2 on File;
+DROP TABLE IF EXISTS file_temp;
CREATE TABLE file_temp (
FileId BIGINT UNSIGNED NOT NULL,
MarkId, LStat, Md5
FROM File JOIN Filename USING (FilenameId);
+SELECT 'DO NOT BREAK THE SCRIPT AFTER THIS POINT';
+
DROP TABLE Filename;
DROP TABLE File;
-
ALTER TABLE file_temp RENAME TO File;
+
ALTER TABLE File ADD PRIMARY KEY (FileId);
ALTER TABLE File MODIFY COLUMN FileId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;
CREATE INDEX JobId on File (JobId);
if mysql --skip-reconnect $* <<END-OF-DATA
USE ${db_name};
-DROP INDEX JobId on File;
-DROP INDEX JobId_2 on File;
+DROP INDEX IF EXISTS JobId on File;
+DROP INDEX IF EXISTS JobId_2 on File;
+
+DROP TABLE IF EXISTS file_temp;
CREATE TABLE file_temp (
FileId BIGINT UNSIGNED NOT NULL,
MarkId, LStat, Md5
FROM File JOIN Filename USING (FilenameId);
+SELECT 'DO NOT BREAK THE SCRIPT AFTER THIS POINT';
+
DROP TABLE Filename;
DROP TABLE File;