From 3a7cc727c7c502353dbb730a0db793abec4de44b Mon Sep 17 00:00:00 2001 From: Andrew Dunstan Date: Sun, 27 May 2018 09:08:42 -0400 Subject: [PATCH] Don't fall off the end of perl functions This complies with the perlcritic policy Subroutines::RequireFinalReturn, which is a severity 4 policy. Since we only currently check at severity level 5, the policy is raised to that level until we move to level 4 or lower, so that any new infringements will be caught. A small cosmetic piece of tidying of the pgperlcritic script is included. Mike Blackwell Discussion: https://postgr.es/m/CAESHdJpfFm_9wQnQ3koY3c91FoRQsO-fh02za9R3OEMndOn84A@mail.gmail.com --- contrib/bloom/t/001_wal.pl | 1 + contrib/intarray/bench/create_test.pl | 1 + src/backend/catalog/Catalog.pm | 1 + src/backend/catalog/genbki.pl | 4 +++ src/backend/parser/check_keywords.pl | 1 + src/backend/utils/mb/Unicode/convutils.pm | 5 ++++ src/backend/utils/sort/gen_qsort_tuple.pl | 4 +++ .../t/010_pg_archivecleanup.pl | 2 ++ src/bin/pg_rewind/RewindTest.pm | 13 ++++++++ src/bin/pg_rewind/t/001_basic.pl | 1 + src/bin/pg_rewind/t/002_databases.pl | 1 + src/bin/pg_rewind/t/003_extrafiles.pl | 1 + src/bin/pg_rewind/t/004_pg_xlog_symlink.pl | 1 + src/bin/pgbench/t/001_pgbench_with_server.pl | 3 ++ src/bin/pgbench/t/002_pgbench_no_server.pl | 2 ++ src/include/catalog/reformat_dat_file.pl | 1 + src/interfaces/ecpg/preproc/parse.pl | 6 ++++ src/pl/plperl/plc_perlboot.pl | 1 + src/pl/plperl/text2macro.pl | 1 + src/test/authentication/t/001_password.pl | 2 ++ src/test/authentication/t/002_saslprep.pl | 2 ++ src/test/kerberos/t/001_auth.pl | 1 + src/test/ldap/t/001_auth.pl | 1 + src/test/perl/PostgresNode.pm | 30 ++++++++++++++++++- src/test/perl/SimpleTee.pm | 2 +- src/test/perl/TestLib.pm | 14 +++++++++ src/test/recovery/t/001_stream_rep.pl | 3 ++ src/test/recovery/t/003_recovery_targets.pl | 2 ++ src/test/recovery/t/007_sync_rep.pl | 1 + src/test/recovery/t/009_twophase.pl | 1 + src/test/ssl/ServerSetup.pm | 9 ++++++ src/tools/copyright.pl | 1 + src/tools/git_changelog | 3 ++ src/tools/msvc/Install.pm | 13 ++++++++ src/tools/msvc/MSBuildProject.pm | 11 +++++++ src/tools/msvc/Mkvcbuild.pm | 5 ++++ src/tools/msvc/Project.pm | 15 ++++++++++ src/tools/msvc/Solution.pm | 5 ++++ src/tools/msvc/VCBuildProject.pm | 5 ++++ src/tools/msvc/builddoc.pl | 2 +- src/tools/msvc/gendef.pl | 3 ++ src/tools/msvc/vcregress.pl | 14 +++++++++ src/tools/pginclude/pgcheckdefines | 2 ++ src/tools/pgindent/pgindent | 7 +++++ src/tools/pgperlcritic/perlcriticrc | 5 ++++ src/tools/pgperlcritic/pgperlcritic | 2 +- src/tools/version_stamp.pl | 1 + 47 files changed, 208 insertions(+), 4 deletions(-) diff --git a/contrib/bloom/t/001_wal.pl b/contrib/bloom/t/001_wal.pl index 55f2167d7f..0f2628b557 100644 --- a/contrib/bloom/t/001_wal.pl +++ b/contrib/bloom/t/001_wal.pl @@ -36,6 +36,7 @@ SELECT * FROM tst WHERE i = 7 AND t = 'e'; my $standby_result = $node_standby->safe_psql("postgres", $queries); is($master_result, $standby_result, "$test_name: query result matches"); + return; } # Initialize master node diff --git a/contrib/intarray/bench/create_test.pl b/contrib/intarray/bench/create_test.pl index f3262df05b..d2c678bb53 100755 --- a/contrib/intarray/bench/create_test.pl +++ b/contrib/intarray/bench/create_test.pl @@ -83,4 +83,5 @@ sub copytable while (<$fff>) { print; } close $fff; print "\\.\n"; + return; } diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm index 95bf619c91..ae5b499b6a 100644 --- a/src/backend/catalog/Catalog.pm +++ b/src/backend/catalog/Catalog.pm @@ -367,6 +367,7 @@ sub RenameTempFile { rename($temp_name, $final_name) || die "rename: $temp_name: $!"; } + return; } # Find a symbol defined in a particular header file and extract the value. diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl index ebdc919414..9be51d28b0 100644 --- a/src/backend/catalog/genbki.pl +++ b/src/backend/catalog/genbki.pl @@ -649,6 +649,7 @@ sub gen_pg_attribute } } } + return; } # Given $pgattr_schema (the pg_attribute schema for a catalog sufficient for @@ -706,6 +707,7 @@ sub morph_row_for_pgattr } Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute'); + return; } # Write an entry to postgres.bki. @@ -744,6 +746,7 @@ sub print_bki_insert push @bki_values, $bki_value; } printf $bki "insert %s( %s )\n", $oid, join(' ', @bki_values); + return; } # Given a row reference, modify it so that it becomes a valid entry for @@ -786,6 +789,7 @@ sub morph_row_for_schemapg # Only the fixed-size portions of the descriptors are ever used. delete $row->{$attname} if $column->{is_varlen}; } + return; } # Perform OID lookups on an array of OID names. diff --git a/src/backend/parser/check_keywords.pl b/src/backend/parser/check_keywords.pl index ad41e134ac..718441c215 100644 --- a/src/backend/parser/check_keywords.pl +++ b/src/backend/parser/check_keywords.pl @@ -18,6 +18,7 @@ sub error { print STDERR @_; $errors = 1; + return; } $, = ' '; # set output field separator diff --git a/src/backend/utils/mb/Unicode/convutils.pm b/src/backend/utils/mb/Unicode/convutils.pm index 69ec099f29..103bd0264e 100644 --- a/src/backend/utils/mb/Unicode/convutils.pm +++ b/src/backend/utils/mb/Unicode/convutils.pm @@ -99,6 +99,7 @@ sub print_conversion_tables $charset); print_conversion_tables_direction($this_script, $csname, TO_UNICODE, $charset); + return; } ############################################################################# @@ -160,6 +161,7 @@ sub print_conversion_tables_direction } close($out); + return; } sub print_from_utf8_combined_map @@ -194,6 +196,7 @@ sub print_from_utf8_combined_map } print $out "\t/* $last_comment */" if ($verbose && $last_comment ne ""); print $out "\n};\n"; + return; } sub print_to_utf8_combined_map @@ -230,6 +233,7 @@ sub print_to_utf8_combined_map } print $out "\t/* $last_comment */" if ($verbose && $last_comment ne ""); print $out "\n};\n"; + return; } ####################################################################### @@ -625,6 +629,7 @@ sub print_radix_table if ($off != $tblsize) { die "table size didn't match!"; } print $out "};\n"; + return; } ### diff --git a/src/backend/utils/sort/gen_qsort_tuple.pl b/src/backend/utils/sort/gen_qsort_tuple.pl index 6186d0a5ba..b6b2ffa7d0 100644 --- a/src/backend/utils/sort/gen_qsort_tuple.pl +++ b/src/backend/utils/sort/gen_qsort_tuple.pl @@ -130,6 +130,8 @@ swapfunc(SortTuple *a, SortTuple *b, size_t n) #define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n) EOM + + return; } sub emit_qsort_implementation @@ -263,4 +265,6 @@ loop: } } EOM + + return; } diff --git a/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl b/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl index c84674c00a..22782d3042 100644 --- a/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl +++ b/src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl @@ -21,6 +21,7 @@ sub create_files print $file 'CONTENT'; close $file; } + return; } create_files(); @@ -89,6 +90,7 @@ sub run_check "$test_name: newer WAL file was not cleaned up"); ok(-f "$tempdir/unrelated_file", "$test_name: unrelated file was not cleaned up"); + return; } run_check('', 'pg_archivecleanup'); diff --git a/src/bin/pg_rewind/RewindTest.pm b/src/bin/pg_rewind/RewindTest.pm index 52531bba7a..60b54119e7 100644 --- a/src/bin/pg_rewind/RewindTest.pm +++ b/src/bin/pg_rewind/RewindTest.pm @@ -71,6 +71,7 @@ sub master_psql system_or_bail 'psql', '-q', '--no-psqlrc', '-d', $node_master->connstr('postgres'), '-c', "$cmd"; + return; } sub standby_psql @@ -79,6 +80,7 @@ sub standby_psql system_or_bail 'psql', '-q', '--no-psqlrc', '-d', $node_standby->connstr('postgres'), '-c', "$cmd"; + return; } # Run a query against the master, and check that the output matches what's @@ -112,6 +114,7 @@ sub check_query $stdout =~ s/\r//g if $Config{osname} eq 'msys'; is($stdout, $expected_stdout, "$test_name: query result matches"); } + return; } sub setup_cluster @@ -130,6 +133,7 @@ sub setup_cluster 'postgresql.conf', qq( wal_keep_segments = 20 )); + return; } sub start_master @@ -138,6 +142,8 @@ sub start_master #### Now run the test-specific parts to initialize the master before setting # up standby + + return; } sub create_standby @@ -162,6 +168,8 @@ recovery_target_timeline='latest' # The standby may have WAL to apply before it matches the primary. That # is fine, because no test examines the standby before promotion. + + return; } sub promote_standby @@ -183,6 +191,8 @@ sub promote_standby # after promotion so quickly that when pg_rewind runs, the standby has not # performed a checkpoint after promotion yet. standby_psql("checkpoint"); + + return; } sub run_pg_rewind @@ -266,6 +276,8 @@ recovery_target_timeline='latest' $node_master->start; #### Now run the test-specific parts to check the result + + return; } # Clean up after the test. Stop both servers, if they're still running. @@ -273,6 +285,7 @@ sub clean_rewind_test { $node_master->teardown_node if defined $node_master; $node_standby->teardown_node if defined $node_standby; + return; } 1; diff --git a/src/bin/pg_rewind/t/001_basic.pl b/src/bin/pg_rewind/t/001_basic.pl index 87bb71e8ed..53dbf45be2 100644 --- a/src/bin/pg_rewind/t/001_basic.pl +++ b/src/bin/pg_rewind/t/001_basic.pl @@ -97,6 +97,7 @@ in master, before promotion } RewindTest::clean_rewind_test(); + return; } # Run the test in both modes diff --git a/src/bin/pg_rewind/t/002_databases.pl b/src/bin/pg_rewind/t/002_databases.pl index bef0e173dc..2c9e427831 100644 --- a/src/bin/pg_rewind/t/002_databases.pl +++ b/src/bin/pg_rewind/t/002_databases.pl @@ -53,6 +53,7 @@ template1 } RewindTest::clean_rewind_test(); + return; } # Run the test in both modes. diff --git a/src/bin/pg_rewind/t/003_extrafiles.pl b/src/bin/pg_rewind/t/003_extrafiles.pl index 8b469cdae8..496f38c457 100644 --- a/src/bin/pg_rewind/t/003_extrafiles.pl +++ b/src/bin/pg_rewind/t/003_extrafiles.pl @@ -81,6 +81,7 @@ sub run_test "file lists match"); RewindTest::clean_rewind_test(); + return; } # Run the test in both modes. diff --git a/src/bin/pg_rewind/t/004_pg_xlog_symlink.pl b/src/bin/pg_rewind/t/004_pg_xlog_symlink.pl index feadaa6a0f..280eceb992 100644 --- a/src/bin/pg_rewind/t/004_pg_xlog_symlink.pl +++ b/src/bin/pg_rewind/t/004_pg_xlog_symlink.pl @@ -72,6 +72,7 @@ in standby, after promotion 'table content'); RewindTest::clean_rewind_test(); + return; } # Run the test in both modes diff --git a/src/bin/pgbench/t/001_pgbench_with_server.pl b/src/bin/pgbench/t/001_pgbench_with_server.pl index 00fb04fe1e..b9308f7367 100644 --- a/src/bin/pgbench/t/001_pgbench_with_server.pl +++ b/src/bin/pgbench/t/001_pgbench_with_server.pl @@ -42,6 +42,8 @@ sub pgbench # cleanup? #unlink @filenames or die "cannot unlink files (@filenames): $!"; + + return; } # Test concurrent insertion into table with UNIQUE oid column. DDL expects @@ -817,6 +819,7 @@ sub check_pgbench_logs }; } ok(unlink(@logs), "remove log files"); + return; } my $bdir = $node->basedir; diff --git a/src/bin/pgbench/t/002_pgbench_no_server.pl b/src/bin/pgbench/t/002_pgbench_no_server.pl index a9e067ba4e..aa47710ace 100644 --- a/src/bin/pgbench/t/002_pgbench_no_server.pl +++ b/src/bin/pgbench/t/002_pgbench_no_server.pl @@ -24,6 +24,7 @@ sub pgbench print STDERR "opts=$opts, stat=$stat, out=$out, err=$err, name=$name"; command_checks_all([ 'pgbench', split(/\s+/, $opts) ], $stat, $out, $err, $name); + return; } # invoke pgbench with scripts @@ -48,6 +49,7 @@ sub pgbench_scripts } } command_checks_all(\@cmd, $stat, $out, $err, $name); + return; } # diff --git a/src/include/catalog/reformat_dat_file.pl b/src/include/catalog/reformat_dat_file.pl index 7f6dc6e4c5..687aca0b16 100755 --- a/src/include/catalog/reformat_dat_file.pl +++ b/src/include/catalog/reformat_dat_file.pl @@ -207,6 +207,7 @@ sub strip_default_values { delete $row->{pronargs} if defined $row->{proargtypes}; } + return; } # Format the individual elements of a Perl hash into a valid string diff --git a/src/interfaces/ecpg/preproc/parse.pl b/src/interfaces/ecpg/preproc/parse.pl index 983c3a3d89..b20383ab17 100644 --- a/src/interfaces/ecpg/preproc/parse.pl +++ b/src/interfaces/ecpg/preproc/parse.pl @@ -415,6 +415,7 @@ sub main } } } + return; } @@ -431,6 +432,7 @@ sub include_file add_to_buffer($buffer, $_); } close($fh); + return; } sub include_addon @@ -472,6 +474,7 @@ sub include_addon sub add_to_buffer { push(@{ $buff{ $_[0] } }, "$_[1]\n"); + return; } sub dump_buffer @@ -480,6 +483,7 @@ sub dump_buffer print '/* ', $buffer, ' */', "\n"; my $ref = $buff{$buffer}; print @$ref; + return; } sub dump_fields @@ -582,6 +586,7 @@ sub dump_fields add_to_buffer('rules', ' { $$ = NULL; }'); } } + return; } @@ -673,4 +678,5 @@ sub preload_addons push(@{ $x->{lines} }, @code); } } + return; } diff --git a/src/pl/plperl/plc_perlboot.pl b/src/pl/plperl/plc_perlboot.pl index 05334a662d..f41aa80e80 100644 --- a/src/pl/plperl/plc_perlboot.pl +++ b/src/pl/plperl/plc_perlboot.pl @@ -62,6 +62,7 @@ sub ::encode_array_constructor (my $msg = shift) =~ s/\(eval \d+\) //g; chomp $msg; &::elog(&::WARNING, $msg); + return; } $SIG{__WARN__} = \&plperl_warn; diff --git a/src/pl/plperl/text2macro.pl b/src/pl/plperl/text2macro.pl index 27c6ef7e42..52fcbe1be1 100644 --- a/src/pl/plperl/text2macro.pl +++ b/src/pl/plperl/text2macro.pl @@ -99,4 +99,5 @@ sub selftest warn "Test string: $string\n"; warn "Result : $result"; die "Failed!" if $result ne "$string\n"; + return; } diff --git a/src/test/authentication/t/001_password.pl b/src/test/authentication/t/001_password.pl index c8dc6606be..3a3b0eb7e8 100644 --- a/src/test/authentication/t/001_password.pl +++ b/src/test/authentication/t/001_password.pl @@ -31,6 +31,7 @@ sub reset_pg_hba unlink($node->data_dir . '/pg_hba.conf'); $node->append_conf('pg_hba.conf', "local all all $hba_method"); $node->reload; + return; } # Test access for a single role, useful to wrap all tests into one. @@ -47,6 +48,7 @@ sub test_role my $res = $node->psql('postgres', undef, extra_params => [ '-U', $role ]); is($res, $expected_res, "authentication $status_string for method $method, role $role"); + return; } # Initialize master node diff --git a/src/test/authentication/t/002_saslprep.pl b/src/test/authentication/t/002_saslprep.pl index e09273edd4..c4b335c45f 100644 --- a/src/test/authentication/t/002_saslprep.pl +++ b/src/test/authentication/t/002_saslprep.pl @@ -27,6 +27,7 @@ sub reset_pg_hba unlink($node->data_dir . '/pg_hba.conf'); $node->append_conf('pg_hba.conf', "local all all $hba_method"); $node->reload; + return; } # Test access for a single role, useful to wrap all tests into one. @@ -45,6 +46,7 @@ sub test_login is($res, $expected_res, "authentication $status_string for role $role with password $password" ); + return; } # Initialize master node. Force UTF-8 encoding, so that we can use non-ASCII diff --git a/src/test/kerberos/t/001_auth.pl b/src/test/kerberos/t/001_auth.pl index 5e638eb2eb..54f564779d 100644 --- a/src/test/kerberos/t/001_auth.pl +++ b/src/test/kerberos/t/001_auth.pl @@ -164,6 +164,7 @@ sub test_access '-U', $role ]); is($res, $expected_res, $test_name); + return; } unlink($node->data_dir . '/pg_hba.conf'); diff --git a/src/test/ldap/t/001_auth.pl b/src/test/ldap/t/001_auth.pl index 9ade9a2b00..67b406c981 100644 --- a/src/test/ldap/t/001_auth.pl +++ b/src/test/ldap/t/001_auth.pl @@ -144,6 +144,7 @@ sub test_access my $res = $node->psql('postgres', 'SELECT 1', extra_params => [ '-U', $role ]); is($res, $expected_res, $test_name); + return; } note "simple bind"; diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index 82a2611a1e..d12dd60e73 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -372,6 +372,7 @@ sub dump_info { my ($self) = @_; print $self->info; + return; } @@ -393,6 +394,7 @@ sub set_replication_conf "host replication all $test_localhost/32 sspi include_realm=1 map=regress\n"; } close $hba; + return; } =pod @@ -487,6 +489,7 @@ sub init $self->set_replication_conf if $params{allows_streaming}; $self->enable_archiving if $params{has_archiving}; + return; } =pod @@ -512,6 +515,8 @@ sub append_conf chmod($self->group_access() ? 0640 : 0600, $conffile) or die("unable to set permissions for $conffile"); + + return; } =pod @@ -538,6 +543,7 @@ sub backup TestLib::system_or_bail('pg_basebackup', '-D', $backup_path, '-p', $port, '--no-sync'); print "# Backup finished\n"; + return; } =item $node->backup_fs_hot(backup_name) @@ -556,6 +562,7 @@ sub backup_fs_hot { my ($self, $backup_name) = @_; $self->_backup_fs($backup_name, 1); + return; } =item $node->backup_fs_cold(backup_name) @@ -572,6 +579,7 @@ sub backup_fs_cold { my ($self, $backup_name) = @_; $self->_backup_fs($backup_name, 0); + return; } @@ -612,6 +620,7 @@ sub _backup_fs } print "# Backup finished\n"; + return; } @@ -672,6 +681,7 @@ port = $port )); $self->enable_streaming($root_node) if $params{has_streaming}; $self->enable_restoring($root_node) if $params{has_restoring}; + return; } =pod @@ -703,6 +713,7 @@ sub start } $self->_update_pid(1); + return; } =pod @@ -728,6 +739,7 @@ sub stop print "### Stopping node \"$name\" using mode $mode\n"; TestLib::system_or_bail('pg_ctl', '-D', $pgdata, '-m', $mode, 'stop'); $self->_update_pid(0); + return; } =pod @@ -746,6 +758,7 @@ sub reload my $name = $self->name; print "### Reloading node \"$name\"\n"; TestLib::system_or_bail('pg_ctl', '-D', $pgdata, 'reload'); + return; } =pod @@ -767,6 +780,7 @@ sub restart TestLib::system_or_bail('pg_ctl', '-D', $pgdata, '-l', $logfile, 'restart'); $self->_update_pid(1); + return; } =pod @@ -787,6 +801,7 @@ sub promote print "### Promoting node \"$name\"\n"; TestLib::system_or_bail('pg_ctl', '-D', $pgdata, '-l', $logfile, 'promote'); + return; } # Internal routine to enable streaming replication on a standby node. @@ -802,6 +817,7 @@ sub enable_streaming primary_conninfo='$root_connstr application_name=$name' standby_mode=on )); + return; } # Internal routine to enable archive recovery command on a standby node @@ -830,6 +846,7 @@ sub enable_restoring restore_command = '$copy_command' standby_mode = on )); + return; } # Internal routine to enable archiving @@ -859,6 +876,7 @@ sub enable_archiving archive_mode = on archive_command = '$copy_command' )); + return; } # Internal method @@ -885,6 +903,7 @@ sub _update_pid # Complain if we expected to find a pidfile. BAIL_OUT("postmaster.pid unexpectedly not present") if $is_running; + return; } =pod @@ -1014,7 +1033,7 @@ sub teardown_node my $self = shift; $self->stop('immediate'); - + return; } =pod @@ -1030,6 +1049,7 @@ sub clean_node my $self = shift; rmtree $self->{_basedir} unless defined $self->{_pid}; + return; } =pod @@ -1351,6 +1371,7 @@ sub command_ok local $ENV{PGPORT} = $self->port; TestLib::command_ok(@_); + return; } =pod @@ -1368,6 +1389,7 @@ sub command_fails local $ENV{PGPORT} = $self->port; TestLib::command_fails(@_); + return; } =pod @@ -1385,6 +1407,7 @@ sub command_like local $ENV{PGPORT} = $self->port; TestLib::command_like(@_); + return; } =pod @@ -1402,6 +1425,7 @@ sub command_checks_all local $ENV{PGPORT} = $self->port; TestLib::command_checks_all(@_); + return; } =pod @@ -1427,6 +1451,7 @@ sub issues_sql_like ok($result, "@$cmd exit code 0"); my $log = TestLib::slurp_file($self->logfile); like($log, $expected_sql, "$test_name: SQL found in server log"); + return; } =pod @@ -1445,6 +1470,7 @@ sub run_log local $ENV{PGPORT} = $self->port; TestLib::run_log(@_); + return; } =pod @@ -1548,6 +1574,7 @@ sub wait_for_catchup $self->poll_query_until('postgres', $query) or croak "timed out waiting for catchup"; print "done\n"; + return; } =pod @@ -1590,6 +1617,7 @@ sub wait_for_slot_catchup $self->poll_query_until('postgres', $query) or croak "timed out waiting for catchup"; print "done\n"; + return; } =pod diff --git a/src/test/perl/SimpleTee.pm b/src/test/perl/SimpleTee.pm index ea2f2ee828..9de7b1ac32 100644 --- a/src/test/perl/SimpleTee.pm +++ b/src/test/perl/SimpleTee.pm @@ -13,7 +13,7 @@ use strict; sub TIEHANDLE { my $self = shift; - bless \@_, $self; + return bless \@_, $self; } sub PRINT diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index c9f824b4c6..77499c01e9 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -194,6 +194,7 @@ sub system_or_bail { BAIL_OUT("system $_[0] failed"); } + return; } sub run_log @@ -244,6 +245,7 @@ sub append_to_file or die "could not write \"$filename\": $!"; print $fh $str; close $fh; + return; } # Check that all file/dir modes in a directory match the expected values, @@ -338,6 +340,7 @@ sub chmod_recursive } }, $dir); + return; } # Check presence of a given regexp within pg_config.h for the installation @@ -366,6 +369,7 @@ sub command_ok my ($cmd, $test_name) = @_; my $result = run_log($cmd); ok($result, $test_name); + return; } sub command_fails @@ -373,6 +377,7 @@ sub command_fails my ($cmd, $test_name) = @_; my $result = run_log($cmd); ok(!$result, $test_name); + return; } sub command_exit_is @@ -394,6 +399,7 @@ sub command_exit_is ? ($h->full_results)[0] : $h->result(0); is($result, $expected, $test_name); + return; } sub program_help_ok @@ -406,6 +412,7 @@ sub program_help_ok ok($result, "$cmd --help exit code 0"); isnt($stdout, '', "$cmd --help goes to stdout"); is($stderr, '', "$cmd --help nothing to stderr"); + return; } sub program_version_ok @@ -418,6 +425,7 @@ sub program_version_ok ok($result, "$cmd --version exit code 0"); isnt($stdout, '', "$cmd --version goes to stdout"); is($stderr, '', "$cmd --version nothing to stderr"); + return; } sub program_options_handling_ok @@ -430,6 +438,7 @@ sub program_options_handling_ok '2>', \$stderr; ok(!$result, "$cmd with invalid option nonzero exit code"); isnt($stderr, '', "$cmd with invalid option prints error message"); + return; } sub command_like @@ -441,6 +450,7 @@ sub command_like ok($result, "$test_name: exit code 0"); is($stderr, '', "$test_name: no stderr"); like($stdout, $expected_stdout, "$test_name: matches"); + return; } sub command_like_safe @@ -460,6 +470,7 @@ sub command_like_safe ok($result, "$test_name: exit code 0"); is($stderr, '', "$test_name: no stderr"); like($stdout, $expected_stdout, "$test_name: matches"); + return; } sub command_fails_like @@ -470,6 +481,7 @@ sub command_fails_like my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; ok(!$result, "$test_name: exit code not 0"); like($stderr, $expected_stderr, "$test_name: matches"); + return; } # Run a command and check its status and outputs. @@ -509,6 +521,8 @@ sub command_checks_all { like($stderr, $re, "$test_name stderr /$re/"); } + + return; } 1; diff --git a/src/test/recovery/t/001_stream_rep.pl b/src/test/recovery/t/001_stream_rep.pl index a29a6c720b..a0d3e8f357 100644 --- a/src/test/recovery/t/001_stream_rep.pl +++ b/src/test/recovery/t/001_stream_rep.pl @@ -97,6 +97,8 @@ sub test_target_session_attrs 1, "connect to node $target_name if mode \"$mode\" and $node1_name,$node2_name listed" ); + + return; } # Connect to master in "read-write" mode with master,standby1 list. @@ -195,6 +197,7 @@ sub replay_check $node_standby_2->safe_psql('postgres', qq[SELECT 1 FROM replayed WHERE val = $newval]) or die "standby_2 didn't replay standby_1 value $newval"; + return; } replay_check(); diff --git a/src/test/recovery/t/003_recovery_targets.pl b/src/test/recovery/t/003_recovery_targets.pl index 824fa4da52..e867479f20 100644 --- a/src/test/recovery/t/003_recovery_targets.pl +++ b/src/test/recovery/t/003_recovery_targets.pl @@ -41,6 +41,8 @@ sub test_recovery_standby # Stop standby node $node_standby->teardown_node; + + return; } # Initialize master node diff --git a/src/test/recovery/t/007_sync_rep.pl b/src/test/recovery/t/007_sync_rep.pl index 0ddf70b8b8..bba47da17a 100644 --- a/src/test/recovery/t/007_sync_rep.pl +++ b/src/test/recovery/t/007_sync_rep.pl @@ -24,6 +24,7 @@ sub test_sync_state } ok($self->poll_query_until('postgres', $check_sql, $expected), $msg); + return; } # Initialize master node diff --git a/src/test/recovery/t/009_twophase.pl b/src/test/recovery/t/009_twophase.pl index 93c22d181c..9ea3bd65fc 100644 --- a/src/test/recovery/t/009_twophase.pl +++ b/src/test/recovery/t/009_twophase.pl @@ -20,6 +20,7 @@ sub configure_and_reload )); $node->psql('postgres', "SELECT pg_reload_conf()", stdout => \$psql_out); is($psql_out, 't', "reload node $name with $parameter"); + return; } # Set up two nodes, which will alternately be master and replication standby. diff --git a/src/test/ssl/ServerSetup.pm b/src/test/ssl/ServerSetup.pm index ced279c31b..1cd3badaa1 100644 --- a/src/test/ssl/ServerSetup.pm +++ b/src/test/ssl/ServerSetup.pm @@ -47,6 +47,7 @@ sub test_connect_ok ]; command_ok($cmd, $test_name); + return; } sub test_connect_fails @@ -60,6 +61,7 @@ sub test_connect_fails ]; command_fails_like($cmd, $expected_stderr, $test_name); + return; } # Copy a set of files, taking into account wildcards @@ -75,6 +77,7 @@ sub copy_files copy($orig_file, "$dest/$base_file") or die "Could not copy $orig_file to $dest"; } + return; } sub configure_test_server_for_ssl @@ -130,6 +133,8 @@ sub configure_test_server_for_ssl # Change pg_hba after restart because hostssl requires ssl=on configure_hba_for_ssl($node, $serverhost, $authmethod); + + return; } # Change the configuration to use given server cert file, and reload @@ -150,6 +155,7 @@ sub switch_server_cert close $sslconf; $node->restart; + return; } sub configure_hba_for_ssl @@ -173,4 +179,7 @@ sub configure_hba_for_ssl print $hba "hostssl certdb all ::1/128 cert\n"; close $hba; + return; } + +1; \ No newline at end of file diff --git a/src/tools/copyright.pl b/src/tools/copyright.pl index 41cb93d658..08b9e5b42e 100755 --- a/src/tools/copyright.pl +++ b/src/tools/copyright.pl @@ -62,6 +62,7 @@ sub wanted $line =~ s/$cc (\d{4}), $pgdg/$ccliteral $1-$year, $pgdg/i; } untie @lines; + return; } print "Manually update:\n"; diff --git a/src/tools/git_changelog b/src/tools/git_changelog index 1262bc104c..af9afcf1f0 100755 --- a/src/tools/git_changelog +++ b/src/tools/git_changelog @@ -333,6 +333,7 @@ sub push_commit push @{ $all_commits_by_branch{ $c->{'branch'} } }, $cc; $cc->{'branch_position'}{ $c->{'branch'} } = -1 + @{ $all_commits_by_branch{ $c->{'branch'} } }; + return; } sub hash_commit @@ -355,6 +356,7 @@ sub parse_datetime sub output_str { ($oldest_first) ? ($output_line .= sprintf(shift, @_)) : printf(@_); + return; } sub output_details @@ -395,6 +397,7 @@ sub output_details } } output_str("\n"); + return; } sub usage diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm index 67124bb109..6f1c30546a 100644 --- a/src/tools/msvc/Install.pm +++ b/src/tools/msvc/Install.pm @@ -40,6 +40,7 @@ sub lcopy copy($src, $target) || confess "Could not copy $src to $target\n"; + return; } sub Install @@ -173,6 +174,7 @@ sub Install GenerateNLSFiles($target, $config->{nls}, $majorver) if ($config->{nls}); print "Installation complete.\n"; + return; } sub EnsureDirectories @@ -183,6 +185,7 @@ sub EnsureDirectories { mkdir $target . '/' . $d unless -d ($target . '/' . $d); } + return; } sub CopyFiles @@ -200,6 +203,7 @@ sub CopyFiles lcopy($f, $target . basename($f)); } print "\n"; + return; } sub CopySetOfFiles @@ -215,6 +219,7 @@ sub CopySetOfFiles lcopy($_, $tgt) || croak "Could not copy $_: $!\n"; } print "\n"; + return; } sub CopySolutionOutput @@ -340,6 +345,7 @@ sub CopySolutionOutput print "."; } print "\n"; + return; } sub GenerateConversionScript @@ -377,6 +383,7 @@ sub GenerateConversionScript print $F $sql; close($F); print "\n"; + return; } sub GenerateTimezoneFiles @@ -408,6 +415,7 @@ sub GenerateTimezoneFiles system(@args); print "\n"; + return; } sub GenerateTsearchFiles @@ -449,6 +457,7 @@ sub GenerateTsearchFiles } close($F); print "\n"; + return; } sub CopyContribFiles @@ -475,6 +484,7 @@ sub CopyContribFiles } } print "\n"; + return; } sub CopySubdirFiles @@ -561,6 +571,7 @@ sub CopySubdirFiles print '.'; } } + return; } sub ParseAndCleanRule @@ -676,6 +687,7 @@ sub CopyIncludeFiles $target . '/include/informix/esql/', 'src/interfaces/ecpg/include/', split /\s+/, $1); + return; } sub GenerateNLSFiles @@ -719,6 +731,7 @@ sub GenerateNLSFiles } } print "\n"; + return; } sub DetermineMajorVersion diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm index 2726d603af..27397ba3fb 100644 --- a/src/tools/msvc/MSBuildProject.pm +++ b/src/tools/msvc/MSBuildProject.pm @@ -80,6 +80,7 @@ EOF strpool => 'true', runtime => 'MultiThreadedDLL' }); + return; } sub AddDefine @@ -87,6 +88,7 @@ sub AddDefine my ($self, $def) = @_; $self->{defines} .= $def . ';'; + return; } sub WriteReferences @@ -112,6 +114,7 @@ EOF EOF } + return; } sub WriteFiles @@ -223,6 +226,7 @@ EOF EOF } + return; } sub WriteConfigurationHeader @@ -234,6 +238,7 @@ sub WriteConfigurationHeader $self->{platform} EOF + return; } sub WriteConfigurationPropertyGroup @@ -252,6 +257,7 @@ sub WriteConfigurationPropertyGroup $p->{wholeopt} EOF + return; } sub WritePropertySheetsPropertyGroup @@ -262,6 +268,7 @@ sub WritePropertySheetsPropertyGroup EOF + return; } sub WriteAdditionalProperties @@ -272,6 +279,7 @@ sub WriteAdditionalProperties .\\$cfgname\\$self->{name}\\ false EOF + return; } sub WriteItemDefinitionGroup @@ -364,6 +372,7 @@ EOF print $f < EOF + return; } sub Footer @@ -377,6 +386,7 @@ sub Footer EOF + return; } package VC2010Project; @@ -441,6 +451,7 @@ sub WriteConfigurationPropertyGroup $self->{PlatformToolset} EOF + return; } package VC2013Project; diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index d0d7d46495..4543d87d83 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -964,6 +964,7 @@ sub AddContrib # Are there any output data files to build? GenerateContribSqlFiles($n, $mf); + return; } sub GenerateContribSqlFiles @@ -1010,6 +1011,7 @@ sub GenerateContribSqlFiles } } } + return; } sub AdjustContribProj @@ -1020,6 +1022,7 @@ sub AdjustContribProj \@contrib_uselibpq, \@contrib_uselibpgport, \@contrib_uselibpgcommon, $contrib_extralibs, $contrib_extrasource, $contrib_extraincludes); + return; } sub AdjustFrontendProj @@ -1030,6 +1033,7 @@ sub AdjustFrontendProj \@frontend_uselibpq, \@frontend_uselibpgport, \@frontend_uselibpgcommon, $frontend_extralibs, $frontend_extrasource, $frontend_extraincludes); + return; } sub AdjustModule @@ -1086,6 +1090,7 @@ sub AdjustModule $proj->AddFile($i); } } + return; } END diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm index 46c680d536..261c913ea0 100644 --- a/src/tools/msvc/Project.pm +++ b/src/tools/msvc/Project.pm @@ -45,6 +45,7 @@ sub AddFile my ($self, $filename) = @_; $self->{files}->{$filename} = 1; + return; } sub AddFiles @@ -56,6 +57,7 @@ sub AddFiles { $self->{files}->{ $dir . "/" . $f } = 1; } + return; } sub ReplaceFile @@ -110,6 +112,7 @@ sub RelocateFiles $self->AddFile($targetdir . '/' . basename($f)); } } + return; } sub AddReference @@ -122,6 +125,7 @@ sub AddReference $self->AddLibrary( "__CFGNAME__/" . $ref->{name} . "/" . $ref->{name} . ".lib"); } + return; } sub AddLibrary @@ -138,6 +142,7 @@ sub AddLibrary { push @{ $self->{suffixlib} }, $lib; } + return; } sub AddIncludeDir @@ -149,6 +154,7 @@ sub AddIncludeDir $self->{includes} .= ';'; } $self->{includes} .= $inc; + return; } sub AddPrefixInclude @@ -156,6 +162,7 @@ sub AddPrefixInclude my ($self, $inc) = @_; $self->{prefixincludes} = $inc . ';' . $self->{prefixincludes}; + return; } sub AddDefine @@ -164,6 +171,7 @@ sub AddDefine $def =~ s/"/""/g; $self->{defines} .= $def . ';'; + return; } sub FullExportDLL @@ -173,6 +181,7 @@ sub FullExportDLL $self->{builddef} = 1; $self->{def} = "./__CFGNAME__/$self->{name}/$self->{name}.def"; $self->{implib} = "__CFGNAME__/$self->{name}/$libname"; + return; } sub UseDef @@ -180,6 +189,7 @@ sub UseDef my ($self, $def) = @_; $self->{def} = $def; + return; } sub AddDir @@ -284,6 +294,7 @@ sub AddDir } $self->AddDirResourceFile($reldir); + return; } # If the directory's Makefile bears a description string, add a resource file. @@ -299,6 +310,7 @@ sub AddDirResourceFile if ($mf =~ /^PGAPPICON\s*=\s*(.*)$/m) { $ico = $1; } $self->AddResourceFile($reldir, $desc, $ico); } + return; } sub AddResourceFile @@ -332,6 +344,7 @@ sub AddResourceFile close($i); } $self->AddFile("$dir/win32ver.rc"); + return; } sub DisableLinkerWarnings @@ -341,6 +354,7 @@ sub DisableLinkerWarnings $self->{disablelinkerwarnings} .= ',' unless ($self->{disablelinkerwarnings} eq ''); $self->{disablelinkerwarnings} .= $warnings; + return; } sub Save @@ -366,6 +380,7 @@ sub Save $self->WriteFiles($f); $self->Footer($f); close($f); + return; } sub GetAdditionalLinkerDependencies diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm index a33e68eccf..8f0b355fc0 100644 --- a/src/tools/msvc/Solution.pm +++ b/src/tools/msvc/Solution.pm @@ -75,6 +75,7 @@ sub DeterminePlatform $? >> 8 == 0 or die "cl command not found"; $self->{platform} = ($output =~ /^\/favor:<.+AMD64/m) ? 'x64' : 'Win32'; print "Detected hardware platform: $self->{platform}\n"; + return; } # Return 1 if $oldfile is newer than $newfile, or if $newfile doesn't exist. @@ -112,6 +113,7 @@ sub copyFile } close($i); close($o); + return; } sub GenerateFiles @@ -533,6 +535,7 @@ EOF {majorver}"> EOF close($o); + return; } sub GenerateDefFile @@ -555,6 +558,7 @@ sub GenerateDefFile close($of); close($if); } + return; } sub AddProject @@ -727,6 +731,7 @@ EOF EndGlobal EOF close($sln); + return; } sub GetFakeConfigure diff --git a/src/tools/msvc/VCBuildProject.pm b/src/tools/msvc/VCBuildProject.pm index 57b8525f3f..03b890b9b7 100644 --- a/src/tools/msvc/VCBuildProject.pm +++ b/src/tools/msvc/VCBuildProject.pm @@ -56,6 +56,7 @@ EOF EOF $self->WriteReferences($f); + return; } sub WriteFiles @@ -152,6 +153,7 @@ EOF print $f < EOF + return; } sub Footer @@ -162,6 +164,7 @@ sub Footer EOF + return; } sub WriteConfiguration @@ -227,6 +230,7 @@ EOF print $f < EOF + return; } sub WriteReferences @@ -239,6 +243,7 @@ sub WriteReferences " {guid}\" Name=\"$ref->{name}\" />\n"; } print $f " \n"; + return; } sub GenerateCustomTool diff --git a/src/tools/msvc/builddoc.pl b/src/tools/msvc/builddoc.pl index 8ab7385b9e..f6eb73db21 100644 --- a/src/tools/msvc/builddoc.pl +++ b/src/tools/msvc/builddoc.pl @@ -107,7 +107,7 @@ sub renamefiles move $f, $nf; } chdir $savedir; - + return; } sub missing diff --git a/src/tools/msvc/gendef.pl b/src/tools/msvc/gendef.pl index 9f0cf76fb3..77c3a775b0 100644 --- a/src/tools/msvc/gendef.pl +++ b/src/tools/msvc/gendef.pl @@ -20,6 +20,7 @@ sub dumpsyms system("dumpbin /symbols /out:$tmpfile $_ >NUL") && die "Could not call dumpbin"; rename($tmpfile, $symfile); + return; } # Given a symbol file path, loops over its contents @@ -116,6 +117,7 @@ sub extract_syms $def->{ $pieces[6] } = $pieces[3]; } close($f); + return; } sub writedef @@ -143,6 +145,7 @@ sub writedef } } close($fh); + return; } diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index a74adbaf99..4dc051aa62 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -111,6 +111,7 @@ sub installcheck system(@args); my $status = $? >> 8; exit $status if $status; + return; } sub check @@ -132,6 +133,7 @@ sub check system(@args); my $status = $? >> 8; exit $status if $status; + return; } sub ecpgcheck @@ -157,6 +159,7 @@ sub ecpgcheck system(@args); $status = $? >> 8; exit $status if $status; + return; } sub isolationcheck @@ -173,6 +176,7 @@ sub isolationcheck system(@args); my $status = $? >> 8; exit $status if $status; + return; } sub tap_check @@ -224,6 +228,7 @@ sub bincheck $mstat ||= $status; } exit $mstat if $mstat; + return; } sub taptest @@ -244,6 +249,7 @@ sub taptest InstallTemp(); my $status = tap_check(@args); exit $status if $status; + return; } sub mangle_plpython3 @@ -365,6 +371,7 @@ sub plcheck } chdir "$topdir"; + return; } sub subdircheck @@ -413,6 +420,7 @@ sub subdircheck print join(' ', @args), "\n"; system(@args); chdir ".."; + return; } sub contribcheck @@ -434,6 +442,7 @@ sub contribcheck $mstat ||= $status; } exit $mstat if $mstat; + return; } sub modulescheck @@ -447,6 +456,7 @@ sub modulescheck $mstat ||= $status; } exit $mstat if $mstat; + return; } sub recoverycheck @@ -457,6 +467,7 @@ sub recoverycheck my $dir = "$topdir/src/test/recovery"; my $status = tap_check($dir); exit $status if $status; + return; } # Run "initdb", then reconfigure authentication. @@ -501,6 +512,7 @@ sub generate_db system('createdb', quote_system_arg($dbname)); my $status = $? >> 8; exit $status if $status; + return; } sub upgradecheck @@ -586,6 +598,7 @@ sub upgradecheck print "dumps not identical!\n"; exit(1); } + return; } sub fetchRegressOpts @@ -680,6 +693,7 @@ sub InstallTemp Install("$tmp_installdir", "all", $config); } $ENV{PATH} = "$tmp_installdir/bin;$ENV{PATH}"; + return; } sub usage diff --git a/src/tools/pginclude/pgcheckdefines b/src/tools/pginclude/pgcheckdefines index c547df45ea..4edf7fc56e 100755 --- a/src/tools/pginclude/pgcheckdefines +++ b/src/tools/pginclude/pgcheckdefines @@ -297,4 +297,6 @@ sub checkit print "$file references $symbol, defined in @places\n"; # print "includes: @includes\n"; + + return; } diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent index fc616e7a08..2d81672e15 100755 --- a/src/tools/pgindent/pgindent +++ b/src/tools/pgindent/pgindent @@ -93,6 +93,8 @@ sub check_indent "You appear to have GNU indent rather than BSD indent.\n"; exit 1; } + + return; } @@ -162,6 +164,7 @@ sub process_exclude } close($eh); } + return; } @@ -189,6 +192,7 @@ sub write_source || die "cannot open file \"$source_filename\": $!\n"; print $src_fh $source; close($src_fh); + return; } @@ -316,6 +320,7 @@ sub diff . $pre_fh->filename . " " . $post_fh->filename . " >&2"); + return; } @@ -361,6 +366,7 @@ sub run_build $ENV{PGINDENT} = abs_path('pg_bsd_indent'); chdir $save_dir; + return; } @@ -382,6 +388,7 @@ sub build_clean system("rm -rf src/tools/pgindent/pg_bsd_indent"); system("rm -f src/tools/pgindent/tmp_typedefs.list"); + return; } diff --git a/src/tools/pgperlcritic/perlcriticrc b/src/tools/pgperlcritic/perlcriticrc index 1059002ad5..c831086ae9 100644 --- a/src/tools/pgperlcritic/perlcriticrc +++ b/src/tools/pgperlcritic/perlcriticrc @@ -12,3 +12,8 @@ theme = core # allow octal constants with leading zeros [-ValuesAndExpressions::ProhibitLeadingZeros] + +# for now raise severity of this to level 5 +[Subroutines::RequireFinalReturn] +severity = 5 + diff --git a/src/tools/pgperlcritic/pgperlcritic b/src/tools/pgperlcritic/pgperlcritic index 40d006bef6..28264b1a24 100755 --- a/src/tools/pgperlcritic/pgperlcritic +++ b/src/tools/pgperlcritic/pgperlcritic @@ -15,7 +15,7 @@ PERLCRITIC=${PERLCRITIC:-perlcritic} # locate all Perl files in the tree { # take all .pl and .pm files - find . -type f -a \( -name '*.pl' -o -name '*.pm' \) -print + find . -type f -name '*.p[lm]' -print # take executable files that file(1) thinks are perl files find . -type f -perm -100 -exec file {} \; -print | egrep -i ':.*perl[0-9]*\>' | diff --git a/src/tools/version_stamp.pl b/src/tools/version_stamp.pl index 392fd4ae54..499e3deb3a 100755 --- a/src/tools/version_stamp.pl +++ b/src/tools/version_stamp.pl @@ -141,4 +141,5 @@ sub sed_file or die "mv failed: $?"; $fixedfiles .= "\t$filename\n"; + return; }