Re: feature request: auto savepoint for interactive psql when in transaction. - Mailing list pgsql-hackers

From Will Leinweber
Subject Re: feature request: auto savepoint for interactive psql when in transaction.
Date
Msg-id CAL8LqZTvyqEttwe8-5dCogduJAo5mnj-qmwHGydcB_BG-=6XFQ@mail.gmail.com
Whole thread Raw
In response to Re: feature request: auto savepoint for interactive psql when in transaction.  (Ross Reedstrom <reedstrm@rice.edu>)
List pgsql-hackers
My coworker Dan suggested that some people copy and paste scripts. However I feel that that is an orthogonal problem and if there is a very high rate of input psql should detect that and turn interactive off. And I still strongly feel that on_error_rollback=interactive should be the default.

Until then, I've included this as a PSA at the start of any postgres talks I've given, because it's simply not widely known.

On Mon, Nov 14, 2011 at 2:19 PM, Ross Reedstrom <reedstrm@rice.edu> wrote:
On Wed, Sep 28, 2011 at 11:47:51AM -0700, David Fetter wrote:
> On Wed, Sep 28, 2011 at 02:25:44PM -0400, Gurjeet Singh wrote:
> > On Wed, Sep 28, 2011 at 1:51 PM, Kevin Grittner <Kevin.Grittner@wicourts.gov
> > > wrote:
> >
> > > Alvaro Herrera <alvherre@commandprompt.com> wrote:
> > >
> > > > See ON_ERROR_ROLLBACK
> > > > http://www.postgresql.org/docs/9.0/static/app-psql.html
> > >
> > > I had missed that.  Dang, this database product is rich with nice
> > > features!  :-)
> > >
> >
> > +1
> >
> > I would like it to be on/interactive by default, though.
>
> You can have it by putting it in your .psqlrc.
>
> If we were just starting out, I'd be all for changing the defaults,
> but we're not.  We'd break things unnecessarily if we changed this
> default.
>

This discussion died out with a plea for better documentation, and perhaps some
form of discoverability. I've scanned ahead and see no further discussion.
However, I'm wondering, what use-cases would be broken by setting the default
to 'interactive'? Running a non-interactive script by piping it to psql?
Reading the code, I see that case is covered: the definition of 'interactive'
includes both stdin and stdout are a tty, and the source of commands is stdin.
Seems this functionality appeared in version 8.1.  Was there discussion re:
making it the default at that time?  I'm all for backward compatibility, but I'm
having trouble seeing what would break.

I see that Peter blogged about this from a different angle over a year ago
(http://petereisentraut.blogspot.com/2010/03/running-sql-scripts-with-psql.html)
which drew a comment from Tom Lane that perhaps we need a better/different tool
for running scripts. That would argue the defaults for psql proper should favor
safe interactive use (autocommit off, anyone?) Peter mentioned the traditional
method unix shells use to handle this: different config files are read for
interactive vs. non-interactive startup. Seems we have that, just for the one
setting ON_ERROR_ROLLBACK.

Ross
--
Ross Reedstrom, Ph.D.                                 reedstrm@rice.edu
Systems Engineer & Admin, Research Scientist        phone: 713-348-6166
Connexions                  http://cnx.org            fax: 713-348-3665
Rice University MS-375, Houston, TX 77005
GPG Key fingerprint = F023 82C8 9B0E 2CC6 0D8E  F888 D3AE 810E 88F0 BEDE

pgsql-hackers by date:

Previous
From: Jaime Casanova
Date:
Subject: Re: patch : Allow toast tables to be moved to a different tablespace
Next
From: Pavel Stehule
Date:
Subject: ToDo: pg_backup - using a conditional DROP