diff options
author | Yorhel <git@yorhel.nl> | 2011-12-29 15:07:59 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2011-12-29 15:07:59 +0100 |
commit | 019f1424945aff4545c3a5083fb6330a942f4a3b (patch) | |
tree | d2b026da981a461cab0c8882ccb08b94f8cd1b3e | |
parent | 3f754d1566b60815984d3df5f0f19b5c9c9e7e09 (diff) |
Maintain VN search cache for hidden entries as well
Required in order to search for hidden entries (obviously :P)
-rw-r--r-- | Makefile | 7 | ||||
-rw-r--r-- | lib/Multi/Maintenance.pm | 4 | ||||
-rw-r--r-- | util/sql/all.sql | 3 | ||||
-rw-r--r-- | util/sql/func.sql | 14 | ||||
-rw-r--r-- | util/updates/update_2.22.sql | 11 |
5 files changed, 25 insertions, 14 deletions
@@ -39,7 +39,7 @@ .PHONY: all dirs js skins robots chmod chmod-tladmin multi-stop multi-start multi-restart sql-import\ update-2.10 update-2.11 update-2.12 update-2.13 update-2.14 update-2.15 update-2.16 update-2.17\ - update-2.18 update-2.19 update-2.20 update-2.21 + update-2.18 update-2.19 update-2.20 update-2.21 update-2.22 all: dirs js skins robots data/config.pl @@ -190,3 +190,8 @@ update-2.21: all ${runpsql} < util/updates/update_2.21.sql $(multi-start) +update-2.22: all + $(multi-stop) + ${runpsql} < util/updates/update_2.22.sql + $(multi-start) + diff --git a/lib/Multi/Maintenance.pm b/lib/Multi/Maintenance.pm index a754e618..e7c66a04 100644 --- a/lib/Multi/Maintenance.pm +++ b/lib/Multi/Maintenance.pm @@ -272,7 +272,7 @@ sub logrotate { sub vnsearch_check { $_[KERNEL]->call(pg => query => - 'SELECT id FROM vn WHERE NOT hidden AND c_search IS NULL LIMIT 1', + 'SELECT id FROM vn WHERE c_search IS NULL LIMIT 1', undef, 'vnsearch_gettitles'); } @@ -303,7 +303,7 @@ sub vnsearch_update { # num, res, vid, time my @t = map +($_->{title}, $_->{original}), @$res; # alias fields are a bit special for (@$res) { - push @t, split /,/, $_->{alias} if $_->{alias}; + push @t, split /[\n,]/, $_->{alias} if $_->{alias}; } my $t = normalize_titles(@t); $_[KERNEL]->call(core => log => 'Updated search cache for v%d', $id); diff --git a/util/sql/all.sql b/util/sql/all.sql index eac8d58a..bb5829f7 100644 --- a/util/sql/all.sql +++ b/util/sql/all.sql @@ -104,8 +104,7 @@ CREATE TRIGGER notify_dbedit AFTER UPDATE ON chars CREATE TRIGGER notify_announce AFTER INSERT ON threads_posts FOR EACH ROW WHEN (NEW.num = 1) EXECUTE PROCEDURE notify_announce(); CREATE TRIGGER vn_vnsearch_notify AFTER UPDATE ON vn FOR EACH ROW - WHEN (OLD.c_search IS NOT NULL AND NEW.c_search IS NULL AND NOT NEW.hidden - OR NEW.hidden IS DISTINCT FROM OLD.hidden + WHEN (OLD.c_search IS NOT NULL AND NEW.c_search IS NULL OR NEW.latest IS DISTINCT FROM OLD.latest ) EXECUTE PROCEDURE vn_vnsearch_notify(); CREATE TRIGGER vn_vnsearch_notify AFTER UPDATE ON releases FOR EACH ROW diff --git a/util/sql/func.sql b/util/sql/func.sql index 3af04562..e5be2fde 100644 --- a/util/sql/func.sql +++ b/util/sql/func.sql @@ -738,20 +738,16 @@ $$ LANGUAGE plpgsql; -- Check for updates to vn.c_search -- 1. NOTIFY is sent when vn.c_search goes from non-NULL to NULL -- vn.c_search is set to NULL when: --- 2. UPDATE on VN with the hidden field going from TRUE to FALSE --- 3. VN add/edit of which the title/original/alias fields differ from previous revision --- 4. Release gets hidden or unhidden --- 5. Release add/edit of which the title/original/vn fields differ from the previous revision +-- 2. VN add/edit of which the title/original/alias fields differ from previous revision +-- 3. Release gets hidden or unhidden +-- 4. Release add/edit of which the title/original/vn fields differ from the previous revision CREATE OR REPLACE FUNCTION vn_vnsearch_notify() RETURNS trigger AS $$ BEGIN IF TG_TABLE_NAME = 'vn' THEN -- 1. - IF NEW.c_search IS NULL AND NOT NEW.hidden THEN + IF NEW.c_search IS NULL THEN NOTIFY vnsearch; -- 2. - ELSIF NEW.hidden IS DISTINCT FROM OLD.hidden THEN - UPDATE vn SET c_search = NULL WHERE id = NEW.id; - -- 3. ELSIF NEW.latest IS DISTINCT FROM OLD.latest THEN IF EXISTS(SELECT 1 FROM vn_rev v1, vn_rev v2 WHERE v1.id = OLD.latest AND v2.id = NEW.latest @@ -761,7 +757,7 @@ BEGIN END IF; END IF; ELSIF TG_TABLE_NAME = 'releases' THEN - -- 4. & 5. + -- 3. & 4. IF NEW.hidden IS DISTINCT FROM OLD.hidden OR ( NEW.latest IS DISTINCT FROM OLD.latest AND ( EXISTS( diff --git a/util/updates/update_2.22.sql b/util/updates/update_2.22.sql new file mode 100644 index 00000000..3268481e --- /dev/null +++ b/util/updates/update_2.22.sql @@ -0,0 +1,11 @@ + + +DROP TRIGGER vn_vnsearch_notify ON vn; + +CREATE TRIGGER vn_vnsearch_notify AFTER UPDATE ON vn FOR EACH ROW + WHEN (OLD.c_search IS NOT NULL AND NEW.c_search IS NULL + OR NEW.latest IS DISTINCT FROM OLD.latest + ) EXECUTE PROCEDURE vn_vnsearch_notify(); + +\i util/sql/func.sql + |