Обсуждение: 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