pgsql: Fix logical replication between different encodings

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix logical replication between different encodings
Date: 2017-04-06 18:43:16
Message-ID: E1cwCNI-0007QS-3r@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix logical replication between different encodings

When sending a tuple attribute, the previous coding erroneously sent the
length byte before encoding conversion, which would lead to protocol
failures on the receiving side if the length did not match the following
string.

To fix that, use pq_sendcountedtext() for sending tuple attributes,
which takes care of all of that internally. To match the API of
pq_sendcountedtext(), send even text values without a trailing zero byte
and have the receiving end put it in place instead. This matches how
the standard FE/BE protocol behaves.

Reported-by: Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/6f1b9aaae35bfabe2654a8e44ce226c91e7d8bd9

Modified Files
--------------
doc/src/sgml/protocol.sgml | 7 +++--
src/backend/replication/logical/proto.c | 10 +++----
src/test/subscription/t/005_encoding.pl | 46 +++++++++++++++++++++++++++++++++
3 files changed, 55 insertions(+), 8 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2017-04-06 20:43:48 pgsql: Increase parallel bitmap scan test coverage.
Previous Message Peter Eisentraut 2017-04-06 18:31:37 pgsql: Mark immutable functions in information schema as parallel safe