From: | Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com> |
---|---|
To: | Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Petr Jelinek <petr(dot)jelinek(at)enterprisedb(dot)com> |
Subject: | Re: logical decoding and replication of sequences |
Date: | 2021-12-08 00:23:45 |
Message-ID: | 118b249f-e4ef-2faf-8e25-dd25236dc964@enterprisedb.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 12/7/21 15:38, Peter Eisentraut wrote:
> I have checked the 0001 and 0003 patches. (I think we have dismissed
> the approach in 0002 for now. And let's talk about 0004 later.)
>
Right, I think that's correct.
> I have attached a few fixup patches, described further below.
>
> # 0001
>
> The argument "create" for fill_seq_with_data() is always true (and
> patch 0002 removes it). So I'm not sure if it's needed. If it is, it
> should be documented somewhere.
>
Good point. I think it could be removed, but IIRC it'll be needed when
adding sequence decoding to the built-in replication, and that patch is
meant to be just an implementation of the API, without changing WAL.
OTOH I don't see it in the last version of that patch (in ResetSequence2
call) so maybe it's not really needed. I've kept it for now, but I'll
investigate.
> About the comment you added in nextval_internal(): It's a good
> explanation, so I would leave it in. I also agree with the
> conclusion of the comment that the current solution is reasonable. We
> probably don't need the same comment again in fill_seq_with_data() and
> again in do_setval(). Note that both of the latter functions already
> point to nextval_interval() for other comments, so the same can be
> relied upon here as well.
>
True. I moved it a bit in nextval_internal() and removed the other
copies. The existing references should be enough.
> The order of the new fields sequence_cb and stream_sequence_cb is a
> bit inconsistent compared to truncate_cb and stream_truncate_cb.
> Maybe take another look to make the order more uniform.
>
You mean in OutputPluginCallbacks? I'd actually argue it's the truncate
callbacks that are inconsistent - in the regular section truncate_cb is
right before commit_cb, while in the streaming section it's at the end.
Or what order do you think would be better? I'm fine with changing it.
> Some documentation needs to be added to the Logical Decoding chapter.
> I have attached a patch that I think catches all the places that need
> to be updated, with some details left for you to fill in. ;-) The
> ordering of the some of the documentation chunks reflects the order in
> which the callbacks appear in the header files, which might not be
> optimal; see above.
>
Thanks. I added a bit about the callbacks being optional and what the
parameters mean (only for sequence_cb, as the stream_ callbacks
generally don't copy that bit).
> In reorderbuffer.c, you left a comment about how to access a sequence
> tuple. There is an easier way, using Form_pg_sequence_data, which is
> how sequence.c also does it. See attached patch.
>
Yeah, that looks much nicer.
> # 0003
>
> The tests added in 0003 don't pass for me. It appears that you might
> have forgotten to update the expected files after you added some tests
> or something. The cfbot shows the same. See attached patch for a
> correction, but do check what your intent was.
>
Yeah. I suspect I removed the expected results due to the experimental
rework. I haven't noticed that because some of the tests for the
built-in replication are expected to fail.
Attached is an updated version of the first two parts (infrastructure
and test_decoding), with all your fixes merged.
regards
--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Attachment | Content-Type | Size |
---|---|---|
0001-Logical-decoding-of-sequences-20211208.patch | text/x-patch | 47.2 KB |
0002-Add-support-for-decoding-sequences-to-test_-20211208.patch | text/x-patch | 20.7 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Bharath Rupireddy | 2021-12-08 01:20:36 | Re: Is it correct to update db state in control file as "shutting down" during end-of-recovery checkpoint? |
Previous Message | Imseih (AWS), Sami | 2021-12-07 23:45:51 | Re: Add sub-transaction overflow status in pg_stat_activity |