Migration 002 : version portable MariaDB pré-10.0.2 (OVH mutualisé)
ALTER TABLE ... IF NOT EXISTS n'est dispo qu'à partir de MariaDB 10.0.2. OVH mutualisé tourne sur du plus ancien → erreur 1064 syntaxe. Remplacement par une PROCEDURE temporaire qui consulte INFORMATION_SCHEMA avant chaque ALTER. Marche sur toutes versions MariaDB / MySQL 5.5+ et reste idempotent. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,14 +3,47 @@
|
|||||||
-- * channel : nom du manifest à servir (NULL = default = manifest/versions.json)
|
-- * channel : nom du manifest à servir (NULL = default = manifest/versions.json)
|
||||||
-- * can_see_betas : autorise la license à voir les versions taggées isBeta=true
|
-- * can_see_betas : autorise la license à voir les versions taggées isBeta=true
|
||||||
--
|
--
|
||||||
-- À jouer après 001_init.sql. Idempotent grâce à IF NOT EXISTS (MariaDB 10.4+).
|
-- À jouer après 001_init.sql.
|
||||||
-- Pour MySQL/MariaDB plus ancien sans IF NOT EXISTS sur ALTER, voir variante en
|
--
|
||||||
-- bas (mais OVH mutualisé tourne en MariaDB récent, on devrait être bon).
|
-- IDEMPOTENCE : OVH mutualisé peut tourner sur MariaDB pré-10.0.2 où
|
||||||
|
-- ALTER TABLE ... IF NOT EXISTS n'existe pas. On contourne avec une PROCEDURE
|
||||||
|
-- temporaire qui consulte INFORMATION_SCHEMA avant chaque ALTER. Comme ça la
|
||||||
|
-- migration peut être re-jouée sans erreur sur n'importe quelle version
|
||||||
|
-- MariaDB / MySQL 5.5+.
|
||||||
|
|
||||||
ALTER TABLE licenses
|
DROP PROCEDURE IF EXISTS ps_launcher_migrate_002;
|
||||||
ADD COLUMN IF NOT EXISTS channel VARCHAR(64) NULL AFTER max_machines,
|
|
||||||
ADD COLUMN IF NOT EXISTS can_see_betas TINYINT(1) NOT NULL DEFAULT 0 AFTER channel,
|
DELIMITER $$
|
||||||
ADD INDEX IF NOT EXISTS idx_channel (channel);
|
CREATE PROCEDURE ps_launcher_migrate_002()
|
||||||
|
BEGIN
|
||||||
|
-- channel
|
||||||
|
IF NOT EXISTS (
|
||||||
|
SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'licenses' AND COLUMN_NAME = 'channel'
|
||||||
|
) THEN
|
||||||
|
ALTER TABLE licenses ADD COLUMN channel VARCHAR(64) NULL AFTER max_machines;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- can_see_betas
|
||||||
|
IF NOT EXISTS (
|
||||||
|
SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'licenses' AND COLUMN_NAME = 'can_see_betas'
|
||||||
|
) THEN
|
||||||
|
ALTER TABLE licenses ADD COLUMN can_see_betas TINYINT(1) NOT NULL DEFAULT 0 AFTER channel;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- index sur channel (une simple recherche bénéficie peu mais c'est pas cher)
|
||||||
|
IF NOT EXISTS (
|
||||||
|
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'licenses' AND INDEX_NAME = 'idx_channel'
|
||||||
|
) THEN
|
||||||
|
ALTER TABLE licenses ADD INDEX idx_channel (channel);
|
||||||
|
END IF;
|
||||||
|
END $$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
CALL ps_launcher_migrate_002();
|
||||||
|
DROP PROCEDURE ps_launcher_migrate_002;
|
||||||
|
|
||||||
-- Note : pas de migration de data. Les licenses existantes gardent
|
-- Note : pas de migration de data. Les licenses existantes gardent
|
||||||
-- channel = NULL (= manifest default) et can_see_betas = 0 (= pas d'accès aux betas).
|
-- channel = NULL (= manifest default) et can_see_betas = 0 (= pas d'accès aux betas).
|
||||||
|
|||||||
Reference in New Issue
Block a user