• Amit Kapila's avatar
    Stop demanding that top xact must be seen before subxact in decoding. · e3ff789a
    Amit Kapila authored
    Manifested as
    
    ERROR:  subtransaction logged without previous top-level txn record
    
    this check forbids legit behaviours like
     - First xl_xact_assignment record is beyond reading, i.e. earlier
       restart_lsn.
     - After restart_lsn there is some change of a subxact.
     - After that, there is second xl_xact_assignment (for another subxact)
       revealing the relationship between top and first subxact.
    
    Such a transaction won't be streamed anyway because we hadn't seen it in
    full.  Saying for sure whether xact of some record encountered after
    the snapshot was deserialized can be streamed or not requires to know
    whether it wrote something before deserialization point --if yes, it
    hasn't been seen in full and can't be decoded. Snapshot doesn't have such
    info, so there is no easy way to relax the check.
    
    Reported-by: Hsu, John
    Diagnosed-by: Arseny Sher
    Author: Arseny Sher, Amit Kapila
    Reviewed-by: Amit Kapila, Dilip Kumar
    Backpatch-through: 9.5
    Discussion: https://postgr.es/m/AB5978B2-1772-4FEE-A245-74C91704ECB0@amazon.com
    e3ff789a
subxact_without_top.out 1.33 KB