postgres.git / summary / log / commit / refs

commit    43649b6a53e9b3964e921cc962f5c977bce688fd
Author:   Álvaro Herrera <alvherre@kurilemu.de>
Date:     Thu May 28 13:04:36 2026 +0000

    Improve REPACK (CONCURRENTLY) error when wal_level < replica
    
    The error emitted when REPACK (CONCURRENTLY) is run with too low a
    wal_level is thrown by CheckSlotRequirements(), which is a bit
    mysterious when the user doesn't know what's up.  Add an upfront check
    in check_concurrent_repack_requirements() for a more explicit, REPACK-
    centered report, which is easier to understand -- this also saves
    starting the worker just to have it die immediately.
    
    Author: Baji Shaik <baji.pgdev@gmail.com>
    Reviewed-by: Chao Li <li.evan.chao@gmail.com>
    Discussion: https://postgr.es/m/CA+fm-ROdgh0rEVuXoViBk4TVgjodrN=MTR_RYuOuKLZ9voX4YA@mail.gmail.com


src/backend/commands/repack.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/backend/commands/repack.c b/src/backend/commands/repack.c index da9d941f4a1..c5d85eced48 100644 --- a/src/backend/commands/repack.c +++ b/src/backend/commands/repack.c @@ -40,6 +40,7 @@ #include "access/toast_internals.h" #include "access/transam.h" #include "access/xact.h" +#include "access/xlog.h" #include "catalog/catalog.h" #include "catalog/dependency.h" #include "catalog/heap.h" @@ -897,6 +898,14 @@ check_concurrent_repack_requirements(Relation rel, Oid *ident_idx_p) replident; Oid ident_idx; + if (wal_level < WAL_LEVEL_REPLICA) + ereport(ERROR, + errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("cannot execute \"%s\" in this configuration", + "REPACK (CONCURRENTLY)"), + errdetail("%s requires \"wal_level\" to be set to \"replica\" or higher.", + "REPACK (CONCURRENTLY)")); + /* Data changes in system relations are not logically decoded. */ if (IsCatalogRelation(rel)) ereport(ERROR,