git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: dd01cfe)
Fix regression in dblink_disconnect() reported by Eduardo Stern:
2003年11月28日 05:03:02 +0000 (05:03 +0000)
2003年11月28日 05:03:02 +0000 (05:03 +0000)
persistent_conn was left dangling after a disconnect in the
unnamed connection case, causing a subsequent disconnect to
crash the backend.


diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index c75f7f0b85fea0cf0fd098f45fe22ddfdcab2887..aada47565e2a08572d4edc9bbc5c43e61f6c16bc 100644 (file)
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -256,6 +256,8 @@ dblink_disconnect(PG_FUNCTION_ARGS)
deleteConnection(conname);
pfree(rcon);
}
+ else
+ persistent_conn = NULL;
PG_RETURN_TEXT_P(GET_TEXT("OK"));
}
diff --git a/contrib/dblink/expected/dblink.out b/contrib/dblink/expected/dblink.out
index 50938b3ef1bc14eaafaf435f10782cdf0670c623..7ef40b06d796ad224a256d51cecd515a5e732640 100644 (file)
--- a/contrib/dblink/expected/dblink.out
+++ b/contrib/dblink/expected/dblink.out
@@ -185,13 +185,11 @@ SELECT dblink_disconnect();
OK
(1 row)
--- should generate "no connection to the server" error
+-- should generate "connection not available" error
SELECT *
FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
-ERROR: sql error
-DETAIL: no connection to the server
-
+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=regression','INSERT INTO foo VALUES(10,''k'',''{"a10","b10","c10"}'')'),1,6);
diff --git a/contrib/dblink/sql/dblink.sql b/contrib/dblink/sql/dblink.sql
index 6a699769fd73d2d6de50deb788708731eabbca49..d0e448fc0b003250eb4ddc16c89dbc1a6d06d3f8 100644 (file)
--- a/contrib/dblink/sql/dblink.sql
+++ b/contrib/dblink/sql/dblink.sql
@@ -105,7 +105,7 @@ FROM dblink_fetch('rmt_foo_cursor',4) AS t(a int, b text, c text[]);
-- close the persistent connection
SELECT dblink_disconnect();
--- should generate "no connection to the server" error
+-- should generate "connection not available" error
SELECT *
FROM dblink('SELECT * FROM foo') AS t(a int, b text, c text[])
WHERE t.a > 7;
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /