Markus Wagner wrote:
> Hi,
>
> if I do a SELECT on a non-existing table, SPI_exec won't return.
> I get, e. g. in pgaccess, an error message "<table> does not exist",
> and my code below the function call is never reached.
Right, the SPI_exec() call in turn calls the PostgreSQL
parser and that raises an elog(ERROR) which longjmp()'s back
into the backends main loop waiting for the next client
query.
>
> So why return error codes for SPI_exec when you cannot evaluate them?
What do you want here? No error, just an empty result of
unspecified format? If the parser cannot determine (due to
nonexistance of a table) which datatype the columns of the
result set at least should have, what else could he do than
trowing an ERROR?
>
> The background:
>
> I need to distinguish different client connections within a trigger
> function.
> To do this, I create a temporary table within a "login" function.
> My trigger must check for the existence of this function.
> I cannot think of any other method, since there is no "connection id" or
> something like that!
Unfortunately PL/pgSQL doesn't have global variables. PL/Tcl
can have. If you cannot code a part of the login mechanism
in PL/Tcl, setting a global variable and returning that in
another PL/Tcl function, you could create a temp table with
the same name in every connection and fill the connection-ID
into that.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== [EMAIL PROTECTED] #
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://www.postgresql.org/search.mpl