]> git.openstreetmap.org Git - osqa.git/blob - forum_modules/pgfulltext/pg_fts_install.sql
Initial commit
[osqa.git] / forum_modules / pgfulltext / pg_fts_install.sql
1 ALTER TABLE question ADD COLUMN tsv tsvector;\r
2 \r
3 CREATE OR REPLACE FUNCTION public.create_plpgsql_language ()\r
4     RETURNS TEXT\r
5     AS $$\r
6         CREATE LANGUAGE plpgsql;\r
7         SELECT 'language plpgsql created'::TEXT;\r
8     $$\r
9 LANGUAGE 'sql';\r
10 \r
11 SELECT CASE WHEN\r
12       (SELECT true::BOOLEAN\r
13          FROM pg_language\r
14         WHERE lanname='plpgsql')\r
15     THEN\r
16       (SELECT 'language already installed'::TEXT)\r
17     ELSE\r
18       (SELECT public.create_plpgsql_language())\r
19     END;\r
20 \r
21 DROP FUNCTION public.create_plpgsql_language ();\r
22 \r
23 CREATE OR REPLACE FUNCTION set_question_tsv() RETURNS TRIGGER AS $$\r
24 begin\r
25   new.tsv :=\r
26      setweight(to_tsvector('english', coalesce(new.tagnames,'')), 'A') ||\r
27      setweight(to_tsvector('english', coalesce(new.title,'')), 'B') ||\r
28      setweight(to_tsvector('english', coalesce(new.summary,'')), 'C');\r
29   RETURN new;\r
30 end\r
31 $$ LANGUAGE plpgsql;\r
32 \r
33 CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE\r
34 ON question FOR EACH ROW EXECUTE PROCEDURE set_question_tsv();\r
35 \r
36   CREATE INDEX question_tsv ON question USING gin(tsv);\r
37 \r
38 UPDATE question SET title = title;\r