REGRESS_OPTS = --dlpath=$(top_builddir)/src/test/regress
EXTRA_CLEAN = sql/paths.sql expected/paths.out
-# the db name is hard-coded in the tests
-override USE_MODULE_DB =
-
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
DELETE FROM "MySchema"."Foo" WHERE f1 = '0' AND f2 = 'a'
(1 row)
+CREATE FUNCTION connection_parameters() RETURNS text LANGUAGE SQL AS $f$
+ SELECT $$dbname='$$||current_database()||$$'$$;
+$f$;
-- regular old dblink
SELECT *
-FROM dblink('dbname=contrib_regression','SELECT * FROM foo') AS t(a int, b text, c text[])
+FROM dblink(connection_parameters(),'SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
a | b | c
---+---+------------
detail text;
BEGIN
PERFORM wait_pid(crash_pid)
- FROM dblink('dbname=contrib_regression', $$
+ FROM dblink(connection_parameters(), $$
SELECT pg_backend_pid() FROM dblink(
- 'service=test_ldap dbname=contrib_regression',
+ 'service=test_ldap '||connection_parameters(),
-- This string concatenation is a hack to shoehorn a
-- set_pgservicefile call into the SQL statement.
'SELECT 1' || set_pgservicefile('pg_service.conf')
END
$pl$;
-- create a persistent connection
-SELECT dblink_connect('dbname=contrib_regression');
+SELECT dblink_connect(connection_parameters());
dblink_connect
----------------
OK
ERROR: connection not available
-- put more data into our slave table, first using arbitrary connection syntax
-- but truncate the actual return value so we can use diff to check for success
-SELECT substr(dblink_exec('dbname=contrib_regression','INSERT INTO foo VALUES(10,''k'',''{"a10","b10","c10"}'')'),1,6);
+SELECT substr(dblink_exec(connection_parameters(),'INSERT INTO foo VALUES(10,''k'',''{"a10","b10","c10"}'')'),1,6);
substr
--------
INSERT
(1 row)
-- create a persistent connection
-SELECT dblink_connect('dbname=contrib_regression');
+SELECT dblink_connect(connection_parameters());
dblink_connect
----------------
OK
DETAIL: missing "=" after "myconn" in connection info string
-- create a named persistent connection
-SELECT dblink_connect('myconn','dbname=contrib_regression');
+SELECT dblink_connect('myconn',connection_parameters());
dblink_connect
----------------
OK
-- create a second named persistent connection
-- should error with "duplicate connection name"
-SELECT dblink_connect('myconn','dbname=contrib_regression');
+SELECT dblink_connect('myconn',connection_parameters());
ERROR: duplicate connection name
-- create a second named persistent connection with a new name
-SELECT dblink_connect('myconn2','dbname=contrib_regression');
+SELECT dblink_connect('myconn2',connection_parameters());
dblink_connect
----------------
OK
DETAIL: missing "=" after "myconn" in connection info string
-- create a named persistent connection
-SELECT dblink_connect('myconn','dbname=contrib_regression');
+SELECT dblink_connect('myconn',connection_parameters());
dblink_connect
----------------
OK
SELECT dblink_disconnect('myconn');
ERROR: connection "myconn" not available
-- test asynchronous queries
-SELECT dblink_connect('dtest1', 'dbname=contrib_regression');
+SELECT dblink_connect('dtest1', connection_parameters());
dblink_connect
----------------
OK
1
(1 row)
-SELECT dblink_connect('dtest2', 'dbname=contrib_regression');
+SELECT dblink_connect('dtest2', connection_parameters());
dblink_connect
----------------
OK
1
(1 row)
-SELECT dblink_connect('dtest3', 'dbname=contrib_regression');
+SELECT dblink_connect('dtest3', connection_parameters());
dblink_connect
----------------
OK
10 | k | {a10,b10,c10}
(11 rows)
-SELECT dblink_connect('dtest1', 'dbname=contrib_regression');
+SELECT dblink_connect('dtest1', connection_parameters());
dblink_connect
----------------
OK
-- test foreign data wrapper functionality
CREATE ROLE dblink_regression_test;
-CREATE SERVER fdtest FOREIGN DATA WRAPPER dblink_fdw
- OPTIONS (dbname 'contrib_regression');
+DO $d$
+ BEGIN
+ EXECUTE $$CREATE SERVER fdtest FOREIGN DATA WRAPPER dblink_fdw
+ OPTIONS (dbname '$$||current_database()||$$')$$;
+ END;
+$d$;
CREATE USER MAPPING FOR public SERVER fdtest
OPTIONS (server 'localhost'); -- fail, can't specify server here
ERROR: invalid option "server"
DROP USER MAPPING FOR public SERVER fdtest;
DROP SERVER fdtest;
-- test asynchronous notifications
-SELECT dblink_connect('dbname=contrib_regression');
+SELECT dblink_connect(connection_parameters());
dblink_connect
----------------
OK
SET datestyle = ISO, MDY;
SET intervalstyle = postgres;
SET timezone = UTC;
-SELECT dblink_connect('myconn','dbname=contrib_regression');
+SELECT dblink_connect('myconn',connection_parameters());
dblink_connect
----------------
OK
-- build a delete statement based on a local tuple,
SELECT dblink_build_sql_delete('"MySchema"."Foo"','1 2',2,'{"0", "a"}');
+CREATE FUNCTION connection_parameters() RETURNS text LANGUAGE SQL AS $f$
+ SELECT $$dbname='$$||current_database()||$$'$$;
+$f$;
+
-- regular old dblink
SELECT *
-FROM dblink('dbname=contrib_regression','SELECT * FROM foo') AS t(a int, b text, c text[])
+FROM dblink(connection_parameters(),'SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
-- should generate "connection not available" error
detail text;
BEGIN
PERFORM wait_pid(crash_pid)
- FROM dblink('dbname=contrib_regression', $$
+ FROM dblink(connection_parameters(), $$
SELECT pg_backend_pid() FROM dblink(
- 'service=test_ldap dbname=contrib_regression',
+ 'service=test_ldap '||connection_parameters(),
-- This string concatenation is a hack to shoehorn a
-- set_pgservicefile call into the SQL statement.
'SELECT 1' || set_pgservicefile('pg_service.conf')
$pl$;
-- create a persistent connection
-SELECT dblink_connect('dbname=contrib_regression');
+SELECT dblink_connect(connection_parameters());
-- use the persistent connection
SELECT *
-- put more data into our slave table, first using arbitrary connection syntax
-- but truncate the actual return value so we can use diff to check for success
-SELECT substr(dblink_exec('dbname=contrib_regression','INSERT INTO foo VALUES(10,''k'',''{"a10","b10","c10"}'')'),1,6);
+SELECT substr(dblink_exec(connection_parameters(),'INSERT INTO foo VALUES(10,''k'',''{"a10","b10","c10"}'')'),1,6);
-- create a persistent connection
-SELECT dblink_connect('dbname=contrib_regression');
+SELECT dblink_connect(connection_parameters());
-- put more data into our slave table, using persistent connection syntax
-- but truncate the actual return value so we can use diff to check for success
WHERE t.a > 7;
-- create a named persistent connection
-SELECT dblink_connect('myconn','dbname=contrib_regression');
+SELECT dblink_connect('myconn',connection_parameters());
-- use the named persistent connection
SELECT *
-- create a second named persistent connection
-- should error with "duplicate connection name"
-SELECT dblink_connect('myconn','dbname=contrib_regression');
+SELECT dblink_connect('myconn',connection_parameters());
-- create a second named persistent connection with a new name
-SELECT dblink_connect('myconn2','dbname=contrib_regression');
+SELECT dblink_connect('myconn2',connection_parameters());
-- use the second named persistent connection
SELECT *
WHERE t.a > 7;
-- create a named persistent connection
-SELECT dblink_connect('myconn','dbname=contrib_regression');
+SELECT dblink_connect('myconn',connection_parameters());
-- put more data into our slave table, using named persistent connection syntax
-- but truncate the actual return value so we can use diff to check for success
SELECT dblink_disconnect('myconn');
-- test asynchronous queries
-SELECT dblink_connect('dtest1', 'dbname=contrib_regression');
+SELECT dblink_connect('dtest1', connection_parameters());
SELECT * from
dblink_send_query('dtest1', 'select * from foo where f1 < 3') as t1;
-SELECT dblink_connect('dtest2', 'dbname=contrib_regression');
+SELECT dblink_connect('dtest2', connection_parameters());
SELECT * from
dblink_send_query('dtest2', 'select * from foo where f1 > 2 and f1 < 7') as t1;
-SELECT dblink_connect('dtest3', 'dbname=contrib_regression');
+SELECT dblink_connect('dtest3', connection_parameters());
SELECT * from
dblink_send_query('dtest3', 'select * from foo where f1 > 6') as t1;
SELECT * from result;
-SELECT dblink_connect('dtest1', 'dbname=contrib_regression');
+SELECT dblink_connect('dtest1', connection_parameters());
SELECT * from
dblink_send_query('dtest1', 'select * from foo where f1 < 3') as t1;
-- test foreign data wrapper functionality
CREATE ROLE dblink_regression_test;
-CREATE SERVER fdtest FOREIGN DATA WRAPPER dblink_fdw
- OPTIONS (dbname 'contrib_regression');
+DO $d$
+ BEGIN
+ EXECUTE $$CREATE SERVER fdtest FOREIGN DATA WRAPPER dblink_fdw
+ OPTIONS (dbname '$$||current_database()||$$')$$;
+ END;
+$d$;
+
CREATE USER MAPPING FOR public SERVER fdtest
OPTIONS (server 'localhost'); -- fail, can't specify server here
CREATE USER MAPPING FOR public SERVER fdtest OPTIONS (user :'USER');
DROP SERVER fdtest;
-- test asynchronous notifications
-SELECT dblink_connect('dbname=contrib_regression');
+SELECT dblink_connect(connection_parameters());
--should return listen
SELECT dblink_exec('LISTEN regression');
SET datestyle = ISO, MDY;
SET intervalstyle = postgres;
SET timezone = UTC;
-SELECT dblink_connect('myconn','dbname=contrib_regression');
+SELECT dblink_connect('myconn',connection_parameters());
SELECT dblink_exec('myconn', 'SET datestyle = GERMAN, DMY;');
-- single row synchronous case
REGRESS = postgres_fdw
-# the db name is hard-coded in the tests
-override USE_MODULE_DB =
-
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
-- ===================================================================
CREATE EXTENSION postgres_fdw;
CREATE SERVER testserver1 FOREIGN DATA WRAPPER postgres_fdw;
-CREATE SERVER loopback FOREIGN DATA WRAPPER postgres_fdw
- OPTIONS (dbname 'contrib_regression');
+DO $d$
+ BEGIN
+ EXECUTE $$CREATE SERVER loopback FOREIGN DATA WRAPPER postgres_fdw
+ OPTIONS (dbname '$$||current_database()||$$');$$;
+ END;
+$d$;
CREATE USER MAPPING FOR public SERVER testserver1
OPTIONS (user 'value', password 'value');
CREATE USER MAPPING FOR CURRENT_USER SERVER loopback;
CREATE EXTENSION postgres_fdw;
CREATE SERVER testserver1 FOREIGN DATA WRAPPER postgres_fdw;
-CREATE SERVER loopback FOREIGN DATA WRAPPER postgres_fdw
- OPTIONS (dbname 'contrib_regression');
+DO $d$
+ BEGIN
+ EXECUTE $$CREATE SERVER loopback FOREIGN DATA WRAPPER postgres_fdw
+ OPTIONS (dbname '$$||current_database()||$$');$$;
+ END;
+$d$;
CREATE USER MAPPING FOR public SERVER testserver1
OPTIONS (user 'value', password 'value');