On 2015-08-02 19:15:58 -0700, Michael Paquier wrote: > +psql 'postgres', 'CREATE EXTENSION tables_fk'; > + > +# Insert some data before running the dump, this is needed to check > +# consistent data dump of tables with foreign key dependencies > +psql 'postgres', 'INSERT INTO cc_tab_fkey VALUES (1)'; > +psql 'postgres', 'INSERT INTO bb_tab_fkey VALUES (1)'; > +psql 'postgres', 'INSERT INTO aa_tab_fkey VALUES (1)'; > + > +# Create a table depending on a FK defined in the extension > +psql 'postgres', 'CREATE TABLE dd_tab_fkey (id int REFERENCES > bb_tab_fkey(id))'; > +psql 'postgres', 'INSERT INTO dd_tab_fkey VALUES (1)'; > + > +# Take a dump then re-deploy it to a new database > +command_ok(['pg_dump', '-d', 'postgres', '-f', "$tempdir/dump.sql"], > + 'taken dump with installed extension'); > +command_ok(['createdb', 'foobar1'], 'created new database to redeploy dump'); > +command_ok(['psql', '--set=ON_ERROR_STOP=on', '-d', 'foobar1', '-f', > + "$tempdir/dump.sql"], 'dump restored'); > + > +# And check its content > +my $result = psql 'foobar1', > + q{SELECT id FROM aa_tab_fkey UNION ALL > +SELECT id FROM bb_tab_fkey UNION ALL > +SELECT id FROM cc_tab_fkey UNION ALL > +SELECT id FROM dd_tab_fkey}; > +is($result, qq(1 > +1 > +1 > +1), > + 'consistency of data restored'); > diff --git a/src/test/modules/tables_fk/tables_fk--1.0.sql > b/src/test/modules/tables_fk/tables_fk--1.0.sql > new file mode 100644 > index 0000000..e424610 > --- /dev/null > +++ b/src/test/modules/tables_fk/tables_fk--1.0.sql > @@ -0,0 +1,20 @@ > +/* src/test/modules/tables_fk/tables_fk--1.0.sql */ > + > +-- complain if script is sourced in psql, rather than via CREATE EXTENSION > +\echo Use "CREATE EXTENSION tables_fk" to load this file. \quit > + > +CREATE TABLE IF NOT EXISTS cc_tab_fkey ( > + id int PRIMARY KEY > +); > + > +CREATE TABLE IF NOT EXISTS bb_tab_fkey ( > + id int PRIMARY KEY REFERENCES cc_tab_fkey(id) > +); > + > +CREATE TABLE IF NOT EXISTS aa_tab_fkey ( > + id int REFERENCES bb_tab_fkey(id) > +); > + > +SELECT pg_catalog.pg_extension_config_dump('aa_tab_fkey', ''); > +SELECT pg_catalog.pg_extension_config_dump('bb_tab_fkey', ''); > +SELECT pg_catalog.pg_extension_config_dump('cc_tab_fkey', ''); > diff --git a/src/test/modules/tables_fk/tables_fk.control > b/src/test/modules/tables_fk/tables_fk.control
Isn't a full test with a separate initdb, create extension etc. a really heavyhanded way to test this? I mean that's a test where the setup takes up to 10s, whereas the actual runtime is in the millisecond range? Adding tests in this manner doesn't seem scalable to me. I think we should rather add *one* test that does dump/restore over the normal regression test database. Something similar to the pg_upgrade tests. And then work at adding more content to the regression test database - potentially sourcing from src/test/modules. Greetings, Andres Freund -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers