Why do I get “relation with OID ##### does not exist” errors when accessing temporary tables in PL/PgSQL functions?
In PostgreSQL versions < 8.3, PL/PgSQL caches function scripts, and an unfortunate side effect is that if a PL/PgSQL function accesses a temporary table, and that table is later dropped and recreated, and the function called again, the function will fail because the cached function contents still point to the old temporary table. The solution is to use EXECUTE for temporary table access in PL/PgSQL. This will cause the query to be reparsed every time. This problem does not occur in PostgreSQL 8.3 and later.
Related Questions
- Why do I get "relation with OID ##### > does not exist" errors when accessing temporary tables in PL/PgSQL > functions?
- One possible re-phrasing would be: "Why do temporary tables in PL/PgSQL functions give me "missing oid" errors?
- Why do I get "relation with OID ##### does not exist" errors when accessing temporary tables in PL/PgSQL functions?