Files
pad/.github
xarmian 745f576ebc ci: run the native PostgreSQL backup/restore round trip (TASK-2962) (#1761)
* ci: run the native PostgreSQL backup/restore round trip (TASK-2962)

TestPostgresBackupRestoreConnection had never run in CI. It skips unless
PAD_TEST_POSTGRES_TOOLS_URL is set, and CI could not have set it: the
Go (PostgreSQL) job's server is postgres:17, ubuntu-latest ships the 16
clients, and pg_dump refuses to dump a newer server. The restore rewrite
(#1703) shipped in rc.3 with its round trip unexercised.

The job now:
- installs postgresql-client-17 from PGDG, after checking the signing key
  against its published fingerprint, and puts its bin first on PATH
- checks that pg_dump and psql are both version 17
- runs the round trip alone and verbosely with PAD_TEST_POSTGRES_TOOLS_URL
  set, and fails unless the output shows it PASSED. In the quiet suite a
  skip and a pass look the same, which is how it went unrun.

Measured locally against a postgres:17 server, with 17 clients (via docker
wrappers): the test passes, and it fails for each of four restore and
backup defects:
- no --single-transaction: a failed restore left its change committed
- psqlrc honoured: a restore reported success after a SQL error
- no ON_ERROR_STOP: the same
- BUG-2952's PGDATABASE=<uri>: pg_dump failed

Claude-Session: https://claude.ai/code/session_01H63zaWhkb5pAafx2WGjrVC

* ci: the PGDG key file must hold exactly one primary key, PGDG's (TASK-2962)

Codex round 1: signed-by trusts every key in the file, and the check read
only the first fingerprint, so a response carrying PGDG's key followed by
another would have passed. The file now has to contain exactly one primary
key, and its fingerprint must be PGDG's. Checked locally: the real key is
accepted, and the real key with a second key appended is refused.

Claude-Session: https://claude.ai/code/session_01H63zaWhkb5pAafx2WGjrVC
2026-10-03 13:14:16 -04:00
..
2026-03-26 01:52:36 +00:00