Re: vacuumdb --all --analyze-in-stages - wrong order? - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: vacuumdb --all --analyze-in-stages - wrong order?
Date
Msg-id CAFj8pRC6uMeNOik3tTgHcwt+ToAcUUCPkqAfj+=L5QRzufgkqw@mail.gmail.com
Whole thread
In response to Re: vacuumdb --all --analyze-in-stages - wrong order?  (Peter Eisentraut <peter_e@gmx.net>)
Responses Re: vacuumdb --all --analyze-in-stages - wrong order?
List pgsql-hackers



2014-09-04 5:36 GMT+02:00 Peter Eisentraut <peter_e@gmx.net>:
On Mon, 2014-05-19 at 13:51 -0400, Peter Eisentraut wrote:
> On 5/18/14, 3:52 AM, Pavel Stehule wrote:
> > I am looking on --analyze-in-stages option. If I understand well,
> > motivation for this option is a get some minimal statistic for databases
> > in minimal time. But when I tested, I found so iterations are per
> > databases, not per stages - some first database get a maximum statistics
> > and second has zero statistics. Isn't it unpractical?
>
> Yes.  Let me see if I can fix that.

At long last, here is a patch.

If somebody has an idea how to code some of that less confusingly, let
me know.

It is little bit hard to read.

                /* If stage is -1, then run all stages.  Otherwise, we got a stage
                 * from vacuum_all_databases(), so just run that one. */
                for (i = (stage == -1 ? 0 : stage); i < (stage == -1 ? 3 : stage + 1); i++)
                {
                        puts(gettext(stage_messages[i]));
                        executeCommand(conn, stage_commands[i], progname, echo);
                        run_vacuum_command(conn, sql.data, echo, dbname, table, progname);
                }

maybe better be more verbose - and it can be in alone function, because it is "analyze only"

if (stage == -1)
{
  for (i = 0; i < 3; i++)
  {
        puts(gettext(stage_messages[i]));
        executeCommand(conn, stage_commands[i], progname, echo);
        run_vacuum_command(conn, sql.data, echo, dbname, table, progname);
  }
}
else
{
    puts(gettext(stage_messages[stage]));
    executeCommand(conn, stage_commands[stage], progname, echo);
    run_vacuum_command(conn, sql.data, echo, dbname, table, progname);
}

Regards

Pavel

pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Pg_upgrade and toast tables bug discovered
Next
From: Robert Haas
Date:
Subject: Re: Join push-down support for foreign tables