From cd7a3b6c0d61431e33f22ab00aeda009af5faa90 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Sat, 14 Sep 2002 22:00:59 +0000 Subject: [PATCH] Simplify handling of second database for dblink tests. --- contrib/dblink/expected/dblink.out | 64 +++++++++++------------------- contrib/dblink/sql/dblink.sql | 58 ++++++++++----------------- 2 files changed, 43 insertions(+), 79 deletions(-) diff --git a/contrib/dblink/expected/dblink.out b/contrib/dblink/expected/dblink.out index d00056677ce..de6c7568e1d 100644 --- a/contrib/dblink/expected/dblink.out +++ b/contrib/dblink/expected/dblink.out @@ -1,10 +1,30 @@ -- --- First, create a slave database and define the functions. --- Turn off echoing so that expected file does not depend on --- contents of dblink.sql. +-- First, create a slave database and define the functions and test data +-- therein. +-- +-- This initial hackery is to allow successive runs without failures. -- +CREATE OR REPLACE FUNCTION conditional_drop() RETURNS text AS ' +DECLARE + dbname text; +BEGIN + SELECT INTO dbname datname FROM pg_database WHERE datname = ''regression_slave''; + IF FOUND THEN + DROP DATABASE regression_slave; + END IF; + RETURN ''OK''; +END; +' LANGUAGE 'plpgsql'; +SELECT conditional_drop(); + conditional_drop +------------------ + OK +(1 row) + CREATE DATABASE regression_slave; \connect regression_slave +-- Turn off echoing so that expected file does not depend on +-- contents of dblink.sql. \set ECHO none create table foo(f1 int, f2 text, f3 text[], primary key (f1,f2)); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'foo_pkey' for table 'foo' @@ -219,41 +239,3 @@ select dblink_disconnect(); OK (1 row) --- now wait for the connection to the slave to be cleared before --- we try to drop the database -CREATE FUNCTION wait() RETURNS TEXT AS ' -DECLARE - rec record; - cntr int; -BEGIN - cntr = 0; - - select into rec d.datname - from pg_database d, - (select pg_stat_get_backend_dbid(pg_stat_get_backend_idset()) AS dbid) b - where d.oid = b.dbid and d.datname = ''regression_slave''; - - WHILE FOUND LOOP - cntr = cntr + 1; - - select into rec d.datname - from pg_database d, - (select pg_stat_get_backend_dbid(pg_stat_get_backend_idset()) AS dbid) b - where d.oid = b.dbid and d.datname = ''regression_slave''; - - -- safety valve - if cntr > 1000 THEN - EXIT; - end if; - END LOOP; - RETURN ''OK''; -END; -' LANGUAGE 'plpgsql'; -SELECT wait(); - wait ------- - OK -(1 row) - --- OK, safe to drop the slave -DROP DATABASE regression_slave; diff --git a/contrib/dblink/sql/dblink.sql b/contrib/dblink/sql/dblink.sql index cfc2684348c..2d9dae33173 100644 --- a/contrib/dblink/sql/dblink.sql +++ b/contrib/dblink/sql/dblink.sql @@ -1,10 +1,27 @@ -- --- First, create a slave database and define the functions. --- Turn off echoing so that expected file does not depend on --- contents of dblink.sql. +-- First, create a slave database and define the functions and test data +-- therein. +-- +-- This initial hackery is to allow successive runs without failures. -- +CREATE OR REPLACE FUNCTION conditional_drop() RETURNS text AS ' +DECLARE + dbname text; +BEGIN + SELECT INTO dbname datname FROM pg_database WHERE datname = ''regression_slave''; + IF FOUND THEN + DROP DATABASE regression_slave; + END IF; + RETURN ''OK''; +END; +' LANGUAGE 'plpgsql'; +SELECT conditional_drop(); + CREATE DATABASE regression_slave; \connect regression_slave + +-- Turn off echoing so that expected file does not depend on +-- contents of dblink.sql. \set ECHO none \i dblink.sql \set ECHO all @@ -112,38 +129,3 @@ select * from dblink('select * from foo') as t(a int, b text, c text[]) where a -- close the persistent connection select dblink_disconnect(); - --- now wait for the connection to the slave to be cleared before --- we try to drop the database -CREATE FUNCTION wait() RETURNS TEXT AS ' -DECLARE - rec record; - cntr int; -BEGIN - cntr = 0; - - select into rec d.datname - from pg_database d, - (select pg_stat_get_backend_dbid(pg_stat_get_backend_idset()) AS dbid) b - where d.oid = b.dbid and d.datname = ''regression_slave''; - - WHILE FOUND LOOP - cntr = cntr + 1; - - select into rec d.datname - from pg_database d, - (select pg_stat_get_backend_dbid(pg_stat_get_backend_idset()) AS dbid) b - where d.oid = b.dbid and d.datname = ''regression_slave''; - - -- safety valve - if cntr > 1000 THEN - EXIT; - end if; - END LOOP; - RETURN ''OK''; -END; -' LANGUAGE 'plpgsql'; -SELECT wait(); - --- OK, safe to drop the slave -DROP DATABASE regression_slave; -- GitLab