• Amit Kapila's avatar
    Fix assertion failures while processing NEW_CID record in logical decoding. · a592ed92
    Amit Kapila authored
    When the logical decoding restarts from NEW_CID, since there is no
    association between the top transaction and its subtransaction, both are
    created as top transactions and have the same LSN. This caused the
    assertion failure in AssertTXNLsnOrder().
    
    This patch skips the assertion check until we reach the LSN at which we
    start decoding the contents of the transaction, specifically
    start_decoding_at LSN in SnapBuild. This is okay because we don't
    guarantee to make the association between top transaction and
    subtransaction until we try to decode the actual contents of transaction.
    The ordering of the records prior to the start_decoding_at LSN should have
    been checked before the restart.
    
    The other assertion failure is due to the reason that we forgot to track
    that we have considered top-level transaction id in the list of catalog
    changing transactions that were committed when one of its subtransactions
    is marked as containing catalog change.
    
    Reported-by: Tomas Vondra, Osumi Takamichi
    Author: Masahiko Sawada, Kuroda Hayato
    Reviewed-by: Amit Kapila, Dilip Kumar, Kuroda Hayato, Kyotaro Horiguchi, Masahiko Sawada
    Backpatch-through: 10
    Discussion: https://postgr.es/m/a89b46b6-0239-2fd5-71a9-b19b1f7a7145%40enterprisedb.com
    Discussion: https://postgr.es/m/TYCPR01MB83733C6CEAE47D0280814D5AED7A9%40TYCPR01MB8373.jpnprd01.prod.outlook.com
    a592ed92
catalog_change_snapshot.spec 2.94 KB