BUG #7635: psql -1 and \connect

Started by Marko Tiikkajaover 13 years ago3 messagesbugs
Jump to latest
#1Marko Tiikkaja
marko@joh.to

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.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Marko Tiikkaja (#1)
Re: BUG #7635: psql -1 and \connect

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

#3Marko Tiikkaja
marko@joh.to
In reply to: Tom Lane (#2)
Re: BUG #7635: psql -1 and \connect

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