33 lines
2.2 KiB
SQL
33 lines
2.2 KiB
SQL
|
|
-- Purge legacy single-remote storage columns from installs where they are still present.
|
||
|
|
--
|
||
|
|
-- Background: 02.52.25.sql originally used `DROP COLUMN IF EXISTS`, which is a
|
||
|
|
-- MariaDB-only extension and errors on Oracle MySQL 8.x. On MySQL 8 installs the
|
||
|
|
-- migration failed but Joomla still recorded the schema as applied, leaving all 26
|
||
|
|
-- legacy remote_storage/ftp_*/sftp_*/gdrive_*/s3_* columns stranded on the profiles
|
||
|
|
-- table. This migration removes them portably.
|
||
|
|
--
|
||
|
|
-- It must be safe on BOTH engines AND on installs where the columns are already gone
|
||
|
|
-- (MariaDB, or anyone who ran the corrected 02.52.25). Plain `DROP COLUMN` errors when
|
||
|
|
-- a column is absent, and `DROP COLUMN IF EXISTS` errors on MySQL 8 — so neither works
|
||
|
|
-- unconditionally. We gate the drop on INFORMATION_SCHEMA and build the ALTER via a
|
||
|
|
-- prepared statement, which runs on MySQL 8 and MariaDB alike. All 26 columns were
|
||
|
|
-- created and dropped together, so the presence of `remote_storage` gates the whole set.
|
||
|
|
-- When the columns are absent this is a no-op (`DO 0`).
|
||
|
|
|
||
|
|
SET @moko_has_legacy_remote := (
|
||
|
|
SELECT COUNT(*)
|
||
|
|
FROM INFORMATION_SCHEMA.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = DATABASE()
|
||
|
|
AND TABLE_NAME = '#__mokosuitebackup_profiles'
|
||
|
|
AND COLUMN_NAME = 'remote_storage'
|
||
|
|
);
|
||
|
|
|
||
|
|
SET @moko_drop_legacy_remote := IF(@moko_has_legacy_remote > 0,
|
||
|
|
'ALTER TABLE `#__mokosuitebackup_profiles` DROP COLUMN `remote_storage`, DROP COLUMN `ftp_host`, DROP COLUMN `ftp_port`, DROP COLUMN `ftp_username`, DROP COLUMN `ftp_password`, DROP COLUMN `ftp_path`, DROP COLUMN `ftp_passive`, DROP COLUMN `ftp_ssl`, DROP COLUMN `sftp_host`, DROP COLUMN `sftp_port`, DROP COLUMN `sftp_username`, DROP COLUMN `sftp_auth_type`, DROP COLUMN `sftp_password`, DROP COLUMN `sftp_key_data`, DROP COLUMN `sftp_passphrase`, DROP COLUMN `sftp_path`, DROP COLUMN `gdrive_client_id`, DROP COLUMN `gdrive_client_secret`, DROP COLUMN `gdrive_refresh_token`, DROP COLUMN `gdrive_folder_id`, DROP COLUMN `s3_endpoint`, DROP COLUMN `s3_region`, DROP COLUMN `s3_access_key`, DROP COLUMN `s3_secret_key`, DROP COLUMN `s3_bucket`, DROP COLUMN `s3_path`',
|
||
|
|
'DO 0'
|
||
|
|
);
|
||
|
|
|
||
|
|
PREPARE moko_stmt FROM @moko_drop_legacy_remote;
|
||
|
|
EXECUTE moko_stmt;
|
||
|
|
DEALLOCATE PREPARE moko_stmt;
|