SELECT set_config('search_path','mimeo, dblink, tap',false); SELECT plan(32); SELECT dblink_connect('mimeo_test', 'host=localhost port=5432 dbname=mimeo_source user=mimeo_test password=mimeo_test'); SELECT is(dblink_get_connections() @> '{mimeo_test}', 't', 'Remote database connection established'); -- ########## SNAP TESTS ########## SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_source.snap_test_source ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.snap_test_source ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_source.snap_test_source'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.snap_test_dest ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.snap_test_source ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.snap_test_dest'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.snap_test_dest_nodata ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.snap_test_source ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.snap_test_dest'); SELECT results_eq('SELECT col1, col2 FROM mimeo_dest.snap_test_dest_filter ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2 FROM mimeo_source.snap_test_source ORDER BY col1 ASC'') t (col1 int, col2 text)', 'Check data for: mimeo_dest.snap_test_dest_filter'); SELECT hasnt_column('mimeo_dest', 'snap_test_dest_filter_snap1', 'col3', 'Check that snap_test_dest_filter_snap1 DOESN''T have col3'); SELECT hasnt_column('mimeo_dest', 'snap_test_dest_filter_snap2', 'col3', 'Check that snap_test_dest_filter_snap2 DOESN''T have col3'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.snap_test_dest_condition WHERE col1 > 3 AND col1 < 15 ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.snap_test_source WHERE col1 > 3 AND col1 < 15 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.snap_test_dest_condition'); -- ########## INSERTER TESTS ########## SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_source.inserter_test_source ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.inserter_test_source ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_source.inserter_test_source'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.inserter_test_dest ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.inserter_test_source ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.inserter_test_dest'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.inserter_test_dest_nodata ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.inserter_test_source WHERE col1 >= 11 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.inserter_test_dest'); SELECT results_eq('SELECT col1, col3 FROM mimeo_dest.inserter_test_dest_filter ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col3 FROM mimeo_source.inserter_test_source ORDER BY col1 ASC'') t (col1 int, col3 timestamptz)', 'Check data for: mimeo_dest.inserter_test_dest_filter'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.inserter_test_dest_condition WHERE col1 > 3 AND col1 < 15 ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.inserter_test_source WHERE col1 > 3 AND col1 < 15 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.inserter_test_dest_condition'); -- ########## UPDATER TESTS ########## SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_source.updater_test_source ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.updater_test_source ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_source.updater_test_source'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.updater_test_dest ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.updater_test_source ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.updater_test_dest'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.updater_test_dest_nodata ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.updater_test_source WHERE col1 >= 11 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.updater_test_dest_nodata'); SELECT results_eq('SELECT col1, col3 FROM mimeo_dest.updater_test_dest_filter ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col3 FROM mimeo_source.updater_test_source ORDER BY col1 ASC'') t (col1 int, col3 timestamptz)', 'Check data for: mimeo_dest.updater_test_dest_filter'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.updater_test_dest_condition WHERE col1 > 3 AND col1 < 15 ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.updater_test_source WHERE col1 > 3 AND col1 < 15 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.updater_test_dest_condition'); -- ########## DML TESTS ########## SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_source.dml_test_source ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.dml_test_source ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_source.dml_test_source'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.dml_test_dest ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.dml_test_source2 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.dml_test_dest'); SELECT is_empty('SELECT * FROM mimeo_dest.dml_test_dest WHERE col1 = 8', 'Check that deleted row is gone from mimeo_dest.dml_test_dest'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.dml_test_dest_nodata ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.dml_test_source_nodata WHERE col1 >= 11 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.dml_test_dest_nodata'); SELECT results_eq('SELECT col1, col2 FROM mimeo_dest.dml_test_dest_filter ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2 FROM mimeo_source.dml_test_source_filter ORDER BY col1 ASC'') t (col1 int, col2 text)', 'Check data for: mimeo_dest.dml_test_dest_filter'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.dml_test_dest_condition WHERE col1 > 3 AND col1 < 15 AND col1 <> 11 ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.dml_test_source_condition WHERE col1 > 3 AND col1 < 15 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.dml_test_dest_condition'); SELECT is_empty('SELECT * FROM mimeo_dest.dml_test_dest_condition WHERE col1 = 11', 'Check that deleted row is gone from mimeo_dest.dml_test_dest_condition'); -- ########## LOGDEL TESTS ########## SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_source.logdel_test_source ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.logdel_test_source ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_source.logdel_test_source'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.logdel_test_dest WHERE col1 <> 8 ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.logdel_test_source2 WHERE col1 <> 8 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.logdel_test_dest'); SELECT results_eq('SELECT col2 FROM mimeo_dest.logdel_test_dest WHERE col1 = 8 AND mimeo_source_deleted IS NOT NULL', ARRAY['test8'], 'Check that deleted row is logged in mimeo_dest.logdel_test_dest'); SELECT results_eq('SELECT col1, col2, col3 FROM mimeo_dest.logdel_test_dest_nodata ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2, col3 FROM mimeo_source.logdel_test_source_nodata WHERE col1 >= 11 ORDER BY col1 ASC'') t (col1 int, col2 text, col3 timestamptz)', 'Check data for: mimeo_dest.logdel_test_dest'); SELECT results_eq('SELECT col1, col2 FROM mimeo_dest.logdel_test_dest_filter ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2 FROM mimeo_source.logdel_test_source_filter ORDER BY col1 ASC'') t (col1 int, col2 text)', 'Check data for: mimeo_dest.logdel_test_dest_filter'); SELECT results_eq('SELECT col1, col2 FROM mimeo_dest.logdel_test_dest_condition WHERE col1 > 3 AND col1 < 15 AND col1 <> 11 ORDER BY col1 ASC', 'SELECT * FROM dblink(''mimeo_test'', ''SELECT col1, col2 FROM mimeo_source.logdel_test_source_condition WHERE col1 > 3 AND col1 < 15 ORDER BY col1 ASC'') t (col1 int, col2 text)', 'Check data for: mimeo_dest.logdel_test_dest_condition'); SELECT results_eq('SELECT col2 FROM mimeo_dest.logdel_test_dest_condition WHERE col1 = 11 AND mimeo_source_deleted IS NOT NULL', ARRAY['test11'], 'Check that deleted row is logged in mimeo_dest.logdel_test_dest_condition'); SELECT dblink_disconnect('mimeo_test'); --SELECT is('SELECT dblink_get_connections() @> ''{mimeo_test}''','', 'Close remote database connection'); SELECT * FROM finish();