encoding problem while inictial copy in logical replication - Mailing list pgsql-general

From Jaime Casanova
Subject encoding problem while inictial copy in logical replication
Date
Msg-id CAJKUy5gJ-MCaZ4KGnhz4SLDZ2fecYxpvDHfgSgCm5n3f9OHx+A@mail.gmail.com
Whole thread Raw
Responses Re: encoding problem while inictial copy in logical replication
List pgsql-general
Hi,

I have a database with UTF8 encoding. This database seems to be
receiving data in WIN1252 encoding from some client.

I even see this:

db=# select * from pg_db_role_setting ;
 setdatabase | setrole  |                                   setconfig
-------------+----------+-------------------------------------------------------------------------------
      119464 |        0 |
{client_encoding=WIN1252,bytea_output=escape,standard_conforming_strings=off}
(1 rows)

Some time ago I tried to create a logical replication, for a speed up
I used I created a physical replica and converted it in a logical one
and it works fine.
But the I tried to add a new table to the replica, so I added it to
the publication and when I "ALTER SUBSCRIPTION .... REFRESH
PUBLICATION" got this error.

2025-09-16 08:20:24.971 UTC [1535715] LOG:  logical replication table
synchronization worker for subscription "sub1", table "new_table" has
started
2025-09-16 09:20:23.037 UTC [1535715] ERROR:  character with byte
sequence 0x8d in encoding "WIN1252" has no equivalent in encoding
"UTF8"
2025-09-16 09:20:23.037 UTC [1535715] CONTEXT:  COPY new_table, line 2489
2025-09-16 09:20:23.041 UTC [1463234] LOG:  background worker "logical
replication worker" (PID 1535715) exited with exit code 1

But if I pg_dump the data directly to the table in the subscription
and avoid the initial copy using copy_data=false, it works fine.

I tried to "SET client_encoding=UTF8" before the refresh and also
created an user that defaults to client_encoding=UTF8 for using it in
the subscription connection, but I still see the problem during the
initial copy of data.
AFAICS, this doesn't ocurr during normal replication process.

Any idea? Currently my process is to manually copy the data.

--
Jaime Casanova
SYSTEMGUARDS
Director de servicios profesionales



pgsql-general by date:

Previous
From: "Daniel Westermann (DWE)"
Date:
Subject: EDB Windows Installer on Windows Server 2025
Next
From: Vladlen Popolitov
Date:
Subject: Re: Silent data corruption in PostgreSQL 17 - how to detect it proactively?