diff options
author | Bruce Momjian <bruce@momjian.us> | 2017-05-17 19:01:23 -0400 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2017-05-17 19:01:23 -0400 |
commit | ce554810329b9b8e862eade08b598148931eb456 (patch) | |
tree | ddc702112bdabfcdf78d1c4648614b92fd11dadd /src/test/perl/PostgresNode.pm | |
parent | a6fd7b7a5f7bf3a8aa3f3d076cf09d922c1c6dd2 (diff) | |
download | postgresql-ce554810329b9b8e862eade08b598148931eb456.tar.gz postgresql-ce554810329b9b8e862eade08b598148931eb456.zip |
Post-PG 10 beta1 pgperltidy run
Diffstat (limited to 'src/test/perl/PostgresNode.pm')
-rw-r--r-- | src/test/perl/PostgresNode.pm | 116 |
1 files changed, 81 insertions, 35 deletions
diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index 61d2c5fdf5d..42e66edec93 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -729,7 +729,7 @@ sub restart my $name = $self->name; print "### Restarting node \"$name\"\n"; TestLib::system_or_bail('pg_ctl', '-D', $pgdata, '-l', $logfile, - 'restart'); + 'restart'); $self->_update_pid(1); } @@ -750,7 +750,7 @@ sub promote my $name = $self->name; print "### Promoting node \"$name\"\n"; TestLib::system_or_bail('pg_ctl', '-D', $pgdata, '-l', $logfile, - 'promote'); + 'promote'); } # Internal routine to enable streaming replication on a standby node. @@ -846,6 +846,7 @@ sub _update_pid $self->{_pid} = undef; print "# No postmaster PID for node \"$name\"\n"; + # Complain if we expected to find a pidfile. BAIL_OUT("postmaster.pid unexpectedly not present") if $is_running; } @@ -1140,10 +1141,12 @@ sub psql my $exc_save = $@; if ($exc_save) { + # IPC::Run::run threw an exception. re-throw unless it's a # timeout, which we'll handle by testing is_expired die $exc_save - if (blessed($exc_save) || $exc_save !~ /^\Q$timeout_exception\E/); + if (blessed($exc_save) + || $exc_save !~ /^\Q$timeout_exception\E/); $ret = undef; @@ -1191,7 +1194,8 @@ sub psql if $ret == 1; die "connection error: '$$stderr'\nwhile running '@psql_params'" if $ret == 2; - die "error running SQL: '$$stderr'\nwhile running '@psql_params' with sql '$sql'" + die +"error running SQL: '$$stderr'\nwhile running '@psql_params' with sql '$sql'" if $ret == 3; die "psql returns $ret: '$$stderr'\nwhile running '@psql_params'"; } @@ -1362,15 +1366,17 @@ mode must be specified. sub lsn { my ($self, $mode) = @_; - my %modes = ('insert' => 'pg_current_wal_insert_lsn()', - 'flush' => 'pg_current_wal_flush_lsn()', - 'write' => 'pg_current_wal_lsn()', - 'receive' => 'pg_last_wal_receive_lsn()', - 'replay' => 'pg_last_wal_replay_lsn()'); + my %modes = ( + 'insert' => 'pg_current_wal_insert_lsn()', + 'flush' => 'pg_current_wal_flush_lsn()', + 'write' => 'pg_current_wal_lsn()', + 'receive' => 'pg_last_wal_receive_lsn()', + 'replay' => 'pg_last_wal_replay_lsn()'); $mode = '<undef>' if !defined($mode); - die "unknown mode for 'lsn': '$mode', valid modes are " . join(', ', keys %modes) - if !defined($modes{$mode}); + die "unknown mode for 'lsn': '$mode', valid modes are " + . join(', ', keys %modes) + if !defined($modes{$mode}); my $result = $self->safe_psql('postgres', "SELECT $modes{$mode}"); chomp($result); @@ -1409,18 +1415,29 @@ sub wait_for_catchup { my ($self, $standby_name, $mode, $target_lsn) = @_; $mode = defined($mode) ? $mode : 'replay'; - my %valid_modes = ( 'sent' => 1, 'write' => 1, 'flush' => 1, 'replay' => 1 ); - die "unknown mode $mode for 'wait_for_catchup', valid modes are " . join(', ', keys(%valid_modes)) unless exists($valid_modes{$mode}); + my %valid_modes = + ('sent' => 1, 'write' => 1, 'flush' => 1, 'replay' => 1); + die "unknown mode $mode for 'wait_for_catchup', valid modes are " + . join(', ', keys(%valid_modes)) + unless exists($valid_modes{$mode}); + # Allow passing of a PostgresNode instance as shorthand - if ( blessed( $standby_name ) && $standby_name->isa("PostgresNode") ) + if (blessed($standby_name) && $standby_name->isa("PostgresNode")) { $standby_name = $standby_name->name; } die 'target_lsn must be specified' unless defined($target_lsn); - print "Waiting for replication conn " . $standby_name . "'s " . $mode . "_lsn to pass " . $target_lsn . " on " . $self->name . "\n"; - my $query = qq[SELECT '$target_lsn' <= ${mode}_lsn FROM pg_catalog.pg_stat_replication WHERE application_name = '$standby_name';]; + print "Waiting for replication conn " + . $standby_name . "'s " + . $mode + . "_lsn to pass " + . $target_lsn . " on " + . $self->name . "\n"; + my $query = +qq[SELECT '$target_lsn' <= ${mode}_lsn FROM pg_catalog.pg_stat_replication WHERE application_name = '$standby_name';]; $self->poll_query_until('postgres', $query) - or die "timed out waiting for catchup, current location is " . ($self->safe_psql('postgres', $query) || '(unknown)'); + or die "timed out waiting for catchup, current location is " + . ($self->safe_psql('postgres', $query) || '(unknown)'); print "done\n"; } @@ -1453,10 +1470,17 @@ sub wait_for_slot_catchup die "valid modes are restart, confirmed_flush"; } die 'target lsn must be specified' unless defined($target_lsn); - print "Waiting for replication slot " . $slot_name . "'s " . $mode . "_lsn to pass " . $target_lsn . " on " . $self->name . "\n"; - my $query = qq[SELECT '$target_lsn' <= ${mode}_lsn FROM pg_catalog.pg_replication_slots WHERE slot_name = '$slot_name';]; + print "Waiting for replication slot " + . $slot_name . "'s " + . $mode + . "_lsn to pass " + . $target_lsn . " on " + . $self->name . "\n"; + my $query = +qq[SELECT '$target_lsn' <= ${mode}_lsn FROM pg_catalog.pg_replication_slots WHERE slot_name = '$slot_name';]; $self->poll_query_until('postgres', $query) - or die "timed out waiting for catchup, current location is " . ($self->safe_psql('postgres', $query) || '(unknown)'); + or die "timed out waiting for catchup, current location is " + . ($self->safe_psql('postgres', $query) || '(unknown)'); print "done\n"; } @@ -1485,18 +1509,23 @@ null columns. sub query_hash { my ($self, $dbname, $query, @columns) = @_; - die 'calls in array context for multi-row results not supported yet' if (wantarray); + die 'calls in array context for multi-row results not supported yet' + if (wantarray); + # Replace __COLUMNS__ if found - substr($query, index($query, '__COLUMNS__'), length('__COLUMNS__')) = join(', ', @columns) - if index($query, '__COLUMNS__') >= 0; + substr($query, index($query, '__COLUMNS__'), length('__COLUMNS__')) = + join(', ', @columns) + if index($query, '__COLUMNS__') >= 0; my $result = $self->safe_psql($dbname, $query); + # hash slice, see http://stackoverflow.com/a/16755894/398670 . # # Fills the hash with empty strings produced by x-operator element # duplication if result is an empty row # my %val; - @val{@columns} = $result ne '' ? split(qr/\|/, $result) : ('',) x scalar(@columns); + @val{@columns} = + $result ne '' ? split(qr/\|/, $result) : ('',) x scalar(@columns); return \%val; } @@ -1518,8 +1547,14 @@ either. sub slot { my ($self, $slot_name) = @_; - my @columns = ('plugin', 'slot_type', 'datoid', 'database', 'active', 'active_pid', 'xmin', 'catalog_xmin', 'restart_lsn'); - return $self->query_hash('postgres', "SELECT __COLUMNS__ FROM pg_catalog.pg_replication_slots WHERE slot_name = '$slot_name'", @columns); + my @columns = ( + 'plugin', 'slot_type', 'datoid', 'database', + 'active', 'active_pid', 'xmin', 'catalog_xmin', + 'restart_lsn'); + return $self->query_hash( + 'postgres', +"SELECT __COLUMNS__ FROM pg_catalog.pg_replication_slots WHERE slot_name = '$slot_name'", + @columns); } =pod @@ -1543,29 +1578,36 @@ to check for timeout. retval is undef on timeout. sub pg_recvlogical_upto { - my ($self, $dbname, $slot_name, $endpos, $timeout_secs, %plugin_options) = @_; + my ($self, $dbname, $slot_name, $endpos, $timeout_secs, %plugin_options) = + @_; my ($stdout, $stderr); my $timeout_exception = 'pg_recvlogical timed out'; die 'slot name must be specified' unless defined($slot_name); - die 'endpos must be specified' unless defined($endpos); + die 'endpos must be specified' unless defined($endpos); - my @cmd = ('pg_recvlogical', '-S', $slot_name, '--dbname', $self->connstr($dbname)); + my @cmd = ( + 'pg_recvlogical', '-S', $slot_name, '--dbname', + $self->connstr($dbname)); push @cmd, '--endpos', $endpos; push @cmd, '-f', '-', '--no-loop', '--start'; while (my ($k, $v) = each %plugin_options) { - die "= is not permitted to appear in replication option name" if ($k =~ qr/=/); + die "= is not permitted to appear in replication option name" + if ($k =~ qr/=/); push @cmd, "-o", "$k=$v"; } my $timeout; - $timeout = IPC::Run::timeout($timeout_secs, exception => $timeout_exception ) if $timeout_secs; + $timeout = + IPC::Run::timeout($timeout_secs, exception => $timeout_exception) + if $timeout_secs; my $ret = 0; - do { + do + { local $@; eval { IPC::Run::run(\@cmd, ">", \$stdout, "2>", \$stderr, $timeout); @@ -1574,6 +1616,7 @@ sub pg_recvlogical_upto my $exc_save = $@; if ($exc_save) { + # IPC::Run::run threw an exception. re-throw unless it's a # timeout, which we'll handle by testing is_expired die $exc_save @@ -1584,8 +1627,9 @@ sub pg_recvlogical_upto die "Got timeout exception '$exc_save' but timer not expired?!" unless $timeout->is_expired; - die "$exc_save waiting for endpos $endpos with stdout '$stdout', stderr '$stderr'" - unless wantarray; + die +"$exc_save waiting for endpos $endpos with stdout '$stdout', stderr '$stderr'" + unless wantarray; } }; @@ -1598,7 +1642,9 @@ sub pg_recvlogical_upto } else { - die "pg_recvlogical exited with code '$ret', stdout '$stdout' and stderr '$stderr'" if $ret; + die +"pg_recvlogical exited with code '$ret', stdout '$stdout' and stderr '$stderr'" + if $ret; return $stdout; } } |