diff --git a/doc/FAQ b/doc/FAQ index 2c4193a833..c888981949 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,7 +1,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL - Last updated: Fri Apr 26 23:03:46 EDT 2002 + Last updated: Mon Jun 10 15:47:38 EDT 2002 Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) @@ -92,6 +92,8 @@ 4.23) How do I perform an outer join? 4.24) How do I perform queries using multiple databases? 4.25) How do I return multiple rows or columns from a function? + 4.26) Why can't I reliably create/drop temporary tables in PL/PgSQL + functions? Extending PostgreSQL @@ -1031,6 +1033,17 @@ SELECT * http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html, section 23.7.3.3. + 4.26) Why can't I reliably create/drop temporary tables in PL/PgSQL + functions? + + PL/PgSQL caches function contents, 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. + Extending PostgreSQL 5.1) I wrote a user-defined function. When I run it in psql, why does it diff --git a/doc/src/FAQ/FAQ.html b/doc/src/FAQ/FAQ.html index 988aa3f968..8ca6cd9c45 100644 --- a/doc/src/FAQ/FAQ.html +++ b/doc/src/FAQ/FAQ.html @@ -14,7 +14,7 @@ alink="#0000ff">

Frequently Asked Questions (FAQ) for PostgreSQL

-

Last updated: Fri Apr 26 23:03:46 EDT 2002

+

Last updated: Mon Jun 10 15:47:38 EDT 2002

Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
@@ -138,7 +138,9 @@ 4.24) How do I perform queries using multiple databases?
4.25) How do I return multiple rows or columns - from a function?
+ from a function?
+ 4.26) Why can't I reliably create/drop + temporary tables in PL/PgSQL functions?

Extending PostgreSQL

@@ -742,7 +744,7 @@

You can also compile with profiling to see what functions are taking execution time. The backend profile files will be deposited in the pgsql/data/base/dbname directory. The client profile - file will be put in the client's current directory. Linux requires + file will be put in the client's current directory. Linux requires a compile with -DLINUX_PROFILE for proper profiling.

3.8) Why do I get "Sorry, too many @@ -900,9 +902,9 @@ databases, and users are defined?

psql has a variety of backslash commands to show such - information. Use \? to see them. There are also system tables - beginning with pg_ that describe these too. Also, psql - -l will list all databases.

+ information. Use \? to see them. There are also system tables + beginning with pg_ that describe these too. Also, psql + -l will list all databases.

Also try the file pgsql/src/tutorial/syscat.source. It illustrates many of the SELECTs needed to get @@ -1307,16 +1309,25 @@ BYTEA bytea variable-length byte array (null-byte safe) different databases and merge the information that way.


-

4.25) How do I return multiple rows or columns - from a function?

+

4.25) How do I return multiple rows or + columns from a function?

-

You can return result sets from PL/pgSQL functions using - refcursors. See - http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html, - section 23.7.3.3.

+

You can return result sets from PL/pgSQL functions using + refcursors. See + http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html, + section 23.7.3.3.

+ +

4.26) Why can't I reliably create/drop + temporary tables in PL/PgSQL functions?

+ PL/PgSQL caches function contents, 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. -

Extending PostgreSQL

5.1) I wrote a user-defined function. When I