SQL test if minor update is needed (#6692)

* SQL test if minor update is needed
fix https://github.com/FreshRSS/FreshRSS/issues/6592

* Minor syntax
This commit is contained in:
Alexandre Alapetite
2024-08-04 19:42:01 +02:00
committed by GitHub
parent b6f7c31e4c
commit b034ce2ccb
2 changed files with 81 additions and 54 deletions

View File

@@ -114,30 +114,46 @@ DROP TABLE IF EXISTS `_entrytag`, `_tag`, `_entrytmp`, `_entry`, `_feed`, `_cate
SQL;
$GLOBALS['SQL_UPDATE_MINOR'] = <<<'SQL'
ALTER TABLE `_feed`
MODIFY COLUMN `website` TEXT CHARACTER SET latin1 COLLATE latin1_bin,
MODIFY COLUMN `lastUpdate` BIGINT DEFAULT 0,
MODIFY COLUMN `pathEntries` VARCHAR(4096),
MODIFY COLUMN `httpAuth` VARCHAR(1024) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL;
ALTER TABLE `_entry`
MODIFY COLUMN `date` BIGINT,
MODIFY COLUMN `lastSeen` BIGINT DEFAULT 0,
MODIFY COLUMN `guid` VARCHAR(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
MODIFY COLUMN `title` VARCHAR(8192) NOT NULL,
MODIFY COLUMN `author` VARCHAR(1024),
MODIFY COLUMN `link` VARCHAR(16383) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
MODIFY COLUMN `tags` VARCHAR(2048);
ALTER TABLE `_entrytmp`
MODIFY COLUMN `date` BIGINT,
MODIFY COLUMN `lastSeen` BIGINT DEFAULT 0,
MODIFY COLUMN `guid` VARCHAR(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
MODIFY COLUMN `title` VARCHAR(8192) NOT NULL,
MODIFY COLUMN `author` VARCHAR(1024),
MODIFY COLUMN `link` VARCHAR(16383) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
MODIFY COLUMN `tags` VARCHAR(2048);
ALTER TABLE `_tag`
MODIFY COLUMN `name` VARCHAR(191) NOT NULL;
ALTER TABLE `_feed`
DROP INDEX IF EXISTS `url`, -- IF EXISTS works with MariaDB but not with MySQL, so needs PHP workaround
MODIFY COLUMN `url` VARCHAR(32768) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;
DROP PROCEDURE IF EXISTS update_minor;
CREATE PROCEDURE update_minor()
BEGIN
DECLARE up_to_date INT;
SELECT COUNT(*) INTO up_to_date FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = REPLACE('`_tag`', '`', '')
AND COLUMN_NAME = 'name'
AND COLUMN_TYPE = 'VARCHAR(191)';
IF up_to_date = 0 THEN
ALTER TABLE `_feed`
MODIFY COLUMN `website` TEXT CHARACTER SET latin1 COLLATE latin1_bin,
MODIFY COLUMN `lastUpdate` BIGINT DEFAULT 0,
MODIFY COLUMN `pathEntries` VARCHAR(4096),
MODIFY COLUMN `httpAuth` VARCHAR(1024) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL;
ALTER TABLE `_entry`
MODIFY COLUMN `date` BIGINT,
MODIFY COLUMN `lastSeen` BIGINT DEFAULT 0,
MODIFY COLUMN `guid` VARCHAR(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
MODIFY COLUMN `title` VARCHAR(8192) NOT NULL,
MODIFY COLUMN `author` VARCHAR(1024),
MODIFY COLUMN `link` VARCHAR(16383) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
MODIFY COLUMN `tags` VARCHAR(2048);
ALTER TABLE `_entrytmp`
MODIFY COLUMN `date` BIGINT,
MODIFY COLUMN `lastSeen` BIGINT DEFAULT 0,
MODIFY COLUMN `guid` VARCHAR(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
MODIFY COLUMN `title` VARCHAR(8192) NOT NULL,
MODIFY COLUMN `author` VARCHAR(1024),
MODIFY COLUMN `link` VARCHAR(16383) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
MODIFY COLUMN `tags` VARCHAR(2048);
ALTER TABLE `_tag`
MODIFY COLUMN `name` VARCHAR(191) NOT NULL;
ALTER TABLE `_feed`
DROP INDEX IF EXISTS `url`, -- IF EXISTS works with MariaDB but not with MySQL, so needs PHP workaround
MODIFY COLUMN `url` VARCHAR(32768) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;
END IF;
END;
CALL update_minor();
DROP PROCEDURE update_minor;
SQL;