• Vlad Lesin's avatar
    MDEV-27746 Wrong comparision of BLOB's empty preffix with non-preffixed BLOB... · 3b10e8f8
    Vlad Lesin authored
    MDEV-27746 Wrong comparision of BLOB's empty preffix with non-preffixed BLOB causes rows count mismatch for clustered and secondary indexes during non-locking read
    
    row_sel_sec_rec_is_for_clust_rec() treats empty BLOB prefix field in
    secondary index as a field equal to any external BLOB field in clustered
    index. Row_sel_get_clust_rec_for_mysql::operator() doesn't zerro out
    clustered record pointer in row_search_mvcc(), and row_search_mvcc()
    thinks that delete-marked secondary index record has visible for
    "CHECK TABLE"'s read view old-versioned clustered index record, and
    row_scan_index_for_mysql() counts it as a row.
    
    The fix is to execute row_sel_sec_rec_is_for_blob() in
    row_sel_sec_rec_is_for_clust_rec() if clustered field contains BLOB's
    reference.
    3b10e8f8
blob_cmp_empty.test 840 Bytes