This is a discussion on Re: inner join problem with temporary tables within the Pgsql General forums, part of the PostgreSQL category; --> > This message appears: > > ERROR: relation "t_arti" does not exist > SQL state: 42P01 > Context: SQL ...
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| > This message appears: > > ERROR: relation "t_arti" does not exist > SQL state: 42P01 > Context: SQL function "test1" > > > Why it does not work??? > thanks for your help Because plpgsql functions are compiled on first execution and all queries are then prepared. All tables are referenced directly in prepared statements, not by name. Any prepared statement that refers to dropped tables (even dropped temp tables) is thus unfit for consumption. This allows queries in plpgsql functions to be extremely fast, but it isn't smart enough (yet) to recompile functions when a table the function depends on is dropped. Just disconnect and reconnect, all prepared plans will be lost, and it will work. Or issue your queries directly instead of using a function. ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq |
| ||||
| PFC wrote: > > >This message appears: > > > >ERROR: relation "t_arti" does not exist > >SQL state: 42P01 > >Context: SQL function "test1" > > > > > >Why it does not work??? > >thanks for your help > > Because plpgsql functions are compiled on first execution and all > queries are then prepared. All tables are referenced directly in prepared > statements, not by name. Any prepared statement that refers to dropped > tables (even dropped temp tables) is thus unfit for consumption. This is correct but it's not the problem at hand -- notice how the error message is not talking about an unknown OID. I think the problem here is that he is using SELECT INTO, which is different in PL/pgSQL than what is in plain SQL. I bet using CREATE TABLE AS instead of SELECT INTO would work. -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc. ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@postgresql.org so that your message can get through to the mailing list cleanly |