From f968b39b92a7c1dd2e8dacac2502adeffdc0d1b2 Mon Sep 17 00:00:00 2001 From: DariusIII Date: Tue, 10 May 2016 14:42:37 +0200 Subject: [PATCH] Fix patches, update triggers --- Changelog | 2 +- resources/db/patches/mysql/+1~releases.sql | 12 ++++++++++++ resources/db/patches/mysql/+2~predb_hashes.sql | 17 +++++++++++++++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/Changelog b/Changelog index da57dc283..bdc73ba61 100755 --- a/Changelog +++ b/Changelog @@ -1,5 +1,5 @@ 2016-05-10 DariusIII - * Fix: Reorder patche files + * Fix: Reorder patch files * Chg: Rename release_audio to audio_data * Chg: Rename releaseid to releases_id * Upd: Remove unused scripts, update mysqltuner.pl diff --git a/resources/db/patches/mysql/+1~releases.sql b/resources/db/patches/mysql/+1~releases.sql index e1befada4..035fb3c30 100644 --- a/resources/db/patches/mysql/+1~releases.sql +++ b/resources/db/patches/mysql/+1~releases.sql @@ -13,3 +13,15 @@ PARTITION tv VALUES LESS THAN (6000), PARTITION xxx VALUES LESS THAN (7000), PARTITION books VALUES LESS THAN (8000) ); + +DROP TRIGGER IF EXISTS delete_search; +DROP TRIGGER IF EXISTS insert_search; +DROP TRIGGER IF EXISTS update_search; + +DELIMITER $$ + +CREATE TRIGGER insert_search AFTER INSERT ON releases FOR EACH ROW BEGIN INSERT INTO release_search_data (releases_id, guid, name, searchname, fromname) VALUES (NEW.id, NEW.guid, NEW.name, NEW.searchname, NEW.fromname); END; $$ +CREATE TRIGGER update_search AFTER UPDATE ON releases FOR EACH ROW BEGIN IF NEW.guid != OLD.guid THEN UPDATE release_search_data SET guid = NEW.guid WHERE releases_id = OLD.id; END IF; IF NEW.name != OLD.name THEN UPDATE release_search_data SET name = NEW.name WHERE releases_id = OLD.id; END IF; IF NEW.searchname != OLD.searchname THEN UPDATE release_search_data SET searchname = NEW.searchname WHERE releases_id = OLD.id; END IF; IF NEW.fromname != OLD.fromname THEN UPDATE release_search_data SET fromname = NEW.fromname WHERE releases_id = OLD.id; END IF; END; $$ +CREATE TRIGGER delete_search AFTER DELETE ON releases FOR EACH ROW BEGIN DELETE FROM release_search_data WHERE releases_id = OLD.id; END; $$ + +DELIMITER ; diff --git a/resources/db/patches/mysql/+2~predb_hashes.sql b/resources/db/patches/mysql/+2~predb_hashes.sql index 4cfd68e87..2a0e444ad 100644 --- a/resources/db/patches/mysql/+2~predb_hashes.sql +++ b/resources/db/patches/mysql/+2~predb_hashes.sql @@ -1,4 +1,17 @@ -# Rename pre_id to predb_id in line with lithium conventions. +# Rename predb_id to predb_id in line with lithium conventions. ALTER TABLE predb_hashes -CHANGE COLUMN pre_id predb_id INT(11) UNSIGNED NOT NULL +CHANGE COLUMN predb_id predb_id INT(11) UNSIGNED NOT NULL COMMENT 'id, of the predb entry, this hash belongs to'; + +DROP TRIGGER IF EXISTS insert_hashes; +DROP TRIGGER IF EXISTS update_hashes; +DROP TRIGGER IF EXISTS delete_hashes; + +DELIMITER $$ +CREATE TRIGGER insert_hashes AFTER INSERT ON predb FOR EACH ROW BEGIN INSERT INTO predb_hashes (hash, predb_id) VALUES (UNHEX(MD5(NEW.title)), NEW.id), (UNHEX(MD5(MD5(NEW.title))), NEW.id), ( UNHEX(SHA1(NEW.title)), NEW.id);END; $$ + +CREATE TRIGGER update_hashes AFTER UPDATE ON predb FOR EACH ROW BEGIN IF NEW.title != OLD.title THEN DELETE FROM predb_hashes WHERE hash IN ( UNHEX(md5(OLD.title)), UNHEX(md5(md5(OLD.title))), UNHEX(sha1(OLD.title)) ) AND predb_id = OLD.id; INSERT INTO predb_hashes (hash, predb_id) VALUES ( UNHEX(MD5(NEW.title)), NEW.id ), ( UNHEX(MD5(MD5(NEW.title))), NEW.id ), ( UNHEX(SHA1(NEW.title)), NEW.id );END IF;END; $$ + +CREATE TRIGGER delete_hashes AFTER DELETE ON predb FOR EACH ROW BEGIN DELETE FROM predb_hashes WHERE hash IN ( UNHEX(md5(OLD.title)), UNHEX(md5(md5(OLD.title))), UNHEX(sha1(OLD.title)) ) AND predb_id = OLD.id;END; $$ + +DELIMITER ;