From ca2627f2c9529eb57fc89d6e31b66da648976a4c Mon Sep 17 00:00:00 2001 From: Daniel Gustafsson Date: Wed, 29 Apr 2026 13:52:26 +0200 Subject: [PATCH v3 1/8] 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 Reviewed-by: Ayush Tiwari Reviewed-by: Tomas Vondra Reviewed-by: Daniel Gustafsson 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), -- 2.39.3 (Apple Git-146)