On Wed, Apr 29, 2009 at 10:24:51PM +0200, Michael Monnerie wrote: > On Mittwoch 29 April 2009 Alvaro Herrera wrote: > > Michael Monnerie wrote: > > > ERROR: CLUSTER cannot be executed from a function or multi-command > > > string > > > > > > I got this error from a script which tried: > > > psql -U postgres db1 -c 'cluster ; analyze' > > > > > > In the docs there's no word that it's not possible, and I wonder > > > why this is not allowed. Anybody knows? It's stupid, as I want to > > > cluster lots of tables, followed by analyze, and now I have to > > > psql -U postgres db1 -c 'cluster' > > > psql -U postgres db1 -c 'analyze' > > > > Multi-table cluster (i.e. the one where you don't specify one table > > to cluster) cannot be used in a transaction block, function, etc, and > > the FM does mention it: > > > > CLUSTER without any parameter reclusters all the > > previously-clustered tables in the current database that the calling > > user owns, or all such tables if called by a superuser. This form of > > CLUSTER cannot be executed inside a transaction block. > > Ah, found this now, in the docs 8.1-8.3. But strange thing is.. > > [I sent this mail this morning at 07:08 local time but it didn't make it > through, without me getting any note:] > > I looked further now: Above error was from Postgres 8.3.5 on openSUSE > 11.1, but it works on Postgres 8.1.11 from openSUSE 10.2. Why did > it become worse? According to docs this shouldn't be possible even in > 8.1. Is there any change I can make a single db call with cluster & > analyze, like: > cluster ; begin ; analyze ; commit > > mfg zmi Issue a cluster command for each table individually in the command stream. Cheers, Ken -- Sent via pgsql-admin mailing list (pgsql-admin@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin