This patch will ensure that the hash table iteration performed by
AtCommit_Portals is restarted when a portal is deleted. This is
necessary since the deletion of a portal may cause the deletion of
another which on rare occations may cause the iterator to return a
deleted portal an thus a renewed attempt delete.
RCS file: /projects/cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v
retrieving revision 184.108.40.206
diff -u -r220.127.116.11 portalmem.c
--- src/backend/utils/mmgr/portalmem.c 26 Jan 2005 23:20:37 -0000 18.104.22.168
+++ src/backend/utils/mmgr/portalmem.c 27 Feb 2005 18:12:49 -0000
@@ -418,12 +418,6 @@
* materialized form, since we are going to close down the executor and
* release locks. Remove all other portals created in this transaction.
* Portals remaining from prior transactions should be left untouched.
- * XXX This assumes that portals can be deleted in a random order, ie,
- * no portal has a reference to any other (at least not one that will be
- * exercised during deletion). I think this is okay at the moment, but
- * we've had bugs of that ilk in the past. Keep a close eye on cursor
- * references...
@@ -489,6 +483,9 @@
/* Zap all non-holdable portals */
+ /* Restart the iteration */
+ hash_seq_init(&status, PortalHashTable);
---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]