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
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
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,
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
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,
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,
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,
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,
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,
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
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,
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,
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;',
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,
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,
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,
exclude_test_table_data => 1,
no_privs => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
# 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,
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,
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,
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\';',
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\';',
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\';',
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 => {
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);',
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);',
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.*
\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 '
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) '
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,
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,
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,
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,
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,
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/^
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,
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,
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,
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
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\',
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
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
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
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
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\' );',
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\);.*^
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,
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");',
\n\s+\Qcollation = pg_catalog."C"\E
\n\);/xm,
like => {
+ binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
createdb => 1,
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,
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\'
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\'
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,
\n\s+PASSEDBYVALUE\n\);
/xm,
like => {
+ binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
createdb => 1,
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,
\n\);
/xm,
like => {
+ binary_upgrade => 1,
clean => 1,
clean_if_exists => 1,
createdb => 1,
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,
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,
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.
#######################################
# 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;',
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;',
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
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)
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);',
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);',
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);',
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);',
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,
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,
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
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,
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
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,
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
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
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
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
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
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);',
no_privs => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_post_data => 1, },
unlike => {
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
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 => {
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;',
exclude_test_table_data => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
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;',
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;',
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
exclude_test_table_data => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
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
exclude_test_table_data => 1,
no_owner => 1,
pg_dumpall_dbprivs => 1,
+ role => 1,
schema_only => 1,
section_pre_data => 1, },
unlike => {
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
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;',
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,
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,
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.*
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/^
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;',
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;',
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;',
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;',
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 => {
{
$num_tests++;
}
+ if ($tests{$test}->{all_runs})
+ {
+ $num_tests++;
+ }
}
}
plan tests => $num_tests;
$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'");
+ }
+ }
}
}