Обсуждение: BUG #7635: psql -1 and \connect

Поиск
Список
Период
Сортировка

BUG #7635: psql -1 and \connect

От
pgmail@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.

Re: BUG #7635: psql -1 and \connect

От
Tom Lane
Дата:
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

Re: BUG #7635: psql -1 and \connect

От
"Marko Tiikkaja"
Дата:
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