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

Reply via email to