vacuumdb: Do not run VACUUM (ONLY_DATABASE_STATS) when --analyze-only.

Previously, vacuumdb --analyze-only issued VACUUM (ONLY_DATABASE_STATS)
at the end. Since --analyze-only is meant to update optimizer statistics only,
this extra VACUUM command is unnecessary.

This commit prevents vacuumdb --analyze-only from running that redundant
VACUUM command.

Author: Fujii Masao <masao.fujii@gmail.com>
Reviewed-by: Mircea Cadariu <cadariu.mircea@gmail.com>
Discussion: https://postgr.es/m/CAHGQGwEqHGa-k=wbRMucUVihHVXk4NQkK94GNN=ym9cQ5HBSHg@mail.gmail.com
pull/242/head
Fujii Masao 3 months ago
parent ae8ea7278c
commit 879c492480
  1. 6
      src/bin/scripts/t/100_vacuumdb.pl
  2. 3
      src/bin/scripts/vacuumdb.c

@ -351,5 +351,11 @@ $node->issues_sql_like(
],
qr/statement: ANALYZE public.parent_table/s,
'--analyze-only updates statistics for partitioned tables');
$node->issues_sql_unlike(
[
'vacuumdb', '--analyze-only', 'postgres'
],
qr/statement:\ VACUUM/sx,
'--analyze-only does not run vacuum');
done_testing();

@ -750,7 +750,8 @@ vacuum_one_database(ConnParams *cparams,
}
/* If we used SKIP_DATABASE_STATS, mop up with ONLY_DATABASE_STATS */
if (vacopts->skip_database_stats && stage == ANALYZE_NO_STAGE)
if (vacopts->skip_database_stats && stage == ANALYZE_NO_STAGE &&
!vacopts->analyze_only)
{
const char *cmd = "VACUUM (ONLY_DATABASE_STATS);";
ParallelSlot *free_slot = ParallelSlotsGetIdle(sa, NULL);

Loading…
Cancel
Save