Re: SPI_exec does not return!

From: Jan Wieck <JanWieck(at)Yahoo(dot)com>
To: Markus Wagner <wagner(at)imsd(dot)uni-mainz(dot)de>
Cc: "pgsql-sql(at)postgresql(dot)org" <pgsql-sql(at)postgresql(dot)org>
Subject: Re: SPI_exec does not return!
Date: 2001-07-18 10:54:34
Message-ID: 200107181054.f6IAsYd20969@jupiter.us.greatbridge.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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. #
#================================================== JanWieck(at)Yahoo(dot)com #

_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Raymond Chui 2001-07-18 12:18:31 What is the syntax turn off auto commit?
Previous Message Bhuvan A 2001-07-18 09:23:04 Re: CAST(ipaddress as text) -- HOW?