I have a function that creates a temp table and drops it on commit. If I run the function twice in the same psql interactive session, I get an error. If I run it twice in two different psql sessions (using the -c flag), I get no error. Is this expected behavior? If so, why?
You are now connected to database "test". test=# CREATE OR REPLACE FUNCTION test_function() RETURNS void AS $t$ test$# BEGIN test$# create temp table my_temp_table(id bigint) on commit drop; test$# insert into my_temp_table values(0); test$# END; test$# $t$ LANGUAGE plpgsql; CREATE FUNCTION test=# select test_function(); test_function --------------- (1 row) test=# select test_function(); ERROR: relation with OID 70828339 does not exist CONTEXT: SQL statement "INSERT INTO my_temp_table values(0)" PL/pgSQL function "test_function" line 3 at SQL statement test=# \q [EMAIL PROTECTED] ~]$ psql -U postgres -d test -c "select test_function()" Password for user postgres: test_function --------------- (1 row) [EMAIL PROTECTED] ~]$ psql -U postgres -d test -c "select test_function()" Password for user postgres: test_function --------------- (1 row) Shahaf Abileah | Lead Software Developer - Data Team [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> | tel: 206.859.2869 | cell: 206.331.2057 | www.redfin.com <http://www.redfin.com>