From: Dave Page on
Continuing my fun setting up some new Solaris buildfarm critters, I'm
seeing this failure in the dblink test, on 9.0 and 9.1:

gmake[1]: Leaving directory `/export/home/dpage/postgresql/contrib/cube'
gmake[1]: Entering directory `/export/home/dpage/postgresql/contrib/dblink'
gmake -C ../../src/test/regress pg_regress
gmake[2]: Entering directory `/export/home/dpage/postgresql/src/test/regress'
gmake[2]: `pg_regress' is up to date.
gmake[2]: Leaving directory `/export/home/dpage/postgresql/src/test/regress'
.../../src/test/regress/pg_regress --inputdir=.
--psqldir=/tmp/pgsql/bin --dbname=contrib_regression dblink
(using postmaster on Unix socket, default port)
============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries ==============
test dblink ... ERROR: invalid attribute number 4
STATEMENT: SELECT dblink_build_sql_insert('foo','1 2 3 4',4,'{"0",
"a", "{a0,b0,c0}"}','{"99", "xyz", "{za0,zb0,zc0}"}');
ERROR: invalid attribute number 4
STATEMENT: SELECT dblink_build_sql_update('foo','1 2 3 4',4,'{"0",
"a", "{a0,b0,c0}"}','{"99", "xyz", "{za0,zb0,zc0}"}');
ERROR: invalid attribute number 4
STATEMENT: SELECT dblink_build_sql_delete('foo','1 2 3 4',4,'{"0",
"a", "{a0,b0,c0}"}');
ERROR: connection not available
STATEMENT: SELECT *
FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
ERROR: relation "foobar" does not exist at character 49
STATEMENT: DECLARE rmt_foo_cursor CURSOR FOR SELECT * FROM foobar
ERROR: cursor "rmt_foobar_cursor" does not exist
STATEMENT: FETCH 4 FROM rmt_foobar_cursor
ERROR: cursor "rmt_foobar_cursor" does not exist
STATEMENT: CLOSE rmt_foobar_cursor
ERROR: cursor "rmt_foo_cursor" does not exist
STATEMENT: FETCH 4 FROM rmt_foo_cursor
ERROR: cursor "rmt_foo_cursor" does not exist
CONTEXT: Error occurred on dblink connection named "unnamed": could
not fetch from cursor.
STATEMENT: SELECT *
FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
ERROR: cursor "rmt_foo_cursor" does not exist
STATEMENT: FETCH 4 FROM rmt_foo_cursor
ERROR: connection not available
STATEMENT: SELECT *
FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
ERROR: relation "foobar" does not exist at character 15
STATEMENT: SELECT * FROM foobar
ERROR: relation "foobar" does not exist at character 8
STATEMENT: UPDATE foobar SET f3[2] = 'b99' WHERE f1 = 11
ERROR: could not establish connection
DETAIL: missing "=" after "myconn" in connection info string

STATEMENT: SELECT *
FROM dblink('myconn','SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
ERROR: relation "foobar" does not exist at character 15
STATEMENT: SELECT * FROM foobar
ERROR: duplicate connection name
STATEMENT: SELECT dblink_connect('myconn','dbname=contrib_regression');
ERROR: relation "foobar" does not exist at character 49
STATEMENT: DECLARE rmt_foo_cursor CURSOR FOR SELECT * FROM foobar
ERROR: DECLARE CURSOR can only be used in transaction blocks
STATEMENT: DECLARE xact_test CURSOR FOR SELECT * FROM foo
ERROR: DECLARE CURSOR can only be used in transaction blocks
CONTEXT: Error occurred on dblink connection named "unnamed": could
not execute command.
STATEMENT: SELECT dblink_exec('myconn','DECLARE xact_test CURSOR FOR
SELECT * FROM foo');
NOTICE: there is no transaction in progress
ERROR: cursor "rmt_foobar_cursor" does not exist
STATEMENT: FETCH 4 FROM rmt_foobar_cursor
ERROR: cursor "rmt_foo_cursor" does not exist
STATEMENT: FETCH 4 FROM rmt_foo_cursor
ERROR: cursor "rmt_foo_cursor" does not exist
CONTEXT: Error occurred on dblink connection named "myconn": could
not fetch from cursor.
STATEMENT: SELECT *
FROM dblink_fetch('myconn','rmt_foo_cursor',4) AS t(a int, b
text, c text[]);
ERROR: could not establish connection
DETAIL: missing "=" after "myconn" in connection info string

STATEMENT: SELECT *
FROM dblink('myconn','SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
ERROR: connection "myconn" not available
STATEMENT: SELECT dblink_disconnect('myconn');
ERROR: canceling statement due to user request
STATEMENT: select * from foo where f1 < 3
ERROR: password is required
DETAIL: Non-superusers must provide a password in the connection string.
STATEMENT: SELECT dblink_connect('myconn', 'fdtest');
LOG: unexpected EOF on client connection
ERROR: source row not found
STATEMENT: SELECT dblink_build_sql_insert('test_dropped', '2', 1,
ARRAY['1'::TEXT], ARRAY['2'::TEXT]);
ERROR: source row not found
STATEMENT: SELECT dblink_build_sql_update('test_dropped', '2', 1,
ARRAY['1'::TEXT], ARRAY['2'::TEXT]);
FAILED

======================
1 of 1 tests failed.
======================

The differences that caused some tests to fail can be viewed in the
file "/export/home/dpage/postgresql/contrib/dblink/regression.diffs".
A copy of the test summary that you see
above is saved in the file
"/export/home/dpage/postgresql/contrib/dblink/regression.out".

gmake[1]: *** [installcheck] Error 1



Diff file:


*** /export/home/dpage/postgresql/contrib/dblink/expected/dblink.out
Mon Jul 19 12:00:26 2010
--- /export/home/dpage/postgresql/contrib/dblink/results/dblink.out
Tue Jul 20 15:16:52 2010
***************
*** 905,926 ****
ADD COLUMN col4 INT NOT NULL DEFAULT 42;
SELECT dblink_build_sql_insert('test_dropped', '2', 1,
ARRAY['1'::TEXT], ARRAY['2'::TEXT]);
! dblink_build_sql_insert
! ---------------------------------------------------------------------------
! INSERT INTO test_dropped(id,col2b,col3,col4) VALUES('2','113','foo','42')
! (1 row)
!
SELECT dblink_build_sql_update('test_dropped', '2', 1,
ARRAY['1'::TEXT], ARRAY['2'::TEXT]);
! dblink_build_sql_update
! -------------------------------------------------------------------------------------------
! UPDATE test_dropped SET id = '2', col2b = '113', col3 = 'foo', col4
= '42' WHERE id = '2'
! (1 row)
!
SELECT dblink_build_sql_delete('test_dropped', '2', 1,
ARRAY['2'::TEXT]);
! dblink_build_sql_delete
! -----------------------------------------
! DELETE FROM test_dropped WHERE id = '2'
(1 row)

--- 905,918 ----
ADD COLUMN col4 INT NOT NULL DEFAULT 42;
SELECT dblink_build_sql_insert('test_dropped', '2', 1,
ARRAY['1'::TEXT], ARRAY['2'::TEXT]);
! ERROR: source row not found
SELECT dblink_build_sql_update('test_dropped', '2', 1,
ARRAY['1'::TEXT], ARRAY['2'::TEXT]);
! ERROR: source row not found
SELECT dblink_build_sql_delete('test_dropped', '2', 1,
ARRAY['2'::TEXT]);
! dblink_build_sql_delete
! --------------------------------------------
! DELETE FROM test_dropped WHERE col2b = '2'
(1 row)


======================================================================

Any ideas?

--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgres Company

--
Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers