Re: Fetching from psql procedures

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Marc Mamin <M(dot)Mamin(at)intershop(dot)de>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Fetching from psql procedures
Date: 2015-11-20 08:30:54
Message-ID: CAFj8pRCPKntU1LgqN_gK-n639QQewRsWYrGYpQ6Db1+GBeMKaA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

2015-11-20 9:14 GMT+01:00 Marc Mamin <M(dot)Mamin(at)intershop(dot)de>:

> >> 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.
>

sure

Regards

Pavel

>
> regards,
>
> Marc Mamin
>
>
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Craig Ringer 2015-11-20 09:04:17 Re: BDR and Backup and Recovery
Previous Message Marc Mamin 2015-11-20 08:14:46 Re: Fetching from psql procedures