Robert Haas wrote: > On Tue, Nov 23, 2010 at 1:08 PM, Jonathan Pool <p...@utilika.org> wrote: > > Chapter 35.4, paragraph 4, of the PostgreSQL 9.0.1 Documentation says: > > > > Any collection of commands in the SQL language can be packaged together and > > defined as a function. Besides SELECT queries, the commands can include > > data modification queries (INSERT, UPDATE, and DELETE), as well as other > > SQL commands. (The only exception is that you cannot put BEGIN, COMMIT, > > ROLLBACK, or SAVEPOINT commands into a SQL function.) > > > > This appears to be incorrect, in that attempting to include a VACUUM > > command in a query-language function elicits the following error message: > > > > ERROR: ?VACUUM cannot be executed from a function or multi-command string > > > > Thus, presumably "VACUUM" should be added to the list of exceptions. > > I fear it's worse than that. Taking a look at the places where we > call PreventTransactionChain(), they appear to include database-wide > CLUSTER, DISCARD ALL, VACUUM (as you noted), COMMIT PREPARED, ROLLBACK > PREPARED, CREATE TABLESPACE, DROP TABLESPACE, ALTER TYPE <enum> ADD > VALUE <label> (but the PreventTransactionChain call says ADD rather > than ADD VALUE), CREATE INDEX CONCURRENTLY, CREATE DATABASE, DROP > DATABASE, and REINDEX DATABASE. > > I'm not sure if there's some generic way we could refer to all that > rather than listing them all individually.
I just made the wording more generic; we rarely are asked about this, so generic seemed appropriate. Applied doc patch attached. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +
diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml new file mode 100644 index c65f852..1a35014 *** a/doc/src/sgml/xfunc.sgml --- b/doc/src/sgml/xfunc.sgml *************** *** 116,124 **** Besides <command>SELECT</command> queries, the commands can include data modification queries (<command>INSERT</command>, <command>UPDATE</command>, and <command>DELETE</command>), as well as ! other SQL commands. (The only exception is that you cannot put ! <command>BEGIN</>, <command>COMMIT</>, <command>ROLLBACK</>, or ! <command>SAVEPOINT</> commands into a <acronym>SQL</acronym> function.) However, the final command must be a <command>SELECT</command> or have a <literal>RETURNING</> clause that returns whatever is --- 116,124 ---- Besides <command>SELECT</command> queries, the commands can include data modification queries (<command>INSERT</command>, <command>UPDATE</command>, and <command>DELETE</command>), as well as ! other SQL commands. (You cannot use transaction control commands, e.g. ! <command>COMMIT</>, <command>SAVEPOINT</>, and some utility ! commands, e.g. <literal>VACUUM</>, in <acronym>SQL</acronym> functions.) However, the final command must be a <command>SELECT</command> or have a <literal>RETURNING</> clause that returns whatever is
-- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs