postgres.git / summary / log / commit / refs

commit    b120358c612dce62b493da7682b4df90a10783c9
Author:   Daniel Gustafsson <dgustafsson@postgresql.org>
Date:     Thu Apr 30 11:41:41 2026 +0000

    Prevent pg_enable/disable_data_checksums() on standby
    
    These functions missed a RecoveryInProgress() check, allowing them to
    be called on a hot standby.  Enabling, or disabling, checksums on the
    standby only would cause the cluster to get out of sync and replaying
    checksum transitions to fail.
    
    Author: Satyanarayana Narlapuram <satyanarlapuram@gmail.com>
    Reviewed-by: Ayush Tiwari <ayushtiwari.slg01@gmail.com>
    Reviewed-by: Tomas Vondra <tomas@vondra.me>
    Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
    Discussion: https://postgr.es/m/CAHg+QDfRk4-S7DMmdbXJnQ-xF=sUpMAKuh8b83ObLqYVKx5QLA@mail.gmail.com


src/backend/postmaster/datachecksum_state.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backend/postmaster/datachecksum_state.c b/src/backend/postmaster/datachecksum_state.c index 5556a9ca893..ea102086144 100644 --- a/src/backend/postmaster/datachecksum_state.c +++ b/src/backend/postmaster/datachecksum_state.c @@ -487,6 +487,8 @@ AbsorbDataChecksumsBarrier(ProcSignalBarrierType barrier) Datum disable_data_checksums(PG_FUNCTION_ARGS) { + PreventCommandDuringRecovery("pg_disable_data_checksums()"); + if (!superuser()) ereport(ERROR, errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), @@ -507,6 +509,8 @@ enable_data_checksums(PG_FUNCTION_ARGS) int cost_delay = PG_GETARG_INT32(0); int cost_limit = PG_GETARG_INT32(1); + PreventCommandDuringRecovery("pg_enable_data_checksums()"); + if (!superuser()) ereport(ERROR, errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), [parent: 2bf6c9ff71c9]