diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod index e2f1d82a88fd71b1258faeee80219db04bd7bddc..50547f3ce9e3f439a3f6e48e1941ea42b256b371 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: