Thread: 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