mirror of
https://github.com/postgres/postgres.git
synced 2025-05-15 19:15:29 +03:00
This moves one check for conflicting options from the archive restore code to the main function where other similar checks are performed. Also reword the error message to be consistent with other messages. The only option combination impacted is --create specified with --single-transaction, and informing the caller at an early step saves from opening the archive worked on. A TAP test is added for this combination. Author: Daniel Gustafsson Reviewed-by: Fabien Coelho Discussion: https://postgr.es/m/616808BD-4B59-4E6C-97A9-7317F62D5570@yesql.se
159 lines
5.5 KiB
Perl
159 lines
5.5 KiB
Perl
use strict;
|
|
use warnings;
|
|
|
|
use Config;
|
|
use PostgresNode;
|
|
use TestLib;
|
|
use Test::More tests => 72;
|
|
|
|
my $tempdir = TestLib::tempdir;
|
|
my $tempdir_short = TestLib::tempdir_short;
|
|
|
|
#########################################
|
|
# Basic checks
|
|
|
|
program_help_ok('pg_dump');
|
|
program_version_ok('pg_dump');
|
|
program_options_handling_ok('pg_dump');
|
|
|
|
program_help_ok('pg_restore');
|
|
program_version_ok('pg_restore');
|
|
program_options_handling_ok('pg_restore');
|
|
|
|
program_help_ok('pg_dumpall');
|
|
program_version_ok('pg_dumpall');
|
|
program_options_handling_ok('pg_dumpall');
|
|
|
|
#########################################
|
|
# Test various invalid options and disallowed combinations
|
|
# Doesn't require a PG instance to be set up, so do this first.
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', 'qqq', 'abc' ],
|
|
qr/\Qpg_dump: too many command-line arguments (first is "abc")\E/,
|
|
'pg_dump: too many command-line arguments (first is "asd")');
|
|
|
|
command_fails_like(
|
|
[ 'pg_restore', 'qqq', 'abc' ],
|
|
qr/\Qpg_restore: too many command-line arguments (first is "abc")\E/,
|
|
'pg_restore too many command-line arguments (first is "abc")');
|
|
|
|
command_fails_like(
|
|
[ 'pg_dumpall', 'qqq', 'abc' ],
|
|
qr/\Qpg_dumpall: too many command-line arguments (first is "qqq")\E/,
|
|
'pg_dumpall: too many command-line arguments (first is "qqq")');
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', '-s', '-a' ],
|
|
qr/\Qpg_dump: options -s\/--schema-only and -a\/--data-only cannot be used together\E/,
|
|
'pg_dump: options -s/--schema-only and -a/--data-only cannot be used together'
|
|
);
|
|
|
|
command_fails_like(
|
|
[ 'pg_restore', '-s', '-a' ],
|
|
qr/\Qpg_restore: options -s\/--schema-only and -a\/--data-only cannot be used together\E/,
|
|
'pg_restore: options -s/--schema-only and -a/--data-only cannot be used together'
|
|
);
|
|
|
|
command_fails_like(
|
|
[ 'pg_restore', '-d', 'xxx', '-f', 'xxx' ],
|
|
qr/\Qpg_restore: options -d\/--dbname and -f\/--file cannot be used together\E/,
|
|
'pg_restore: options -d/--dbname and -f/--file cannot be used together');
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', '-c', '-a' ],
|
|
qr/\Qpg_dump: options -c\/--clean and -a\/--data-only cannot be used together\E/,
|
|
'pg_dump: options -c/--clean and -a/--data-only cannot be used together');
|
|
|
|
command_fails_like(
|
|
[ 'pg_restore', '-c', '-a' ],
|
|
qr/\Qpg_restore: options -c\/--clean and -a\/--data-only cannot be used together\E/,
|
|
'pg_restore: options -c/--clean and -a/--data-only cannot be used together'
|
|
);
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', '--inserts', '-o' ],
|
|
qr/\Qpg_dump: options --inserts\/--column-inserts and -o\/--oids cannot be used together\E/,
|
|
'pg_dump: options --inserts/--column-inserts and -o/--oids cannot be used together'
|
|
);
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', '--if-exists' ],
|
|
qr/\Qpg_dump: option --if-exists requires option -c\/--clean\E/,
|
|
'pg_dump: option --if-exists requires option -c/--clean');
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', '-j3' ],
|
|
qr/\Qpg_dump: parallel backup only supported by the directory format\E/,
|
|
'pg_dump: parallel backup only supported by the directory format');
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', '-j', '-1' ],
|
|
qr/\Qpg_dump: invalid number of parallel jobs\E/,
|
|
'pg_dump: invalid number of parallel jobs');
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', '-F', 'garbage' ],
|
|
qr/\Qpg_dump: invalid output format\E/,
|
|
'pg_dump: invalid output format');
|
|
|
|
command_fails_like(
|
|
[ 'pg_restore', '-j', '-1' ],
|
|
qr/\Qpg_restore: invalid number of parallel jobs\E/,
|
|
'pg_restore: invalid number of parallel jobs');
|
|
|
|
command_fails_like(
|
|
[ 'pg_restore', '--single-transaction', '-j3' ],
|
|
qr/\Qpg_restore: cannot specify both --single-transaction and multiple jobs\E/,
|
|
'pg_restore: cannot specify both --single-transaction and multiple jobs');
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', '-Z', '-1' ],
|
|
qr/\Qpg_dump: compression level must be in range 0..9\E/,
|
|
'pg_dump: compression level must be in range 0..9');
|
|
|
|
command_fails_like(
|
|
[ 'pg_restore', '--if-exists' ],
|
|
qr/\Qpg_restore: option --if-exists requires option -c\/--clean\E/,
|
|
'pg_restore: option --if-exists requires option -c/--clean');
|
|
|
|
command_fails_like(
|
|
[ 'pg_restore', '-F', 'garbage' ],
|
|
qr/\Qpg_restore: unrecognized archive format "garbage";\E/,
|
|
'pg_dump: unrecognized archive format');
|
|
|
|
command_fails_like(
|
|
[ 'pg_dump', '--on-conflict-do-nothing' ],
|
|
qr/\Qpg_dump: option --on-conflict-do-nothing requires option --inserts or --column-inserts\E/,
|
|
'pg_dump: option --on-conflict-do-nothing requires option --inserts or --column-inserts');
|
|
|
|
# pg_dumpall command-line argument checks
|
|
command_fails_like(
|
|
[ 'pg_dumpall', '-g', '-r' ],
|
|
qr/\Qpg_dumpall: options -g\/--globals-only and -r\/--roles-only cannot be used together\E/,
|
|
'pg_dumpall: options -g/--globals-only and -r/--roles-only cannot be used together'
|
|
);
|
|
|
|
command_fails_like(
|
|
[ 'pg_dumpall', '-g', '-t' ],
|
|
qr/\Qpg_dumpall: options -g\/--globals-only and -t\/--tablespaces-only cannot be used together\E/,
|
|
'pg_dumpall: options -g/--globals-only and -t/--tablespaces-only cannot be used together'
|
|
);
|
|
|
|
command_fails_like(
|
|
[ 'pg_dumpall', '-r', '-t' ],
|
|
qr/\Qpg_dumpall: options -r\/--roles-only and -t\/--tablespaces-only cannot be used together\E/,
|
|
'pg_dumpall: options -r/--roles-only and -t/--tablespaces-only cannot be used together'
|
|
);
|
|
|
|
command_fails_like(
|
|
[ 'pg_dumpall', '--if-exists' ],
|
|
qr/\Qpg_dumpall: option --if-exists requires option -c\/--clean\E/,
|
|
'pg_dumpall: option --if-exists requires option -c/--clean');
|
|
|
|
command_fails_like(
|
|
[ 'pg_restore', '-C', '-1' ],
|
|
qr/\Qpg_restore: options -C\/--create and -1\/--single-transaction cannot be used together\E/,
|
|
'pg_restore: options -C\/--create and -1\/--single-transaction cannot be used together'
|
|
);
|