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

Reply via email to