On Wed, May 30, 2012 at 2:03 AM, Robert Haas <robertmh...@gmail.com> wrote:
> On Mon, May 28, 2012 at 4:38 PM, Magnus Hagander <mag...@hagander.net> wrote:
>> On Mon, May 28, 2012 at 10:11 PM, Peter Eisentraut <pete...@gmx.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.

You're right. I thought that optional parameter is possible because
I recalled GNU extended getopt(3) supported that. After reading its man,
I found that an argument must be in the same word as the option name
to specify an argument, e.g., -xfetch (not -x fetch). This optional
parameter looks confusing to a user. So I agree to add another parameter.

Regards,

-- 
Fujii Masao

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to