Hi,

On Thu, Feb 01, 2018 at 02:24:46PM +0100, Michael Banck wrote:
> dumping a database to /dev/null via pg_dump is (AFAIK) one recommended
> way to check for corruption.  However, dumping to /dev/null is currently
> not supported in directory mode which makes it not possible to dump to
> /dev/null in parallel.
> 
> I had a look at this, and it appears it would suffice to just override
> the few spots in pg_backup_directory.c which assemble filenames in the
> target directory to revert to '/dev/null' (or 'NUL' on Windows).
> 
> The attached proof-of-concept patch does that, and it seems to work; I'm
> getting some nice speedups on a 170 GB test database:
> 
> $ time pg_dump -Fc -Z0 -f /dev/null TESTDB
> real    32m45.120s
> [...]
> $ time pg_dump -Fd -j8 -Z0 -f /dev/null TESTDB
> real    9m28.357s

I have added this patch to the next commitfest:

https://commitfest.postgresql.org/17/1576/

I also tried to add a TAP test, but as this patch produces no dump
output, I had to exclude it from all restores tests and then got an
off-by-one between the number of tests that were expected vs. those that
were run. I've attached it if somebody wants to take a look, but I hope
with Stephen's refactoring of the pg_dump TAP tests, this might be
easier.


Michael
>From ff96d9f2984bb473ec6fdad779a09070a227d550 Mon Sep 17 00:00:00 2001
From: Michael Banck <michael.ba...@credativ.de>
Date: Fri, 2 Feb 2018 15:02:26 +0100
Subject: [PATCH] WIP pg_dump TAP testcase

---
 src/bin/pg_dump/t/002_pg_dump.pl | 89 +++++++++++++++++++++++++++++++++++++---
 1 file changed, 84 insertions(+), 5 deletions(-)

diff --git a/src/bin/pg_dump/t/002_pg_dump.pl b/src/bin/pg_dump/t/002_pg_dump.pl
index 3e9b4d94dc..f8e64910b7 100644
--- a/src/bin/pg_dump/t/002_pg_dump.pl
+++ b/src/bin/pg_dump/t/002_pg_dump.pl
@@ -153,6 +153,12 @@ my %pgdump_runs = (
 			'--format=tar',
 			"--file=$tempdir/defaults_tar_format.sql",
 			"$tempdir/defaults_tar_format.tar", ], },
+
+	parallel_discard => {
+		dump_cmd => [
+			'pg_dump', '-Fd', '-j2', '--file=/dev/null',
+			'postgres', ], },
+
 	exclude_dump_test_schema => {
 		dump_cmd => [
 			'pg_dump', '--no-sync',
@@ -334,6 +340,7 @@ my %tests = (
 			exclude_dump_test_schema => 1,
 			no_privs                 => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -372,6 +379,7 @@ my %tests = (
 			no_privs                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -415,6 +423,7 @@ my %tests = (
 			no_privs                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -449,6 +458,7 @@ my %tests = (
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			role                     => 1,
 			schema_only              => 1,
 			section_pre_data         => 1,
@@ -639,6 +649,7 @@ my %tests = (
 			section_post_data        => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			role                     => 1, }, },
 
 	'ALTER OPERATOR CLASS dump_test.op_class OWNER TO' => {
@@ -693,6 +704,7 @@ my %tests = (
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -724,6 +736,7 @@ my %tests = (
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -833,6 +846,7 @@ my %tests = (
 			data_only                => 1,
 			exclude_test_table       => 1,
 			exclude_dump_test_schema => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -866,6 +880,7 @@ my %tests = (
 			data_only                => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			section_data             => 1,
@@ -1059,6 +1074,7 @@ my %tests = (
 			no_blobs                 => 1,
 			no_privs                 => 1,
 			no_owner                 => 1,
+			parallel_discard         => 1,
 			pg_dumpall_dbprivs       => 1,
 			role                     => 1,
 			schema_only              => 1,
@@ -1128,6 +1144,7 @@ my %tests = (
 			no_privs                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_dbprivs       => 1,
 			schema_only              => 1,
 			section_pre_data         => 1,
@@ -1426,6 +1443,7 @@ qr/^ALTER (?!EVENT TRIGGER|LARGE OBJECT|PUBLICATION|SUBSCRIPTION)(.*) OWNER TO .
 			column_inserts           => 1,
 			data_only                => 1,
 			no_owner                 => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			section_data             => 1,
@@ -1438,6 +1456,7 @@ qr/^ALTER (?!EVENT TRIGGER|LARGE OBJECT|PUBLICATION|SUBSCRIPTION)(.*) OWNER TO .
 		like   => {},    # use more-specific options above
 		unlike => {
 			column_inserts           => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			section_data             => 1, }, },
@@ -1469,6 +1488,7 @@ qr/^ALTER (?!EVENT TRIGGER|LARGE OBJECT|PUBLICATION|SUBSCRIPTION)(.*) OWNER TO .
 			no_blobs                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -1505,6 +1525,7 @@ qr/^ALTER (?!EVENT TRIGGER|LARGE OBJECT|PUBLICATION|SUBSCRIPTION)(.*) OWNER TO .
 			no_blobs                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -1843,6 +1864,7 @@ qr/^COMMENT ON CONVERSION test_conversion IS 'comment on test conversion';/m,
 			no_blobs                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -1878,6 +1900,7 @@ qr/^COMMENT ON CONVERSION test_conversion IS 'comment on test conversion';/m,
 			data_only                => 1,
 			only_dump_test_table     => 1,
 			only_dump_test_schema    => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -1913,6 +1936,7 @@ qr/^COMMENT ON CONVERSION test_conversion IS 'comment on test conversion';/m,
 			data_only                => 1,
 			only_dump_test_table     => 1,
 			only_dump_test_schema    => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -2189,6 +2213,7 @@ qr/^COMMENT ON TEXT SEARCH TEMPLATE alt_ts_temp1 IS 'comment on text search temp
 		regexp   => qr/^COMMENT ON /m,
 		like     => {},                  # use more-specific options above
 		unlike   => {
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			section_data             => 1, }, },
@@ -2461,6 +2486,7 @@ qr/^COMMENT ON TEXT SEARCH TEMPLATE alt_ts_temp1 IS 'comment on text search temp
 		unlike   => {
 			binary_upgrade           => 1,
 			column_inserts           => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			schema_only              => 1,
@@ -2541,6 +2567,7 @@ qr/^\QINSERT INTO test_table_identity (col1, col2) OVERRIDING SYSTEM VALUE VALUE
 			section_data             => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			role                     => 1,
 			schema_only              => 1,
 			section_pre_data         => 1,
@@ -2574,6 +2601,7 @@ qr/^\QINSERT INTO test_table_identity (col1, col2) OVERRIDING SYSTEM VALUE VALUE
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			role                     => 1,
 			schema_only              => 1,
 			section_pre_data         => 1,
@@ -2702,6 +2730,7 @@ qr/CREATE CAST \(timestamp with time zone AS interval\) WITH FUNCTION pg_catalog
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_dbprivs       => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
@@ -2737,6 +2766,7 @@ qr/CREATE CAST \(timestamp with time zone AS interval\) WITH FUNCTION pg_catalog
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -2770,6 +2800,7 @@ qr/CREATE CAST \(timestamp with time zone AS interval\) WITH FUNCTION pg_catalog
 			no_privs                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_dbprivs       => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
@@ -2822,6 +2853,7 @@ qr/CREATE CAST \(timestamp with time zone AS interval\) WITH FUNCTION pg_catalog
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -2857,6 +2889,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -2900,6 +2933,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -2941,6 +2975,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -2981,6 +3016,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3021,6 +3057,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3057,6 +3094,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3109,6 +3147,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3147,6 +3186,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3188,6 +3228,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			exclude_test_table       => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3227,6 +3268,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3258,6 +3300,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			no_privs                 => 1,
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
+			parallel_discard         => 1,
 			pg_dumpall_dbprivs       => 1,
 			schema_only              => 1,
 			section_pre_data         => 1,
@@ -3304,6 +3347,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3337,6 +3381,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3373,6 +3418,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3462,6 +3508,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3498,6 +3545,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3538,6 +3586,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3575,6 +3624,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3614,6 +3664,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3653,6 +3704,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3691,6 +3743,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3739,6 +3792,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3780,6 +3834,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3813,6 +3868,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3845,6 +3901,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3878,6 +3935,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3922,6 +3980,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3956,6 +4015,7 @@ qr/^\QCREATE DEFAULT CONVERSION test_conversion FOR 'LATIN1' TO 'UTF8' FROM iso8
 			data_only                => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -3991,6 +4051,7 @@ qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog
 			data_only                => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -4524,6 +4585,7 @@ qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog
 		unlike => {
 			column_inserts           => 1,
 			data_only                => 1,
+			parallel_discard         => 1,
 			role                     => 1,
 			section_data             => 1,
 			section_pre_data         => 1,
@@ -4559,6 +4621,7 @@ qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog
 			exclude_dump_test_schema => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			test_schema_plus_blobs   => 1, }, },
@@ -5379,9 +5442,10 @@ qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog
 		regexp   => qr/^CREATE /m,
 		like     => {},              # use more-specific options above
 		unlike   => {
-			column_inserts => 1,
-			data_only      => 1,
-			section_data   => 1, }, },
+			column_inserts   => 1,
+			data_only        => 1,
+			parallel_discard => 1,
+			section_data     => 1, }, },
 
 	'DROP SCHEMA public (for testing without public schema)' => {
 		all_runs     => 1,
@@ -5392,7 +5456,8 @@ qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog
 		like         => {},
 		unlike       => {
 			defaults_no_public       => 1,
-			defaults_no_public_clean => 1, } },
+			defaults_no_public_clean => 1,
+			parallel_discard         => 1, } },
 
 	'DROP SCHEMA public' => {
 		all_runs  => 1,
@@ -5434,6 +5499,7 @@ qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog
 		like   => { clean => 1, },
 		unlike => {
 			clean_if_exists          => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals_clean => 1, }, },
 
 	'DROP LANGUAGE pltestlang' => {
@@ -5618,6 +5684,7 @@ qr/CREATE TRANSFORM FOR integer LANGUAGE sql \(FROM SQL WITH FUNCTION pg_catalog
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_dbprivs       => 1,
 			pg_dumpall_globals       => 1,
 			role                     => 1,
@@ -6293,6 +6360,7 @@ qr/^GRANT SELECT ON TABLE measurement_y2006m2 TO regress_dump_test_role;/m,
 			section_pre_data         => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
 			section_data             => 1,
@@ -6305,6 +6373,7 @@ qr/^GRANT SELECT ON TABLE measurement_y2006m2 TO regress_dump_test_role;/m,
 		like     => {},             # use more-specific options above
 		unlike   => {
 			no_privs                 => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals_clean => 1,
 			section_data             => 1,
 			section_post_data        => 1, }, },
@@ -6333,6 +6402,7 @@ qr/^GRANT SELECT ON TABLE measurement_y2006m2 TO regress_dump_test_role;/m,
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -6368,6 +6438,7 @@ qr/^GRANT SELECT ON TABLE measurement_y2006m2 TO regress_dump_test_role;/m,
 			data_only                => 1,
 			exclude_dump_test_schema => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
 			role                     => 1,
@@ -6397,6 +6468,7 @@ qr/^GRANT SELECT ON TABLE measurement_y2006m2 TO regress_dump_test_role;/m,
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_dbprivs       => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
@@ -6430,6 +6502,7 @@ qr/^GRANT SELECT ON TABLE measurement_y2006m2 TO regress_dump_test_role;/m,
 			no_owner                 => 1,
 			only_dump_test_schema    => 1,
 			only_dump_test_table     => 1,
+			parallel_discard         => 1,
 			pg_dumpall_dbprivs       => 1,
 			pg_dumpall_globals       => 1,
 			pg_dumpall_globals_clean => 1,
@@ -6609,6 +6682,7 @@ qr/^GRANT SELECT ON TABLE measurement_y2006m2 TO regress_dump_test_role;/m,
 			column_inserts     => 1,
 			data_only          => 1,
 			no_privs           => 1,
+			parallel_discard   => 1,
 			pg_dumpall_globals => 1, }, },);
 
 #########################################
@@ -6845,7 +6919,12 @@ foreach my $run (sort keys %pgdump_runs)
 		$test_key = $pgdump_runs{$run}->{test_key};
 	}
 
-	my $output_file = slurp_file("$tempdir/${run}.sql");
+	my $output_file;
+
+	if (-f "$tempdir/${run}.sql")
+	{
+		$output_file = slurp_file("$tempdir/${run}.sql");
+	}
 
 	#########################################
 	# Run all tests where this run is included
-- 
2.14.2

Reply via email to