diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 52d946e2653fbdfb43efdff2e3edc8e8dca903fa..9bf23ab616e5419ab5458a9e0800863e2871d747 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -1233,7 +1233,7 @@ class sql_result {
                 plugbuffer->add_int32(-1);
                 break;
               }
-              if (!objectp(value) || typeof(value) != typeof(Stdio.Buffer()));
+              if (!objectp(value) || typeof(value) != typeof(Stdio.Buffer()))
                 /*
                  *  Like Oracle and SQLite, we accept literal binary values
                  *  from single-valued multisets.
@@ -1242,20 +1242,20 @@ class sql_result {
                   value = indices(value)[0];
                 else {
                   value = (string)value;
-                  if (String.width(value) > 8)
-                    if (dtoid[i] == BYTEAOID)
+                  if (cenc == UTF8CHARSET
+                    && (dtoid[i] != BYTEAOID || String.width(value) > 8))
                       /*
-                       *  FIXME We should throw an error here, it would
-                       *  have been correct, but for historical reasons and
-                       *  as a DWIM convenience we autoconvert to UTF8 here.
+                       *  FIXME For BYTEAOID and wide strings we should
+                       *  throw an error here, but for historical reasons and
+                       *  as a DWIM convenience we autoconvert to UTF8 anyway.
                        */
-                      value = string_to_utf8(value);
-                    else {
-                      SUSERERROR(
-                        "Wide string %O not supported for type OID %d\n",
-                        value, dtoid[i]);
-                      value = "";
-                    }
+                    value = string_to_utf8(value);
+                  else if (String.width(value) > 8) {
+                    SUSERERROR(
+                      "Wide string %O not supported for type OID %d\n",
+                      value, dtoid[i]);
+                    value = "";
+                  }
                 }
               plugbuffer->add_hstring(value, 4);
               break;