Uh, have you read the FAQ item about plpgsql and temporary tables?

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

Oliver Siegmar wrote:
> Hello,
> 
> I've probably found a temp table bug in PostgreSQL (tested with 7.4.7 and 
> 8.0.1 on Linux x86).
> 
> 
> Here's a demonstration of the bug:
> 
> CREATE FUNCTION testfunction()
> RETURNS void
> AS '
>     BEGIN
>         CREATE TEMP TABLE testtable (field int4) ON COMMIT DROP;
>         
>         INSERT INTO testtable (field) VALUES (1);
>         
>         -- DROP TABLE testtable;
> 
>         RETURN;
>     END;
> ' LANGUAGE 'plpgsql';
> 
> 
> database=# SELECT testfunction();
> 
>  testfunction
> --------------
> 
> (1 row)
> 
> database=# SELECT testfunction();
> ERROR:  relation with OID 29308882 does not exist
> CONTEXT:  SQL statement "INSERT INTO testtable (field) VALUES (1)"
> PL/pgSQL function "testfunction" line 4 at SQL statement
> 
> 
> No transaction has been started manually.
> 
> If I drop the temporary testtable manually within the PL/pgSQL function, 
> everything runs fine. Bug or feature? ;-)
> 
> 
> Cheers,
> Oliver
> 
> ---------------------------(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 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to