summaryrefslogtreecommitdiff
path: root/storage/xtradb/page
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2012-11-22 11:43:55 +0100
committerSergei Golubchik <sergii@pisem.net>2012-11-22 11:43:55 +0100
commitc499fa1ef391556b0fe12d5a38af5ae674b98a19 (patch)
treed693a3ffa91d8ca10359783b7be5ebfad222eae4 /storage/xtradb/page
parenta48a91d90f07798deebe514d9d827fb719da7294 (diff)
parentb1b939f4f79ae3eeab5afcd2d3a405009368280f (diff)
downloadmariadb-git-c499fa1ef391556b0fe12d5a38af5ae674b98a19.tar.gz
XtraDB from Percona-Server-5.5.28-rel29.1
Diffstat (limited to 'storage/xtradb/page')
-rw-r--r--storage/xtradb/page/page0page.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/storage/xtradb/page/page0page.c b/storage/xtradb/page/page0page.c
index 4a389bbe5b8..e29fa2eb1e5 100644
--- a/storage/xtradb/page/page0page.c
+++ b/storage/xtradb/page/page0page.c
@@ -781,12 +781,18 @@ page_copy_rec_list_start(
if (UNIV_LIKELY_NULL(new_page_zip)) {
mtr_set_log_mode(mtr, log_mode);
+ DBUG_EXECUTE_IF("page_copy_rec_list_start_compress_fail",
+ goto zip_reorganize;);
+
if (UNIV_UNLIKELY
(!page_zip_compress(new_page_zip, new_page, index, mtr))) {
+ ulint ret_pos;
+#ifndef DBUG_OFF
+zip_reorganize:
+#endif /* DBUG_OFF */
/* Before trying to reorganize the page,
store the number of preceding records on the page. */
- ulint ret_pos
- = page_rec_get_n_recs_before(ret);
+ ret_pos = page_rec_get_n_recs_before(ret);
/* Before copying, "ret" was the predecessor
of the predefined supremum record. If it was
the predefined infimum record, then it would
@@ -807,15 +813,10 @@ page_copy_rec_list_start(
btr_blob_dbg_add(new_page, index,
"copy_start_reorg_fail");
return(NULL);
- } else {
- /* The page was reorganized:
- Seek to ret_pos. */
- ret = new_page + PAGE_NEW_INFIMUM;
-
- do {
- ret = rec_get_next_ptr(ret, TRUE);
- } while (--ret_pos);
}
+
+ /* The page was reorganized: Seek to ret_pos. */
+ ret = page_rec_get_nth(new_page, ret_pos);
}
}