diff options
author | Bruce Momjian | 2007-10-17 17:34:51 +0000 |
---|---|---|
committer | Bruce Momjian | 2007-10-17 17:34:51 +0000 |
commit | 6bec963aa5b9bf27e6bcd574f354f14278a41e75 (patch) | |
tree | e26bbccac1969e4eb88918c288257322cf3ba6f2 | |
parent | 26cbf791ecb27613fe7b31f57d9258d252bef394 (diff) |
Re-add FAQ item:
<H3 id="item4.19">4.19) Why do I get "relation with OID #####
does not exist" errors when accessing temporary tables in PL/PgSQL
functions?</H3>
-rw-r--r-- | doc/FAQ | 25 | ||||
-rw-r--r-- | doc/src/FAQ/FAQ.html | 28 |
2 files changed, 43 insertions, 10 deletions
@@ -1,7 +1,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL - Last updated: Fri Oct 12 23:36:59 EDT 2007 + Last updated: Wed Oct 17 13:34:42 EDT 2007 Current maintainer: Bruce Momjian ([email protected]) @@ -78,8 +78,10 @@ 4.16) How do I perform an outer join? 4.17) How do I perform queries using multiple databases? 4.18) How do I return multiple rows or columns from a function? - 4.19) What replication solutions are available? - 4.20) Why are my table and column names not recognized in my query? + 4.19) Why do I get "relation with OID ##### does not exist" errors + when accessing temporary tables in PL/PgSQL functions? + 4.20) What replication solutions are available? + 4.21) Why are my table and column names not recognized in my query? Why is capitalization not preserved? _________________________________________________________________ @@ -790,7 +792,20 @@ It is easy using set-returning functions, http://www.postgresql.org/docs/techdocs.17. - 4.19) What replication solutions are available? + 4.19) 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. + + 4.20) What replication solutions are available? Though "replication" is a single term, there are several technologies for doing replication, with advantages and disadvantages for each. @@ -809,7 +824,7 @@ There are also commercial and hardware-based replication solutions available supporting a variety of replication models. - 4.20) Why are my table and column names not recognized in my query? Why is + 4.21) Why are my table and column names not recognized in my query? Why is capitalization not preserved? The most common cause of unrecognized names is the use of diff --git a/doc/src/FAQ/FAQ.html b/doc/src/FAQ/FAQ.html index 38baf49798b..78efa16078f 100644 --- a/doc/src/FAQ/FAQ.html +++ b/doc/src/FAQ/FAQ.html @@ -10,7 +10,7 @@ alink="#0000ff"> <H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1> - <P>Last updated: Fri Oct 12 23:36:59 EDT 2007</P> + <P>Last updated: Wed Oct 17 13:34:42 EDT 2007</P> <P>Current maintainer: Bruce Momjian (<A href= "mailto:[email protected]">[email protected]</A>) @@ -114,8 +114,11 @@ databases?<BR> <A href="#item4.18">4.18</A>) How do I return multiple rows or columns from a function?<BR> - <A href="#item4.20">4.19</A>) What replication solutions are available?<BR> - <A href="#item4.21">4.20</A>) Why are my table and column names not + <A href="#item4.19">4.19</A>) Why do I get "relation with OID ##### + does not exist" errors when accessing temporary tables in PL/PgSQL + functions?<BR> + <A href="#item4.20">4.20</A>) What replication solutions are available?<BR> + <A href="#item4.21">4.21</A>) Why are my table and column names not recognized in my query? Why is capitalization not preserved?<BR> @@ -1041,7 +1044,21 @@ length</TD></TR> <a href="http://www.postgresql.org/docs/techdocs.17"> http://www.postgresql.org/docs/techdocs.17</a>.</P> - <H3 id="item4.19">4.19) What replication solutions are available? + <H3 id="item4.19">4.19) Why do I get "relation with OID ##### + does not exist" errors when accessing temporary tables in PL/PgSQL + functions?</H3> + + <P>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 <SMALL>EXECUTE</SMALL> for temporary table access in + PL/PgSQL. This will cause the query to be reparsed every time.</P> + + <P>This problem does not occur in PostgreSQL 8.3 and later.</P> + + <H3 id="item4.20">4.20) What replication solutions are available? </H3> <P>Though "replication" is a single term, there are several technologies @@ -1063,7 +1080,7 @@ length</TD></TR> <P>There are also commercial and hardware-based replication solutions available supporting a variety of replication models.</P> - <H3 id="item4.20">4.20) Why are my table and column names not + <H3 id="item4.21">4.21) Why are my table and column names not recognized in my query? Why is capitalization not preserved?</H3> <P>The most common cause of unrecognized names is the use of @@ -1080,5 +1097,6 @@ length</TD></TR> <LI>Use only lowercase characters in identifiers</LI> <LI>Double-quote identifiers when referencing them in queries</LI> </UL> + </BODY> </HTML> |