From 08505c02ddd51db2694c723231dd623e0a33679d Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Sat, 1 Jul 2017 08:51:21 +0200
Subject: [PATCH] pgsql: Improve debugging log.

---
 lib/modules/Sql.pmod/pgsql.pike      | 14 ++++++++------
 lib/modules/Sql.pmod/pgsql_util.pmod |  2 +-
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index fd5071f32d..cff8ae5375 100644
--- a/lib/modules/Sql.pmod/pgsql.pike
+++ b/lib/modules/Sql.pmod/pgsql.pike
@@ -1215,12 +1215,12 @@ private void procmessage() {
     }
     break;
   }
-  PD("Closing database processloop %O\n",err);
+  PD("Closing database processloop %s\n", err ? describe_backtrace(err) : "");
   _delayederror=err;
   if (objectp(portal)) {
-  #ifdef PG_DEBUG
+#ifdef PG_DEBUG
     showportal(0);
-  #endif
+#endif
     portal->_purgeportal();
   }
   if(!terminating && _options.reconnect)
@@ -1234,7 +1234,7 @@ private void procmessage() {
   if (err) {
     unnamedstatement=0;
     termlock = 0;
-    throw(err);
+    PD("Terminating processloop due to %s\n", describe_backtrace(err));
   }
 }
 
@@ -1251,10 +1251,12 @@ private void procmessage() {
     catch(cancelquery());
   if (unnamedstatement)
     termlock = unnamedstatement->lock(1);
-  c->close();
+  if (c)				// Prevent trivial backtraces
+    c->close();
   if (unnamedstatement)
     lock = unnamedstatement->lock(1);
-  destruct(c);
+  if (c)
+    destruct(c);
   lock = 0;
   destruct(waitforauthready);
 }
diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index b51d3cbf41..713073f8c2 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -249,7 +249,7 @@ class conxiin {
   }
 
   final int read_cb(mixed id,mixed b) {
-    PD("Read callback %O\n",((string)b)
+    PD("Read callback %O\n", b && ((string)b)
 #ifndef PG_DEBUGMORE
       [..255]
 #endif
-- 
GitLab