Commit af6d89a6 authored by Karen Langford's avatar Karen Langford

Merge

parents 43bb40e0 4e762426
2010-05-03 The InnoDB Team
* buf0buf.c:
Fix Bug#53248 compressed tables page checksum mismatch after
re-enabling innodb_checksums
2010-04-28 The InnoDB Team 2010-04-28 The InnoDB Team
* log/log0recv.h, log/log0recv.c: * log/log0recv.h, log/log0recv.c:
......
...@@ -1999,9 +1999,13 @@ func_start: ...@@ -1999,9 +1999,13 @@ func_start:
split_rec = NULL; split_rec = NULL;
goto insert_empty; goto insert_empty;
} }
} else if (UNIV_UNLIKELY(insert_left)) {
first_rec = page_rec_get_next(page_get_infimum_rec(page));
move_limit = page_rec_get_next(btr_cur_get_rec(cursor));
} else { } else {
insert_empty: insert_empty:
ut_ad(!split_rec); ut_ad(!split_rec);
ut_ad(!insert_left);
buf = mem_alloc(rec_get_converted_size(cursor->index, buf = mem_alloc(rec_get_converted_size(cursor->index,
tuple, n_ext)); tuple, n_ext));
...@@ -2025,7 +2029,11 @@ insert_empty: ...@@ -2025,7 +2029,11 @@ insert_empty:
&& btr_page_insert_fits(cursor, split_rec, && btr_page_insert_fits(cursor, split_rec,
offsets, tuple, n_ext, heap); offsets, tuple, n_ext, heap);
} else { } else {
if (!insert_left) {
mem_free(buf); mem_free(buf);
buf = NULL;
}
insert_will_fit = !new_page_zip insert_will_fit = !new_page_zip
&& btr_page_insert_fits(cursor, NULL, && btr_page_insert_fits(cursor, NULL,
NULL, tuple, n_ext, heap); NULL, tuple, n_ext, heap);
......
...@@ -1821,13 +1821,13 @@ buf_zip_decompress( ...@@ -1821,13 +1821,13 @@ buf_zip_decompress(
ibool check) /*!< in: TRUE=verify the page checksum */ ibool check) /*!< in: TRUE=verify the page checksum */
{ {
const byte* frame = block->page.zip.data; const byte* frame = block->page.zip.data;
ulint stamp_checksum = mach_read_from_4(
frame + FIL_PAGE_SPACE_OR_CHKSUM);
ut_ad(buf_block_get_zip_size(block)); ut_ad(buf_block_get_zip_size(block));
ut_a(buf_block_get_space(block) != 0); ut_a(buf_block_get_space(block) != 0);
if (UNIV_LIKELY(check)) { if (UNIV_LIKELY(check && stamp_checksum != BUF_NO_CHECKSUM_MAGIC)) {
ulint stamp_checksum = mach_read_from_4(
frame + FIL_PAGE_SPACE_OR_CHKSUM);
ulint calc_checksum = page_zip_calc_checksum( ulint calc_checksum = page_zip_calc_checksum(
frame, page_zip_get_size(&block->page.zip)); frame, page_zip_get_size(&block->page.zip));
...@@ -2251,8 +2251,9 @@ wait_until_unfixed: ...@@ -2251,8 +2251,9 @@ wait_until_unfixed:
/* Decompress the page and apply buffered operations /* Decompress the page and apply buffered operations
while not holding buf_pool_mutex or block->mutex. */ while not holding buf_pool_mutex or block->mutex. */
success = buf_zip_decompress(block, srv_use_checksums); success = buf_zip_decompress(block, srv_use_checksums);
ut_a(success);
if (UNIV_LIKELY(success && !recv_no_ibuf_operations)) { if (UNIV_LIKELY(!recv_no_ibuf_operations)) {
ibuf_merge_or_delete_for_page(block, space, offset, ibuf_merge_or_delete_for_page(block, space, offset,
zip_size, TRUE); zip_size, TRUE);
} }
...@@ -2265,13 +2266,6 @@ wait_until_unfixed: ...@@ -2265,13 +2266,6 @@ wait_until_unfixed:
mutex_exit(&block->mutex); mutex_exit(&block->mutex);
buf_pool->n_pend_unzip--; buf_pool->n_pend_unzip--;
rw_lock_x_unlock(&block->lock); rw_lock_x_unlock(&block->lock);
if (UNIV_UNLIKELY(!success)) {
buf_pool_mutex_exit();
return(NULL);
}
break; break;
case BUF_BLOCK_ZIP_FREE: case BUF_BLOCK_ZIP_FREE:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment