BUG #7635: psql -1 and \connect
The following bug has been logged on the website:
Bug reference: 7635
Logged by: Marko Tiikkaja
Email address: pgmail@joh.to
PostgreSQL version: 9.1.6
Operating system: OSX something
Description:
Hi,
With a simple script like this:
\connect postgres
CREATE TABLE foo();
ERROR_HERE;
You get output like this:
You are now connected to database "postgres" as user "postgres".
CREATE TABLE
psql:singletxn.sql:3: ERROR: syntax error at or near "ERROR_HERE"
LINE 1: ERROR_HERE;
^
psql:singletxn.sql:0: WARNING: there is no transaction in progress
Which isn't really what I expected :-(
I know it's not clear what to do with --single-transaction if a script is
\connecting to multiple databases in a single file, but IMHO it should at
least work correctly for the single database case.
pgmail@joh.to writes:
I know it's not clear what to do with --single-transaction if a script is
\connecting to multiple databases in a single file, but IMHO it should at
least work correctly for the single database case.
Define "correctly" --- I would expect \connect to establish a new
connection even if the same target database is named. We can't change
that behavior without breaking existing scripts, IMO --- for example, \c
is a long-established way to reset GUC settings, prepared statements,
etc.
Perhaps we should have \connect fail outright in -1 mode. I can see
no way for it to do anything and still maintain the expectation of a
single transaction.
regards, tom lane
On Thu, 01 Nov 2012 22:29:50 +0100, Tom Lane <tgl@sss.pgh.pa.us> wrote:
pgmail@joh.to writes:
I know it's not clear what to do with --single-transaction if a script
is
\connecting to multiple databases in a single file, but IMHO it should
at
least work correctly for the single database case.Define "correctly" --- I would expect \connect to establish a new
connection even if the same target database is named. We can't change
that behavior without breaking existing scripts, IMO --- for example, \c
is a long-established way to reset GUC settings, prepared statements,
etc.
Hmm.. I only considered the case where the \connect is at the beginning
of the file. I see your point.
Perhaps we should have \connect fail outright in -1 mode. I can see
no way for it to do anything and still maintain the expectation of a
single transaction.
Would supporting a \connect at the very beginning of the file seem
possible? Maybe even only if it's to the same database?
Regards,
Marko Tiikkaja