summaryrefslogtreecommitdiff
path: root/storage/myisam/mi_search.c
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@oracle.com>2010-11-02 09:28:48 +0200
committerMarko Mäkelä <marko.makela@oracle.com>2010-11-02 09:28:48 +0200
commit3dcbf1e279f8a9fd2d4b4a1b0423bf6a1d5b9d65 (patch)
tree454e099d4ae96b242006e3d162678846ccfc0ab6 /storage/myisam/mi_search.c
parent785d06febbff70271f6963dae71b8a3abceaba5b (diff)
downloadmariadb-git-3dcbf1e279f8a9fd2d4b4a1b0423bf6a1d5b9d65.tar.gz
Bug#57799 READ UNCOMMITTED access failure of off-page DYNAMIC or COMPRESSED
columns again This is follow-up to Bug #54358. Not all occurrences of the bug were fixed. We need to check all calls to btr_copy_externally_stored_field_prefix_low() and do the right thing when the pointer to the off-page column is null (full of zero bytes). It turns out that only the call to btr_copy_externally_stored_field_prefix() in row_sel_sec_rec_is_for_blob() needs to be changed. For fetching complete off-page columns rather than prefixes, the function btr_rec_copy_externally_stored_field() already checks if the pointer is null (all-zero). Two of its callers (row_merge_copy_blobs() and row_sel_fetch_columns()) are never executed as READ COMMITTED and can rightfully assert that the fetch succeeded. The third caller, row_sel_store_mysql_rec(), already does the right thing. The calls in row_upd_ext_fetch() and trx_undo_page_fetch_ext() must expect that the off-page column exists. Update and rollback are locking operations, never READ UNCOMMITTED.
Diffstat (limited to 'storage/myisam/mi_search.c')
0 files changed, 0 insertions, 0 deletions