• Marko Mäkelä's avatar
    BLOB instrumentation for Bug#12612184 Race condition in row_upd_clust_rec() · 6348b737
    Marko Mäkelä authored
    If UNIV_DEBUG or UNIV_BLOB_LIGHT_DEBUG is enabled, add
    !rec_offs_any_null_extern() assertions, ensuring that records do not
    contain null pointers to externally stored columns in inappropriate
    places.
    
    btr_cur_optimistic_update(): Assert !rec_offs_any_null_extern().
    Incomplete records must never be updated or deleted. This assertion
    will cover also the pessimistic route.
    
    row_build(): Assert !rec_offs_any_null_extern(). Search tuples must
    never be built from incomplete index entries.
    
    row_rec_to_index_entry(): Assert !rec_offs_any_null_extern() unless
    ROW_COPY_DATA is requested. ROW_COPY_DATA is used for
    multi-versioning, and therefore it might be valid to copy the most
    recent (uncommitted) version while it contains a null pointer to
    off-page columns.
    
    row_vers_build_for_consistent_read(),
    row_vers_build_for_semi_consistent_read(): Assert !rec_offs_any_null_extern()
    on all versions except the most recent one.
    
    trx_undo_prev_version_build(): Assert !rec_offs_any_null_extern() on
    the previous version.
    
    rb:682 approved by Sunny Bains
    6348b737
trx0rec.c 45 KB