Re: Allow logical replication to copy tables in binary format
Melih Mutlu <m.melihmutlu@gmail.com>
From: Melih Mutlu <m.melihmutlu@gmail.com>
To: Euler Taveira <euler@eulerto.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-08-11T13:46:21Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Allow logical replication to copy tables in binary format.
- ecb696527c01 16.0 landed
-
Common function for percent placeholder replacement
- c96de2ce1782 16.0 cited
-
Doc: add XML ID attributes to <sectN> and <varlistentry> tags.
- 78ee60ed84bb 16.0 cited
-
Re-order disable_on_error in tab-complete.
- d547f7cf5efc 16.0 cited
-
Make subscription tests pass with log_error_verbosity=verbose
- 19408aae7fa2 15.0 cited
-
Weaken type-OID-matching checks in array_recv and record_recv.
- 670c0a1d474b 14.0 cited
-
Allow logical replication to transfer data in binary format.
- 9de77b545313 14.0 cited
Euler Taveira <euler@eulerto.com>, 11 Ağu 2022 Per, 16:27 tarihinde şunu yazdı: > On Thu, Aug 11, 2022, at 8:04 AM, Amit Kapila wrote: > > On Thu, Aug 11, 2022 at 7:34 AM Euler Taveira <euler@eulerto.com> wrote: > > > > The reason to use text format is that it is error prone. There are > restrictions > > while using the binary format. For example, if your schema has different > data > > types for a certain column, the copy will fail. > > > > Won't such restrictions hold true even during replication? > > I expect that the COPY code matches the proto.c code. The point is that > table > sync is decoupled from the logical replication. Hence, we should emphasize > in > the documentation that the restrictions *also* apply to the initial table > synchronization. > If such restrictions are already the case for replication phase after initial table sync, then it shouldn't prevent us from enabling binary option for table sync. Right? But yes, it needs to be stated somewhere. Euler Taveira <euler@eulerto.com>, 11 Ağu 2022 Per, 05:03 tarihinde şunu yazdı > I have a few points about your implementation. > > * Are we considering to support prior Postgres versions too? These releases > support binary mode but it could be an unexpected behavior (initial sync > in > binary mode) for a publisher using 14 or 15 and a subscriber using 16. > IMO > you should only allow it for publisher on 16 or later. > How is any issue that might occur due to version mismatch being handled right now in repliaction after table sync? What I understand from the documentation is if replication can fail due to using different pg versions, it just fails. So binary option cannot be used. [1] Do you think that this is more serious for table sync and we need to restrict binary option with different publisher and subscriber versions? But not for replication? * Docs should say that the binary option also applies to initial table > synchronization and possibly emphasize some of the restrictions. > * Tests. Are the current tests enough? 014_binary.pl. > You're right on both points. I just wanted to know your opinions on this first. Then the patch will need some tests and proper documentation. [1] https://www.postgresql.org/docs/15/sql-createsubscription.html <https://www.postgresql.org/docs/15/sql-createsubscription.html> Best, Melih