From 819bf4ec149b06089a70a94b3ac22ed004ee9e44 Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Mon, 7 Nov 2016 13:51:41 +0100
Subject: [PATCH] pgsql: Release started statements upon destruct.

---
 lib/modules/Sql.pmod/pgsql.pike | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index 62bb09f3a7..d9813e3914 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;
-- 
GitLab