Re: logical decoding and replication of sequences, take 2
Tomas Vondra <tomas.vondra@enterprisedb.com>
From: Tomas Vondra <tomas.vondra@enterprisedb.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>,
John Naylor <john.naylor@enterprisedb.com>, vignesh C <vignesh21@gmail.com>,
Andres Freund <andres@anarazel.de>, Robert Haas <robertmhaas@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2023-03-27T14:46:09Z
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 →
-
Migrate logical slots to the new node during an upgrade.
- 29d0a77fa660 17.0 cited
-
Make test_decoding ddl.out shorter
- d6677b93c79b 17.0 landed
- c5c5832600e9 14.9 landed
- b1dc946eee3d 16.0 landed
- 3bb8b9342f8a 15.4 landed
-
Fix snapshot handling in logicalmsg_decode
- 949ac32e1267 15.3 landed
- 8b9cbd42b61f 14.8 landed
- 4df581fa0f4b 13.11 landed
- 497f863f0598 12.15 landed
- 8de91ebf2ac1 11.20 landed
- 7fe1aa991b62 16.0 landed
-
doc: Adjust a few more references to "postmaster"
- 17e72ec45d31 16.0 cited
-
Revert "Logical decoding of sequences"
- 2c7ea57e56ca 15.0 cited
On 3/27/23 03:32, Masahiko Sawada wrote: > Hi, > > On Fri, Mar 24, 2023 at 7:26 AM Tomas Vondra > <tomas.vondra@enterprisedb.com> wrote: >> >> I merged the earlier "fixup" patches into the relevant parts, and left >> two patches with new tweaks (deducing the corrent "WAL" state from the >> current state read by copy_sequence), and the interlock discussed here. >> > > Apart from that, how does the publication having sequences work with > subscribers who are not able to handle sequence changes, e.g. in a > case where PostgreSQL version of publication is newer than the > subscriber? As far as I tested the latest patches, the subscriber > (v15) errors out with the error 'invalid logical replication message > type "Q"' when receiving a sequence change. I'm not sure it's sensible > behavior. I think we should instead either (1) deny starting the > replication if the subscriber isn't able to handle sequence changes > and the publication includes that, or (2) not send sequence changes to > such subscribers. > I agree the "invalid message" error is not great, but it's not clear to me how to do either (1). The trouble is we don't really know if the publication contains (or will contain) sequences. I mean, what would happen if the replication starts and then someone adds a sequence? For (2), I think that's not something we should do - silently discarding some messages seems error-prone. If the publication includes sequences, presumably the user wanted to replicate those. If they want to replicate to an older subscriber, create a publication without sequences. Perhaps the right solution would be to check if the subscriber supports replication of sequences in the output plugin, while attempting to write the "Q" message. And error-out if the subscriber does not support it. What do you think? regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company