Thread: VACUUM cannot be run in a transaction block

VACUUM cannot be run in a transaction block

From
Heikki Linnakangas
Date:
Hi,

If you try to run VACUUM with SQLPrepare/SQLExecute, and auto-commit is
disabled, and UseServerSidePrepare=1 (which is now the default in git
master), you get an error:

ERROR:  VACUUM cannot run inside a transaction block

There is some code in place to avoid this in UseServerSidePrepare=0
mode. The driver looks at  the statement type (by looking at the first
word of the statement) and skips the implicit BEGIN if it's a VACUUM or
one of the other commands that cannot be run in a transaction block.
However, the extended query protocol code path didn't do that.

I just pushed a fix for that, but I thought this warranted to be
mentioned on the mailing list.

PS. Can we get 9.3 version packaged very soon? The server 9.3.0 server
version will be wrapped today, and will be announced on Monday Sep 9th.
We really should have a 9.3 labeled version of the driver available by then.

- Heikki