Re: v12 and pg_restore -f- - Mailing list pgsql-hackers

From Stephen Frost
Subject Re: v12 and pg_restore -f-
Date
Msg-id 20191016172148.GH6962@tamriel.snowman.net
Whole thread Raw
In response to RE: v12 and pg_restore -f-  ("imai.yoshikazu@fujitsu.com" <imai.yoshikazu@fujitsu.com>)
Responses Re: v12 and pg_restore -f-
Re: v12 and pg_restore -f-
List pgsql-hackers
Greetings,

* imai.yoshikazu@fujitsu.com (imai.yoshikazu@fujitsu.com) wrote:
> On Sun, Oct 6, 2019 at 7:09 PM, Justin Pryzby wrote:
> > I saw this and updated our scripts with pg_restore -f-
> > https://www.postgresql.org/docs/12/release-12.html
> > |In pg_restore, require specification of -f - to send the dump contents to standard output (Euler Taveira)
> > |Previously, this happened by default if no destination was specified, but that was deemed to be unfriendly.
> >
> > What I didn't realize at first is that -f- has no special meaning in v11 - it
> > just writes a file called ./-  And it's considered untennable to change
> > behavior of v11.
>
> Ahh... I totally missed thinking about the behavior of "-f -" in v11 when I reviewed this patch.

Clearly you weren't the only one.

> On Wed, Oct 9, 2019 at 0:45 PM, Stephen Frost wrote:
> > * Euler Taveira (euler@timbira.com.br) wrote:
> > > Em ter, 8 de out de 2019 às 15:08, Stephen Frost <sfrost@snowman.net> escreveu:
> > > > * Tom Lane (tgl@sss.pgh.pa.us) wrote:
> > > > > Andrew Gierth <andrew@tao11.riddles.org.uk> writes:
> > > > > > "Tom" == Tom Lane <tgl@sss.pgh.pa.us> writes:
> > > > > >  Tom> Perhaps we could change the back branches so that they
> > > > > > interpret  Tom> "-f -" as "write to stdout", but without
> > > > > > enforcing that you use  Tom> that syntax.
> > > > >
> > > > > > We should definitely do that.
> > > >
> > > > I agree that this would be a reasonable course of action.  Really,
> > > > it should have always meant that...
> > > >
> > > Indeed, it was a broken behavior and the idea was to fix it. However,
> > > changing pg_restore in back-branches is worse than do nothing because
> > > it could break existent scripts.
> >
> > I can certainly respect that argument, in general, but in this specific case, I've got a really hard time
believeing
> > that people wrote scripts which use '-f -' with the expectation that a './-' file was to be created.
>
> +1.
>
> If we only think of the problem that we can't use "-f -" with the meaning "dump to the stdout" in v11 and before
ones,it seems a bug and we should fix it. 
> Of course, if we fix it, some people would go into the trouble, but such people are who wrote scripts which use '-f
-'with the expectation that a './-' file. 
> I don't think there are such people a lot.

This topic, unfortunately, seems a bit stuck right now.  Maybe there's a
way we can pry it loose and get to a resolution.

On the one hand, we have Yoshikazu Imai, Andrew, and I pushing to change
back-branches, Eurler argueing that we shouldn't do anything, and Tom
argueing to make all versions accept '-f -'.

First, I'd like to clarify what I believe Tom's suggestion is, and then
talk through that, as his vote sways this topic pretty heavily.

Tom, I take it your suggestion is to have '-f -' be accepted to mean
'goes to stdout' in all branches?  That goes against the argument that
we don't want to break existing scripts, as it's possible that there are
existing scripts that depend on '-f -' actually going to a './-' file.

Is your argument here that, with the above, existing scripts could be
updated to use '-f -' explicitly and work with multiple versions, and
that scripts which aren't changed would work as-is?

If so, then I don't agree with it- if we really don't want to break
existing scripts when moving from pre-v12 to v12, then this patch never
should have been accepted at all as that's the only way to avoid
breaking anything, but then, we shouldn't be making a lot of other
changes between major versions either because there's often a good
chance that we'll break things.  Instead, the patch was accepted, as a
good and forward-moving change, with the understanding that it would
require some users to update their scripts when they move to v12, so,
for my part at least, that question was answered when we committed the
change and released with it.  Now, if we wish to adjust back-branches to
make it easier for users to have scripts that work with both versions,
that seems like a worthwhile change and is very unlikely to to cause
breakage- and it's certainly more likely to have users actually change
their scripts to use '-f -' explicitly when they start working with v12,
instead of depending on stdout being the default, which is ultimately
the goal and why the change was made in the first place.

If the concern is that we can expect folks to install v12 and then
refuse or be unable to upgrade back-branches, then I just don't have any
sympathy for that either- minor updates are extremely important, and new
major versions are certainly no cake walk to get installed, so that
argument just doesn't hold water with me- if they can upgrade to v12,
then they can update to the latest minor versions, if they actually need
to work with both concurrently (which strikes me as already at least
relatively uncommon...).

If you meant for all branches to accept '-f -' and have it go to a './-'
file then that's just a revert of this entire change, which I can't
agree with either- really, folks who are depending on that are depending
on buggy behavior in the first place.

Thanks,

Stephen

Attachment

pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: configure fails for perl check on CentOS8
Next
From: Justin Pryzby
Date:
Subject: Re: v12 and pg_restore -f-