1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-24 00:23:06 +03:00

Extend Cluster.pm's background_psql() to be able to start asynchronously

This commit extends the constructor routine of BackgroundPsql.pm with a
new "wait" parameter.  If set to 0, the routine returns without waiting
for psql to start, ready to consume input.

background_psql() in Cluster.pm gains the same "wait" parameter.  The
default behavior is still to wait for psql to start.  It becomes now
possible to not wait, giving to TAP scripts the possibility to perform
actions between a BackgroundPsql startup and its wait_connect() call.

Author: Jacob Champion
Discussion: https://postgr.es/m/CAOYmi+=60deN20WDyCoHCiecgivJxr=98s7s7-C8SkXwrCfHXg@mail.gmail.com
This commit is contained in:
Michael Paquier
2024-11-06 15:31:14 +09:00
parent 87f81a5563
commit ba08edb065
2 changed files with 30 additions and 8 deletions

View File

@@ -2286,6 +2286,12 @@ connection.
If given, it must be an array reference containing additional parameters to B<psql>.
=item wait => 1
By default, this method will not return until connection has completed (or
failed). Set B<wait> to 0 to return immediately instead. (Clients can call the
session's C<wait_connect> method manually when needed.)
=back
=cut
@@ -2316,13 +2322,15 @@ sub background_psql
'-XAtq', '-d', $psql_connstr, '-f', '-');
$params{on_error_stop} = 1 unless defined $params{on_error_stop};
$params{wait} = 1 unless defined $params{wait};
$timeout = $params{timeout} if defined $params{timeout};
push @psql_params, '-v', 'ON_ERROR_STOP=1' if $params{on_error_stop};
push @psql_params, @{ $params{extra_params} }
if defined $params{extra_params};
return PostgreSQL::Test::BackgroundPsql->new(0, \@psql_params, $timeout);
return PostgreSQL::Test::BackgroundPsql->new(0, \@psql_params, $timeout,
$params{wait});
}
=pod