On Sun, Nov 28, 2010 at 8:05 AM, Robert Haas <robertmh...@gmail.com> 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 feel like it would be valuable to document that the commands mentioned above can't be executed from within a transaction block. Looking over TFM, the only obvious place to document this seems to be in the reference place for BEGIN, perhaps in the Notes section. I don't think that's a great location - it seems like the sort of thing that maybe ought to go someplace in section III - but there's no related content there now. Thoughts? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-docs