3860 Marko Mäkelä 2012-05-23
btr_cur_pessimistic_update(): Fix a bug in the rec_get_offsets() elimination.
When the page is compressed and we need to keep the cursor position,
adjust the offsets as well.
modified:
storage/innobase/btr/btr0cur.cc
3859 Marko Mäkelä 2012-05-23
row_rec_to_index_entry(): Make offsets const,
which it is except in debug builds.
modified:
storage/innobase/include/row0row.h
storage/innobase/row/row0row.cc
=== modified file 'storage/innobase/btr/btr0cur.cc'
--- a/storage/innobase/btr/btr0cur.cc revid:marko.makela@stripped120523200825-1b24wboxme77f0gz
+++ b/storage/innobase/btr/btr0cur.cc revid:marko.makela@strippedbaz8a8g7htwg9db
@@ -2437,10 +2437,12 @@ make_external:
page_zip, rec, index, *offsets, mtr);
}
- btr_cur_compress_if_useful(
- cursor,
- big_rec_vec != NULL && (flags & BTR_KEEP_POS_FLAG),
- mtr);
+ bool adjust = big_rec_vec && (flags & BTR_KEEP_POS_FLAG);
+
+ if (btr_cur_compress_if_useful(cursor, adjust, mtr)
+ && adjust) {
+ rec_offs_make_valid(page_cursor->rec, index, *offsets);
+ }
if (page_zip && !dict_index_is_clust(index)
&& page_is_leaf(page)) {
@@ -2454,8 +2456,7 @@ make_external:
ut_a(optim_err != DB_UNDERFLOW);
/* Out of space: reset the free bits. */
- if (!dict_index_is_clust(index)
- && page_is_leaf(page)) {
+ if (!dict_index_is_clust(index) && page_is_leaf(page)) {
ibuf_reset_free_bits(block);
}
}
No bundle (reason: useless for push emails).| Thread |
|---|
| • bzr push into mysql-trunk-wl6255 branch (marko.makela:3859 to 3860) | marko.makela | 24 May |