Skip invalid database pg_upgrade test on obsolete servers

When testing pg_upgrade against an old server, ignore failures on the
check to upgrade invalid databases.  This is necessary because old
servers don't know to raise the appropriate error of the database being
invalid.

This change causes no reduction in coverage, because such old versions
don't know to mark databases invalid when a drop is interrupted; but
testing against such old servers is useful in some circumstances.

Backpatch to 16, where it cherry-picks with minimal conflicts.

On 16, perltidy 20230309 chooses to change an unrelated line.  I let it
do that because that's the version we document as preferred for that
branch, even though it would make other changes to many other files in
the tree.

Discussion: https://postgr.es/m/202404181539.lh42llaesnv3@alvherre.pgsql
This commit is contained in:
Alvaro Herrera 2024-05-01 11:50:05 +02:00
parent 2ea4b29277
commit 56455ebd35
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE
1 changed files with 25 additions and 13 deletions

View File

@ -404,19 +404,31 @@ ok(-d $newnode->data_dir . "/pg_upgrade_output.d",
rmtree($newnode->data_dir . "/pg_upgrade_output.d");
# Check that pg_upgrade aborts when encountering an invalid database
command_checks_all(
[
'pg_upgrade', '--no-sync', '-d', $oldnode->data_dir,
'-D', $newnode->data_dir, '-b', $oldbindir,
'-B', $newbindir, '-s', $newnode->host,
'-p', $oldnode->port, '-P', $newnode->port,
$mode, '--check',
],
1,
[qr/invalid/], # pg_upgrade prints errors on stdout :(
[qr/^$/],
'invalid database causes failure');
rmtree($newnode->data_dir . "/pg_upgrade_output.d");
# (However, versions that were out of support by commit c66a7d75e652 don't
# know how to do this, so skip this test there.)
SKIP:
{
skip "database invalidation not implemented", 1
if $oldnode->pg_version < 11;
command_checks_all(
[
'pg_upgrade', '--no-sync',
'-d', $oldnode->data_dir,
'-D', $newnode->data_dir,
'-b', $oldbindir,
'-B', $newbindir,
'-s', $newnode->host,
'-p', $oldnode->port,
'-P', $newnode->port,
$mode, '--check',
],
1,
[qr/invalid/], # pg_upgrade prints errors on stdout :(
[qr/^$/],
'invalid database causes failure');
rmtree($newnode->data_dir . "/pg_upgrade_output.d");
}
# And drop it, so we can continue
$oldnode->start;