]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Apply more consistent style for command options in TAP tests
authorMichael Paquier <michael@paquier.xyz>
Mon, 17 Mar 2025 03:42:23 +0000 (12:42 +0900)
committerMichael Paquier <michael@paquier.xyz>
Mon, 17 Mar 2025 03:42:23 +0000 (12:42 +0900)
This commit reshapes the grammar of some commands to apply a more
consistent style across the board, following rules similar to
ce1b0f9da03e:
- Elimination of some pointless used-once variables.
- Use of long options, to self-document better the options used.
- Use of fat commas to link option names and their assigned values,
including redirections, so as perltidy can be tricked to put them
together.

Author: Dagfinn Ilmari MannsÃ¥ker <ilmari@ilmari.org>
Discussion: https://postgr.es/m/87jz8rzf3h.fsf@wibble.ilmari.org

43 files changed:
contrib/auto_explain/t/001_auto_explain.pl
contrib/basebackup_to_shell/t/001_basic.pl
contrib/sepgsql/t/001_sepgsql.pl
src/bin/pg_archivecleanup/t/010_pg_archivecleanup.pl
src/bin/pg_resetwal/t/002_corrupted.pl
src/bin/pg_rewind/t/009_growing_files.pl
src/bin/pg_rewind/t/RewindTest.pm
src/bin/pg_upgrade/t/002_pg_upgrade.pl
src/bin/pg_upgrade/t/003_logical_slots.pl
src/bin/pg_upgrade/t/005_char_signedness.pl
src/bin/pg_verifybackup/t/002_algorithm.pl
src/bin/pg_verifybackup/t/003_corruption.pl
src/bin/pg_verifybackup/t/004_options.pl
src/bin/pg_verifybackup/t/008_untar.pl
src/bin/pg_verifybackup/t/009_extract.pl
src/bin/pg_verifybackup/t/010_client_untar.pl
src/bin/pg_waldump/t/001_basic.pl
src/bin/pgbench/t/001_pgbench_with_server.pl
src/bin/pgbench/t/002_pgbench_no_server.pl
src/bin/psql/t/001_basic.pl
src/bin/psql/t/020_cancel.pl
src/interfaces/libpq/t/001_uri.pl
src/interfaces/libpq/t/005_negotiate_encryption.pl
src/test/modules/commit_ts/t/003_standby_2.pl
src/test/modules/libpq_pipeline/t/001_libpq_pipeline.pl
src/test/modules/ssl_passphrase_callback/t/001_testfunc.pl
src/test/modules/test_pg_dump/t/001_base.pl
src/test/perl/PostgreSQL/Test/BackgroundPsql.pm
src/test/perl/PostgreSQL/Test/Cluster.pm
src/test/perl/PostgreSQL/Test/Kerberos.pm
src/test/perl/PostgreSQL/Test/Utils.pm
src/test/postmaster/t/002_connection_limits.pl
src/test/recovery/t/001_stream_rep.pl
src/test/recovery/t/006_logical_decoding.pl
src/test/recovery/t/013_crash_restart.pl
src/test/recovery/t/017_shm.pl
src/test/recovery/t/021_row_visibility.pl
src/test/recovery/t/022_crash_temp_files.pl
src/test/recovery/t/032_relfilenode_reuse.pl
src/test/recovery/t/035_standby_logical_decoding.pl
src/test/recovery/t/040_standby_failover_slots_sync.pl
src/test/recovery/t/041_checkpoint_at_promote.pl
src/tools/pg_bsd_indent/t/001_pg_bsd_indent.pl

index 6e514db35d1474e8a7cf9a30513180ca30003588..80c0c19af58b2f1ee961d8e0d0fba87e419f120d 100644 (file)
@@ -28,7 +28,7 @@ sub query_log
 }
 
 my $node = PostgreSQL::Test::Cluster->new('main');
-$node->init('auth_extra' => [ '--create-role', 'regress_user1' ]);
+$node->init('auth_extra' => [ '--create-role' => 'regress_user1' ]);
 $node->append_conf('postgresql.conf',
        "session_preload_libraries = 'auto_explain'");
 $node->append_conf('postgresql.conf', "auto_explain.log_min_duration = 0");
index 6ffc89433a9cf024bcf3700b6aa3e005faeee01b..3ee4603bd3a98467f698583dce7372bd405c955e 100644 (file)
@@ -131,8 +131,10 @@ sub verify_backup
 
                # Untar.
                my $extract_path = PostgreSQL::Test::Utils::tempdir;
-               system_or_bail($tar, 'xf', $backup_dir . '/' . $prefix . 'base.tar',
-                       '-C', $extract_path);
+               system_or_bail(
+                       $tar,
+                       'xf' => $backup_dir . '/' . $prefix . 'base.tar',
+                       '-C' => $extract_path);
 
                # Verify.
                $node->command_ok(
index c5fd725484162a6979e8a7e88465f30e16516bb3..cd00e4963dba91466a9f684c706d6e7d0e06de32 100644 (file)
@@ -216,8 +216,7 @@ $node->append_conf('postgresql.conf', 'log_statement=none');
                        '-D' => $node->data_dir,
                        'template0'
                ],
-               '<',
-               $ENV{share_contrib_dir} . '/sepgsql.sql');
+               '<' => $ENV{share_contrib_dir} . '/sepgsql.sql');
        ok($result, 'sepgsql installation script');
 }
 
index 4103fec7f7a9ae6678a93f165b6768528a36869b..c6148cda7fc2f3876b4367f99ff62d3d870f92db 100644 (file)
@@ -85,10 +85,11 @@ command_fails_like(
 
        my $stderr;
        my $oldestkeptwalfile = '00000001000000370000000E';
-       my $result =
-         IPC::Run::run [ 'pg_archivecleanup', '-d', '-n', $tempdir,
-               $oldestkeptwalfile ],
-         '2>', \$stderr;
+       my $result = IPC::Run::run [
+               'pg_archivecleanup', '--debug', '--dry-run', $tempdir,
+               $oldestkeptwalfile
+         ],
+         '2>' => \$stderr;
        ok($result, "pg_archivecleanup dry run: exit code 0");
 
        for my $walpair (@walfiles_verbose)
index 869d5d8d2a65c3e278868e7a0d411f08e57bb768..3c80f6309c9b6fdd8f841afae760bc4ab2960b9c 100644 (file)
@@ -60,7 +60,8 @@ command_fails_like(
        [ 'pg_resetwal', $node->data_dir ],
        qr/not proceeding because control file values were guessed/,
        'does not run when control file values were guessed');
-command_ok([ 'pg_resetwal', '-f', $node->data_dir ],
+command_ok(
+       [ 'pg_resetwal', '--force', $node->data_dir ],
        'runs with force when control file values were guessed');
 
 done_testing();
index 643d200dcc90127e137cf1635f0190570627dd72..afe68c8bf0d3217a8219cc9e5a34e3336ed3a0e8 100644 (file)
@@ -56,8 +56,7 @@ my $ret = run_log(
                '--target-pgdata' => $primary_pgdata,
                '--no-sync',
        ],
-       '2>>',
-       "$standby_pgdata/tst_both_dir/file1");
+       '2>>' => "$standby_pgdata/tst_both_dir/file1");
 ok(!$ret, 'Error out on copying growing file');
 
 # Ensure that the files are of different size, the final error message should
index ec3b4a519955fab1a80c4da4aa7dfaf3f3c01c06..3efab8317978a3b712d08afdfee489f530400e88 100644 (file)
@@ -69,8 +69,9 @@ sub primary_psql
        my $cmd = shift;
        my $dbname = shift || 'postgres';
 
-       system_or_bail 'psql', '-q', '--no-psqlrc', '-d',
-         $node_primary->connstr($dbname), '-c', "$cmd";
+       system_or_bail 'psql', '--quiet', '--no-psqlrc',
+         '--dbname' => $node_primary->connstr($dbname),
+         '--command' => $cmd;
        return;
 }
 
@@ -79,8 +80,9 @@ sub standby_psql
        my $cmd = shift;
        my $dbname = shift || 'postgres';
 
-       system_or_bail 'psql', '-q', '--no-psqlrc', '-d',
-         $node_standby->connstr($dbname), '-c', "$cmd";
+       system_or_bail 'psql', '--quiet', '--no-psqlrc',
+         '--dbname' => $node_standby->connstr($dbname),
+         '--command' => $cmd;
        return;
 }
 
@@ -95,11 +97,12 @@ sub check_query
 
        # we want just the output, no formatting
        my $result = run [
-               'psql', '-q', '-A', '-t', '--no-psqlrc', '-d',
-               $node_primary->connstr('postgres'),
-               '-c', $query
+               'psql', '--quiet', '--no-align', '--tuples-only', '--no-psqlrc',
+               '--dbname' => $node_primary->connstr('postgres'),
+               '--command' => $query
          ],
-         '>', \$stdout, '2>', \$stderr;
+         '>' => \$stdout,
+         '2>' => \$stderr;
 
        is($result, 1, "$test_name: psql exit code");
        is($stderr, '', "$test_name: psql no stderr");
@@ -124,7 +127,7 @@ sub setup_cluster
        $node_primary->init(
                allows_streaming => 1,
                extra => $extra,
-               auth_extra => [ '--create-role', 'rewind_user' ]);
+               auth_extra => [ '--create-role' => 'rewind_user' ]);
 
        # Set wal_keep_size to prevent WAL segment recycling after enforced
        # checkpoints in the tests.
index c00cf68d66081a244d54dc5d35fa296130ea3e2d..00051b85035e2fbd3bcf57ef80bbcb9a2e8ad89b 100644 (file)
@@ -208,7 +208,8 @@ if (defined($ENV{olddump}))
 
        # Load the dump using the "postgres" database as "regression" does
        # not exist yet, and we are done here.
-       $oldnode->command_ok([ 'psql', '-X', '-f', $olddumpfile, 'postgres' ],
+       $oldnode->command_ok(
+               [ 'psql', '--no-psqlrc', '--file' => $olddumpfile, 'postgres' ],
                'loaded old dump file');
 }
 else
@@ -303,14 +304,15 @@ if (defined($ENV{oldinstall}))
                my @command_args = ();
                for my $upcmd (@{ $adjust_cmds->{$updb} })
                {
-                       push @command_args, '-c', $upcmd;
+                       push @command_args, '--command' => $upcmd;
                }
 
                # For simplicity, use the newer version's psql to issue the commands.
                $newnode->command_ok(
                        [
-                               'psql', '-X', '-v', 'ON_ERROR_STOP=1',
-                               '-d', $oldnode->connstr($updb),
+                               'psql', '--no-psqlrc',
+                               '--set' => 'ON_ERROR_STOP=1',
+                               '--dbname' => $oldnode->connstr($updb),
                                @command_args,
                        ],
                        "ran version adaptation commands for database $updb");
@@ -324,8 +326,9 @@ $oldnode->restart;
 # Take a dump before performing the upgrade as a base comparison. Note
 # that we need to use pg_dumpall from the new node here.
 my @dump_command = (
-       'pg_dumpall', '--no-sync', '-d', $oldnode->connstr('postgres'),
-       '-f', $dump1_file);
+       'pg_dumpall', '--no-sync',
+       '--dbname' => $oldnode->connstr('postgres'),
+       '--file' => $dump1_file);
 # --extra-float-digits is needed when upgrading from a version older than 11.
 push(@dump_command, '--extra-float-digits', '0')
   if ($oldnode->pg_version < 12);
@@ -399,13 +402,13 @@ $oldnode->stop;
 command_checks_all(
        [
                'pg_upgrade', '--no-sync',
-               '-d', $oldnode->data_dir,
-               '-D', $newnode->data_dir,
-               '-b', $oldbindir . '/does/not/exist/',
-               '-B', $newbindir,
-               '-s', $newnode->host,
-               '-p', $oldnode->port,
-               '-P', $newnode->port,
+               '--old-datadir' => $oldnode->data_dir,
+               '--new-datadir' => $newnode->data_dir,
+               '--old-bindir' => $oldbindir . '/does/not/exist/',
+               '--new-bindir' => $newbindir,
+               '--socketdir' => $newnode->host,
+               '--old-port' => $oldnode->port,
+               '--new-port' => $newnode->port,
                $mode, '--check',
        ],
        1,
@@ -427,13 +430,13 @@ SKIP:
        command_checks_all(
                [
                        'pg_upgrade', '--no-sync',
-                       '-d', $oldnode->data_dir,
-                       '-D', $newnode->data_dir,
-                       '-b', $oldbindir,
-                       '-B', $newbindir,
-                       '-s', $newnode->host,
-                       '-p', $oldnode->port,
-                       '-P', $newnode->port,
+                       '--old-datadir' => $oldnode->data_dir,
+                       '--new-datadir' => $newnode->data_dir,
+                       '--old-bindir' => $oldbindir,
+                       '--new-bindir' => $newbindir,
+                       '--socketdir' => $newnode->host,
+                       '--old-port' => $oldnode->port,
+                       '--new-port' => $newnode->port,
                        $mode, '--check',
                ],
                1,
@@ -451,10 +454,14 @@ $oldnode->stop;
 # --check command works here, cleans up pg_upgrade_output.d.
 command_ok(
        [
-               'pg_upgrade', '--no-sync', '-d', $oldnode->data_dir,
-               '-D', $newnode->data_dir, '-b', $oldbindir,
-               '-B', $newbindir, '-s', $newnode->host,
-               '-p', $oldnode->port, '-P', $newnode->port,
+               'pg_upgrade', '--no-sync',
+               '--old-datadir' => $oldnode->data_dir,
+               '--new-datadir' => $newnode->data_dir,
+               '--old-bindir' => $oldbindir,
+               '--new-bindir' => $newbindir,
+               '--socketdir' => $newnode->host,
+               '--old-port' => $oldnode->port,
+               '--new-port' => $newnode->port,
                $mode, '--check',
        ],
        'run of pg_upgrade --check for new instance');
@@ -464,10 +471,14 @@ ok(!-d $newnode->data_dir . "/pg_upgrade_output.d",
 # Actual run, pg_upgrade_output.d is removed at the end.
 command_ok(
        [
-               'pg_upgrade', '--no-sync', '-d', $oldnode->data_dir,
-               '-D', $newnode->data_dir, '-b', $oldbindir,
-               '-B', $newbindir, '-s', $newnode->host,
-               '-p', $oldnode->port, '-P', $newnode->port,
+               'pg_upgrade', '--no-sync',
+               '--old-datadir' => $oldnode->data_dir,
+               '--new-datadir' => $newnode->data_dir,
+               '--old-bindir' => $oldbindir,
+               '--new-bindir' => $newbindir,
+               '--socketdir' => $newnode->host,
+               '--old-port' => $oldnode->port,
+               '--new-port' => $newnode->port,
                $mode,
        ],
        'run of pg_upgrade for new instance');
@@ -512,10 +523,11 @@ is( $result,
 
 # Second dump from the upgraded instance.
 @dump_command = (
-       'pg_dumpall', '--no-sync', '-d', $newnode->connstr('postgres'),
-       '-f', $dump2_file);
+       'pg_dumpall', '--no-sync',
+       '--dbname' => $newnode->connstr('postgres'),
+       '--file' => $dump2_file);
 # --extra-float-digits is needed when upgrading from a version older than 11.
-push(@dump_command, '--extra-float-digits', '0')
+push(@dump_command, '--extra-float-digits' => '0')
   if ($oldnode->pg_version < 12);
 $newnode->command_ok(\@dump_command, 'dump after running pg_upgrade');
 
index 785353ce4d5876c59cbf1c72e9ec9c7367bae50b..75db4911730be38f5309c45554ae24844968c04c 100644 (file)
@@ -40,13 +40,13 @@ checkpoint_timeout = 1h
 # Setup a common pg_upgrade command to be used by all the test cases
 my @pg_upgrade_cmd = (
        'pg_upgrade', '--no-sync',
-       '-d', $oldpub->data_dir,
-       '-D', $newpub->data_dir,
-       '-b', $oldpub->config_data('--bindir'),
-       '-B', $newpub->config_data('--bindir'),
-       '-s', $newpub->host,
-       '-p', $oldpub->port,
-       '-P', $newpub->port,
+       '--old-datadir' => $oldpub->data_dir,
+       '--new-datadir' => $newpub->data_dir,
+       '--old-bindir' => $oldpub->config_data('--bindir'),
+       '--new-bindir' => $newpub->config_data('--bindir'),
+       '--socketdir' => $newpub->host,
+       '--old-port' => $oldpub->port,
+       '--new-port' => $newpub->port,
        $mode);
 
 # In a VPATH build, we'll be started in the source directory, but we want
index d186822ac770af80ecd74410909ebe5e5baff2d2..0190747758c86617deb40ad0297a15ec738cfcb7 100644 (file)
@@ -31,7 +31,12 @@ command_like(
 
 # Set the old cluster's default char signedness to unsigned for test.
 command_ok(
-       [ 'pg_resetwal', '--char-signedness', 'unsigned', '-f', $old->data_dir ],
+       [
+               'pg_resetwal',
+               '--char-signedness' => 'unsigned',
+               '--force',
+               $old->data_dir
+       ],
        "set old cluster's default char signedness to unsigned");
 
 # Check if the value is successfully updated.
@@ -44,14 +49,14 @@ command_like(
 command_checks_all(
        [
                'pg_upgrade', '--no-sync',
-               '-d', $old->data_dir,
-               '-D', $new->data_dir,
-               '-b', $old->config_data('--bindir'),
-               '-B', $new->config_data('--bindir'),
-               '-s', $new->host,
-               '-p', $old->port,
-               '-P', $new->port,
-               '--set-char-signedness', 'signed',
+               '--old-datadir' => $old->data_dir,
+               '--new-datadir' => $new->data_dir,
+               '--old-bindir' => $old->config_data('--bindir'),
+               '--new-bindir' => $new->config_data('--bindir'),
+               '--socketdir' => $new->host,
+               '--old-port' => $old->port,
+               '--new-port' => $new->port,
+               '--set-char-signedness' => 'signed',
                $mode
        ],
        1,
@@ -64,13 +69,13 @@ command_checks_all(
 command_ok(
        [
                'pg_upgrade', '--no-sync',
-               '-d', $old->data_dir,
-               '-D', $new->data_dir,
-               '-b', $old->config_data('--bindir'),
-               '-B', $new->config_data('--bindir'),
-               '-s', $new->host,
-               '-p', $old->port,
-               '-P', $new->port,
+               '--old-datadir' => $old->data_dir,
+               '--new-datadir' => $new->data_dir,
+               '--old-bindir' => $old->config_data('--bindir'),
+               '--new-bindir' => $new->config_data('--bindir'),
+               '--socketdir' => $new->host,
+               '--old-port' => $old->port,
+               '--new-port' => $new->port,
                $mode
        ],
        'run of pg_upgrade');
index 71aaa8d881f733bb483aee5676e898f1ea195008..ae16c11bc4dd1a4961a5ed7986b493fb60907811 100644 (file)
@@ -19,18 +19,21 @@ sub test_checksums
        my ($format, $algorithm) = @_;
        my $backup_path = $primary->backup_dir . '/' . $format . '/' . $algorithm;
        my @backup = (
-               'pg_basebackup', '-D', $backup_path,
-               '--manifest-checksums', $algorithm, '--no-sync', '-cfast');
-       my @verify = ('pg_verifybackup', '-e', $backup_path);
+               'pg_basebackup',
+               '--pgdata' => $backup_path,
+               '--manifest-checksums' => $algorithm,
+               '--no-sync',
+               '--checkpoint' => 'fast');
+       my @verify = ('pg_verifybackup', '--exit-on-error', $backup_path);
 
        if ($format eq 'tar')
        {
                # Add switch to get a tar-format backup
-               push @backup, ('-F', 't');
+               push @backup, ('--format' => 'tar');
 
                # Add switch to skip WAL verification, which is not yet supported for
                # tar-format backups
-               push @verify, ('-n');
+               push @verify, ('--no-parse-wal');
        }
 
        # A backup with a bogus algorithm should fail.
index 8ef7f8a4e7a038168ec7240daa48dc056f9f96b8..84f23b8bc3d1a5088edcabdd6b123f474e88afa7 100644 (file)
@@ -190,13 +190,13 @@ for my $scenario (@scenario)
 
                        # Construct base.tar with what's left.
                        chdir($backup_path) || die "chdir: $!";
-                       command_ok([ $tar, '-cf', "$tar_backup_path/base.tar", '.' ]);
+                       command_ok([ $tar, '-cf' => "$tar_backup_path/base.tar", '.' ]);
                        chdir($cwd) || die "chdir: $!";
 
                        # Now check that the backup no longer verifies. We must use -n
                        # here, because pg_waldump can't yet read WAL from a tarfile.
                        command_fails_like(
-                               [ 'pg_verifybackup', '-n', $tar_backup_path ],
+                               [ 'pg_verifybackup', '--no-parse-wal', $tar_backup_path ],
                                $scenario->{'fails_like'},
                                "corrupt backup fails verification: $name");
 
index 526607866808b2f639afd781ad73987a02aded20..8c83dc7189ec3702bb8c56e921091a696b5d10c8 100644 (file)
@@ -119,7 +119,8 @@ command_like(
 
 # Verify that when --ignore is not used, both problems are reported.
 $result = IPC::Run::run [ 'pg_verifybackup', $backup_path ],
-  '>', \$stdout, '2>', \$stderr;
+  '>' => \$stdout,
+  '2>' => \$stderr;
 ok(!$result, "multiple problems: fails");
 like(
        $stderr,
index 590c497503ccf23cbc2587d2d323bb0e69bf9e36..deed3ec247d2de8340c1949d17189363e38b34ff 100644 (file)
@@ -79,12 +79,14 @@ for my $tc (@test_configuration)
                        || $tc->{'decompress_program'} eq '');
 
                # Take a server-side backup.
-               my @backup = (
-                       'pg_basebackup', '--no-sync',
-                       '-cfast', '--target',
-                       "server:$backup_path", '-Xfetch');
-               push @backup, @{ $tc->{'backup_flags'} };
-               $primary->command_ok(\@backup,
+               $primary->command_ok(
+                       [
+                               'pg_basebackup', '--no-sync',
+                               '--checkpoint' => 'fast',
+                               '--target' => "server:$backup_path",
+                               '--wal-method' => 'fetch',
+                               @{ $tc->{'backup_flags'} },
+                       ],
                        "server side backup, compression $method");
 
 
@@ -97,7 +99,11 @@ for my $tc (@test_configuration)
                        "found expected backup files, compression $method");
 
                # Verify tar backup.
-               $primary->command_ok([ 'pg_verifybackup', '-n', '-e', $backup_path ],
+               $primary->command_ok(
+                       [
+                               'pg_verifybackup', '--no-parse-wal',
+                               '--exit-on-error', $backup_path,
+                       ],
                        "verify backup, compression $method");
 
                # Cleanup.
index ae2b5a9b36dfeb7ae0f2d874216ad3304af90b1a..25605291217000e766894f46efc6f81d9895ed43 100644 (file)
@@ -53,19 +53,21 @@ for my $tc (@test_configuration)
                skip "$method compression not supported by this build", 2
                  if !$tc->{'enabled'};
 
-               # Take backup with server compression enabled.
-               my @backup = (
-                       'pg_basebackup', '-D', $backup_path,
-                       '-Xfetch', '--no-sync', '-cfast', '-Fp');
-               push @backup, @{ $tc->{'backup_flags'} };
-
-               my @verify = ('pg_verifybackup', '-e', $backup_path);
-
                # A backup with a valid compression method should work.
                my $backup_stdout = '';
                my $backup_stderr = '';
-               my $backup_result = $primary->run_log(\@backup, '>', \$backup_stdout,
-                       '2>', \$backup_stderr);
+               my $backup_result = $primary->run_log(
+                       [
+                               'pg_basebackup',
+                               '--pgdata' => $backup_path,
+                               '--wal-method' => 'fetch',
+                               '--no-sync',
+                               '--checkpoint' => 'fast',
+                               '--format' => 'plain',
+                               @{ $tc->{'backup_flags'} },
+                       ],
+                       '>' => \$backup_stdout,
+                       '2>' => \$backup_stderr);
                if ($backup_stdout ne '')
                {
                        print "# standard output was:\n$backup_stdout";
@@ -86,7 +88,8 @@ for my $tc (@test_configuration)
                }
 
                # Make sure that it verifies OK.
-               $primary->command_ok(\@verify,
+               $primary->command_ok(
+                       [ 'pg_verifybackup', '--exit-on-error', $backup_path ],
                        "backup verified, compression method \"$method\"");
        }
 
index 4559c5c75e801a989386902c01719f97a2e261ca..d8d2b06c7ee86f6aa0bafb8937717b94cb7b32cd 100644 (file)
@@ -72,14 +72,19 @@ for my $tc (@test_configuration)
                        || $tc->{'decompress_program'} eq '');
 
                # Take a client-side backup.
-               my @backup = (
-                       'pg_basebackup', '-D', $backup_path,
-                       '-Xfetch', '--no-sync', '-cfast', '-Ft');
-               push @backup, @{ $tc->{'backup_flags'} };
                my $backup_stdout = '';
                my $backup_stderr = '';
-               my $backup_result = $primary->run_log(\@backup, '>', \$backup_stdout,
-                       '2>', \$backup_stderr);
+               my $backup_result = $primary->run_log(
+                       [
+                               'pg_basebackup', '--no-sync',
+                               '--pgdata' => $backup_path,
+                               '--wal-method' => 'fetch',
+                               '--checkpoint' => 'fast',
+                               '--format' => 'tar',
+                               @{ $tc->{'backup_flags'} }
+                       ],
+                       '>' => \$backup_stdout,
+                       '2>' => \$backup_stderr);
                if ($backup_stdout ne '')
                {
                        print "# standard output was:\n$backup_stdout";
index 5c8fea275bb530f54988fdb867cecd694b89bf2f..f26d75e01cfd3715b2ae75ecdfd56a72f44b474d 100644 (file)
@@ -247,13 +247,15 @@ command_fails_like(
        $lsn2++;
        my $new_start = sprintf("%s/%X", $part1, $lsn2);
 
-       my (@cmd, $stdout, $stderr, $result);
+       my ($stdout, $stderr);
 
-       @cmd = (
+       my $result = IPC::Run::run [
                'pg_waldump',
                '--start' => $new_start,
-               $node->data_dir . '/pg_wal/' . $start_walfile);
-       $result = IPC::Run::run \@cmd, '>', \$stdout, '2>', \$stderr;
+               $node->data_dir . '/pg_wal/' . $start_walfile
+         ],
+         '>' => \$stdout,
+         '2>' => \$stderr;
        ok($result, "runs with start segment and start LSN specified");
        like($stderr, qr/first record is after/, 'info message printed');
 }
@@ -266,18 +268,20 @@ sub test_pg_waldump
        local $Test::Builder::Level = $Test::Builder::Level + 1;
        my @opts = @_;
 
-       my (@cmd, $stdout, $stderr, $result, @lines);
+       my ($stdout, $stderr);
 
-       @cmd = (
+       my $result = IPC::Run::run [
                'pg_waldump',
                '--path' => $node->data_dir,
                '--start' => $start_lsn,
-               '--end' => $end_lsn);
-       push @cmd, @opts;
-       $result = IPC::Run::run \@cmd, '>', \$stdout, '2>', \$stderr;
+               '--end' => $end_lsn,
+               @opts
+         ],
+         '>' => \$stdout,
+         '2>' => \$stderr;
        ok($result, "pg_waldump @opts: runs ok");
        is($stderr, '', "pg_waldump @opts: no stderr");
-       @lines = split /\n/, $stdout;
+       my @lines = split /\n/, $stdout;
        ok(@lines > 0, "pg_waldump @opts: some lines are output");
        return @lines;
 }
index 8816af17ac146a2596b2a6f812ba9d346093a7f5..7dd78940300328b7fc5e869bfe67cd7be17befee 100644 (file)
@@ -213,7 +213,7 @@ my $nthreads = 2;
 
 {
        my ($stderr);
-       run_log([ 'pgbench', '--jobs' => '2', '--bad-option' ], '2>', \$stderr);
+       run_log([ 'pgbench', '--jobs' => '2', '--bad-option' ], '2>' => \$stderr);
        $nthreads = 1 if $stderr =~ m/threads are not supported on this platform/;
 }
 
index ea6677f90e1ee70c2140b64cacd2ea3250537af3..f975c73dd758a257dba462b9499581613d4d9de3 100644 (file)
@@ -50,7 +50,7 @@ sub pgbench_scripts
                        # cleanup from prior runs
                        unlink $filename;
                        append_to_file($filename, $$files{$fn});
-                       push @cmd, '-f', $filename;
+                       push @cmd, '--file' => $filename;
                }
        }
        command_checks_all(\@cmd, $stat, $out, $err, $name);
index 3170bc86856028aa837f80931c20d4780d3302a3..dca34ac975aa6cb5aa7cb3c3f73a1674e9a493cd 100644 (file)
@@ -52,8 +52,9 @@ foreach my $arg (qw(commands variables))
        my ($stdout, $stderr);
        my $result;
 
-       $result = IPC::Run::run [ 'psql', "--help=$arg" ], '>', \$stdout, '2>',
-         \$stderr;
+       $result = IPC::Run::run [ 'psql', "--help=$arg" ],
+         '>' => \$stdout,
+         '2>' => \$stderr;
        ok($result, "psql --help=$arg exit code 0");
        isnt($stdout, '', "psql --help=$arg goes to stdout");
        is($stderr, '', "psql --help=$arg nothing to stderr");
index a40f86293f2f382e41bbd5ad22bdf7e43fb7eb9c..154a24bca98c79db70664b0ae430c544f92f8ff6 100644 (file)
@@ -22,8 +22,13 @@ $node->start;
 local %ENV = $node->_get_env();
 
 my ($stdin, $stdout, $stderr);
-my $h = IPC::Run::start([ 'psql', '-X', '-v', 'ON_ERROR_STOP=1' ],
-       \$stdin, \$stdout, \$stderr);
+my $h = IPC::Run::start(
+       [
+               'psql', '--no-psqlrc', '--set' => 'ON_ERROR_STOP=1',
+       ],
+       '<' => \$stdin,
+       '>' => \$stdout,
+       '2>' => \$stderr);
 
 # Send sleep command and wait until the server has registered it
 $stdin = "select pg_sleep($PostgreSQL::Test::Utils::timeout_default);\n";
index ee4944ed18ff18f110d9a4416d9496d962a4c853..b0edcb3be88463c6da7f3eea75f724f33fa1c7ea 100644 (file)
@@ -268,8 +268,9 @@ sub test_uri
        %ENV = (%ENV, %envvars);
 
        my $cmd = [ 'libpq_uri_regress', $uri ];
-       $result{exit} = IPC::Run::run $cmd, '>', \$result{stdout}, '2>',
-         \$result{stderr};
+       $result{exit} = IPC::Run::run $cmd,
+         '>' => \$result{stdout},
+         '2>' => \$result{stderr};
 
        chomp($result{stdout});
        chomp($result{stderr});
index c834fa5149af5a9313fef6ae369c9ff7349fd567..f6a453c1b4102860cfdf021624a021eab80b567c 100644 (file)
@@ -673,7 +673,9 @@ sub connect_test
        my ($ret, $stdout, $stderr) = $node->psql(
                'postgres',
                '',
-               extra_params => [ '-w', '-c', 'SELECT current_enc()' ],
+               extra_params => [
+                       '--no-password', '--command' => 'SELECT current_enc()',
+               ],
                connstr => "$connstr_full",
                on_error_stop => 0);
 
index 69ffd969e10421914340d0212bcdcbca37fcfdde..3b27da6b2375206f4e81f8b75c4f651d15ba0b24 100644 (file)
@@ -57,7 +57,7 @@ $primary->restart;
 $primary->append_conf('postgresql.conf', 'track_commit_timestamp = off');
 $primary->restart;
 
-system_or_bail('pg_ctl', '-D', $standby->data_dir, 'promote');
+system_or_bail('pg_ctl', '--pgdata' => $standby->data_dir, 'promote');
 
 $standby->safe_psql('postgres', "create table t11()");
 my $standby_ts = $standby->safe_psql('postgres',
index e301c37826459c54ba4cb1b924e638ba6b46a2c9..9691b8504189f7ad03d617dafc43586ba66a54fd 100644 (file)
@@ -35,7 +35,7 @@ mkdir "$PostgreSQL::Test::Utils::tmp_check/traces";
 
 for my $testname (@tests)
 {
-       my @extraargs = ('-r', $numrows);
+       my @extraargs = ('-r' => $numrows);
        my $cmptrace = grep(/^$testname$/,
                qw(simple_pipeline nosync multi_pipelines prepared singlerow
                  pipeline_abort pipeline_idle transaction
@@ -46,7 +46,7 @@ for my $testname (@tests)
          "$PostgreSQL::Test::Utils::tmp_check/traces/$testname.trace";
        if ($cmptrace)
        {
-               push @extraargs, "-t", $traceout;
+               push @extraargs, "-t" => $traceout;
        }
 
        # Execute the test
index 891e7f63e0409e3e50086bfe15e8e16920c3ab97..c16ff257180950aeb41799db33ced611f7de3361 100644 (file)
@@ -62,9 +62,11 @@ like(
 $node->append_conf('postgresql.conf', "ssl_passphrase.passphrase = 'blurfl'");
 
 # try to start the server again
-my $ret =
-  PostgreSQL::Test::Utils::system_log('pg_ctl', '-D', $node->data_dir, '-l',
-       $node->logfile, 'start');
+my $ret = PostgreSQL::Test::Utils::system_log(
+       'pg_ctl',
+       '--pgdata' => $node->data_dir,
+       '--log' => $node->logfile,
+       'start');
 
 
 # with a bad passphrase the server should not start
index 9b2a90b046990585d7c29ae69edb1b784d505858..7116e5b8df67884c06925dfab5fccfab5b291075 100644 (file)
@@ -47,131 +47,149 @@ my %pgdump_runs = (
        binary_upgrade => {
                dump_cmd => [
                        'pg_dump', '--no-sync',
-                       "--file=$tempdir/binary_upgrade.sql", '--schema-only',
-                       '--binary-upgrade', '--dbname=postgres',
+                       '--file' => "$tempdir/binary_upgrade.sql",
+                       '--schema-only', '--binary-upgrade',
+                       '--dbname' => 'postgres',
                ],
        },
        clean => {
                dump_cmd => [
-                       'pg_dump', "--file=$tempdir/clean.sql",
-                       '-c', '--no-sync',
-                       '--dbname=postgres',
+                       'pg_dump', '--no-sync',
+                       '--file' => "$tempdir/clean.sql",
+                       '--clean',
+                       '--dbname' => 'postgres',
                ],
        },
        clean_if_exists => {
                dump_cmd => [
-                       'pg_dump',
-                       '--no-sync',
-                       "--file=$tempdir/clean_if_exists.sql",
-                       '-c',
+                       'pg_dump', '--no-sync',
+                       '--file' => "$tempdir/clean_if_exists.sql",
+                       '--clean',
                        '--if-exists',
-                       '--encoding=UTF8',    # no-op, just tests that option is accepted
+                       '--encoding' => 'UTF8',    # no-op, just tests that it is accepted
                        'postgres',
                ],
        },
        createdb => {
                dump_cmd => [
-                       'pg_dump',
-                       '--no-sync',
-                       "--file=$tempdir/createdb.sql",
-                       '-C',
-                       '-R',                 # no-op, just for testing
+                       'pg_dump', '--no-sync',
+                       '--file' => "$tempdir/createdb.sql",
+                       '--create',
+                       '--no-reconnect',          # no-op, just for testing
                        'postgres',
                ],
        },
        data_only => {
                dump_cmd => [
-                       'pg_dump',
-                       '--no-sync',
-                       "--file=$tempdir/data_only.sql",
-                       '-a',
-                       '-v',                 # no-op, just make sure it works
+                       'pg_dump', '--no-sync',
+                       '--file' => "$tempdir/data_only.sql",
+                       '--data-only',
+                       '--verbose',               # no-op, just make sure it works
                        'postgres',
                ],
        },
        defaults => {
-               dump_cmd => [ 'pg_dump', '-f', "$tempdir/defaults.sql", 'postgres', ],
+               dump_cmd => [
+                       'pg_dump',
+                       '--file' => "$tempdir/defaults.sql",
+                       'postgres',
+               ],
        },
        defaults_custom_format => {
                test_key => 'defaults',
                compile_option => 'gzip',
                dump_cmd => [
-                       'pg_dump', '--no-sync', '-Fc', '-Z6',
-                       "--file=$tempdir/defaults_custom_format.dump", 'postgres',
+                       'pg_dump', '--no-sync',
+                       '--format' => 'custom',
+                       '--compress' => 6,
+                       '--file' => "$tempdir/defaults_custom_format.dump",
+                       'postgres',
                ],
                restore_cmd => [
                        'pg_restore',
-                       "--file=$tempdir/defaults_custom_format.sql",
+                       '--file' => "$tempdir/defaults_custom_format.sql",
                        "$tempdir/defaults_custom_format.dump",
                ],
        },
        defaults_dir_format => {
                test_key => 'defaults',
                dump_cmd => [
-                       'pg_dump', '--no-sync', '-Fd',
-                       "--file=$tempdir/defaults_dir_format", 'postgres',
+                       'pg_dump', '--no-sync',
+                       '--format' => 'directory',
+                       '--file' => "$tempdir/defaults_dir_format",
+                       'postgres',
                ],
                restore_cmd => [
                        'pg_restore',
-                       "--file=$tempdir/defaults_dir_format.sql",
+                       '--file' => "$tempdir/defaults_dir_format.sql",
                        "$tempdir/defaults_dir_format",
                ],
        },
        defaults_parallel => {
                test_key => 'defaults',
                dump_cmd => [
-                       'pg_dump', '--no-sync', '-Fd', '-j2',
-                       "--file=$tempdir/defaults_parallel", 'postgres',
+                       'pg_dump', '--no-sync',
+                       '--format' => 'directory',
+                       '--jobs' => 2,
+                       '--file' => "$tempdir/defaults_parallel",
+                       'postgres',
                ],
                restore_cmd => [
                        'pg_restore',
-                       "--file=$tempdir/defaults_parallel.sql",
+                       '--file' => "$tempdir/defaults_parallel.sql",
                        "$tempdir/defaults_parallel",
                ],
        },
        defaults_tar_format => {
                test_key => 'defaults',
                dump_cmd => [
-                       'pg_dump', '--no-sync', '-Ft',
-                       "--file=$tempdir/defaults_tar_format.tar", 'postgres',
+                       'pg_dump', '--no-sync',
+                       '--format' => 'tar',
+                       '--file' => "$tempdir/defaults_tar_format.tar",
+                       'postgres',
                ],
                restore_cmd => [
                        'pg_restore',
-                       "--file=$tempdir/defaults_tar_format.sql",
+                       '--file' => "$tempdir/defaults_tar_format.sql",
                        "$tempdir/defaults_tar_format.tar",
                ],
        },
        exclude_table => {
                dump_cmd => [
                        'pg_dump',
-                       '--exclude-table=regress_table_dumpable',
-                       "--file=$tempdir/exclude_table.sql",
+                       '--exclude-table' => 'regress_table_dumpable',
+                       '--file' => "$tempdir/exclude_table.sql",
                        'postgres',
                ],
        },
        extension_schema => {
                dump_cmd => [
-                       'pg_dump', '--schema=public',
-                       "--file=$tempdir/extension_schema.sql", 'postgres',
+                       'pg_dump',
+                       '--schema' => 'public',
+                       '--file' => "$tempdir/extension_schema.sql",
+                       'postgres',
                ],
        },
        pg_dumpall_globals => {
                dump_cmd => [
                        'pg_dumpall', '--no-sync',
-                       "--file=$tempdir/pg_dumpall_globals.sql", '-g',
+                       '--file' => "$tempdir/pg_dumpall_globals.sql",
+                       '--globals-only',
                ],
        },
        no_privs => {
                dump_cmd => [
                        'pg_dump', '--no-sync',
-                       "--file=$tempdir/no_privs.sql", '-x',
+                       '--file' => "$tempdir/no_privs.sql",
+                       '--no-privileges',
                        'postgres',
                ],
        },
        no_owner => {
                dump_cmd => [
                        'pg_dump', '--no-sync',
-                       "--file=$tempdir/no_owner.sql", '-O',
+                       '--file' => "$tempdir/no_owner.sql",
+                       '--no-owner',
                        'postgres',
                ],
        },
@@ -181,59 +199,68 @@ my %pgdump_runs = (
        privileged_internals => {
                dump_cmd => [
                        'pg_dump', '--no-sync',
-                       "--file=$tempdir/privileged_internals.sql",
+                       '--file' => "$tempdir/privileged_internals.sql",
                        # these two tables are irrelevant to the test case
-                       '--exclude-table=regress_pg_dump_schema.external_tab',
-                       '--exclude-table=regress_pg_dump_schema.extdependtab',
-                       '--username=regress_dump_login_role', 'postgres',
+                       '--exclude-table' => 'regress_pg_dump_schema.external_tab',
+                       '--exclude-table' => 'regress_pg_dump_schema.extdependtab',
+                       '--username' => 'regress_dump_login_role',
+                       'postgres',
                ],
        },
 
        schema_only => {
                dump_cmd => [
-                       'pg_dump', '--no-sync', "--file=$tempdir/schema_only.sql",
-                       '-s', 'postgres',
+                       'pg_dump', '--no-sync',
+                       '--file' => "$tempdir/schema_only.sql",
+                       '--schema-only', 'postgres',
                ],
        },
        section_pre_data => {
                dump_cmd => [
                        'pg_dump', '--no-sync',
-                       "--file=$tempdir/section_pre_data.sql", '--section=pre-data',
+                       '--file' => "$tempdir/section_pre_data.sql",
+                       '--section' => 'pre-data',
                        'postgres',
                ],
        },
        section_data => {
                dump_cmd => [
                        'pg_dump', '--no-sync',
-                       "--file=$tempdir/section_data.sql", '--section=data',
+                       '--file' => "$tempdir/section_data.sql",
+                       '--section' => 'data',
                        'postgres',
                ],
        },
        section_post_data => {
                dump_cmd => [
-                       'pg_dump', '--no-sync', "--file=$tempdir/section_post_data.sql",
-                       '--section=post-data', 'postgres',
+                       'pg_dump', '--no-sync',
+                       '--file' => "$tempdir/section_post_data.sql",
+                       '--section' => 'post-data',
+                       'postgres',
                ],
        },
        with_extension => {
                dump_cmd => [
-                       'pg_dump', '--no-sync', "--file=$tempdir/with_extension.sql",
-                       '--extension=test_pg_dump', 'postgres',
+                       'pg_dump', '--no-sync',
+                       '--file' => "$tempdir/with_extension.sql",
+                       '--extension' => 'test_pg_dump',
+                       'postgres',
                ],
        },
        exclude_extension => {
                dump_cmd => [
                        'pg_dump', '--no-sync',
-                       "--file=$tempdir/exclude_extension.sql",
-                       '--exclude-extension=test_pg_dump', 'postgres',
+                       '--file' => "$tempdir/exclude_extension.sql",
+                       '--exclude-extension' => 'test_pg_dump',
+                       'postgres',
                ],
        },
        exclude_extension_filter => {
                dump_cmd => [
                        'pg_dump',
                        '--no-sync',
-                       "--file=$tempdir/exclude_extension_filter.sql",
-                       "--filter=$tempdir/exclude_extension_filter.txt",
+                       '--file' => "$tempdir/exclude_extension_filter.sql",
+                       '--filter' => "$tempdir/exclude_extension_filter.txt",
                        'postgres',
                ],
        },
@@ -241,8 +268,10 @@ my %pgdump_runs = (
        # plpgsql in the list blocks the dump of extension test_pg_dump
        without_extension => {
                dump_cmd => [
-                       'pg_dump', '--no-sync', "--file=$tempdir/without_extension.sql",
-                       '--extension=plpgsql', 'postgres',
+                       'pg_dump', '--no-sync',
+                       '--file' => "$tempdir/without_extension.sql",
+                       '--extension' => 'plpgsql',
+                       'postgres',
                ],
        },
 
@@ -253,9 +282,9 @@ my %pgdump_runs = (
                dump_cmd => [
                        'pg_dump',
                        '--no-sync',
-                       "--file=$tempdir/without_extension_explicit_schema.sql",
-                       '--extension=plpgsql',
-                       '--schema=public',
+                       '--file' => "$tempdir/without_extension_explicit_schema.sql",
+                       '--extension' => 'plpgsql',
+                       '--schema' => 'public',
                        'postgres',
                ],
        },
@@ -267,9 +296,9 @@ my %pgdump_runs = (
                dump_cmd => [
                        'pg_dump',
                        '--no-sync',
-                       "--file=$tempdir/without_extension_internal_schema.sql",
-                       '--extension=plpgsql',
-                       '--schema=regress_pg_dump_schema',
+                       '--file' => "$tempdir/without_extension_internal_schema.sql",
+                       '--extension' => 'plpgsql',
+                       '--schema' => 'regress_pg_dump_schema',
                        'postgres',
                ],
        },);
@@ -840,7 +869,7 @@ my %tests = (
 # Create a PG instance to test actually dumping from
 
 my $node = PostgreSQL::Test::Cluster->new('main');
-$node->init('auth_extra' => [ '--create-role', 'regress_dump_login_role' ]);
+$node->init('auth_extra' => [ '--create-role' => 'regress_dump_login_role' ]);
 $node->start;
 
 my $port = $node->port;
index c611a61cf4e63325ece117315f024c9c0b76539c..60bbd5dd445b3070db11a4bad5d6d2be4acb3f34 100644 (file)
@@ -108,14 +108,17 @@ sub new
        if ($interactive)
        {
                $run = IPC::Run::start $psql_params,
-                 '<pty<', \$psql->{stdin}, '>pty>', \$psql->{stdout}, '2>',
-                 \$psql->{stderr},
+                 '<pty<' => \$psql->{stdin},
+                 '>pty>' => \$psql->{stdout},
+                 '2>' => \$psql->{stderr},
                  $psql->{timeout};
        }
        else
        {
                $run = IPC::Run::start $psql_params,
-                 '<', \$psql->{stdin}, '>', \$psql->{stdout}, '2>', \$psql->{stderr},
+                 '<' => \$psql->{stdin},
+                 '>' => \$psql->{stdout},
+                 '2>' => \$psql->{stderr},
                  $psql->{timeout};
        }
 
index b105cba05a6bcc53dfeacac91d69538cdb51e0cc..0750915a9a84a53126b8d104aa19071ad48a0ea8 100644 (file)
@@ -640,8 +640,11 @@ sub init
                or !defined $ENV{INITDB_TEMPLATE})
        {
                note("initializing database system by running initdb");
-               PostgreSQL::Test::Utils::system_or_bail('initdb', '-D', $pgdata, '-A',
-                       'trust', '-N', @{ $params{extra} });
+               PostgreSQL::Test::Utils::system_or_bail(
+                       'initdb', '--no-sync',
+                       '--pgdata' => $pgdata,
+                       '--auth' => 'trust',
+                       @{ $params{extra} });
        }
        else
        {
@@ -838,11 +841,11 @@ sub backup
 
        print "# Taking pg_basebackup $backup_name from node \"$name\"\n";
        PostgreSQL::Test::Utils::system_or_bail(
-               'pg_basebackup', '-D',
-               $backup_path, '-h',
-               $self->host, '-p',
-               $self->port, '--checkpoint',
-               'fast', '--no-sync',
+               'pg_basebackup', '--no-sync',
+               '--pgdata' => $backup_path,
+               '--host' => $self->host,
+               '--port' => $self->port,
+               '--checkpoint' => 'fast',
                @{ $params{backup_options} });
        print "# Backup finished\n";
        return;
@@ -946,7 +949,7 @@ sub init_from_backup
                }
 
                local %ENV = $self->_get_env();
-               my @combineargs = ('pg_combinebackup', '-d');
+               my @combineargs = ('pg_combinebackup', '--debug');
                if (exists $params{tablespace_map})
                {
                        while (my ($olddir, $newdir) = each %{ $params{tablespace_map} })
@@ -959,19 +962,21 @@ sub init_from_backup
                {
                        push @combineargs, $params{combine_mode};
                }
-               push @combineargs, @prior_backup_path, $backup_path, '-o', $data_path;
+               push @combineargs, @prior_backup_path, $backup_path,
+                 '--output' => $data_path;
                PostgreSQL::Test::Utils::system_or_bail(@combineargs);
        }
        elsif (defined $params{tar_program})
        {
                mkdir($data_path) || die "mkdir $data_path: $!";
-               PostgreSQL::Test::Utils::system_or_bail($params{tar_program}, 'xf',
-                       $backup_path . '/base.tar',
-                       '-C', $data_path);
                PostgreSQL::Test::Utils::system_or_bail(
-                       $params{tar_program}, 'xf',
-                       $backup_path . '/pg_wal.tar', '-C',
-                       $data_path . '/pg_wal');
+                       $params{tar_program},
+                       'xf' => $backup_path . '/base.tar',
+                       '-C' => $data_path);
+               PostgreSQL::Test::Utils::system_or_bail(
+                       $params{tar_program},
+                       'xf' => $backup_path . '/pg_wal.tar',
+                       '-C' => $data_path . '/pg_wal');
 
                # We need to generate a tablespace_map file.
                open(my $tsmap, ">", "$data_path/tablespace_map")
@@ -991,9 +996,10 @@ sub init_from_backup
                        my $newdir = $params{tablespace_map}{$tsoid};
 
                        mkdir($newdir) || die "mkdir $newdir: $!";
-                       PostgreSQL::Test::Utils::system_or_bail($params{tar_program},
-                               'xf', $backup_path . '/' . $tstar,
-                               '-C', $newdir);
+                       PostgreSQL::Test::Utils::system_or_bail(
+                               $params{tar_program},
+                               'xf' => $backup_path . '/' . $tstar,
+                               '-C' => $newdir);
 
                        my $escaped_newdir = $newdir;
                        $escaped_newdir =~ s/\\/\\\\/g;
@@ -1133,8 +1139,10 @@ sub start
        # -w is now the default but having it here does no harm and helps
        # compatibility with older versions.
        $ret = PostgreSQL::Test::Utils::system_log(
-               'pg_ctl', '-w', '-D', $self->data_dir,
-               '-l', $self->logfile, '-o', "--cluster-name=$name",
+               'pg_ctl', '--wait',
+               '--pgdata' => $self->data_dir,
+               '--log' => $self->logfile,
+               '--options' => "--cluster-name=$name",
                'start');
 
        if ($ret != 0)
@@ -1211,10 +1219,10 @@ sub stop
        return 1 unless defined $self->{_pid};
 
        print "### Stopping node \"$name\" using mode $mode\n";
-       my @cmd = ('pg_ctl', '-D', $pgdata, '-m', $mode, 'stop');
+       my @cmd = ('pg_ctl', '--pgdata' => $pgdata, '--mode' => $mode, 'stop');
        if ($params{timeout})
        {
-               push(@cmd, ('--timeout', $params{timeout}));
+               push(@cmd, ('--timeout' => $params{timeout}));
        }
        $ret = PostgreSQL::Test::Utils::system_log(@cmd);
 
@@ -1251,7 +1259,9 @@ sub reload
        local %ENV = $self->_get_env();
 
        print "### Reloading node \"$name\"\n";
-       PostgreSQL::Test::Utils::system_or_bail('pg_ctl', '-D', $pgdata,
+       PostgreSQL::Test::Utils::system_or_bail(
+               'pg_ctl',
+               '--pgdata' => $pgdata,
                'reload');
        return;
 }
@@ -1279,8 +1289,11 @@ sub restart
 
        # -w is now the default but having it here does no harm and helps
        # compatibility with older versions.
-       $ret = PostgreSQL::Test::Utils::system_log('pg_ctl', '-w', '-D',
-               $self->data_dir, '-l', $self->logfile, 'restart');
+       $ret = PostgreSQL::Test::Utils::system_log(
+               'pg_ctl', '--wait',
+               '--pgdata' => $self->data_dir,
+               '--log' => $self->logfile,
+               'restart');
 
        if ($ret != 0)
        {
@@ -1318,8 +1331,11 @@ sub promote
        local %ENV = $self->_get_env();
 
        print "### Promoting node \"$name\"\n";
-       PostgreSQL::Test::Utils::system_or_bail('pg_ctl', '-D', $pgdata, '-l',
-               $logfile, 'promote');
+       PostgreSQL::Test::Utils::system_or_bail(
+               'pg_ctl',
+               '--pgdata' => $pgdata,
+               '--log' => $logfile,
+               'promote');
        return;
 }
 
@@ -1342,8 +1358,11 @@ sub logrotate
        local %ENV = $self->_get_env();
 
        print "### Rotating log in node \"$name\"\n";
-       PostgreSQL::Test::Utils::system_or_bail('pg_ctl', '-D', $pgdata, '-l',
-               $logfile, 'logrotate');
+       PostgreSQL::Test::Utils::system_or_bail(
+               'pg_ctl',
+               '--pgdata' => $pgdata,
+               '--log' => $logfile,
+               'logrotate');
        return;
 }
 
@@ -2120,7 +2139,9 @@ sub psql
 
        my @psql_params = (
                $self->installed_command('psql'),
-               '-XAtq', '-d', $psql_connstr, '-f', '-');
+               '--no-psqlrc', '--no-align', '--tuples-only', '--quiet',
+               '--dbname' => $psql_connstr,
+               '--file' => '-');
 
        # If the caller wants an array and hasn't passed stdout/stderr
        # references, allocate temporary ones to capture them so we
@@ -2142,7 +2163,8 @@ sub psql
        $params{on_error_stop} = 1 unless defined $params{on_error_stop};
        $params{on_error_die} = 0 unless defined $params{on_error_die};
 
-       push @psql_params, '-v', 'ON_ERROR_STOP=1' if $params{on_error_stop};
+       push @psql_params, '--variable' => 'ON_ERROR_STOP=1'
+         if $params{on_error_stop};
        push @psql_params, @{ $params{extra_params} }
          if defined $params{extra_params};
 
@@ -2168,9 +2190,9 @@ sub psql
        {
                local $@;
                eval {
-                       my @ipcrun_opts = (\@psql_params, '<', \$sql);
-                       push @ipcrun_opts, '>', $stdout if defined $stdout;
-                       push @ipcrun_opts, '2>', $stderr if defined $stderr;
+                       my @ipcrun_opts = (\@psql_params, '<' => \$sql);
+                       push @ipcrun_opts, '>' => $stdout if defined $stdout;
+                       push @ipcrun_opts, '2>' => $stderr if defined $stderr;
                        push @ipcrun_opts, $timeout if defined $timeout;
 
                        IPC::Run::run @ipcrun_opts;
@@ -2325,13 +2347,16 @@ sub background_psql
 
        my @psql_params = (
                $self->installed_command('psql'),
-               '-XAtq', '-d', $psql_connstr, '-f', '-');
+               '--no-psqlrc', '--no-align',
+               '--tuples-only', '--quiet',
+               '--dbname' => $psql_connstr,
+               '--file' => '-');
 
        $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, '--set' => 'ON_ERROR_STOP=1' if $params{on_error_stop};
        push @psql_params, @{ $params{extra_params} }
          if defined $params{extra_params};
 
@@ -2402,7 +2427,8 @@ sub interactive_psql
 
        my @psql_params = (
                $self->installed_command('psql'),
-               '-XAt', '-d', $self->connstr($dbname));
+               '--no-psqlrc', '--no-align', '--tuples-only',
+               '--dbname' => $self->connstr($dbname));
 
        push @psql_params, @{ $params{extra_params} }
          if defined $params{extra_params};
@@ -2424,7 +2450,7 @@ sub _pgbench_make_files
                for my $fn (sort keys %$files)
                {
                        my $filename = $self->basedir . '/' . $fn;
-                       push @file_opts, '-f', $filename;
+                       push @file_opts, '--file' => $filename;
 
                        # cleanup file weight
                        $filename =~ s/\@\d+$//;
@@ -2650,8 +2676,9 @@ sub poll_query_until
        $expected = 't' unless defined($expected);    # default value
 
        my $cmd = [
-               $self->installed_command('psql'), '-XAt',
-               '-d', $self->connstr($dbname)
+               $self->installed_command('psql'), '--no-psqlrc',
+               '--no-align', '--tuples-only',
+               '--dbname' => $self->connstr($dbname)
        ];
        my ($stdout, $stderr);
        my $max_attempts = 10 * $PostgreSQL::Test::Utils::timeout_default;
@@ -2659,8 +2686,10 @@ sub poll_query_until
 
        while ($attempts < $max_attempts)
        {
-               my $result = IPC::Run::run $cmd, '<', \$query,
-                 '>', \$stdout, '2>', \$stderr;
+               my $result = IPC::Run::run $cmd,
+                 '<' => \$query,
+                 '>' => \$stdout,
+                 '2>' => \$stderr;
 
                chomp($stdout);
                chomp($stderr);
@@ -3534,15 +3563,17 @@ sub pg_recvlogical_upto
 
        my @cmd = (
                $self->installed_command('pg_recvlogical'),
-               '-S', $slot_name, '--dbname', $self->connstr($dbname));
-       push @cmd, '--endpos', $endpos;
-       push @cmd, '-f', '-', '--no-loop', '--start';
+               '--slot' => $slot_name,
+               '--dbname' => $self->connstr($dbname),
+               '--endpos' => $endpos,
+               '--file' => '-',
+               '--no-loop', '--start');
 
        while (my ($k, $v) = each %plugin_options)
        {
                croak "= is not permitted to appear in replication option name"
                  if ($k =~ qr/=/);
-               push @cmd, "-o", "$k=$v";
+               push @cmd, "--option" => "$k=$v";
        }
 
        my $timeout;
@@ -3555,7 +3586,7 @@ sub pg_recvlogical_upto
        {
                local $@;
                eval {
-                       IPC::Run::run(\@cmd, ">", \$stdout, "2>", \$stderr, $timeout);
+                       IPC::Run::run(\@cmd, '>' => \$stdout, '2>' => \$stderr, $timeout);
                        $ret = $?;
                };
                my $exc_save = $@;
@@ -3669,15 +3700,14 @@ sub create_logical_slot_on_standby
 
        $handle = IPC::Run::start(
                [
-                       'pg_recvlogical', '-d',
-                       $self->connstr($dbname), '-P',
-                       'test_decoding', '-S',
-                       $slot_name, '--create-slot'
+                       'pg_recvlogical',
+                       '--dbname' => $self->connstr($dbname),
+                       '--plugin' => 'test_decoding',
+                       '--slot' => $slot_name,
+                       '--create-slot'
                ],
-               '>',
-               \$stdout,
-               '2>',
-               \$stderr);
+               '>' => \$stdout,
+               '2>' => \$stderr);
 
        # Arrange for the xl_running_xacts record for which pg_recvlogical is
        # waiting.
index 118ea1e103ea9c8ff0f9d86bd275d37804a235b3..b72dd2fbaf4144692515edb0c6660e249a1b9932 100644 (file)
@@ -104,7 +104,7 @@ sub new
        my ($host, $hostaddr, $realm) = @_;
 
        my ($stdout, $krb5_version);
-       run_log [ $krb5_config, '--version' ], '>', \$stdout
+       run_log [ $krb5_config, '--version' ], '>' => \$stdout
          or BAIL_OUT("could not execute krb5-config");
        BAIL_OUT("Heimdal is not supported") if $stdout =~ m/heimdal/;
        $stdout =~ m/Kerberos 5 release ([0-9]+\.[0-9]+)/
index efe0321a4efd2418922043229d8022bb82b38754..d1ad131eadfa809ccffe1fbea1396380651c1c49 100644 (file)
@@ -20,7 +20,7 @@ PostgreSQL::Test::Utils - helper module for writing PostgreSQL's C<prove> tests.
   command_fails(['initdb', '--invalid-option'],
               'command fails with invalid option');
   my $tempdir = PostgreSQL::Test::Utils::tempdir;
-  command_ok('initdb', '-D', $tempdir);
+  command_ok('initdb', '--pgdata' => $tempdir);
 
   # Miscellanea
   print "on Windows" if $PostgreSQL::Test::Utils::windows_os;
@@ -333,7 +333,7 @@ sub has_wal_read_bug
        return
                 $Config{osname} eq 'linux'
          && $Config{archname} =~ /^sparc/
-         && !run_log([ qw(df -x ext4), $tmp_check ], '>', '/dev/null', '2>&1');
+         && !run_log([ qw(df -x ext4), $tmp_check ], '&>' => '/dev/null');
 }
 
 =pod
@@ -419,7 +419,7 @@ sub run_command
 {
        my ($cmd) = @_;
        my ($stdout, $stderr);
-       my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr;
+       my $result = IPC::Run::run $cmd, '>' => \$stdout, '2>' => \$stderr;
        chomp($stdout);
        chomp($stderr);
        return ($stdout, $stderr);
@@ -723,8 +723,9 @@ sub scan_server_header
        my ($header_path, $regexp) = @_;
 
        my ($stdout, $stderr);
-       my $result = IPC::Run::run [ 'pg_config', '--includedir-server' ], '>',
-         \$stdout, '2>', \$stderr
+       my $result = IPC::Run::run [ 'pg_config', '--includedir-server' ],
+         '>' => \$stdout,
+         '2>' => \$stderr
          or die "could not execute pg_config";
        chomp($stdout);
        $stdout =~ s/\r$//;
@@ -761,8 +762,9 @@ sub check_pg_config
 {
        my ($regexp) = @_;
        my ($stdout, $stderr);
-       my $result = IPC::Run::run [ 'pg_config', '--includedir' ], '>',
-         \$stdout, '2>', \$stderr
+       my $result = IPC::Run::run [ 'pg_config', '--includedir' ],
+         '>' => \$stdout,
+         '2>' => \$stderr
          or die "could not execute pg_config";
        chomp($stdout);
        $stdout =~ s/\r$//;
@@ -925,8 +927,9 @@ sub program_help_ok
        my ($cmd) = @_;
        my ($stdout, $stderr);
        print("# Running: $cmd --help\n");
-       my $result = IPC::Run::run [ $cmd, '--help' ], '>', \$stdout, '2>',
-         \$stderr;
+       my $result = IPC::Run::run [ $cmd, '--help' ],
+         '>' => \$stdout,
+         '2>' => \$stderr;
        ok($result, "$cmd --help exit code 0");
        isnt($stdout, '', "$cmd --help goes to stdout");
        is($stderr, '', "$cmd --help nothing to stderr");
@@ -956,8 +959,9 @@ sub program_version_ok
        my ($cmd) = @_;
        my ($stdout, $stderr);
        print("# Running: $cmd --version\n");
-       my $result = IPC::Run::run [ $cmd, '--version' ], '>', \$stdout, '2>',
-         \$stderr;
+       my $result = IPC::Run::run [ $cmd, '--version' ],
+         '>' => \$stdout,
+         '2>' => \$stderr;
        ok($result, "$cmd --version exit code 0");
        isnt($stdout, '', "$cmd --version goes to stdout");
        is($stderr, '', "$cmd --version nothing to stderr");
@@ -979,9 +983,9 @@ sub program_options_handling_ok
        my ($cmd) = @_;
        my ($stdout, $stderr);
        print("# Running: $cmd --not-a-valid-option\n");
-       my $result = IPC::Run::run [ $cmd, '--not-a-valid-option' ], '>',
-         \$stdout,
-         '2>', \$stderr;
+       my $result = IPC::Run::run [ $cmd, '--not-a-valid-option' ],
+         '>' => \$stdout,
+         '2>' => \$stderr;
        ok(!$result, "$cmd with invalid option nonzero exit code");
        isnt($stderr, '', "$cmd with invalid option prints error message");
        return;
@@ -1002,7 +1006,7 @@ sub command_like
        my ($cmd, $expected_stdout, $test_name) = @_;
        my ($stdout, $stderr);
        print("# Running: " . join(" ", @{$cmd}) . "\n");
-       my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr;
+       my $result = IPC::Run::run $cmd, '>' => \$stdout, '2>' => \$stderr;
        ok($result, "$test_name: exit code 0");
        is($stderr, '', "$test_name: no stderr");
        like($stdout, $expected_stdout, "$test_name: matches");
@@ -1031,7 +1035,7 @@ sub command_like_safe
        my $stdoutfile = File::Temp->new();
        my $stderrfile = File::Temp->new();
        print("# Running: " . join(" ", @{$cmd}) . "\n");
-       my $result = IPC::Run::run $cmd, '>', $stdoutfile, '2>', $stderrfile;
+       my $result = IPC::Run::run $cmd, '>' => $stdoutfile, '2>' => $stderrfile;
        $stdout = slurp_file($stdoutfile);
        $stderr = slurp_file($stderrfile);
        ok($result, "$test_name: exit code 0");
@@ -1055,7 +1059,7 @@ sub command_fails_like
        my ($cmd, $expected_stderr, $test_name) = @_;
        my ($stdout, $stderr);
        print("# Running: " . join(" ", @{$cmd}) . "\n");
-       my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr;
+       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;
@@ -1093,7 +1097,7 @@ sub command_checks_all
        # run command
        my ($stdout, $stderr);
        print("# Running: " . join(" ", @{$cmd}) . "\n");
-       IPC::Run::run($cmd, '>', \$stdout, '2>', \$stderr);
+       IPC::Run::run($cmd, '>' => \$stdout, '2>' => \$stderr);
 
        # See http://perldoc.perl.org/perlvar.html#%24CHILD_ERROR
        my $ret = $?;
index fb89a76c00522c4d99fb078a759da825bc336c50..85f5ef03dec0934320be8ce1d6c6616bcf171051 100644 (file)
@@ -14,7 +14,8 @@ use Test::More;
 my $node = PostgreSQL::Test::Cluster->new('primary');
 $node->init(
        'auth_extra' => [
-               '--create-role', 'regress_regular,regress_reserved,regress_superuser'
+               '--create-role' =>
+                 'regress_regular,regress_reserved,regress_superuser',
        ]);
 $node->append_conf('postgresql.conf', "max_connections = 6");
 $node->append_conf('postgresql.conf', "reserved_connections = 2");
@@ -43,7 +44,7 @@ sub background_psql_as_user
        return $node->background_psql(
                'postgres',
                on_error_die => 1,
-               extra_params => [ '-U', $user ]);
+               extra_params => [ '--username' => $user ]);
 }
 
 # Like connect_fails(), except that we also wait for the failed backend to
index 3945f00ab88474f5a134a51e3b701eca7b2b8fc3..ccd8417d449f9d8b390ab54667f71e3a9827a73e 100644 (file)
@@ -14,7 +14,7 @@ my $node_primary = PostgreSQL::Test::Cluster->new('primary');
 # and it needs proper authentication configuration.
 $node_primary->init(
        allows_streaming => 1,
-       auth_extra => [ '--create-role', 'repl_role' ]);
+       auth_extra => [ '--create-role' => 'repl_role' ]);
 $node_primary->start;
 my $backup_name = 'my_backup';
 
@@ -146,9 +146,13 @@ sub test_target_session_attrs
        # we connected to.  Note we must pass the SQL command via the command
        # line not stdin, else Perl may spit up trying to write to stdin of
        # an already-failed psql process.
-       my ($ret, $stdout, $stderr) =
-         $node1->psql('postgres', undef,
-               extra_params => [ '-d', $connstr, '-c', 'SHOW port;' ]);
+       my ($ret, $stdout, $stderr) = $node1->psql(
+               'postgres',
+               undef,
+               extra_params => [
+                       '--dbname' => $connstr,
+                       '--command' => 'SHOW port;',
+               ]);
        if ($status == 0)
        {
                is( $status == $ret && $stdout eq $target_port,
@@ -257,26 +261,26 @@ my $connstr_db = "$connstr_common replication=database dbname=postgres";
 my ($ret, $stdout, $stderr) = $node_primary->psql(
        'postgres', 'SHOW ALL;',
        on_error_die => 1,
-       extra_params => [ '-d', $connstr_rep ]);
+       extra_params => [ '--dbname' => $connstr_rep ]);
 ok($ret == 0, "SHOW ALL with replication role and physical replication");
 ($ret, $stdout, $stderr) = $node_primary->psql(
        'postgres', 'SHOW ALL;',
        on_error_die => 1,
-       extra_params => [ '-d', $connstr_db ]);
+       extra_params => [ '--dbname' => $connstr_db ]);
 ok($ret == 0, "SHOW ALL with replication role and logical replication");
 
 # Test SHOW with a user-settable parameter
 ($ret, $stdout, $stderr) = $node_primary->psql(
        'postgres', 'SHOW work_mem;',
        on_error_die => 1,
-       extra_params => [ '-d', $connstr_rep ]);
+       extra_params => [ '--dbname' => $connstr_rep ]);
 ok( $ret == 0,
        "SHOW with user-settable parameter, replication role and physical replication"
 );
 ($ret, $stdout, $stderr) = $node_primary->psql(
        'postgres', 'SHOW work_mem;',
        on_error_die => 1,
-       extra_params => [ '-d', $connstr_db ]);
+       extra_params => [ '--dbname' => $connstr_db ]);
 ok( $ret == 0,
        "SHOW with user-settable parameter, replication role and logical replication"
 );
@@ -285,14 +289,14 @@ ok( $ret == 0,
 ($ret, $stdout, $stderr) = $node_primary->psql(
        'postgres', 'SHOW primary_conninfo;',
        on_error_die => 1,
-       extra_params => [ '-d', $connstr_rep ]);
+       extra_params => [ '--dbname' => $connstr_rep ]);
 ok( $ret == 0,
        "SHOW with superuser-settable parameter, replication role and physical replication"
 );
 ($ret, $stdout, $stderr) = $node_primary->psql(
        'postgres', 'SHOW primary_conninfo;',
        on_error_die => 1,
-       extra_params => [ '-d', $connstr_db ]);
+       extra_params => [ '--dbname' => $connstr_db ]);
 ok( $ret == 0,
        "SHOW with superuser-settable parameter, replication role and logical replication"
 );
@@ -304,7 +308,7 @@ my $slotname = 'test_read_replication_slot_physical';
 ($ret, $stdout, $stderr) = $node_primary->psql(
        'postgres',
        'READ_REPLICATION_SLOT non_existent_slot;',
-       extra_params => [ '-d', $connstr_rep ]);
+       extra_params => [ '--dbname' => $connstr_rep ]);
 ok($ret == 0, "READ_REPLICATION_SLOT exit code 0 on success");
 like($stdout, qr/^\|\|$/,
        "READ_REPLICATION_SLOT returns NULL values if slot does not exist");
@@ -312,12 +316,12 @@ like($stdout, qr/^\|\|$/,
 $node_primary->psql(
        'postgres',
        "CREATE_REPLICATION_SLOT $slotname PHYSICAL RESERVE_WAL;",
-       extra_params => [ '-d', $connstr_rep ]);
+       extra_params => [ '--dbname' => $connstr_rep ]);
 
 ($ret, $stdout, $stderr) = $node_primary->psql(
        'postgres',
        "READ_REPLICATION_SLOT $slotname;",
-       extra_params => [ '-d', $connstr_rep ]);
+       extra_params => [ '--dbname' => $connstr_rep ]);
 ok($ret == 0, "READ_REPLICATION_SLOT success with existing slot");
 like($stdout, qr/^physical\|[^|]*\|1$/,
        "READ_REPLICATION_SLOT returns tuple with slot information");
@@ -325,7 +329,7 @@ like($stdout, qr/^physical\|[^|]*\|1$/,
 $node_primary->psql(
        'postgres',
        "DROP_REPLICATION_SLOT $slotname;",
-       extra_params => [ '-d', $connstr_rep ]);
+       extra_params => [ '--dbname' => $connstr_rep ]);
 
 note "switching to physical replication slot";
 
@@ -594,16 +598,14 @@ my $sigchld_bb_timeout =
 my ($sigchld_bb_stdin, $sigchld_bb_stdout, $sigchld_bb_stderr) = ('', '', '');
 my $sigchld_bb = IPC::Run::start(
        [
-               'psql', '-X', '-c', "BASE_BACKUP (CHECKPOINT 'fast', MAX_RATE 32);",
-               '-c', 'SELECT pg_backup_stop()',
-               '-d', $connstr
+               'psql', '--no-psqlrc',
+               '--command' => "BASE_BACKUP (CHECKPOINT 'fast', MAX_RATE 32);",
+               '--command' => 'SELECT pg_backup_stop()',
+               '--dbname' => $connstr
        ],
-       '<',
-       \$sigchld_bb_stdin,
-       '>',
-       \$sigchld_bb_stdout,
-       '2>',
-       \$sigchld_bb_stderr,
+       '<' => \$sigchld_bb_stdin,
+       '>' => \$sigchld_bb_stdout,
+       '2>' => \$sigchld_bb_stderr,
        $sigchld_bb_timeout);
 
 # The cancellation is issued once the database files are streamed and
index 9f469101fd44144195fea589b380047dd14e8bcb..a5678bc4dc41d1117d4c429a74a8519e38eab8bd 100644 (file)
@@ -149,8 +149,11 @@ SKIP:
 
        my $pg_recvlogical = IPC::Run::start(
                [
-                       'pg_recvlogical', '-d', $node_primary->connstr('otherdb'),
-                       '-S', 'otherdb_slot', '-f', '-', '--start'
+                       'pg_recvlogical',
+                       '--dbname' => $node_primary->connstr('otherdb'),
+                       '--slot' => 'otherdb_slot',
+                       '--file' => '-',
+                       '--start'
                ]);
        $node_primary->poll_query_until('otherdb',
                "SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NOT NULL)"
index cd848918d0094843774c89fac360a259e2b7055b..4e60806563f2add13f3a6d07494b6910932c42d3 100644 (file)
@@ -34,30 +34,27 @@ $node->safe_psql(
 my ($killme_stdin, $killme_stdout, $killme_stderr) = ('', '', '');
 my $killme = IPC::Run::start(
        [
-               'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
-               $node->connstr('postgres')
+               'psql', '--no-psqlrc', '--quiet', '--no-align', '--tuples-only',
+               '--set' => 'ON_ERROR_STOP=1',
+               '--file' => '-',
+               '--dbname' => $node->connstr('postgres')
        ],
-       '<',
-       \$killme_stdin,
-       '>',
-       \$killme_stdout,
-       '2>',
-       \$killme_stderr,
+       '<' => \$killme_stdin,
+       '>' => \$killme_stdout,
+       '2>' => \$killme_stderr,
        $psql_timeout);
 
 # Need a second psql to check if crash-restart happened.
 my ($monitor_stdin, $monitor_stdout, $monitor_stderr) = ('', '', '');
 my $monitor = IPC::Run::start(
        [
-               'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
-               $node->connstr('postgres')
+               'psql', '--no-psqlrc', '--quiet', '--no-align', '--tuples-only',
+               '--set' => 'ON_ERROR_STOP=1',
+               '--file', '-', '--dbname' => $node->connstr('postgres')
        ],
-       '<',
-       \$monitor_stdin,
-       '>',
-       \$monitor_stdout,
-       '2>',
-       \$monitor_stderr,
+       '<' => \$monitor_stdin,
+       '>' => \$monitor_stdout,
+       '2>' => \$monitor_stderr,
        $psql_timeout);
 
 #create table, insert row that should survive
index e2e85d471fed85678e03638b11481eedb75bf150..c73aa3f0c2c4a165f56f83f4dd41caf35d51b066 100644 (file)
@@ -29,11 +29,11 @@ my $tempdir = PostgreSQL::Test::Utils::tempdir;
 
 # Log "ipcs" diffs on a best-effort basis, swallowing any error.
 my $ipcs_before = "$tempdir/ipcs_before";
-eval { run_log [ 'ipcs', '-am' ], '>', $ipcs_before; };
+eval { run_log [ 'ipcs', '-am' ], '>' => $ipcs_before; };
 
 sub log_ipcs
 {
-       eval { run_log [ 'ipcs', '-am' ], '|', [ 'diff', $ipcs_before, '-' ] };
+       eval { run_log [ 'ipcs', '-am' ], '|' => [ 'diff', $ipcs_before, '-' ] };
        return;
 }
 
@@ -122,15 +122,13 @@ my $slow_query = 'SELECT wait_pid(pg_backend_pid())';
 my ($stdout, $stderr);
 my $slow_client = IPC::Run::start(
        [
-               'psql', '-X', '-qAt', '-d', $gnat->connstr('postgres'),
-               '-c', $slow_query
+               'psql', '--no-psqlrc', '--quiet', '--no-align', '--tuples-only',
+               '--dbname' => $gnat->connstr('postgres'),
+               '--command' => $slow_query
        ],
-       '<',
-       \undef,
-       '>',
-       \$stdout,
-       '2>',
-       \$stderr,
+       '<' => \undef,
+       '>' => \$stdout,
+       '2>' => \$stderr,
        IPC::Run::timeout(5 * $PostgreSQL::Test::Utils::timeout_default));
 ok( $gnat->poll_query_until(
                'postgres',
index 53c0d108a3a2ec19d3bc43b95a195f1149ecfb6c..42740745bfd9f5537c70c8dfc4397a4eef63ad4f 100644 (file)
@@ -38,24 +38,26 @@ my $psql_timeout =
 # to check uncommitted changes being replicated and such.
 my %psql_primary = (stdin => '', stdout => '', stderr => '');
 $psql_primary{run} = IPC::Run::start(
-       [ 'psql', '-XA', '-f', '-', '-d', $node_primary->connstr('postgres') ],
-       '<',
-       \$psql_primary{stdin},
-       '>',
-       \$psql_primary{stdout},
-       '2>',
-       \$psql_primary{stderr},
+       [
+               'psql', '--no-psqlrc', '--no-align',
+               '--file' => '-',
+               '--dbname' => $node_primary->connstr('postgres'),
+       ],
+       '<' => \$psql_primary{stdin},
+       '>' => \$psql_primary{stdout},
+       '2>' => \$psql_primary{stderr},
        $psql_timeout);
 
 my %psql_standby = ('stdin' => '', 'stdout' => '', 'stderr' => '');
 $psql_standby{run} = IPC::Run::start(
-       [ 'psql', '-XA', '-f', '-', '-d', $node_standby->connstr('postgres') ],
-       '<',
-       \$psql_standby{stdin},
-       '>',
-       \$psql_standby{stdout},
-       '2>',
-       \$psql_standby{stderr},
+       [
+               'psql', '--no-psqlrc', '--no-align',
+               '--file' => '-',
+               '--dbname' => $node_standby->connstr('postgres'),
+       ],
+       '<' => \$psql_standby{stdin},
+       '>' => \$psql_standby{stdout},
+       '2>' => \$psql_standby{stderr},
        $psql_timeout);
 
 #
index 483a416723ffe886764a84c6105b631b3cc52121..50def031c967752c1e5898ccb01ce5053b9baf91 100644 (file)
@@ -38,15 +38,14 @@ $node->safe_psql('postgres', q[CREATE TABLE tab_crash (a integer UNIQUE);]);
 my ($killme_stdin, $killme_stdout, $killme_stderr) = ('', '', '');
 my $killme = IPC::Run::start(
        [
-               'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
-               $node->connstr('postgres')
+               'psql', '--no-psqlrc', '--quiet', '--no-align', '--tuples-only',
+               '--set' => 'ON_ERROR_STOP=1',
+               '--file' => '-',
+               '--dbname' => $node->connstr('postgres')
        ],
-       '<',
-       \$killme_stdin,
-       '>',
-       \$killme_stdout,
-       '2>',
-       \$killme_stderr,
+       '<' => \$killme_stdin,
+       '>' => \$killme_stdout,
+       '2>' => \$killme_stderr,
        $psql_timeout);
 
 # Get backend pid
@@ -66,15 +65,14 @@ $killme_stderr = '';
 my ($killme_stdin2, $killme_stdout2, $killme_stderr2) = ('', '', '');
 my $killme2 = IPC::Run::start(
        [
-               'psql', '-X', '-qAt', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
-               $node->connstr('postgres')
+               'psql', '--no-psqlrc', '--quiet', '--no-align', '--tuples-only',
+               '--set' => 'ON_ERROR_STOP=1',
+               '--file' => '-',
+               '--dbname' => $node->connstr('postgres')
        ],
-       '<',
-       \$killme_stdin2,
-       '>',
-       \$killme_stdout2,
-       '2>',
-       \$killme_stderr2,
+       '<' => \$killme_stdin2,
+       '>' => \$killme_stdout2,
+       '2>' => \$killme_stderr2,
        $psql_timeout);
 
 # Insert one tuple and leave the transaction open
index ddb7223b33755a61ed5d0ec9c23c64b6c15ea653..492ef115ba45c08994b41ad114dc2d3c7c44c4d4 100644 (file)
@@ -36,24 +36,26 @@ my $psql_timeout = IPC::Run::timer($PostgreSQL::Test::Utils::timeout_default);
 
 my %psql_primary = (stdin => '', stdout => '', stderr => '');
 $psql_primary{run} = IPC::Run::start(
-       [ 'psql', '-XA', '-f', '-', '-d', $node_primary->connstr('postgres') ],
-       '<',
-       \$psql_primary{stdin},
-       '>',
-       \$psql_primary{stdout},
-       '2>',
-       \$psql_primary{stderr},
+       [
+               'psql', '--no-psqlrc', '--no-align',
+               '--file' => '-',
+               '--dbname' => $node_primary->connstr('postgres')
+       ],
+       '<' => \$psql_primary{stdin},
+       '>' => \$psql_primary{stdout},
+       '2>' => \$psql_primary{stderr},
        $psql_timeout);
 
 my %psql_standby = ('stdin' => '', 'stdout' => '', 'stderr' => '');
 $psql_standby{run} = IPC::Run::start(
-       [ 'psql', '-XA', '-f', '-', '-d', $node_standby->connstr('postgres') ],
-       '<',
-       \$psql_standby{stdin},
-       '>',
-       \$psql_standby{stdout},
-       '2>',
-       \$psql_standby{stderr},
+       [
+               'psql', '--no-psqlrc', '--no-align',
+               '--file' => '-',
+               '--dbname' => $node_standby->connstr('postgres')
+       ],
+       '<' => \$psql_standby{stdin},
+       '>' => \$psql_standby{stdout},
+       '2>' => \$psql_standby{stderr},
        $psql_timeout);
 
 
index 8903177d883752e58d8db88520906cda6a4abc35..c31cab06f1cbae6bbf58b427490b7e3989dd932c 100644 (file)
@@ -75,18 +75,17 @@ sub make_slot_active
        my $active_slot = $slot_prefix . 'activeslot';
        $slot_user_handle = IPC::Run::start(
                [
-                       'pg_recvlogical', '-d',
-                       $node->connstr('testdb'), '-S',
-                       qq($active_slot), '-o',
-                       'include-xids=0', '-o',
-                       'skip-empty-xacts=1', '--no-loop',
-                       '--start', '-f',
-                       '-'
+                       'pg_recvlogical',
+                       '--dbname' => $node->connstr('testdb'),
+                       '--slot' => $active_slot,
+                       '--option' => 'include-xids=0',
+                       '--option' => 'skip-empty-xacts=1',
+                       '--file' => '-',
+                       '--no-loop',
+                       '--start',
                ],
-               '>',
-               $to_stdout,
-               '2>',
-               $to_stderr,
+               '>' => $to_stdout,
+               '2>' => $to_stderr,
                IPC::Run::timeout($default_timeout));
 
        if ($wait)
@@ -333,13 +332,14 @@ my %psql_subscriber = (
        'subscriber_stdout' => '',
        'subscriber_stderr' => '');
 $psql_subscriber{run} = IPC::Run::start(
-       [ 'psql', '-XA', '-f', '-', '-d', $node_subscriber->connstr('postgres') ],
-       '<',
-       \$psql_subscriber{subscriber_stdin},
-       '>',
-       \$psql_subscriber{subscriber_stdout},
-       '2>',
-       \$psql_subscriber{subscriber_stderr},
+       [
+               'psql', '--no-psqlrc', '--no-align',
+               '--file' => '-',
+               '--dbname' => $node_subscriber->connstr('postgres')
+       ],
+       '<' => \$psql_subscriber{subscriber_stdin},
+       '>' => \$psql_subscriber{subscriber_stdout},
+       '2>' => \$psql_subscriber{subscriber_stderr},
        IPC::Run::timeout($default_timeout));
 
 ##################################################
index 50388a494d6250a3270763d309166702699aea94..8f65142909a676f2f7ac56cdde9bd5b2d414fb64 100644 (file)
@@ -18,7 +18,7 @@ my $publisher = PostgreSQL::Test::Cluster->new('publisher');
 # This is only needed on Windows machines that don't use UNIX sockets.
 $publisher->init(
        allows_streaming => 'logical',
-       auth_extra => [ '--create-role', 'repl_role' ]);
+       auth_extra => [ '--create-role' => 'repl_role' ]);
 # Disable autovacuum to avoid generating xid during stats update as otherwise
 # the new XID could then be replicated to standby at some random point making
 # slots at primary lag behind standby during slot sync.
index cc5aa80af4008fe6a27dd4ffa257d8778e13898d..cb63ac8d5c9b01c4c016bd94cd00ce869e529103 100644 (file)
@@ -124,15 +124,14 @@ my $psql_timeout = IPC::Run::timer(3600);
 my ($killme_stdin, $killme_stdout, $killme_stderr) = ('', '', '');
 my $killme = IPC::Run::start(
        [
-               'psql', '-XAtq', '-v', 'ON_ERROR_STOP=1', '-f', '-', '-d',
-               $node_standby->connstr('postgres')
+               'psql', '--no-psqlrc', '--no-align', '--tuples-only', '--quiet',
+               '--set' => 'ON_ERROR_STOP=1',
+               '--file' => '-',
+               '--dbname' => $node_standby->connstr('postgres')
        ],
-       '<',
-       \$killme_stdin,
-       '>',
-       \$killme_stdout,
-       '2>',
-       \$killme_stderr,
+       '<' => \$killme_stdin,
+       '>' => \$killme_stdout,
+       '2>' => \$killme_stderr,
        $psql_timeout);
 $killme_stdin .= q[
 SELECT pg_backend_pid();
index c329d7b06d49989945105aab603df2a4fd1fb91f..bd70c916d9bebd1c4ed6ef3a74e98cd7c8279434 100644 (file)
@@ -51,7 +51,7 @@ while (my $test_src = glob("$src_dir/tests/*.0"))
        # check result matches, adding any diff to $diffs_file
        my $result =
          run_log([ 'diff', @diffopts, "$test_src.stdout", "$test.out" ],
-               '>>', $diffs_file);
+               '>>' => $diffs_file);
        ok($result, "pg_bsd_indent output matches for $test");
 }