Can postgres replication slot using pgoutput release multiple CDC records for a single update to a particular row

From: Akashkiran Shivakumar <akashkiran(dot)foss(at)gmail(dot)com>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Can postgres replication slot using pgoutput release multiple CDC records for a single update to a particular row
Date: 2025-07-29 22:37:54
Message-ID: CADTnmPjcbW07j26AxdqAsMbSJEAdHtva7Kdazmo99twuF59whw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello,
I have a postgres database (major version 13) and am doing CDC by using a
replication slot with pgoutput. In our data lake, we see that there are
multiple updates (3 in this case) happening to the same row as part of the
same transaction. This doesn't make sense if we look at them as separate
updates. The expectation was that the row was updated once and a single CDC
record was pushed out. I haven't completely ruled out whether multiple
updates happened in that transaction but I wanted to ask the community if
it is possible that a single update statement could spill over as multiple
CDC update records by pgoutput / postgres ?

If yes, could you possibly point to the testcases or code where this might
happen? Any blogs or suggestions are welcome. LMK if you need further
information

P.S: Each update seen in the data lake changes at least one field in the
row. The entire row with all the columns are pushed out for the 3 updates
seen in the data lake. From the application perspective, it makes sense if
the 3 updates were merged into a single update record

Regards,
Akashkiran

Browse pgsql-general by date

  From Date Subject
Next Message Fujii Masao 2025-07-30 02:49:56 Re: analyze-in-stages post upgrade questions
Previous Message Laurenz Albe 2025-07-29 15:35:52 Re: Regarding logical replication issues with PostgreSQL versions 16and above