SELECT active_revision_id INTO rev_id FROM forum_node WHERE id = node_id;
SELECT tsv INTO v FROM forum_noderevision WHERE id = rev_id;
- SELECT count(*) INTO child_count FROM forum_node WHERE abs_parent_id = node_id AND NOT deleted;
+ SELECT count(*) INTO child_count FROM forum_node WHERE abs_parent_id = node_id AND deleted_id IS NULL;
IF child_count > 0 THEN
- FOR r in SELECT * FROM forum_node WHERE abs_parent_id = node_id AND NOT deleted LOOP
+ FOR r in SELECT * FROM forum_node WHERE abs_parent_id = node_id AND deleted_id IS NULL LOOP
SELECT tsv INTO cv FROM forum_noderevision WHERE id = r.active_revision_id;
v :=(v || cv);
END LOOP;
END IF;
- RAISE NOTICE '%', v;
RETURN ts_rank_cd(v, plainto_tsquery('english', srch), 32);
end
$$ LANGUAGE plpgsql;
-select node_ranking(50, 'free');
-
-
-
CREATE OR REPLACE FUNCTION set_node_tsv() RETURNS TRIGGER AS $$
begin
new.tsv :=
end
$$ LANGUAGE plpgsql;
- CREATE OR REPLACE FUNCTION public.create_tsv_noderevision_column ()
- RETURNS TEXT
- AS $$
+ CREATE OR REPLACE FUNCTION public.create_tsv_noderevision_column () RETURNS TEXT AS $$
+ begin
ALTER TABLE forum_noderevision ADD COLUMN tsv tsvector;
+ DROP TRIGGER IF EXISTS tsvectorupdate ON forum_noderevision;
+
CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE
ON forum_noderevision FOR EACH ROW EXECUTE PROCEDURE set_node_tsv();
CREATE INDEX noderevision_tsv ON forum_noderevision USING gin(tsv);
- SELECT 'tsv column created'::TEXT;
- $$
- LANGUAGE 'sql';
+ RETURN 'tsv column created'::TEXT;
+ end
+ $$ LANGUAGE plpgsql;
SELECT CASE WHEN
(SELECT true::BOOLEAN FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'forum_noderevision') AND attname = 'tsv')