Re: pl/pgsql Limits
От | Ian Harding |
---|---|
Тема | Re: pl/pgsql Limits |
Дата | |
Msg-id | 3A691C4C.BA1C60EC@pakrat.com обсуждение исходный текст |
Ответ на | Re: pl/pgsql Limits (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-sql |
Tom Lane wrote: > Jan Wieck <janwieck@Yahoo.com> writes: > >> As it is known that any funtion, written in pl/pgsql, can only > >> retrun one tuple. I am just wondering it were true as well for function > >> written in C language. I need to write few function that will retrun > >> mulitiple rows satsifying a certain set of conditions. > > > We plan to tackle the problem for v7.2. > > It is possible for a C function to return a set (ie, multiple values > returned over successive calls) as of 7.1; it's even documented, see > src/backend/utils/fmgr/README. And you can return a tuple if you know > how (this part is not documented, but you can crib it from the > SQL-function support in backend/executor/functions.c). > > The real problem is that the rest of the system doesn't let you *do* > anything very useful with either set-valued or tuple-valued functions. > This is what we need to address in future releases. Ideally I think > a function returning sets and/or tuples should be treated as a table > source, so that you'd write ... FROM function(args) AS alias, ... > > regards, tom lane OK, here's my brute force stupid hack to work around it. I create a temporary table, call my procedure, which inserts records into my temporary table, then I select from it. The table had to exist when I created the procedure, but that's OK, I just delete it afterwards. When I disconnect with psql, the temp table goes away. Of course I could just drop it, but I am curious... With AOLServer, which uses connection pooling, might my connection stay open all day and other transactions have visibility of my temporary table? I don't quite get that part. Ian
В списке pgsql-sql по дате отправления: