postgres.git / summary / log / commit / refs

commit    5a0ac6855a21917ada42d8bb83d3d5ac4c2eeda8
Author:   Alvaro Herrera <alvherre@alvh.no-ip.org>
Date:     Wed May 01 09:50:05 2024 +0000
First released in: 17.0, 16.3

    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


src/bin/pg_upgrade/t/002_pg_upgrade.pl | 41 ++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/bin/pg_upgrade/t/002_pg_upgrade.pl b/src/bin/pg_upgrade/t/002_pg_upgrade.pl index e5f57e550af..d1b44adb8a2 100644 --- a/src/bin/pg_upgrade/t/002_pg_upgrade.pl +++ b/src/bin/pg_upgrade/t/002_pg_upgrade.pl @@ -318,7 +318,8 @@ if (defined($ENV{oldinstall})) } # Create an invalid database, will be deleted below -$oldnode->safe_psql('postgres', qq( +$oldnode->safe_psql( + 'postgres', qq( CREATE DATABASE regression_invalid; UPDATE pg_database SET datconnlimit = -2 WHERE datname = 'regression_invalid'; )); @@ -352,19 +353,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; [parent: 9d36b883bfaa]