diff options
author | Sergei Golubchik <sergii@pisem.net> | 2012-11-22 11:43:55 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2012-11-22 11:43:55 +0100 |
commit | c499fa1ef391556b0fe12d5a38af5ae674b98a19 (patch) | |
tree | d693a3ffa91d8ca10359783b7be5ebfad222eae4 /storage/xtradb/page | |
parent | a48a91d90f07798deebe514d9d827fb719da7294 (diff) | |
parent | b1b939f4f79ae3eeab5afcd2d3a405009368280f (diff) | |
download | mariadb-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.c | 21 |
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); } } |