Re: Stateful pointers in set-returning functions

From: Ian Pye <ianpye(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Stateful pointers in set-returning functions
Date: 2012-05-24 18:28:01
Message-ID: CAEVWPAXSy60uHe7L8KLRBo9+M3_bz+aUdm4eweaw3MQOdRD=iw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Fair enough -- thanks for the tip.

On Thu, May 24, 2012 at 11:21 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Ian Pye <ianpye(at)gmail(dot)com> writes:
>> I'm writing a set-returning function which places a file handle into
>> PG's FuncCallContext's user_fctx space. My problem is that when the
>> function is ran with a limit clause (SELECT * FROM foo() LIMIT 10) the
>> server will stop calling the function automatically, not giving me a
>> chance to close the file handle. Is there a way to get the limit value
>> inside of foo() and set the max max_calls parameter correctly?
>
> No, and even if there were, this would be a very unsafe practice,
> since errors or other issues could result in early termination of the
> query.
>
> You would likely be better off using tuplestore return mode so that you
> can do all the reading during one call and not have to assume that
> you'll get control back again.
>
>                        regards, tom lane

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2012-05-24 18:32:47 Re: "could not open relation with OID" errors after promoting the standby to master
Previous Message Andres Freund 2012-05-24 18:22:25 Re: Changing the concept of a DATABASE