Commit 7c37bc94 authored by marko's avatar marko

branches/innodb+: ibuf_get_volume_buffered():

Invoke ibuf_get_volume_buffered_count() as many times as
ibuf_rec_get_volume(rec), so that *n_recs will be updated as appropriate.
This fixes Issue #82: some deletes will be buffered in purge.
parent 46ccc6a6
...@@ -528,6 +528,14 @@ btr_cur_search_to_nth_level( ...@@ -528,6 +528,14 @@ btr_cur_search_to_nth_level(
buf_mode = BUF_GET_IF_IN_POOL_OR_WATCH; buf_mode = BUF_GET_IF_IN_POOL_OR_WATCH;
} }
if (height == 0
&& buf_mode != BUF_GET_IF_IN_POOL
&& buf_mode != BUF_GET_IF_IN_POOL_OR_WATCH
&& !dict_index_is_clust(index)) {
fprintf(stderr, "fetching %lu:%lu of %s\n",
(ulong) space, (ulong) page_no, index->name);
}
block = buf_page_get_gen( block = buf_page_get_gen(
space, zip_size, page_no, rw_latch, guess, buf_mode, space, zip_size, page_no, rw_latch, guess, buf_mode,
__FILE__, __LINE__, mtr); __FILE__, __LINE__, mtr);
......
...@@ -177,6 +177,9 @@ buf_read_ahead_random( ...@@ -177,6 +177,9 @@ buf_read_ahead_random(
ulint offset) /* in: page number of a page which the current thread ulint offset) /* in: page number of a page which the current thread
wants to access */ wants to access */
{ {
#if 1
return(0);
#else
ib_int64_t tablespace_version; ib_int64_t tablespace_version;
ulint recent_blocks = 0; ulint recent_blocks = 0;
ulint count; ulint count;
...@@ -309,6 +312,7 @@ buf_read_ahead_random( ...@@ -309,6 +312,7 @@ buf_read_ahead_random(
++srv_read_ahead_rnd; ++srv_read_ahead_rnd;
return(count); return(count);
#endif
} }
/************************************************************************ /************************************************************************
...@@ -395,6 +399,9 @@ buf_read_ahead_linear( ...@@ -395,6 +399,9 @@ buf_read_ahead_linear(
ulint offset) /* in: page number of a page; NOTE: the current thread ulint offset) /* in: page number of a page; NOTE: the current thread
must want access to this page (see NOTE 3 above) */ must want access to this page (see NOTE 3 above) */
{ {
#if 1
return(0);
#else
ib_int64_t tablespace_version; ib_int64_t tablespace_version;
buf_page_t* bpage; buf_page_t* bpage;
buf_frame_t* frame; buf_frame_t* frame;
...@@ -627,6 +634,7 @@ buf_read_ahead_linear( ...@@ -627,6 +634,7 @@ buf_read_ahead_linear(
++srv_read_ahead_seq; ++srv_read_ahead_seq;
return(count); return(count);
#endif
} }
/************************************************************************ /************************************************************************
......
...@@ -5894,6 +5894,7 @@ ha_innobase::create( ...@@ -5894,6 +5894,7 @@ ha_innobase::create(
| DICT_TF_FORMAT_ZIP | DICT_TF_FORMAT_ZIP
<< DICT_TF_FORMAT_SHIFT; << DICT_TF_FORMAT_SHIFT;
break; break;
#if 0
case 8: case 8:
flags = 4 << DICT_TF_ZSSIZE_SHIFT flags = 4 << DICT_TF_ZSSIZE_SHIFT
| DICT_TF_COMPACT | DICT_TF_COMPACT
...@@ -5906,8 +5907,9 @@ ha_innobase::create( ...@@ -5906,8 +5907,9 @@ ha_innobase::create(
| DICT_TF_FORMAT_ZIP | DICT_TF_FORMAT_ZIP
<< DICT_TF_FORMAT_SHIFT; << DICT_TF_FORMAT_SHIFT;
break; break;
#if DICT_TF_ZSSIZE_MAX != 5 #endif
# error "DICT_TF_ZSSIZE_MAX != 5" #if DICT_TF_ZSSIZE_MAX != 3
# error "DICT_TF_ZSSIZE_MAX != 3"
#endif #endif
} }
......
...@@ -2676,6 +2676,7 @@ ibuf_get_volume_buffered( ...@@ -2676,6 +2676,7 @@ ibuf_get_volume_buffered(
volume = 0; volume = 0;
*n_recs = 0; *n_recs = 0;
memset(hash_bitmap, 0, sizeof hash_bitmap);
rec = btr_pcur_get_rec(pcur); rec = btr_pcur_get_rec(pcur);
page = page_align(rec); page = page_align(rec);
...@@ -2698,6 +2699,9 @@ ibuf_get_volume_buffered( ...@@ -2698,6 +2699,9 @@ ibuf_get_volume_buffered(
volume += ibuf_rec_get_volume(rec); volume += ibuf_rec_get_volume(rec);
ibuf_get_volume_buffered_count(
rec, hash_bitmap, sizeof hash_bitmap, n_recs);
rec = page_rec_get_prev(rec); rec = page_rec_get_prev(rec);
} }
...@@ -2748,6 +2752,9 @@ ibuf_get_volume_buffered( ...@@ -2748,6 +2752,9 @@ ibuf_get_volume_buffered(
volume += ibuf_rec_get_volume(rec); volume += ibuf_rec_get_volume(rec);
ibuf_get_volume_buffered_count(
rec, hash_bitmap, sizeof hash_bitmap, n_recs);
rec = page_rec_get_prev(rec); rec = page_rec_get_prev(rec);
} }
......
...@@ -235,7 +235,7 @@ management to ensure correct alignment for doubles etc. */ ...@@ -235,7 +235,7 @@ management to ensure correct alignment for doubles etc. */
*/ */
/* The 2-logarithm of UNIV_PAGE_SIZE: */ /* The 2-logarithm of UNIV_PAGE_SIZE: */
#define UNIV_PAGE_SIZE_SHIFT 14 #define UNIV_PAGE_SIZE_SHIFT 12
/* The universal page size of the database */ /* The universal page size of the database */
#define UNIV_PAGE_SIZE (1 << UNIV_PAGE_SIZE_SHIFT) #define UNIV_PAGE_SIZE (1 << UNIV_PAGE_SIZE_SHIFT)
......
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