Re: Binary support for pgoutput plugin
Dave Cramer <davecramer@gmail.com>
From: Dave Cramer <davecramer@gmail.com>
To: Petr Jelinek <petr.jelinek@2ndquadrant.com>
Cc: Andres Freund <andres@anarazel.de>, David Fetter <david@fetter.org>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-06-05T11:21:28Z
Lists: pgsql-hackers
Hi, On Wed, 5 Jun 2019 at 07:18, Petr Jelinek <petr.jelinek@2ndquadrant.com> wrote: > Hi, > > On 05/06/2019 00:08, Andres Freund wrote: > > Hi, > > > > On 2019-06-05 00:05:02 +0200, David Fetter wrote: > >> Would it make sense to work toward a binary format that's not > >> architecture-specific? I recall from COPY that our binary format is > >> not standardized across, for example, big- and little-endian machines. > > > > I think you recall wrongly. It's obviously possible that we have bugs > > around this, but output/input routines are supposed to handle a > > endianess independent format. That usually means that you have to do > > endianess conversions, but that doesn't make it non-standardized. > > > > Yeah, there are really 3 formats of data we have, text protocol, binary > network protocol and internal on disk format. The internal on disk > format will not work across big/little-endian but network binary > protocol will. > > FWIW I don't think the code for binary format was included in original > logical replication patch (I really tried to keep it as minimal as > possible), but the code and protocol is pretty much ready for adding that. > Yes, I looked through the public history and could not find it. Thanks for confirming. > > That said, pglogical has code which handles this (I guess Andres means > that by predecessor of pgoutput) so if you look for example at the > write_tuple/read_tuple/decide_datum_transfer in > > https://github.com/2ndQuadrant/pglogical/blob/REL2_x_STABLE/pglogical_proto_native.c > that can help you give some ideas on how to approach this. > Thanks for the tip! Dave Cramer > > >
Commits
-
Weaken type-OID-matching checks in array_recv and record_recv.
- 670c0a1d474b 14.0 landed
-
Fix construction of updated-columns bitmap in logical replication.
- e8de627a3e05 11.9 landed
- d5daae47db5e 14.0 landed
- 71e561bd4bc2 12.4 landed
- 39d6aec1927c 10.14 landed
- 2f1f189cf880 13.0 landed
-
Allow logical replication to transfer data in binary format.
- 9de77b545313 14.0 landed
-
Phase 2 pgindent run for v12.
- 8255c7a5eeba 12.0 cited