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

Reply via email to