0001-Prevent-pg_enable-disable_data_checksums-on-standby.patch

application/octet-stream

Filename: 0001-Prevent-pg_enable-disable_data_checksums-on-standby.patch
Type: application/octet-stream
Part: 0
Message: Re: Changing the state of data checksums in a running cluster

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch 0001
Subject: Prevent pg_enable/disable_data_checksums() on standby
File+
src/backend/postmaster/datachecksum_state.c 4 0
From 128afeb5d8893b933372fda1bb865e18c9285c96 Mon Sep 17 00:00:00 2001
From: Satya Narlapuram <satyanarlapuram@gmail.com>
Date: Wed, 8 Apr 2026 07:19:28 +0000
Subject: [PATCH] Prevent pg_enable/disable_data_checksums() on standby

These functions missed a RecoveryInProgress() check, allowing them to
be called on a hot standby. Adding checks to prevent them from running
on a standby.

---
 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 1243949e..0d21e7fe 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.43.0