mirror of
https://github.com/postgres/postgres.git
synced 2025-11-24 00:23:06 +03:00
TAP test for logical decoding on standby
Author: "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com> Author: Amit Khandekar <amitdkhan.pg@gmail.com> Author: Craig Ringer <craig@2ndquadrant.com> (in an older version) Author: Andres Freund <andres@anarazel.de> Reviewed-by: "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com> Reviewed-by: Andres Freund <andres@anarazel.de> Reviewed-by: Robert Haas <robertmhaas@gmail.com> Reviewed-by: Amit Kapila <amit.kapila16@gmail.com> Reviewed-by: Fabrízio de Royes Mello <fabriziomello@gmail.com>
This commit is contained in:
@@ -3029,6 +3029,43 @@ $SIG{TERM} = $SIG{INT} = sub {
|
||||
|
||||
=pod
|
||||
|
||||
=item $node->create_logical_slot_on_standby(self, primary, slot_name, dbname)
|
||||
|
||||
Create logical replication slot on given standby
|
||||
|
||||
=cut
|
||||
|
||||
sub create_logical_slot_on_standby
|
||||
{
|
||||
my ($self, $primary, $slot_name, $dbname) = @_;
|
||||
my ($stdout, $stderr);
|
||||
|
||||
my $handle;
|
||||
|
||||
$handle = IPC::Run::start(['pg_recvlogical', '-d', $self->connstr($dbname), '-P', 'test_decoding', '-S', $slot_name, '--create-slot'], '>', \$stdout, '2>', \$stderr);
|
||||
|
||||
# Once the slot's restart_lsn is determined, the standby looks for
|
||||
# xl_running_xacts WAL record from the restart_lsn onwards. First wait
|
||||
# until the slot restart_lsn is determined.
|
||||
|
||||
$self->poll_query_until(
|
||||
'postgres', qq[
|
||||
SELECT restart_lsn IS NOT NULL
|
||||
FROM pg_catalog.pg_replication_slots WHERE slot_name = '$slot_name'
|
||||
]) or die "timed out waiting for logical slot to calculate its restart_lsn";
|
||||
|
||||
# Then arrange for the xl_running_xacts record for which pg_recvlogical is
|
||||
# waiting.
|
||||
$primary->safe_psql('postgres', 'SELECT pg_log_standby_snapshot()');
|
||||
|
||||
$handle->finish();
|
||||
|
||||
is($self->slot($slot_name)->{'slot_type'}, 'logical', $slot_name . ' on standby created')
|
||||
or die "could not create slot" . $slot_name;
|
||||
}
|
||||
|
||||
=pod
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
|
||||
Reference in New Issue
Block a user