2008-07-16

Aggregate for tsvector

Teodor today has come with a problem, which can be solved using aggregate for tsvector:

CREATE AGGREGATE tsvector_sum(tsvector) (
    SFUNC = tsvector_concat,
    STYPE = tsvector,
    INITCOND = ''
);

Below is my demonstration:

=# select tsvector_sum( t.fts) 
from ( 
select ('1 2 ' || generate_series(3,10,1))::tsvector as fts 
) as t;
               tsvector_sum
------------------------------------------
 '1' '2' '3' '4' '5' '6' '7' '8' '9' '10'