From e4c30e6d6b253e5878fcb7d50fec530c47be05cb Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Tue, 6 Feb 2018 12:34:33 +0100
Subject: [PATCH] pgsql: Wireformat NUMERIC type fixes and finetuning.

---
 lib/modules/Sql.pmod/pgsql_util.pmod | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index e2f1d82a88..50547f3ce9 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -912,12 +912,11 @@ class sql_result {
                 if (sizeof(value) == 1)
                   value = (int)value[0];
                 else {
-                  int i = sizeof(value[1]);
-                  int denom = 1;
-                  do
-                     denom *= 10;
-                  while (--i >= 0);
-                  value = Gmp.mpq((int)value[0] * denom + (int)value[1],
+                  int i, denom;
+                  for (i = sizeof(value[1]), denom = 1; --i >= 0; denom *= 10);
+                  i = (int)value[0];
+                  value = (int)value[1];
+                  value = Gmp.mpq(i * denom + (i >= 0 ? value : -value),
                    denom);
                 }
               }
@@ -955,6 +954,8 @@ class sql_result {
                 case 0:;
                   value = 0;
               }
+              if (alltext)
+                value = (string)value;
             }
             break;
           case INT8OID:case INT2OID:
-- 
GitLab