Re: Fetching from psql procedures

From: Marc Mamin <M(dot)Mamin(at)intershop(dot)de>
To: "'Pavel Stehule'" <pavel(dot)stehule(at)gmail(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Fetching from psql procedures
Date: 2015-11-20 08:14:46
Message-ID: B6F6FD62F2624C4C9916AC0175D56D88420B59C2@jenmbs01.ad.intershop.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

>> Hi,
>>
>> I'm looking for a way to build large xml documents based on a set of tables, hence using recursive queries.
>>
>>
>> something like:
>>
>> FOR rec1 IN ...
>> FOR rec2 IN ...
>>
>> RETURN QUERY select '<foo>>
>> FOR rec3 IN ...
>>
>> RETURN QUERY select (XMLELEMENT (...))::text
>>
>> END LOOP;
>> RETURN QUERY select '</foo>>
>>
>> END LOOP;
>> END LOOP;
>>
>>
>>
>> but if I wrap this in a function, it seems that I won't get a result before the whole document is prepared.
>>
>> Is there any way to stream the result as it get produced ?
>> or does anybody knows of a good tutotial for a task like this ?

>
> you can try CTE Common Table Expression. It isn't possible with plpgsql :(
> Theoretically you can write C extension where SRF function can returns data continually.But plpgsql function using local stack and returns data as block.
> Regards
> Pavel

Thanks.
A simpler solution will be to store the result in a temp table and then call a second query to stream it out.

regards,

Marc Mamin

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Pavel Stehule 2015-11-20 08:30:54 Re: Fetching from psql procedures
Previous Message Craig Ringer 2015-11-20 07:28:36 Re: BDR and Backup and Recovery