Thread: Lifetime of FmgrInfo

Lifetime of FmgrInfo

From
Joshua Tolley
Date:
I was browsing PL/pgSQL source, and saw this line (pl_comp.c:151):

function = (PLpgSQL_function *) fcinfo->flinfo->fn_extra

It then does some work to determine whether the result in "function" is
valid or not. So I got to wondering, what's the lifetime of the
FunctionCallInfoinfo object passed to the call handler function? Or in
other words, what memory context is it in? And is there some way I could
find that out more easily than digging through the source?

- Josh / eggyknap

Re: Lifetime of FmgrInfo

From
Tom Lane
Date:
Joshua Tolley <eggyknap@gmail.com> writes:
> It then does some work to determine whether the result in "function" is
> valid or not. So I got to wondering, what's the lifetime of the
> FunctionCallInfoinfo object passed to the call handler function?

Query lifespan, usually.  There are counterexamples on both sides,
but as a rule it's expected that it's worthwhile for a function to
cache anything it can in the fcinfo->flinfo->fn_extra structure.
If it's not worthwhile, that's the caller's fault not the function's.
        regards, tom lane