diff options
Diffstat (limited to 'src/backend/commands/copy.c')
-rw-r--r-- | src/backend/commands/copy.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 2b49094bea0..6678522dc73 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/copy.c,v 1.263 2006/04/05 22:11:54 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/copy.c,v 1.264 2006/05/21 20:05:19 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1023,9 +1023,15 @@ DoCopy(const CopyStmt *stmt) cstate->raw_buf_index = cstate->raw_buf_len = 0; cstate->processed = 0; - /* Set up encoding conversion info */ + /* + * Set up encoding conversion info. Even if the client and server + * encodings are the same, we must apply pg_client_to_server() to + * validate data in multibyte encodings. + */ cstate->client_encoding = pg_get_client_encoding(); - cstate->need_transcoding = (cstate->client_encoding != GetDatabaseEncoding()); + cstate->need_transcoding = + (cstate->client_encoding != GetDatabaseEncoding() || + pg_database_encoding_max_length() > 1); /* See Multibyte encoding comment above */ cstate->encoding_embeds_ascii = PG_ENCODING_IS_CLIENT_ONLY(cstate->client_encoding); |