From fac8253dc4c2775bc3123e6781eed8e4bac20282 Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Fri, 5 Jan 2018 15:49:20 +0100
Subject: [PATCH] pgsql: Swallow multiple EOF marks in final data rows in
 fetch_row_array().

Depending on timing when the query finishes, there can be
multiple internal EOF rows.
---
 lib/modules/Sql.pmod/pgsql_util.pmod | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 43d1ec91be..cb03aa8afb 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -1374,10 +1374,12 @@ class sql_result {
     }
     if (arrayp(datarow[-1]))
       return datarow;
+    do datarow = datarow[..<1];			// Swallow EOF mark(s)
+    while (sizeof(datarow) && !arrayp(datarow[-1]));
     trydelayederror();
     eoffound = 1;
     datarows->write(1);				// Signal EOF for other threads
-    return (datarow = datarow[..<1]);
+    return datarow;
   }
 
   //! @param copydata
-- 
GitLab