← Back to team overview

maria-developers team mailing list archive

Re: 80749146b7d: MDEV-26238: Remove inconsistent behaviour of --default-* options in my_print_defaults

 

Hi, Rucha!

On Nov 05, Rucha Deodhar wrote:
> > On Nov 04, Rucha Deodhar wrote:
> > > revision-id: 80749146b7d (mariadb-10.6.1-77-g80749146b7d)
> > > parent(s): 76149650764
> > > author: Rucha Deodhar
> > > committer: Rucha Deodhar
> > > timestamp: 2021-09-12 02:11:19 +0530
> > > message:
> > >
> > > MDEV-26238: Remove inconsistent behaviour of --default-* options
> > > in my_print_defaults
> > >
> > > diff --git a/extra/my_print_defaults.c b/extra/my_print_defaults.c
> > > index b7f52382721..607509a309e 100644
> > > --- a/extra/my_print_defaults.c
> > > +++ b/extra/my_print_defaults.c
> > > @@ -141,50 +124,39 @@ static int get_options(int *argc,char ***argv)
> > ...
> > > +  /*
> > > +     We already process --defaults* options at the beginning in
> > > +     get_defaults_options(). So skip --defaults* options and
> > > +     pass remaining options to handle_options().
> > > +  */
> > > +  if (is_prefix(org_argv[1], "--no-defaults"))
> > > +    args_used--;
> >
> > I'm sorry, I don't understand. Why do you need that?
> 
> I made it to keep the output consistent with previous version.
> 
> If --no-defaults is present in the command line, then it is counted in
> args_used when get_defaults_options() is called. Later we skip
> "args_used" number of arguments so that only non-default options
> mentioned after --default-* options are passed to get_options().
> 
> The above code decreases this count when --no-defaults is present so
> that we don't skip it unlike --defaults-* options and pass it to
> get_options(). It is required to pass --no-defaults to get_options()
> because if it is not passed then it produces output which looks like
> --help ( if no other options are there in addition to --no-defaults).
> If it is passed to get_options(), then --no-defaults produces no
> output like it does in 10.6.

But it's correct, isn't it? If you run my_print_defaults with no groups,
it'll print the help text. Try, for example,

   my_print_defaults --defaults-file=var/my.cnf

(presuming you're in mysql-test dir). You'll get the help text, because
you didn't specify any groups. Or

   my_print_defaults --defaults-extra-file=var/my.cnf

But

   my_print_defaults --no-defaults

doesn't do it. Doesn't behave like other *defaults* options. We can
easily preserve the inconsisent "if --no-defaults, no group is required"
behavior with, like

  if (my_no_defaults)
    cleanup_and_exit(0);

(and add my_no_defaults to my_default.h). But I don't think it's
necessary.

Regards,
Sergei
VP of MariaDB Server Engineering
and security@xxxxxxxxxxx


References