From 014f42c62659dbf302b85b9265ab0d6b081b08b3 Mon Sep 17 00:00:00 2001 From: Jacob Champion Date: Mon, 8 Jul 2024 10:11:56 -0700 Subject: [PATCH v2 1/4] BackgroundPsql: handle empty query results There won't be a newline at the end of an empty query result. (Before this fix, the $banner showed up in the result, leading to confusing debugging sessions.) recovery/t/037_invalid_database was relying on the non-empty query results, so I have switched those cases to use "bare" calls to query_safe() instead. --- src/test/perl/PostgreSQL/Test/BackgroundPsql.pm | 2 +- src/test/recovery/t/037_invalid_database.pl | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm b/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm index 3c2aca1c5d..2760e4bc8d 100644 --- a/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm +++ b/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm @@ -223,7 +223,7 @@ sub query $output = $self->{stdout}; # remove banner again, our caller doesn't care - $output =~ s/\n$banner\n$//s; + $output =~ s/\n?$banner\n$//s; # clear out output for the next query $self->{stdout} = ''; diff --git a/src/test/recovery/t/037_invalid_database.pl b/src/test/recovery/t/037_invalid_database.pl index 47f524be4c..954c3684a9 100644 --- a/src/test/recovery/t/037_invalid_database.pl +++ b/src/test/recovery/t/037_invalid_database.pl @@ -93,13 +93,12 @@ my $bgpsql = $node->background_psql('postgres', on_error_stop => 0); my $pid = $bgpsql->query('SELECT pg_backend_pid()'); # create the database, prevent drop database via lock held by a 2PC transaction -ok( $bgpsql->query_safe( +$bgpsql->query_safe( qq( CREATE DATABASE regression_invalid_interrupt; BEGIN; LOCK pg_tablespace; - PREPARE TRANSACTION 'lock_tblspc';)), - "blocked DROP DATABASE completion"); + PREPARE TRANSACTION 'lock_tblspc';)); # Try to drop. This will wait due to the still held lock. $bgpsql->query_until(qr//, "DROP DATABASE regression_invalid_interrupt;\n"); @@ -126,11 +125,8 @@ is($node->psql('regression_invalid_interrupt', ''), # To properly drop the database, we need to release the lock previously preventing # doing so. -ok($bgpsql->query_safe(qq(ROLLBACK PREPARED 'lock_tblspc')), - "unblock DROP DATABASE"); - -ok($bgpsql->query(qq(DROP DATABASE regression_invalid_interrupt)), - "DROP DATABASE invalid_interrupt"); +$bgpsql->query_safe(qq(ROLLBACK PREPARED 'lock_tblspc')); +$bgpsql->query_safe(qq(DROP DATABASE regression_invalid_interrupt)); $bgpsql->quit(); -- 2.34.1