Re: [BUGS] Documentation bug: Chapter 35.4, paragraph 4

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: pgsql-docs <pgsql-docs(at)postgresql(dot)org>
Subject: Re: [BUGS] Documentation bug: Chapter 35.4, paragraph 4
Date: 2010-12-20 19:31:52
Message-ID: AANLkTinwPGg4288mEiGRPM9Bxvq0PKSaW-HsO4s-QKXo@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-docs

On Sun, Nov 28, 2010 at 8:05 AM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> On Tue, Nov 23, 2010 at 1:08 PM, Jonathan Pool <pool(at)utilika(dot)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

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Erik Rijkers 2010-12-20 20:33:33 Re: BUG #5795: 9.0.2 PDF needs editing
Previous Message Tom Lane 2010-12-20 18:48:18 Re: BUG #5797: Strange bug with hstore

Browse pgsql-docs by date

  From Date Subject
Next Message Leslie S Satenstein 2010-12-21 23:19:45 Grammar and formatting errors for 9.02 pdf version
Previous Message Alvaro Herrera 2010-12-20 13:36:15 Re: Is there a bug list for the version 9.0.2 PDF file