Re: Improve checks for GUC recovery_target_xid

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: David Steele <david@pgbackrest.org>
Cc: Fujii Masao <masao.fujii@gmail.com>, Hüseyin Demir <huseyin.d3r@gmail.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2026-03-05T04:03:36Z
Lists: pgsql-hackers
On Thu, Mar 05, 2026 at 03:40:44AM +0000, David Steele wrote:
> I wrote the tests for recovery_target_timeline but I was not too satisfied
> with them because starting Postgres is fairly expensive.

+# Invalid recovery_target_xid tests
+$node_standby = PostgreSQL::Test::Cluster->new('standby_10');
+$node_standby->init_from_backup($node_primary, 'my_backup',
+    has_restoring => 1);
+$node_standby->start;
+
+my ($result, $stdout, $stderr) = $node_primary->psql('postgres',
+    "ALTER SYSTEM SET recovery_target_xid TO 'bogus'");
+like(
+    $stderr,
+    qr/is not a valid number/,
+    "invalid recovery_target_xid (bogus value)");

Smart move to rely on ALTER SYSTEM to check how the GUC callback is
reacting on incorrect input values.  Why do you need to create and
start a new standby if it is not used, then?
--
Michael

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Improve tests for recovery_target_timeline GUC.

  2. Improve validation of recovery_target_xid GUC values.