From: | feikesteenbergen(at)gmail(dot)com |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #10822: "ALTER SYSTEM cannot run inside a transaction block" when having autocommit disabled. |
Date: | 2014-07-01 09:52:59 |
Message-ID: | 20140701095259.15695.83780@wrigleys.postgresql.org |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 10822
Logged by: Feike Steenbergen
Email address: feikesteenbergen(at)gmail(dot)com
PostgreSQL version: 9.4beta1
Operating system: Debian 3.2.57-3+deb7u2 i686 GNU/Linux
Description:
When having AUTOCOMMIT disabled, issuing an ALTER SYSTEM reports an error.
Enabling AUTOCOMMIT makes the issue disappear.
$ psql feike feikesuper -h localhost -p 5433 --no-psqlrc
psql (9.4beta1)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384,
bits: 256)
Type "help" for help.
feike=# \set AUTOCOMMIT off
feike=# rollback;
WARNING: there is no transaction in progress
ROLLBACK
feike=# ALTER SYSTEM SET log_min_duration_statement = '5s';
ERROR: ALTER SYSTEM cannot run inside a transaction block
feike=# rollback;
ROLLBACK
feike=# \set AUTOCOMMIT on
feike=# ALTER SYSTEM SET log_min_duration_statement = '5s';
ALTER SYSTEM
The documentation states:
"This command is not allowed inside transaction block or function."
in my understanding, i am not *yet* inside a transaction block when issuing
the ALTER SYSTEM, so I assume it would work when having AUTOCOMMIT enabled,
but then after a comleted transaction.
To me the current behaviour is odd, as VACUUM, which also mentions "VACUUM
cannot be executed inside a transaction block." is able to be executed when
having AUTOCOMMIT disabled:
$ psql feike feikesuper -h localhost -p 5433 --no-psqlrc
psql (9.4beta1)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384,
bits: 256)
Type "help" for help.
feike=# \set AUTOCOMMIT off
feike=# SELECT 1;
?column?
----------
1
(1 row)
feike=# VACUUM;
ERROR: VACUUM cannot run inside a transaction block
feike=# rollback;
ROLLBACK
feike=# \set AUTOCOMMIT on
feike=# VACUUM;
VACUUM
From | Date | Subject | |
---|---|---|---|
Next Message | dmigowski | 2014-07-01 10:33:07 | BUG #10823: Better REINDEX syntax. |
Previous Message | Bruce Momjian | 2014-07-01 01:49:17 | Re: pg_upgrade < 9.3 -> >=9.3 misses a step around multixacts |