diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index 62bb09f3a79c9581fc32df3885d5249a5b3f057c..d9813e3914dd5e7c67dcaf83769a38c2a9b15dd7 100644
--- a/lib/modules/Sql.pmod/pgsql.pike
+++ b/lib/modules/Sql.pmod/pgsql.pike
@@ -1958,9 +1958,13 @@ private inline void throwdelayederror(object parent) {
     }
     if((portal._tprepared=tp) && tp.datatypeoid) {
       mixed e=catch(portal->_preparebind(tp.datatypeoid));
-      if(e && !portal._delayederror)
+      if (e && !portal._delayederror) {
+        portal._unnamedstatementkey = 0;	// Release early, release often
         throw(e);
+      }
     }
+    if (!unnamedstatement)
+      portal._unnamedstatementkey = 0		// Cover for a destruct race
   }
   throwdelayederror(portal);
   return portal;