• Annamalai Gurusami's avatar
    Bug#18185930 UPD_NODE_INSERT_BLOB CAUSES BTR_EXTERN_OWNER_FLAG ASSERTION · 6193c632
    Annamalai Gurusami authored
    Problem:
    
    In the clustered index, when an update operation is done the overall
    scenario (after rb#4479) is as follows:
    
    1.  Delete mark the old record that is to be updated.
    2.  The old record disowns the blobs.
    3.  Insert the new record into clustered index.
    4.  For non-updated blobs, new record must own it. Verified by assert.
    5.  For non-updated blobs, in new record marked as inherited.
    
    Scenario involving DB_LOCK_WAIT:
    
    If step 3 times out, then we will skip 1 and 2 and will continue from
    step 3.  This skipping is achieved by the UPD_NODE_INSERT_BLOB state.
    In this case, step 4 is not correct.  Because of step 1, the new
    record need not own the blobs.  Hence the assert failure.
    
    Solution:
    
    The assert in step 4 is removed.  Instead code is added to ensure that
    the record owns the blob.  
    
    Note:
    
    This is a regression caused by rb#4479.
    
    rb#4571 approved by Marko
    
    
    6193c632
row0upd.c 65 KB