Tom Lane wrote:
Thomas Hallgren <[EMAIL PROTECTED]> writes:
Is there a difference in how the executor treat a C function and a
function using a call handler that can cause this behavior?
Can't think of one. You'd better take a closer look at your call
handler.
gdb'ing with a watchpoint on writes to CurrentMemoryContext might be
helpful at seeing whether the context is changing unexpectedly.
Yes, that was helpful. My fault of course. I had a comment in place that
explained exactly what ought to happen. Then the code did the exact
opposite. An excerpt:
/* a class loader or other mechanism might have connected
already. This
* connection must be dropped since its parent context is wrong.
*/
if(self->isMultiCall && SRF_IS_FIRSTCALL())
Invocation_assertConnect();
The Invocation_assertConnect() performs an SPI_connect(). Sigh...
Comments are dangerous :-)
Thanks for your help.
Kind Regards,
Thomas Hallgren
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend