aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/t/002_pg_dump.pl860
1 files changed, 695 insertions, 165 deletions
diff --git a/src/bin/pg_dump/t/002_pg_dump.pl b/src/bin/pg_dump/t/002_pg_dump.pl
index 90f075bf4f6..35ee85325b8 100644
--- a/src/bin/pg_dump/t/002_pg_dump.pl
+++ b/src/bin/pg_dump/t/002_pg_dump.pl
@@ -225,6 +225,7 @@ my %pgdump_runs = (
my %tests = (
'ALTER DEFAULT PRIVILEGES FOR ROLE regress_dump_test_role' => {
+ all_runs => 1,
create_order => 14,
create_sql => 'ALTER DEFAULT PRIVILEGES
FOR ROLE regress_dump_test_role IN SCHEMA dump_test
@@ -242,20 +243,26 @@ my %tests = (
defaults => 1,
exclude_test_table => 1,
exclude_test_table_data => 1,
+ no_owner => 1,
only_dump_test_schema => 1,
pg_dumpall_dbprivs => 1,
schema_only => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
no_privs => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
section_pre_data => 1,
section_data => 1, }, },
+
'ALTER ROLE regress_dump_test_role' => {
+ all_runs => 1,
regexp => qr/^
\QALTER ROLE regress_dump_test_role WITH \E
\QNOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN \E
@@ -269,7 +276,9 @@ my %tests = (
binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
+ column_inserts => 1,
createdb => 1,
+ data_only => 1,
defaults => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
@@ -278,11 +287,16 @@ my %tests = (
no_owner => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1,
+ section_data => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'ALTER FUNCTION dump_test.pltestlang_call_handler() OWNER TO' => {
+ all_runs => 1,
+ catch_all => 'ALTER ... OWNER commands (except LARGE OBJECTs)',
regexp => qr/^
\QALTER FUNCTION dump_test.pltestlang_call_handler() \E
\QOWNER TO \E
@@ -303,8 +317,41 @@ my %tests = (
test_schema_plus_blobs => 1, },
unlike => {
exclude_dump_test_schema => 1,
- only_dump_test_table => 1, }, },
+ only_dump_test_table => 1,
+ role => 1, }, },
+
+ 'ALTER LARGE OBJECT ... OWNER TO' => {
+ all_runs => 1,
+ regexp => qr/^ALTER LARGE OBJECT \d+ OWNER TO .*;/m,
+ like => {
+ clean => 1,
+ clean_if_exists => 1,
+ column_inserts => 1,
+ createdb => 1,
+ data_only => 1,
+ defaults => 1,
+ exclude_dump_test_schema => 1,
+ exclude_test_table => 1,
+ exclude_test_table_data => 1,
+ no_privs => 1,
+ pg_dumpall_dbprivs => 1,
+ section_pre_data => 1,
+ test_schema_plus_blobs => 1, },
+ unlike => {
+ binary_upgrade => 1,
+ no_owner => 1,
+ only_dump_test_schema => 1,
+ only_dump_test_table => 1,
+ pg_dumpall_globals => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ schema_only => 1,
+ section_data => 1,
+ section_post_data => 1, }, },
+
'ALTER PROCEDURAL LANGUAGE pltestlang OWNER TO' => {
+ all_runs => 1,
+ catch_all => 'ALTER ... OWNER commands (except LARGE OBJECTs)',
regexp => qr/^ALTER PROCEDURAL LANGUAGE pltestlang OWNER TO .*;/m,
like => {
binary_upgrade => 1,
@@ -322,8 +369,12 @@ my %tests = (
unlike => {
only_dump_test_schema => 1,
only_dump_test_table => 1,
+ role => 1,
test_schema_plus_blobs => 1, }, },
+
'ALTER SCHEMA dump_test OWNER TO' => {
+ all_runs => 1,
+ catch_all => 'ALTER ... OWNER commands (except LARGE OBJECTs)',
regexp => qr/^ALTER SCHEMA dump_test OWNER TO .*;/m,
like => {
binary_upgrade => 1,
@@ -341,8 +392,12 @@ my %tests = (
test_schema_plus_blobs => 1, },
unlike => {
exclude_dump_test_schema => 1,
- only_dump_test_table => 1, }, },
+ only_dump_test_table => 1,
+ role => 1, }, },
+
'ALTER SCHEMA dump_test_second_schema OWNER TO' => {
+ all_runs => 1,
+ catch_all => 'ALTER ... OWNER commands (except LARGE OBJECTs)',
regexp => qr/^ALTER SCHEMA dump_test_second_schema OWNER TO .*;/m,
like => {
binary_upgrade => 1,
@@ -355,13 +410,16 @@ my %tests = (
exclude_test_table_data => 1,
no_privs => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
only_dump_test_schema => 1,
only_dump_test_table => 1,
test_schema_plus_blobs => 1, }, },
+
'ALTER SEQUENCE test_table_col1_seq' => {
+ all_runs => 1,
regexp => qr/^
\QALTER SEQUENCE test_table_col1_seq OWNED BY test_table.col1;\E
/xm,
@@ -381,12 +439,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_test_table => 1,
exclude_dump_test_schema => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'ALTER SEQUENCE test_third_table_col1_seq' => {
+ all_runs => 1,
regexp => qr/^
\QALTER SEQUENCE test_third_table_col1_seq OWNED BY test_third_table.col1;\E
/xm,
@@ -402,16 +466,23 @@ my %tests = (
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ section_data => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'ALTER TABLE ONLY test_table ADD CONSTRAINT ... PRIMARY KEY' => {
+ all_runs => 1,
+ catch_all => 'ALTER TABLE ... commands',
regexp => qr/^
\QALTER TABLE ONLY test_table\E \n^\s+
\QADD CONSTRAINT test_table_pkey PRIMARY KEY (col1);\E
@@ -424,6 +495,7 @@ my %tests = (
defaults => 1,
exclude_test_table_data => 1,
no_privs => 1,
+ no_owner => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_dbprivs => 1,
@@ -433,9 +505,13 @@ my %tests = (
unlike => {
exclude_dump_test_schema => 1,
exclude_test_table => 1,
+ role => 1,
section_pre_data => 1,
section_data => 1, }, },
+
'ALTER TABLE test_table OWNER TO' => {
+ all_runs => 1,
+ catch_all => 'ALTER ... OWNER commands (except LARGE OBJECTs)',
regexp => qr/^ALTER TABLE test_table OWNER TO .*;/m,
like => {
binary_upgrade => 1,
@@ -453,8 +529,12 @@ my %tests = (
test_schema_plus_blobs => 1, },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ role => 1, }, },
+
'ALTER TABLE test_table ENABLE ROW LEVEL SECURITY' => {
+ all_runs => 1,
+ catch_all => 'ALTER TABLE ... commands',
create_order => 23,
create_sql => 'ALTER TABLE dump_test.test_table
ENABLE ROW LEVEL SECURITY;',
@@ -467,6 +547,7 @@ my %tests = (
defaults => 1,
exclude_test_table_data => 1,
no_privs => 1,
+ no_owner => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_dbprivs => 1,
@@ -476,8 +557,12 @@ my %tests = (
unlike => {
section_pre_data => 1,
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ role => 1, }, },
+
'ALTER TABLE test_second_table OWNER TO' => {
+ all_runs => 1,
+ catch_all => 'ALTER ... OWNER commands (except LARGE OBJECTs)',
regexp => qr/^ALTER TABLE test_second_table OWNER TO .*;/m,
like => {
binary_upgrade => 1,
@@ -495,8 +580,12 @@ my %tests = (
test_schema_plus_blobs => 1, },
unlike => {
exclude_dump_test_schema => 1,
- only_dump_test_table => 1, }, },
+ only_dump_test_table => 1,
+ role => 1, }, },
+
'ALTER TABLE test_third_table OWNER TO' => {
+ all_runs => 1,
+ catch_all => 'ALTER ... OWNER commands (except LARGE OBJECTs)',
regexp => qr/^ALTER TABLE test_third_table OWNER TO .*;/m,
like => {
binary_upgrade => 1,
@@ -509,6 +598,7 @@ my %tests = (
exclude_test_table_data => 1,
no_privs => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
@@ -518,16 +608,22 @@ my %tests = (
# catch-all for ALTER ... OWNER (except LARGE OBJECTs)
'ALTER ... OWNER commands (except LARGE OBJECTs)' => {
+ all_runs => 0, # catch-all
regexp => qr/^ALTER (?!LARGE OBJECT)(.*) OWNER TO .*;/m,
like => {}, # use more-specific options above
unlike => {
- column_inserts => 1,
- data_only => 1,
- section_data => 1, }, },
+ column_inserts => 1,
+ data_only => 1,
+ no_owner => 1,
+ pg_dumpall_globals => 1,
+ pg_dumpall_globals_clean => 1,
+ section_data => 1,
+ section_post_data => 1, }, },
- # catch-all for ALTER TABLE ...
+ # catch-all for ALTER TABLE ... (except OWNER TO)
'ALTER TABLE ... commands' => {
- regexp => qr/^ALTER TABLE .*;/m,
+ all_runs => 0, # catch-all
+ regexp => qr/^ALTER TABLE .* (?!OWNER TO)(.*);/m,
like => {}, # use more-specific options above
unlike => {
column_inserts => 1,
@@ -536,52 +632,79 @@ my %tests = (
pg_dumpall_globals_clean => 1,
section_data => 1, }, },
- # catch-all for ALTER ... OWNER
- 'ALTER ... OWNER commands' => {
- regexp => qr/^ALTER .* OWNER TO .*;/m,
- like => {}, # use more-specific options above
- unlike => {
- no_owner => 1,
- pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1,
- section_post_data => 1, }, },
+ 'BLOB create (using lo_from_bytea)' => {
+ all_runs => 1,
+ create_order => 50,
+ create_sql => 'SELECT pg_catalog.lo_from_bytea(0, \'\\x310a320a330a340a350a360a370a380a390a\');',
+ regexp => qr/^SELECT pg_catalog\.lo_create\('\d+'\);/m,
+ like => {
+ clean => 1,
+ clean_if_exists => 1,
+ column_inserts => 1,
+ createdb => 1,
+ data_only => 1,
+ defaults => 1,
+ exclude_dump_test_schema => 1,
+ exclude_test_table => 1,
+ exclude_test_table_data => 1,
+ no_privs => 1,
+ no_owner => 1,
+ pg_dumpall_dbprivs => 1,
+ section_pre_data => 1,
+ test_schema_plus_blobs => 1,
+ },
+ unlike => {
+ binary_upgrade => 1,
+ only_dump_test_schema => 1,
+ only_dump_test_table => 1,
+ pg_dumpall_globals => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ schema_only => 1,
+ section_data => 1,
+ section_post_data => 1,
+ },
+ },
+ 'BLOB load (using lo_from_bytea)' => {
+ all_runs => 1,
+ regexp => qr/^
+ \QSELECT pg_catalog.lo_open\E \('\d+',\ \d+\);\n
+ \QSELECT pg_catalog.lowrite(0, \E
+ \Q'\x310a320a330a340a350a360a370a380a390a');\E\n
+ \QSELECT pg_catalog.lo_close(0);\E
+ /xm,
+ like => {
+ clean => 1,
+ clean_if_exists => 1,
+ column_inserts => 1,
+ createdb => 1,
+ defaults => 1,
+ data_only => 1,
+ exclude_dump_test_schema => 1,
+ exclude_test_table => 1,
+ exclude_test_table_data => 1,
+ no_owner => 1,
+ no_privs => 1,
+ pg_dumpall_dbprivs => 1,
+ section_data => 1,
+ test_schema_plus_blobs => 1,
+ },
+ unlike => {
+ binary_upgrade => 1,
+ only_dump_test_schema => 1,
+ only_dump_test_table => 1,
+ pg_dumpall_globals => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ schema_only => 1,
+ section_pre_data => 1,
+ section_post_data => 1,
+ },
+ },
- # 'BLOB load (contents are of test_table)' => {
- # create_order => 14,
- # create_sql =>
- # "\\o '$tempdir/large_object_test.sql'\n"
- # . "table dump_test.test_table;\n"
- # . "\\o\n"
- # . "\\lo_import '$tempdir/large_object_test.sql'\n",
- # regexp => qr/^
- # \QSELECT pg_catalog.lo_open\E \('\d+',\ \d+\);\n
- # \QSELECT pg_catalog.lowrite(0, \E
- # \Q'\x310a320a330a340a350a360a370a380a390a');\E\n
- # \QSELECT pg_catalog.lo_close(0);\E
- # /xm,
- # like => {
- # clean => 1,
- # clean_if_exists => 1,
- # createdb => 1,
- # defaults => 1,
- # exclude_dump_test_schema => 1,
- # exclude_test_table => 1,
- # exclude_test_table_data => 1,
- # no_privs => 1,
- # pg_dumpall_dbprivs => 1,
- # section_data => 1,
- # test_schema_plus_blobs => 1,
- # },
- # unlike => {
- # binary_upgrade => 1,
- # only_dump_test_schema => 1,
- # only_dump_test_table => 1,
- # pg_dumpall_globals => 1,
- # schema_only => 1,
- # section_post_data => 1,
- # },
- # },
'COMMENT ON DATABASE postgres' => {
+ all_runs => 1,
+ catch_all => 'COMMENT commands',
regexp => qr/^COMMENT ON DATABASE postgres IS .*;/m,
like => {
binary_upgrade => 1,
@@ -598,9 +721,13 @@ my %tests = (
schema_only => 1,
section_pre_data => 1, },
unlike => {
- only_dump_test_schema => 1,
- only_dump_test_table => 1, }, },
+ only_dump_test_schema => 1,
+ only_dump_test_table => 1,
+ role => 1,
+ test_schema_plus_blobs => 1, }, },
'COMMENT ON EXTENSION plpgsql' => {
+ all_runs => 1,
+ catch_all => 'COMMENT commands',
regexp => qr/^COMMENT ON EXTENSION plpgsql IS .*;/m,
like => {
clean => 1,
@@ -616,10 +743,14 @@ my %tests = (
schema_only => 1,
section_pre_data => 1, },
unlike => {
- binary_upgrade => 1,
- only_dump_test_schema => 1,
- only_dump_test_table => 1, }, },
+ binary_upgrade => 1,
+ only_dump_test_schema => 1,
+ only_dump_test_table => 1,
+ role => 1,
+ test_schema_plus_blobs => 1, }, },
'COMMENT ON TABLE dump_test.test_table' => {
+ all_runs => 1,
+ catch_all => 'COMMENT commands',
create_order => 36,
create_sql => 'COMMENT ON TABLE dump_test.test_table
IS \'comment on table\';',
@@ -637,11 +768,15 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_dbprivs => 1,
schema_only => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ test_schema_plus_blobs => 1, },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ role => 1, }, },
'COMMENT ON COLUMN dump_test.test_table.col1' => {
+ all_runs => 1,
+ catch_all => 'COMMENT commands',
create_order => 36,
create_sql => 'COMMENT ON COLUMN dump_test.test_table.col1
IS \'comment on column\';',
@@ -661,11 +796,15 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_dbprivs => 1,
schema_only => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ test_schema_plus_blobs => 1, },
unlike => {
exclude_dump_test_schema => 1,
- exclude_test_table => 1, }, },
+ exclude_test_table => 1,
+ role => 1, }, },
'COMMENT ON COLUMN dump_test.composite.f1' => {
+ all_runs => 1,
+ catch_all => 'COMMENT commands',
create_order => 44,
create_sql => 'COMMENT ON COLUMN dump_test.composite.f1
IS \'comment on column of type\';',
@@ -685,13 +824,16 @@ my %tests = (
only_dump_test_schema => 1,
pg_dumpall_dbprivs => 1,
schema_only => 1,
- section_pre_data => 1, },
+ section_pre_data => 1,
+ test_schema_plus_blobs => 1, },
unlike => {
exclude_dump_test_schema => 1,
- only_dump_test_table => 1, }, },
+ only_dump_test_table => 1,
+ role => 1, }, },
# catch-all for COMMENTs
'COMMENT commands' => {
+ all_runs => 0, # catch-all
regexp => qr/^COMMENT ON /m,
like => {}, # use more-specific options above
unlike => {
@@ -701,7 +843,10 @@ my %tests = (
pg_dumpall_globals_clean => 1,
section_data => 1,
section_post_data => 1, }, },
+
'COPY test_table' => {
+ all_runs => 1,
+ catch_all => 'COPY ... commands',
create_order => 4,
create_sql => 'INSERT INTO dump_test.test_table (col1) '
. 'SELECT generate_series FROM generate_series(1,9);',
@@ -725,8 +870,12 @@ my %tests = (
unlike => {
exclude_dump_test_schema => 1,
exclude_test_table => 1,
- exclude_test_table_data => 1, }, },
+ exclude_test_table_data => 1,
+ role => 1, }, },
+
'COPY fk_reference_test_table' => {
+ all_runs => 1,
+ catch_all => 'COPY ... commands',
create_order => 22,
create_sql => 'INSERT INTO dump_test.fk_reference_test_table (col1) '
. 'SELECT generate_series FROM generate_series(1,5);',
@@ -750,8 +899,15 @@ my %tests = (
test_schema_plus_blobs => 1, },
unlike => {
exclude_dump_test_schema => 1,
- only_dump_test_table => 1, }, },
+ only_dump_test_table => 1,
+ role => 1, }, },
+
+ # In a data-only dump, we do try to actually order according to FKs,
+ # so this check is just making sure that the referring table comes after
+ # the referred-to table.
'COPY fk_reference_test_table second' => {
+ all_runs => 0, # really only for data-only
+ catch_all => 'COPY ... commands',
regexp => qr/^
\QCOPY test_table (col1) FROM stdin;\E
\n(?:\d\n){9}\\\.\n.*
@@ -759,11 +915,11 @@ my %tests = (
\n(?:\d\n){5}\\\.\n
/xms,
like => { data_only => 1, },
- unlike => {
- exclude_dump_test_schema => 1,
- exclude_test_table => 1,
- exclude_test_table_data => 1, }, },
+ unlike => { }, },
+
'COPY test_second_table' => {
+ all_runs => 1,
+ catch_all => 'COPY ... commands',
create_order => 7,
create_sql => 'INSERT INTO dump_test.test_second_table (col1, col2) '
. 'SELECT generate_series, generate_series::text '
@@ -788,8 +944,12 @@ my %tests = (
test_schema_plus_blobs => 1, },
unlike => {
exclude_dump_test_schema => 1,
- only_dump_test_table => 1, }, },
+ only_dump_test_table => 1,
+ role => 1, }, },
+
'COPY test_third_table' => {
+ all_runs => 1,
+ catch_all => 'COPY ... commands',
create_order => 12,
create_sql =>
'INSERT INTO dump_test_second_schema.test_third_table (col1) '
@@ -810,59 +970,60 @@ my %tests = (
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
section_data => 1, },
unlike => {
only_dump_test_schema => 1,
only_dump_test_table => 1,
test_schema_plus_blobs => 1, }, },
+
+ 'COPY ... commands' => { # catch-all for COPY
+ all_runs => 0, # catch-all
+ regexp => qr/^COPY /m,
+ like => {}, # use more-specific options above
+ unlike => {
+ binary_upgrade => 1,
+ column_inserts => 1,
+ pg_dumpall_globals => 1,
+ pg_dumpall_globals_clean => 1,
+ schema_only => 1,
+ section_pre_data => 1,
+ section_post_data => 1, }, },
+
'INSERT INTO test_table' => {
+ all_runs => 1,
+ catch_all => 'INSERT INTO ...',
regexp => qr/^
(?:INSERT\ INTO\ test_table\ \(col1\)\ VALUES\ \(\d\);\n){9}
/xm,
like => { column_inserts => 1, },
- unlike => {
- clean => 1,
- clean_if_exists => 1,
- createdb => 1,
- data_only => 1,
- defaults => 1,
- exclude_dump_test_schema => 1,
- exclude_test_table => 1,
- exclude_test_table_data => 1,
- no_privs => 1,
- no_owner => 1,
- pg_dumpall_dbprivs => 1,
- section_data => 1,
- only_dump_test_schema => 1,
- only_dump_test_table => 1,
- test_schema_plus_blobs => 1, }, },
+ unlike => { }, },
+
'INSERT INTO test_second_table' => {
+ all_runs => 1,
+ catch_all => 'INSERT INTO ...',
regexp => qr/^
(?:INSERT\ INTO\ test_second_table\ \(col1,\ col2\)
\ VALUES\ \(\d,\ '\d'\);\n){9}/xm,
like => { column_inserts => 1, },
- unlike => {
- clean => 1,
- clean_if_exists => 1,
- createdb => 1,
- data_only => 1,
- defaults => 1,
- exclude_dump_test_schema => 1,
- exclude_test_table => 1,
- exclude_test_table_data => 1,
- no_privs => 1,
- no_owner => 1,
- pg_dumpall_dbprivs => 1,
- section_data => 1,
- only_dump_test_schema => 1,
- only_dump_test_table => 1,
- test_schema_plus_blobs => 1, }, },
+ unlike => { }, },
+
'INSERT INTO test_third_table' => {
+ all_runs => 1,
+ catch_all => 'INSERT INTO ...',
regexp => qr/^
(?:INSERT\ INTO\ test_third_table\ \(col1\)
\ VALUES\ \(\d\);\n){9}/xm,
like => { column_inserts => 1, },
+ unlike => { }, },
+
+ # INSERT INTO catch-all
+ 'INSERT INTO ...' => {
+ all_runs => 0, # catch-all
+ regexp => qr/^INSERT INTO .* VALUES .*;/xm,
+ like => { }, # use more-specific options above
unlike => {
+ binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
createdb => 1,
@@ -874,21 +1035,20 @@ my %tests = (
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ pg_dumpall_globals => 1,
+ pg_dumpall_globals_clean => 1,
section_data => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
- test_schema_plus_blobs => 1, }, },
- 'COPY ... commands' => { # catch-all for COPY
- regexp => qr/^COPY /m,
- like => {}, # use more-specific options above
- unlike => {
- binary_upgrade => 1,
- column_inserts => 1,
- pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1,
+ role => 1,
schema_only => 1,
- section_post_data => 1, }, },
+ section_pre_data => 1,
+ section_data => 1,
+ section_post_data => 1,
+ test_schema_plus_blobs => 1, }, },
+
'CREATE ROLE regress_dump_test_role' => {
+ all_runs => 1,
create_order => 1,
create_sql => 'CREATE ROLE regress_dump_test_role;',
regexp => qr/^CREATE ROLE regress_dump_test_role;/m,
@@ -900,7 +1060,9 @@ my %tests = (
binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
+ column_inserts => 1,
createdb => 1,
+ data_only => 1,
defaults => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
@@ -909,11 +1071,15 @@ my %tests = (
no_owner => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1,
+ section_data => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE DATABASE postgres' => {
+ all_runs => 1,
regexp => qr/^
\QCREATE DATABASE postgres WITH TEMPLATE = template0 \E
.*;/xm,
@@ -922,6 +1088,8 @@ my %tests = (
binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
+ column_inserts => 1,
+ data_only => 1,
defaults => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
@@ -933,11 +1101,15 @@ my %tests = (
pg_dumpall_dbprivs => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1,
+ section_data => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE DATABASE dump_test' => {
+ all_runs => 1,
create_order => 47,
create_sql => 'CREATE DATABASE dump_test;',
regexp => qr/^
@@ -948,7 +1120,9 @@ my %tests = (
binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
+ column_inserts => 1,
createdb => 1,
+ data_only => 1,
defaults => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
@@ -959,11 +1133,15 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1,
+ section_data => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE EXTENSION ... plpgsql' => {
+ all_runs => 1,
regexp => qr/^
\QCREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;\E
/xm,
@@ -982,13 +1160,19 @@ my %tests = (
section_pre_data => 1, },
unlike => {
binary_upgrade => 1,
+ column_inserts => 1,
+ data_only => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE AGGREGATE dump_test.newavg' => {
+ all_runs => 1,
create_order => 25,
create_sql => 'CREATE AGGREGATE dump_test.newavg (
sfunc = int4_avg_accum,
@@ -1020,12 +1204,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE DOMAIN dump_test.us_postal_code' => {
+ all_runs => 1,
create_order => 29,
create_sql => 'CREATE DOMAIN dump_test.us_postal_code AS TEXT
CHECK(VALUE ~ \'^\d{5}$\' OR
@@ -1054,12 +1244,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE FUNCTION dump_test.pltestlang_call_handler' => {
+ all_runs => 1,
create_order => 17,
create_sql => 'CREATE FUNCTION dump_test.pltestlang_call_handler()
RETURNS LANGUAGE_HANDLER AS \'$libdir/plpgsql\',
@@ -1087,12 +1283,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE FUNCTION dump_test.trigger_func' => {
+ all_runs => 1,
create_order => 30,
create_sql => 'CREATE FUNCTION dump_test.trigger_func()
RETURNS trigger LANGUAGE plpgsql
@@ -1119,12 +1321,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE FUNCTION dump_test.event_trigger_func' => {
+ all_runs => 1,
create_order => 32,
create_sql => 'CREATE FUNCTION dump_test.event_trigger_func()
RETURNS event_trigger LANGUAGE plpgsql
@@ -1151,12 +1359,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE EVENT TRIGGER test_event_trigger' => {
+ all_runs => 1,
create_order => 33,
create_sql => 'CREATE EVENT TRIGGER test_event_trigger
ON ddl_command_start
@@ -1181,13 +1395,19 @@ my %tests = (
schema_only => 1,
section_post_data => 1, },
unlike => {
- section_pre_data => 1,
+ column_inserts => 1,
+ data_only => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
+ section_pre_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE TRIGGER test_trigger' => {
+ all_runs => 1,
create_order => 31,
create_sql => 'CREATE TRIGGER test_trigger
BEFORE INSERT ON dump_test.test_table
@@ -1214,12 +1434,18 @@ my %tests = (
section_post_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
- section_pre_data => 1,
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1, }, },
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
+ section_pre_data => 1, }, },
+
'CREATE TYPE dump_test.planets AS ENUM' => {
+ all_runs => 1,
create_order => 37,
create_sql => 'CREATE TYPE dump_test.planets
AS ENUM ( \'venus\', \'earth\', \'mars\' );',
@@ -1244,12 +1470,19 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ binary_upgrade => 1,
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE TYPE dump_test.planets AS ENUM pg_upgrade' => {
+ all_runs => 1,
regexp => qr/^
\QCREATE TYPE planets AS ENUM (\E
\n\);.*^
@@ -1263,7 +1496,9 @@ my %tests = (
unlike => {
clean => 1,
clean_if_exists => 1,
+ column_inserts => 1,
createdb => 1,
+ data_only => 1,
defaults => 1,
exclude_test_table => 1,
exclude_test_table_data => 1,
@@ -1278,8 +1513,13 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
+ section_pre_data => 1,
section_post_data => 1, }, },
+
'CREATE TYPE dump_test.textrange AS RANGE' => {
+ all_runs => 1,
create_order => 38,
create_sql => 'CREATE TYPE dump_test.textrange
AS RANGE (subtype=text, collation="C");',
@@ -1289,6 +1529,7 @@ my %tests = (
\n\s+\Qcollation = pg_catalog."C"\E
\n\);/xm,
like => {
+ binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
createdb => 1,
@@ -1303,16 +1544,23 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE TYPE dump_test.int42' => {
+ all_runs => 1,
create_order => 39,
create_sql => 'CREATE TYPE dump_test.int42;',
regexp => qr/^CREATE TYPE int42;/m,
like => {
+ binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
createdb => 1,
@@ -1327,12 +1575,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE FUNCTION dump_test.int42_in' => {
+ all_runs => 1,
create_order => 40,
create_sql => 'CREATE FUNCTION dump_test.int42_in(cstring)
RETURNS dump_test.int42 AS \'int4in\'
@@ -1358,12 +1612,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE FUNCTION dump_test.int42_out' => {
+ all_runs => 1,
create_order => 41,
create_sql => 'CREATE FUNCTION dump_test.int42_out(dump_test.int42)
RETURNS cstring AS \'int4out\'
@@ -1389,12 +1649,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE TYPE dump_test.int42 populated' => {
+ all_runs => 1,
create_order => 42,
create_sql => 'CREATE TYPE dump_test.int42 (
internallength = 4,
@@ -1414,6 +1680,7 @@ my %tests = (
\n\s+PASSEDBYVALUE\n\);
/xm,
like => {
+ binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
createdb => 1,
@@ -1428,12 +1695,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE TYPE dump_test.composite' => {
+ all_runs => 1,
create_order => 43,
create_sql => 'CREATE TYPE dump_test.composite AS (
f1 int,
@@ -1446,6 +1719,7 @@ my %tests = (
\n\);
/xm,
like => {
+ binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
createdb => 1,
@@ -1460,12 +1734,18 @@ my %tests = (
section_pre_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1, }, },
+
'CREATE FOREIGN DATA WRAPPER dummy' => {
+ all_runs => 1,
create_order => 35,
create_sql => 'CREATE FOREIGN DATA WRAPPER dummy;',
regexp => qr/CREATE FOREIGN DATA WRAPPER dummy;/m,
@@ -1484,13 +1764,19 @@ my %tests = (
schema_only => 1,
section_pre_data => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE SERVER s1 FOREIGN DATA WRAPPER dummy' => {
+ all_runs => 1,
create_order => 36,
create_sql => 'CREATE SERVER s1 FOREIGN DATA WRAPPER dummy;',
regexp => qr/CREATE SERVER s1 FOREIGN DATA WRAPPER dummy;/m,
@@ -1509,12 +1795,17 @@ my %tests = (
schema_only => 1,
section_pre_data => 1, },
unlike => {
+ column_inserts => 1,
+ data_only => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
#######################################
# Currently broken.
#######################################
@@ -1546,7 +1837,10 @@ my %tests = (
# test_schema_plus_blobs => 1,
# },
# },
+
'CREATE LANGUAGE pltestlang' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 18,
create_sql => 'CREATE LANGUAGE pltestlang
HANDLER dump_test.pltestlang_call_handler;',
@@ -1572,10 +1866,14 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
section_post_data => 1,
only_dump_test_schema => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE MATERIALIZED VIEW matview' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 20,
create_sql => 'CREATE MATERIALIZED VIEW dump_test.matview (col1) AS
SELECT * FROM dump_test.test_table;',
@@ -1605,8 +1903,12 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
section_post_data => 1, }, },
+
'CREATE MATERIALIZED VIEW matview_second' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 21,
create_sql => 'CREATE MATERIALIZED VIEW
dump_test.matview_second (col1) AS
@@ -1637,8 +1939,12 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
section_post_data => 1, }, },
+
'CREATE POLICY p1 ON test_table' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 22,
create_sql => 'CREATE POLICY p1 ON dump_test.test_table
USING (true)
@@ -1663,12 +1969,16 @@ my %tests = (
section_post_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
- section_pre_data => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1, }, },
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_pre_data => 1, }, },
+
'CREATE POLICY p2 ON test_table FOR SELECT' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 24,
create_sql => 'CREATE POLICY p2 ON dump_test.test_table
FOR SELECT TO regress_dump_test_role USING (true);',
@@ -1692,12 +2002,16 @@ my %tests = (
section_post_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
- section_pre_data => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1, }, },
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_pre_data => 1, }, },
+
'CREATE POLICY p3 ON test_table FOR INSERT' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 25,
create_sql => 'CREATE POLICY p3 ON dump_test.test_table
FOR INSERT TO regress_dump_test_role WITH CHECK (true);',
@@ -1721,12 +2035,16 @@ my %tests = (
section_post_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
- section_pre_data => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1, }, },
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_pre_data => 1, }, },
+
'CREATE POLICY p4 ON test_table FOR UPDATE' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 26,
create_sql => 'CREATE POLICY p4 ON dump_test.test_table FOR UPDATE
TO regress_dump_test_role USING (true) WITH CHECK (true);',
@@ -1750,12 +2068,16 @@ my %tests = (
section_post_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
- section_pre_data => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1, }, },
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_pre_data => 1, }, },
+
'CREATE POLICY p5 ON test_table FOR DELETE' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 27,
create_sql => 'CREATE POLICY p5 ON dump_test.test_table
FOR DELETE TO regress_dump_test_role USING (true);',
@@ -1779,12 +2101,16 @@ my %tests = (
section_post_data => 1,
test_schema_plus_blobs => 1, },
unlike => {
- section_pre_data => 1,
exclude_dump_test_schema => 1,
exclude_test_table => 1,
pg_dumpall_globals => 1,
- pg_dumpall_globals_clean => 1, }, },
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_pre_data => 1, }, },
+
'CREATE SCHEMA dump_test' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 2,
create_sql => 'CREATE SCHEMA dump_test;',
regexp => qr/^CREATE SCHEMA dump_test;/m,
@@ -1808,8 +2134,12 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
section_post_data => 1, }, },
+
'CREATE SCHEMA dump_test_second_schema' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 9,
create_sql => 'CREATE SCHEMA dump_test_second_schema;',
regexp => qr/^CREATE SCHEMA dump_test_second_schema;/m,
@@ -1825,6 +2155,7 @@ my %tests = (
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
@@ -1834,7 +2165,10 @@ my %tests = (
pg_dumpall_globals_clean => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE TABLE test_table' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 3,
create_sql => 'CREATE TABLE dump_test.test_table (
col1 serial primary key,
@@ -1866,8 +2200,12 @@ my %tests = (
exclude_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
section_post_data => 1, }, },
+
'CREATE TABLE fk_reference_test_table' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 21,
create_sql => 'CREATE TABLE dump_test.fk_reference_test_table (
col1 int primary key references dump_test.test_table
@@ -1897,8 +2235,12 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
section_post_data => 1, }, },
+
'CREATE TABLE test_second_table' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 6,
create_sql => 'CREATE TABLE dump_test.test_second_table (
col1 int,
@@ -1930,8 +2272,12 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
section_post_data => 1, }, },
+
'CREATE TABLE test_third_table' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 11,
create_sql => 'CREATE TABLE dump_test_second_schema.test_third_table (
col1 serial
@@ -1953,6 +2299,7 @@ my %tests = (
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
@@ -1962,7 +2309,10 @@ my %tests = (
pg_dumpall_globals_clean => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE SEQUENCE test_table_col1_seq' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
regexp => qr/^
\QCREATE SEQUENCE test_table_col1_seq\E
\n\s+\QSTART WITH 1\E
@@ -1991,8 +2341,12 @@ my %tests = (
exclude_dump_test_schema => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ role => 1,
section_post_data => 1, }, },
+
'CREATE SEQUENCE test_third_table_col1_seq' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
regexp => qr/^
\QCREATE SEQUENCE test_third_table_col1_seq\E
\n\s+\QSTART WITH 1\E
@@ -2013,6 +2367,7 @@ my %tests = (
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
@@ -2022,7 +2377,10 @@ my %tests = (
pg_dumpall_globals_clean => 1,
section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE UNIQUE INDEX test_third_table_idx ON test_third_table' => {
+ all_runs => 1,
+ catch_all => 'CREATE ... commands',
create_order => 13,
create_sql => 'CREATE UNIQUE INDEX test_third_table_idx
ON dump_test_second_schema.test_third_table (col1);',
@@ -2042,6 +2400,7 @@ my %tests = (
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_post_data => 1, },
unlike => {
@@ -2049,86 +2408,143 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
pg_dumpall_globals_clean => 1,
+ section_pre_data => 1,
test_schema_plus_blobs => 1, }, },
+
'CREATE ... commands' => { # catch-all for CREATE
+ all_runs => 0, # catch-all
regexp => qr/^CREATE /m,
like => {}, # use more-specific options above
unlike => {
column_inserts => 1,
data_only => 1,
section_data => 1, }, },
+
'DROP EXTENSION plpgsql' => {
+ all_runs => 1,
+ catch_all => 'DROP ... commands',
regexp => qr/^DROP EXTENSION plpgsql;/m,
like => { clean => 1, },
- unlike => { clean_if_exists => 1, }, },
+ unlike => {
+ clean_if_exists => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP FUNCTION dump_test.pltestlang_call_handler()' => {
regexp => qr/^DROP FUNCTION dump_test\.pltestlang_call_handler\(\);/m,
like => { clean => 1, },
- unlike => { clean_if_exists => 1, }, },
+ unlike => {
+ clean_if_exists => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP LANGUAGE pltestlang' => {
regexp => qr/^DROP PROCEDURAL LANGUAGE pltestlang;/m,
like => { clean => 1, },
- unlike => { clean_if_exists => 1, }, },
+ unlike => {
+ clean_if_exists => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP SCHEMA dump_test' => {
regexp => qr/^DROP SCHEMA dump_test;/m,
like => { clean => 1, },
- unlike => { clean_if_exists => 1, }, },
+ unlike => {
+ clean_if_exists => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP SCHEMA dump_test_second_schema' => {
regexp => qr/^DROP SCHEMA dump_test_second_schema;/m,
like => { clean => 1, },
- unlike => { clean_if_exists => 1, }, },
+ unlike => {
+ clean_if_exists => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP TABLE test_table' => {
regexp => qr/^DROP TABLE dump_test\.test_table;/m,
like => { clean => 1, },
- unlike => { clean_if_exists => 1, }, },
+ unlike => {
+ clean_if_exists => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP TABLE fk_reference_test_table' => {
regexp => qr/^DROP TABLE dump_test\.fk_reference_test_table;/m,
like => { clean => 1, },
- unlike => { clean_if_exists => 1, }, },
+ unlike => {
+ clean_if_exists => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP TABLE test_second_table' => {
regexp => qr/^DROP TABLE dump_test\.test_second_table;/m,
like => { clean => 1, },
- unlike => { clean_if_exists => 1, }, },
+ unlike => {
+ clean_if_exists => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP TABLE test_third_table' => {
regexp => qr/^DROP TABLE dump_test_second_schema\.test_third_table;/m,
like => { clean => 1, },
- unlike => { clean_if_exists => 1, }, },
+ unlike => {
+ clean_if_exists => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP EXTENSION IF EXISTS plpgsql' => {
regexp => qr/^DROP EXTENSION IF EXISTS plpgsql;/m,
like => { clean_if_exists => 1, },
- unlike => { clean => 1, }, },
+ unlike => {
+ clean => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP FUNCTION IF EXISTS dump_test.pltestlang_call_handler()' => {
regexp => qr/^
\QDROP FUNCTION IF EXISTS dump_test.pltestlang_call_handler();\E
/xm,
like => { clean_if_exists => 1, },
- unlike => { clean => 1, }, },
+ unlike => {
+ clean => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP LANGUAGE IF EXISTS pltestlang' => {
regexp => qr/^DROP PROCEDURAL LANGUAGE IF EXISTS pltestlang;/m,
like => { clean_if_exists => 1, },
- unlike => { clean => 1, }, },
+ unlike => {
+ clean => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP SCHEMA IF EXISTS dump_test' => {
regexp => qr/^DROP SCHEMA IF EXISTS dump_test;/m,
like => { clean_if_exists => 1, },
- unlike => { clean => 1, }, },
+ unlike => {
+ clean => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP SCHEMA IF EXISTS dump_test_second_schema' => {
regexp => qr/^DROP SCHEMA IF EXISTS dump_test_second_schema;/m,
like => { clean_if_exists => 1, },
- unlike => { clean => 1, }, },
+ unlike => {
+ clean => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP TABLE IF EXISTS test_table' => {
regexp => qr/^DROP TABLE IF EXISTS dump_test\.test_table;/m,
like => { clean_if_exists => 1, },
- unlike => { clean => 1, }, },
+ unlike => {
+ clean => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP TABLE IF EXISTS test_second_table' => {
regexp => qr/^DROP TABLE IF EXISTS dump_test\.test_second_table;/m,
like => { clean_if_exists => 1, },
- unlike => { clean => 1, }, },
+ unlike => {
+ clean => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP TABLE IF EXISTS test_third_table' => {
regexp => qr/^
\QDROP TABLE IF EXISTS dump_test_second_schema.test_third_table;\E
/xm,
like => { clean_if_exists => 1, },
- unlike => { clean => 1, }, },
+ unlike => {
+ clean => 1,
+ pg_dumpall_globals_clean => 1, }, },
+
'DROP ROLE regress_dump_test_role' => {
regexp => qr/^
\QDROP ROLE regress_dump_test_role;\E
@@ -2137,16 +2553,19 @@ my %tests = (
unlike => {
clean => 1,
clean_if_exists => 1, }, },
+
'DROP ROLE pg_' => {
regexp => qr/^
\QDROP ROLE pg_\E.*;
/xm,
- like => {},
+ like => { },
unlike => {
clean => 1,
clean_if_exists => 1,
pg_dumpall_globals_clean => 1, }, },
+
'DROP ... commands' => { # catch-all for DROP
+ all_runs => 0, # catch-all
regexp => qr/^DROP /m,
like => {}, # use more-specific options above
unlike => {
@@ -2164,8 +2583,16 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_dbprivs => 1,
pg_dumpall_globals => 1,
- schema_only => 1, }, },
+ role => 1,
+ schema_only => 1,
+ section_data => 1,
+ section_pre_data => 1,
+ section_post_data => 1,
+ test_schema_plus_blobs => 1, }, },
+
'GRANT USAGE ON SCHEMA dump_test_second_schema' => {
+ all_runs => 1,
+ catch_all => 'GRANT commands',
create_order => 10,
create_sql => 'GRANT USAGE ON SCHEMA dump_test_second_schema
TO regress_dump_test_role;',
@@ -2183,6 +2610,7 @@ my %tests = (
exclude_test_table_data => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
@@ -2190,7 +2618,10 @@ my %tests = (
only_dump_test_table => 1,
pg_dumpall_globals => 1,
test_schema_plus_blobs => 1, }, },
+
'GRANT CREATE ON DATABASE dump_test' => {
+ all_runs => 1,
+ catch_all => 'GRANT commands',
create_order => 48,
create_sql =>
'GRANT CREATE ON DATABASE dump_test TO regress_dump_test_role;',
@@ -2211,10 +2642,14 @@ my %tests = (
only_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1,
test_schema_plus_blobs => 1, }, },
+
'GRANT SELECT ON TABLE test_table' => {
+ all_runs => 1,
+ catch_all => 'GRANT commands',
create_order => 5,
create_sql => 'GRANT SELECT ON TABLE dump_test.test_table
TO regress_dump_test_role;',
@@ -2237,8 +2672,12 @@ my %tests = (
unlike => {
exclude_dump_test_schema => 1,
exclude_test_table => 1,
- pg_dumpall_globals => 1, }, },
+ pg_dumpall_globals => 1,
+ role => 1, }, },
+
'GRANT SELECT ON TABLE test_third_table' => {
+ all_runs => 1,
+ catch_all => 'GRANT commands',
create_order => 19,
create_sql => 'GRANT SELECT ON
TABLE dump_test_second_schema.test_third_table
@@ -2256,6 +2695,7 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
exclude_test_table_data => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
@@ -2263,7 +2703,10 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
test_schema_plus_blobs => 1, }, },
+
'GRANT ALL ON SEQUENCE test_third_table_col1_seq' => {
+ all_runs => 1,
+ catch_all => 'GRANT commands',
create_order => 28,
create_sql => 'GRANT ALL ON SEQUENCE
dump_test_second_schema.test_third_table_col1_seq
@@ -2282,6 +2725,7 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
exclude_test_table_data => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
@@ -2289,7 +2733,10 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
test_schema_plus_blobs => 1, }, },
+
'GRANT INSERT(col1) ON TABLE test_second_table' => {
+ all_runs => 1,
+ catch_all => 'GRANT commands',
create_order => 8,
create_sql =>
'GRANT INSERT (col1) ON TABLE dump_test.test_second_table
@@ -2314,8 +2761,12 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
unlike => {
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
- pg_dumpall_globals => 1, }, },
+ pg_dumpall_globals => 1,
+ role => 1, }, },
+
'GRANT EXECUTE ON FUNCTION pg_sleep() TO regress_dump_test_role' => {
+ all_runs => 1,
+ catch_all => 'GRANT commands',
create_order => 16,
create_sql => 'GRANT EXECUTE ON FUNCTION pg_sleep(float8)
TO regress_dump_test_role;',
@@ -2338,8 +2789,13 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
unlike => {
only_dump_test_schema => 1,
only_dump_test_table => 1,
+ pg_dumpall_globals => 1,
+ role => 1,
test_schema_plus_blobs => 1, }, },
+
'GRANT SELECT (proname ...) ON TABLE pg_proc TO public' => {
+ all_runs => 1,
+ catch_all => 'GRANT commands',
create_order => 46,
create_sql => 'GRANT SELECT (
tableoid,
@@ -2422,16 +2878,24 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
unlike => {
only_dump_test_schema => 1,
only_dump_test_table => 1,
+ pg_dumpall_globals => 1,
+ role => 1,
test_schema_plus_blobs => 1, }, },
+
'GRANT commands' => { # catch-all for GRANT commands
+ all_runs => 0, # catch-all
regexp => qr/^GRANT /m,
- like => {}, # use more-specific options above
+ like => { }, # use more-specific options above
unlike => {
- column_inserts => 1,
- data_only => 1,
- no_privs => 1,
- section_data => 1, }, },
+ column_inserts => 1,
+ data_only => 1,
+ no_privs => 1,
+ pg_dumpall_globals_clean => 1,
+ section_data => 1,
+ section_post_data => 1, }, },
+
'REFRESH MATERIALIZED VIEW matview' => {
+ all_runs => 1,
regexp => qr/^REFRESH MATERIALIZED VIEW matview;/m,
like => {
clean => 1,
@@ -2448,12 +2912,19 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
section_post_data => 1, },
unlike => {
binary_upgrade => 1,
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
schema_only => 1,
+ section_data => 1,
section_pre_data => 1, }, },
+
'REFRESH MATERIALIZED VIEW matview_second' => {
+ all_runs => 1,
regexp => qr/^
\QREFRESH MATERIALIZED VIEW matview;\E
\n.*
@@ -2474,12 +2945,20 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
section_post_data => 1, },
unlike => {
binary_upgrade => 1,
+ column_inserts => 1,
+ data_only => 1,
exclude_dump_test_schema => 1,
only_dump_test_table => 1,
pg_dumpall_globals => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
schema_only => 1,
+ section_data => 1,
section_pre_data => 1, }, },
+
'REVOKE CONNECT ON DATABASE dump_test FROM public' => {
+ all_runs => 1,
+ catch_all => 'REVOKE commands',
create_order => 49,
create_sql => 'REVOKE CONNECT ON DATABASE dump_test FROM public;',
regexp => qr/^
@@ -2500,10 +2979,18 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
no_owner => 1,
only_dump_test_schema => 1,
only_dump_test_table => 1,
+ pg_dumpall_globals => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
schema_only => 1,
+ section_data => 1,
section_pre_data => 1,
+ section_post_data => 1,
test_schema_plus_blobs => 1, }, },
+
'REVOKE EXECUTE ON FUNCTION pg_sleep() FROM public' => {
+ all_runs => 1,
+ catch_all => 'REVOKE commands',
create_order => 15,
create_sql => 'REVOKE EXECUTE ON FUNCTION pg_sleep(float8)
FROM public;',
@@ -2524,9 +3011,14 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
schema_only => 1,
section_pre_data => 1, },
unlike => {
- only_dump_test_schema => 1,
- only_dump_test_table => 1,
- test_schema_plus_blobs => 1, }, },
+ only_dump_test_schema => 1,
+ only_dump_test_table => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
+ section_post_data => 1,
+ test_schema_plus_blobs => 1, }, },
+
'REVOKE SELECT ON TABLE pg_proc FROM public' => {
create_order => 45,
create_sql => 'REVOKE SELECT ON TABLE pg_proc FROM public;',
@@ -2545,9 +3037,14 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
schema_only => 1,
section_pre_data => 1, },
unlike => {
- only_dump_test_schema => 1,
- only_dump_test_table => 1,
- test_schema_plus_blobs => 1, }, },
+ only_dump_test_schema => 1,
+ only_dump_test_table => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
+ section_post_data => 1,
+ test_schema_plus_blobs => 1, }, },
+
'REVOKE CREATE ON SCHEMA public FROM public' => {
create_order => 16,
create_sql => 'REVOKE CREATE ON SCHEMA public FROM public;',
@@ -2569,9 +3066,14 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
schema_only => 1,
section_pre_data => 1, },
unlike => {
- only_dump_test_schema => 1,
- only_dump_test_table => 1,
- test_schema_plus_blobs => 1, }, },
+ only_dump_test_schema => 1,
+ only_dump_test_table => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
+ section_post_data => 1,
+ test_schema_plus_blobs => 1, }, },
+
'REVOKE USAGE ON LANGUAGE plpgsql FROM public' => {
create_order => 16,
create_sql => 'REVOKE USAGE ON LANGUAGE plpgsql FROM public;',
@@ -2590,10 +3092,16 @@ qr/^GRANT SELECT ON TABLE test_third_table TO regress_dump_test_role;/m,
schema_only => 1,
section_pre_data => 1, },
unlike => {
- only_dump_test_schema => 1,
- only_dump_test_table => 1,
- test_schema_plus_blobs => 1, }, },
+ only_dump_test_schema => 1,
+ only_dump_test_table => 1,
+ pg_dumpall_globals_clean => 1,
+ role => 1,
+ section_data => 1,
+ section_post_data => 1,
+ test_schema_plus_blobs => 1, }, },
+
'REVOKE commands' => { # catch-all for REVOKE commands
+ all_runs => 0, # catch-all
regexp => qr/^REVOKE /m,
like => {}, # use more-specific options above
unlike => {
@@ -2644,6 +3152,10 @@ foreach my $run (sort keys %pgdump_runs)
{
$num_tests++;
}
+ if ($tests{$test}->{all_runs})
+ {
+ $num_tests++;
+ }
}
}
plan tests => $num_tests;
@@ -2738,6 +3250,24 @@ foreach my $run (sort keys %pgdump_runs)
$tests{$test}->{regexp},
"$run: does not dump $test");
}
+ # Complain if there isn't a like or unlike for this test, unless that is ok
+ if ($tests{$test}->{all_runs})
+ {
+ if (!defined($tests{$test}->{catch_all}))
+ {
+ ok (defined($tests{$test}->{like}->{$test_key}) || defined($tests{$test}->{unlike}->{$test_key}), "$run defined for `$test'");
+ }
+ else
+ {
+ my $catch_all = $tests{$test}->{catch_all};
+
+ ok (defined($tests{$test}->{like}->{$test_key}) ||
+ defined($tests{$catch_all}->{like}->{$test_key}) ||
+ defined($tests{$test}->{unlike}->{$test_key}) ||
+ defined($tests{$catch_all}->{unlike}->{$test_key}),
+ "$run defined for `$test' or `$catch_all'");
+ }
+ }
}
}