Strange aggregate - Mailing list pgsql-hackers

From Teodor Sigaev
Subject Strange aggregate
Date
Msg-id 3E7F3AA3.2050307@sigaev.ru
Whole thread Raw
Responses Re: Strange aggregate
List pgsql-hackers
Hi!


Is there possibility to write aggregate returns setof value?

I want to implement some statistic aggregate for tsearch:

....
create type statinfo as (word text, ndoc int4, nentry int4);

CREATE FUNCTION ts_accum(txtstat,txtidx)
RETURNS txtstat
AS 'MODULE_PATHNAME'
LANGUAGE 'C' with (isstrict);

create function ts_accum_finish(txtstat)        returns setof statinfo        as 'MODULE_PATHNAME'        language 'C'
     with (isstrict);
 

CREATE AGGREGATE stat (        BASETYPE=txtidx,        SFUNC=ts_accum,        STYPE=txtstat,        FINALFUNC =
ts_accum_finish,       initcond = ''
 
);


and output like this:

# select * from ts_accum_finish(ts_accum('','qwer:1,2,3,345,65 sd:5,3 qwer:5,6,7')); word | ndoc | nentry
------+------+-------- sd   |    1 |      2 qwer |    1 |      8
(2 rows)

But any my tries gives:
# select stat(a) from test_txtidx;
ERROR:  function called in context that does not accept a set result

I know that is not right way to call setof functions, but how in this case?
Or give more simple way, pls...
Thank you.

Note, I'm working on tsearch V2, which isn't in CVS yet, only on our GiST page:
http://www.sai.msu.su/~megera/postgres/gist/

-- 
Teodor Sigaev                                  E-mail: teodor@sigaev.ru



pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: PQescapeBytea on Win32
Next
From: "Anand B Kumar"
Date:
Subject: Re: Please clarify with regard to Renaming a Sequence