]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
vacuumdb: Do not run VACUUM (ONLY_DATABASE_STATS) when --analyze-only.
authorFujii Masao <fujii@postgresql.org>
Wed, 24 Sep 2025 16:38:54 +0000 (01:38 +0900)
committerFujii Masao <fujii@postgresql.org>
Wed, 24 Sep 2025 16:38:54 +0000 (01:38 +0900)
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

src/bin/scripts/t/100_vacuumdb.pl
src/bin/scripts/vacuumdb.c

index 945c30df156008cf9d4e8c4c8561fecf9feeedad..a16fad593f7ca73d5bcb9aef4ff1431c752d2cb7 100644 (file)
@@ -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();
index fd236087e90aefd0cf41ea979709a6cc4ea4a586..6e30f223efe1c304cba9794660c91e19e4385774 100644 (file)
@@ -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);