Hi Alvaro -
Yes, your right that SPI_finish() should be called. It was being called
in my original program where this issue was discovered. I did not include
a call to SPI_finish() in my bug exercising example just to eliminate
extraneous stuff. I have just modified the submitted test_trigger.c
program
to include SPI_finish() at the end and verified that it does not affect the
results of the bug that I am reporting.
It is notable, however, that Postgres is not emitting the following:
WARNING: transaction left non-empty SPI stack
HINT: Check for missing "SPI_finish" calls.
.. with my test_trigger.c. If that test_trigger.c is completing without
calling SPI_finish() (which it doesn't) those messages should have
appeared. This may be another issue, or related in some way.. ??
Also, since reporting that issue, I have confirmed the same behavior on
7.4.2 using the same test scenerio.
Thanks
-Jim
----- Original Message -----
From: "Alvaro Herrera" <[EMAIL PROTECTED]>
To: "SPI_connect() failure." <[EMAIL PROTECTED]>
Cc: <pgsql-bugs@postgresql.org>
Sent: Wednesday, March 01, 2006 10:57 AM
Subject: Re: [BUGS] BUG #2294: SPI_connect() fails in trigger when a
Foreignkey constraint exists on same table as trigger.
SPI_connect() failure. wrote:
SPI_connect() throws "ERROR: SPI_connect failed" message (from
backend/utils/adt/ri_trigger.c:378) when called from (at least) a
before
insert trigger on a table which also contains a foreign key constraint.
The
exit from the trigger function is inconsistent. This error message is
emitted from ri_trigger.c but the return result
from SPI_connect() in the trigger is SPI_OK_CONNECT. The insert
operation
does not commit to the database.
Do you call SPI_finish() in your trigger? You should not leave the
SPI connection open.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match