The workaround is now in the FAQ, use pl/pgsql EXECUTE on any query
dealing with the temp table.

---------------------------------------------------------------------------

[EMAIL PROTECTED] wrote:
> Matt Sergeant ([EMAIL PROTECTED]) reports a bug with a severity of 1
> The lower the number the more severe it is.
> 
> Short Description
> Temp tables don't work in functions
> 
> Long Description
> When you use a temporary table in a function, the first time through it compiles the 
>temporary table into an id for the table. Unfortunately it then tries to use the same 
>id value on subsequent invocations, causing it to try and reference a non-existing 
>relation on the second time through.
> 
> I hear this is a known bug, but I needed to get an idea if someone is working on 
>this, or if it's already fixed in CVS, or if this is considered low importance or 
>what.
> 
> If it is fixed in CVS, please mail me and I'll try it out.
> 
> Sample Code
> mydb=> create or replace function foo() returns integer as '
> mydb'> begin
> mydb'>   create temporary table fooo (bar integer not null);
> mydb'>   insert into fooo values ( 23 );
> mydb'>   drop table fooo;
> mydb'>   return 24;
> mydb'> end;
> mydb'> ' language 'plpgsql';
> CREATE
> mydb=> select foo();
>  foo
> -----
>   24
> (1 row)
> 
> mydb=> select foo();
> NOTICE:  Error occurred while executing PL/pgSQL function foo
> NOTICE:  line 3 at SQL statement
> ERROR:  Relation 1156252 does not exist
> mydb=>
> 
> 
> No file was uploaded with this report
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
> 
> http://archives.postgresql.org
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to