pgsql: Adjust tuple data lookup logic in multi-insert logical decoding

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Adjust tuple data lookup logic in multi-insert logical decoding
Date: 2019-08-07 01:33:36
Message-ID: E1hvApc-000521-9u@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Adjust tuple data lookup logic in multi-insert logical decoding

As of now, logical decoding of a multi-insert has been scanning all
xl_multi_insert_tuple entries only if XLH_INSERT_CONTAINS_NEW_TUPLE was
getting set in the record. This is not an issue on HEAD as multi-insert
records are not used for system catalogs, but the logical decoding logic
includes all the code necessary to handle that properly, except that the
code missed to iterate correctly over all xl_multi_insert_tuple entries
when the flag is not set. Hence, when trying to use multi-insert for
system catalogs, an assertion would be triggered.

An upcoming patch is going to make use of multi-insert for system
catalogs, and this fixes the logic to make sure that all entries are
scanned correctly without softening the existing assertions.

Reported-by: Daniel Gustafsson
Author: Michael Paquier
Reviewed-by: Daniel Gustafsson
Discussion: https://postgr.es/m/CBFFD532-C033-49EB-9A5A-F67EAEE9EB0B@yesql.se

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/75c1921cd6c868c5995b88113b4463a4830b9a27

Modified Files
--------------
src/backend/replication/logical/decode.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2019-08-07 09:19:16 pgsql: Fix some incorrect parsing of time with time zone strings
Previous Message Tom Lane 2019-08-06 22:05:22 pgsql: Fix intarray's GiST opclasses to not fail for empty arrays with