Search Postgresql Archives

Re: tsearch trigger: function public.tsearch2(tsvector, text) does not exist

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



and AFAIK you cannot call trigger functions directly neither from SQL
nor pl/pgsql

ok. so the returning value from the tsearch2 function/proceduer/whateveritreallyis is the culprit. thanks.


when using the public.tsearch2 function directly as a trigger, it works
fine:

CREATE TRIGGER "posts_ts_update" BEFORE INSERT OR UPDATE
ON "forum"."posts" FOR EACH ROW
EXECUTE PROCEDURE "public"."tsearch2"(idxfti, p_msg_clean);

i would stick with this - it does exactly the same as your non-working
code above, and is faster

nah, its not faster when you use the new GIN indextype as tsvector index, which takes considerably longer to (re)index. we got a view-counter for our news-messages. each time a user reads the news, the counter is changed and the trigger fired. thus the field would be reindexed all day long...

meanwhile, i've found an easy solution. while the comparsion of the new and old text takes quite some time on large text, its still lot faster than having the tsvector rebuild every time.


CREATE OR REPLACE FUNCTION "forum"."tsearch2_trigger_posts" () RETURNS trigger AS
$body$
BEGIN
       IF (TG_OP = 'UPDATE') THEN
          IF (NEW.p_msg_clean != OLD.p_msg_clean) THEN
             NEW.idxfti = to_tsvector(NEW.p_msg_clean);
          END IF;
          RETURN NEW;
       ELSIF (TG_OP = 'INSERT') THEN
          NEW.idxfti = to_tsvector(NEW.p_msg_clean);
          RETURN NEW;
       END IF;
       RETURN NULL; -- result is ignored since this is an AFTER trigger
   END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;


regards,
thomas



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux