Re: pg_basebackup --xlog compatibility break

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Magnus Hagander <magnus(at)hagander(dot)net>
Cc: Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pg_basebackup --xlog compatibility break
Date: 2012-05-29 17:03:36
Message-ID: CA+TgmobC7QT17UFdnvr6e2tHy_NqtsNZs=nE1AGNNtZE_6pGzg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, May 28, 2012 at 4:38 PM, Magnus Hagander <magnus(at)hagander(dot)net> wrote:
> On Mon, May 28, 2012 at 10:11 PM, Peter Eisentraut <peter_e(at)gmx(dot)net> wrote:
>> In 9.1, the pg_basebackup option --xlog takes no argument.  In 9.2, it
>> takes a required argument.  I think such compatibility breaks should be
>> avoided, especially in client-side programs.  Now you can't write a
>> script running pg_basebackup that works with 9.1 and 9.2, if you need to
>> include the WAL.
>>
>> I think the behavior of -x/--xlog should be restored to the state of
>> 9.1, and a new option should be added to select between the fetch and
>> stream methods.  (With a suitable default, this would also increase
>> usability a bit.)
>
> Just to be clear - it's not possible to actually accept -x with an
> *optional* parameter, is it? Meaning "-x" would mean the same as "-x
> fetch" and therefor become backwards compatible?
>
> IIRC I did try that, and didn't get it to work - but if that's doable,
> that seems like the cleanest way?

Aren't you still going to have situations where it's the behavior
changes, if you go this route?

Consider this command line:

$ foo -b bar

Is bar an argument to -b, or an argument to foo? If -b required or
forbade an argument it would be clear, but if the argument is optional
then it's fuzzy. Similarly, consider:

$ foo -bar

If -b takes no argument then this means the same thing as "foo -b -a
-r", but and if -b requires an argument then ar is the argument to
foo. If -b takes an optional argument, then it's ambiguous.

I don't remember the exact behavior of getopt_long(), but I bet if we
go this route we'll find that there are cases where the behavior
changes vs. older releases; they'll just be subtler. Peter's
suggestion of a separate switch seems better to me for that reason.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2012-05-29 17:27:39 Re: Bogus nestloop rows estimate in 8.4.7
Previous Message Robert Haas 2012-05-29 16:58:30 Re: Uh, I change my mind about commit_delay + commit_siblings (sort of)