Re: Improve checks for GUC recovery_target_xid

David Steele <david@pgbackrest.org>

From: David Steele <david@pgbackrest.org>
To: Michael Paquier <michael@paquier.xyz>
Cc: Fujii Masao <masao.fujii@gmail.com>, Hüseyin Demir <huseyin.d3r@gmail.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2026-03-05T04:21:16Z
Lists: pgsql-hackers
On 3/5/26 11:03, Michael Paquier wrote:
> 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?

The prior standby is not running because of the invalid config. I 
figured it was better to start clean but when I update the 
recovery_target_timeline tests I was planning to use the same standby 
for all the new tests.

Regards,
-David



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.