Ok. Please find attached a patch which introduces psql error when autocommit is turned on inside a transaction. It also adds relevant documentation in psql-ref.sgml. Following is the output.
bash-4.2$ psql -d postgres psql (10devel) Type "help" for help.
postgres=# \set AUTOCOMMIT OFF postgres=# create table test(i int); CREATE TABLE postgres=# \set AUTOCOMMIT ON \set: Cannot set AUTOCOMMIT to ON inside a transaction, either COMMIT or ROLLBACK and retry postgres=#
On Tue, Aug 16, 2016 at 5:25 PM, Rahila Syed <rahilasyed90@gmail.com> wrote: >>I think I like the option of having psql issue an error. On the >>server side, the transaction would still be open, but the user would >>receive a psql error message and the autocommit setting would not be >>changed. So the user could type COMMIT or ROLLBACK manually and then >>retry changing the value of the setting. > > Throwing psql error comes out to be most accepted outcome on this thread. I > agree it is safer than guessing user intention. > > Although according to the default behaviour of psql, error will abort the > current transaction and roll back all the previous commands.
A server error would do that, but a psql errror won't.