Re: Deleting temp table & relation does not exists

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Jochem van Dieten <jochemd(at)oli(dot)tudelft(dot)nl>
Cc: <pgsql-general(at)postgresql(dot)org>
Subject: Re: Deleting temp table & relation does not exists
Date: 2002-03-21 22:28:07
Message-ID: 20020321142702.K68057-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On Thu, 21 Mar 2002, Jochem van Dieten wrote:
>
> I am having a problem with a function. The function is called from a
> trigger and functions correctly the first time it is called from a
> certain connection. However, after that it fails during subsequent calls
> from that connecting. New connections work for the first time as well,
> and fail after that.
> My hunch is that it has got something to do with the temp table that I
> use to circumvent having to do a FOR .. IN EXECUTE ...
> The error is "Error: relation ##### does not exist." The number is
> always the same when using the same connection, but different when using
> a different connection.
>
> Code follows:
>
> DROP FUNCTION fn_useradd();
> CREATE FUNCTION fn_useradd() RETURNS OPAQUE AS '
> DECLARE
> returncode INTEGER;
> usermgrstring VARCHAR;
> orgname VARCHAR;
> groepname VARCHAR;
> BEGIN
>
> IF NEW.password IS NOT NULL THEN
> NEW.password := mycrypt(NEW.password);
> RAISE NOTICE ''[OLI] Password encrypted: %.'',NEW.username;
> -- This notice is in the log so the error is after here
> END IF;
>
> EXECUTE ''create temp table varstore (store varchar(100))'';
>
> EXECUTE ''insert into varstore (store) select longname from
> organisation where id = '' || New.orgid;
> select into orgname store from varstore;
> delete from varstore;

** Shouldn't this be an execute as well since the table's identity
changes from execution to execution?

>
> EXECUTE ''insert into varstore (store) SELECT name FROM groep
> WHERE id = '' || New.groepid;
> select into groepname store from varstore;
> delete from varstore;

** and this...

>
> EXECUTE ''drop table varstore'';
>
> usermgrstring = groepname || ''\|'' || orgname || ''\|'' || NEW.qta;
>
> RAISE NOTICE ''[OLI] fn_usermgr() string: %'',usermgrstring;
> -- This notice is not in the log so the error is before here
>
> select into returncode fn_usermgr(usermgrstring,'''');
>
> RETURN NEW;
> END;
> ' LANGUAGE 'plpgsql';

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Martijn van Oosterhout 2002-03-21 22:31:03 Re: Postmaster processes running out of control?
Previous Message Dmitry Tkach 2002-03-21 21:33:31 A bug in gistPageAddItem()/gist_tuple_replacekey() ???