SQL allow recreating existing user (#2555)

* SQL allow recreating existing user

Taking advantage of https://github.com/FreshRSS/FreshRSS/pull/2554
In a case when FreshRSS data is lost, but database data still intact (in
particular MySQL or PostgreSQL), this patch allows recreating previous
users without error

* Better error retrieval

Especially when error occur during the prepare statement
This commit is contained in:
Alexandre Alapetite
2019-10-06 00:14:19 +02:00
committed by GitHub
parent 1b15e22897
commit be4c942cb3
9 changed files with 67 additions and 62 deletions

View File

@@ -57,14 +57,18 @@ CREATE TABLE IF NOT EXISTS `_entry` (
UNIQUE KEY (`id_feed`,`guid`), -- v0.7
INDEX (`is_favorite`), -- v0.7
INDEX (`is_read`), -- v0.7
INDEX `entry_lastSeen_index` (`lastSeen`) -- v1.1.1
-- INDEX `entry_feed_read_index` (`id_feed`,`is_read`) -- v1.7 Located futher down
INDEX `entry_lastSeen_index` (`lastSeen`), -- v1.1.1
INDEX `entry_feed_read_index` (`id_feed`,`is_read`) -- v1.7
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
ENGINE = INNODB;
INSERT IGNORE INTO `_category` (id, name) VALUES(1, "Uncategorized");
SQL;
const SQL_CREATE_INDEX_ENTRY_1 = <<<'SQL'
CREATE INDEX `entry_feed_read_index` ON `_entry` (`id_feed`,`is_read`); -- v1.7
SQL;
const SQL_CREATE_TABLE_ENTRYTMP = <<<'SQL'
CREATE TABLE IF NOT EXISTS `_entrytmp` ( -- v1.7
`id` BIGINT NOT NULL,
@@ -86,9 +90,6 @@ CREATE TABLE IF NOT EXISTS `_entrytmp` ( -- v1.7
INDEX (`date`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
ENGINE = INNODB;
-- v1.7 Located here to be auto-added
CREATE INDEX `entry_feed_read_index` ON `_entry`(`id_feed`,`is_read`);
SQL;
const SQL_CREATE_TABLE_TAGS = <<<'SQL'

View File

@@ -52,6 +52,7 @@ CREATE TABLE IF NOT EXISTS `_entry` (
CREATE INDEX IF NOT EXISTS `_is_favorite_index` ON `_entry` ("is_favorite");
CREATE INDEX IF NOT EXISTS `_is_read_index` ON `_entry` ("is_read");
CREATE INDEX IF NOT EXISTS `_entry_lastSeen_index` ON `_entry` ("lastSeen");
CREATE INDEX IF NOT EXISTS `_entry_feed_read_index` ON `_entry` ("id_feed","is_read"); -- v1.7
INSERT INTO `_category` (id, name)
SELECT 1, 'Uncategorized'
@@ -59,6 +60,10 @@ INSERT INTO `_category` (id, name)
RETURNING nextval('`_category_id_seq`');
SQL;
const SQL_CREATE_INDEX_ENTRY_1 = <<<'SQL'
CREATE INDEX IF NOT EXISTS `_entry_feed_read_index` ON `_entry` ("id_feed","is_read"); -- v1.7
SQL;
const SQL_CREATE_TABLE_ENTRYTMP = <<<'SQL'
CREATE TABLE IF NOT EXISTS `_entrytmp` ( -- v1.7
"id" BIGINT NOT NULL PRIMARY KEY,
@@ -78,9 +83,6 @@ CREATE TABLE IF NOT EXISTS `_entrytmp` ( -- v1.7
UNIQUE ("id_feed","guid")
);
CREATE INDEX IF NOT EXISTS `_entrytmp_date_index` ON `_entrytmp` ("date");
-- v1.7
CREATE INDEX IF NOT EXISTS `_entry_feed_read_index` ON `_entry` ("id_feed","is_read");
SQL;
const SQL_CREATE_TABLE_TAGS = <<<'SQL'

View File

@@ -55,10 +55,15 @@ CREATE TABLE IF NOT EXISTS `entry` (
CREATE INDEX IF NOT EXISTS entry_is_favorite_index ON `entry`(`is_favorite`);
CREATE INDEX IF NOT EXISTS entry_is_read_index ON `entry`(`is_read`);
CREATE INDEX IF NOT EXISTS entry_lastSeen_index ON `entry`(`lastSeen`); -- //v1.1.1
CREATE INDEX IF NOT EXISTS entry_feed_read_index ON `entry`(`id_feed`,`is_read`); -- v1.7
INSERT OR IGNORE INTO `category` (id, name) VALUES(1, "Uncategorized");
SQL;
const SQL_CREATE_INDEX_ENTRY_1 = <<<'SQL'
CREATE INDEX IF NOT EXISTS entry_feed_read_index ON `entry`(`id_feed`,`is_read`); -- v1.7
SQL;
const SQL_CREATE_TABLE_ENTRYTMP = <<<'SQL'
CREATE TABLE IF NOT EXISTS `entrytmp` ( -- v1.7
`id` BIGINT NOT NULL,
@@ -79,9 +84,6 @@ CREATE TABLE IF NOT EXISTS `entrytmp` ( -- v1.7
UNIQUE (`id_feed`,`guid`)
);
CREATE INDEX IF NOT EXISTS entrytmp_date_index ON `entrytmp`(`date`);
-- v1.7
CREATE INDEX IF NOT EXISTS `entry_feed_read_index` ON `entry`(`id_feed`,`is_read`);
SQL;
const SQL_CREATE_TABLE_TAGS = <<<'SQL'
@@ -98,7 +100,7 @@ CREATE TABLE IF NOT EXISTS `entrytag` (
FOREIGN KEY (`id_tag`) REFERENCES `tag` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`id_entry`) REFERENCES `entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX entrytag_id_entry_index ON `entrytag` (`id_entry`);
CREATE INDEX IF NOT EXISTS entrytag_id_entry_index ON `entrytag` (`id_entry`);
SQL;
const SQL_INSERT_FEED = <<<'SQL'