summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2011-12-29 15:07:59 +0100
committerYorhel <git@yorhel.nl>2011-12-29 15:07:59 +0100
commit019f1424945aff4545c3a5083fb6330a942f4a3b (patch)
treed2b026da981a461cab0c8882ccb08b94f8cd1b3e
parent3f754d1566b60815984d3df5f0f19b5c9c9e7e09 (diff)
Maintain VN search cache for hidden entries as well
Required in order to search for hidden entries (obviously :P)
-rw-r--r--Makefile7
-rw-r--r--lib/Multi/Maintenance.pm4
-rw-r--r--util/sql/all.sql3
-rw-r--r--util/sql/func.sql14
-rw-r--r--util/updates/update_2.22.sql11
5 files changed, 25 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index 632e2e70..45685557 100644
--- a/Makefile
+++ b/Makefile
@@ -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
+