diff --git a/src/backend/commands/copyfromparse.c b/src/backend/commands/copyfromparse.c index 60dfebb0bd..1681efc7a0 100644 --- a/src/backend/commands/copyfromparse.c +++ b/src/backend/commands/copyfromparse.c @@ -397,6 +397,9 @@ CopyConvertBuf(CopyFromState cstate) (unsigned char *) cstate->raw_buf + cstate->raw_buf_len, dstlen, true); + +ereport(NOTICE, errmsg_internal("convertedbytes: %d", convertedbytes)); + if (convertedbytes == 0) { /* diff --git a/src/backend/utils/mb/conv.c b/src/backend/utils/mb/conv.c index b83358bc7a..26600e68ee 100644 --- a/src/backend/utils/mb/conv.c +++ b/src/backend/utils/mb/conv.c @@ -497,7 +497,7 @@ UtfToLocal(const unsigned char *utf, int len, int l; const pg_utf_to_local_combined *cp; const unsigned char *start = utf; - const unsigned char *cur = utf; + unsigned char *cur = unconstify(unsigned char *, utf); if (!PG_VALID_ENCODING(encoding)) ereport(ERROR, @@ -511,8 +511,6 @@ UtfToLocal(const unsigned char *utf, int len, unsigned char b3 = 0; unsigned char b4 = 0; - cur = iso; - /* "break" cases all represent errors */ if (*utf == '\0') break; @@ -613,6 +611,7 @@ UtfToLocal(const unsigned char *utf, int len, if (cp) { iso = store_coded_char(iso, cp->code); + cur += l; continue; } } @@ -631,6 +630,7 @@ UtfToLocal(const unsigned char *utf, int len, if (converted) { iso = store_coded_char(iso, converted); + cur += l; continue; } } @@ -643,6 +643,7 @@ UtfToLocal(const unsigned char *utf, int len, if (converted) { iso = store_coded_char(iso, converted); + cur += l; continue; } }