maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #00933
Rev 2725: Apply Yasufumi's patch for MBUG#417751. in file:///home/psergey/bzr-new/mysql-5.1-maria-contd2/
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd2/
------------------------------------------------------------
revno: 2725
revision-id: psergey@xxxxxxxxxxxx-20090909221538-1k8a5q1qzqdyymyw
parent: psergey@xxxxxxxxxxxx-20090909215928-jd9v62cem7e2uukw
committer: Sergey Petrunya <psergey@xxxxxxxxxxxx>
branch nick: mysql-5.1-maria-contd2
timestamp: Thu 2009-09-10 02:15:38 +0400
message:
Apply Yasufumi's patch for MBUG#417751.
=== modified file 'storage/xtradb/btr/btr0cur.c'
--- a/storage/xtradb/btr/btr0cur.c 2009-06-25 01:43:25 +0000
+++ b/storage/xtradb/btr/btr0cur.c 2009-09-09 22:15:38 +0000
@@ -3267,6 +3267,7 @@
}
while (rec != supremum) {
+ rec_t* next_rec;
/* count recs */
if (stats_method == SRV_STATS_METHOD_IGNORE_NULLS) {
n_recs++;
@@ -3280,8 +3281,7 @@
n_not_nulls[j]++;
}
}
-
- rec_t* next_rec = page_rec_get_next(rec);
+ next_rec = page_rec_get_next(rec);
if (next_rec == supremum) {
break;
}
=== modified file 'storage/xtradb/buf/buf0buddy.c'
--- a/storage/xtradb/buf/buf0buddy.c 2009-06-25 01:43:25 +0000
+++ b/storage/xtradb/buf/buf0buddy.c 2009-09-09 22:15:38 +0000
@@ -461,16 +461,15 @@
actually is a properly initialized buf_page_t object. */
if (size >= PAGE_ZIP_MIN_SIZE) {
- if (!have_page_hash_mutex)
- mutex_exit(&zip_free_mutex);
-
/* This is a compressed page. */
mutex_t* mutex;
if (!have_page_hash_mutex) {
+ mutex_exit(&zip_free_mutex);
mutex_enter(&LRU_list_mutex);
rw_lock_x_lock(&page_hash_latch);
}
+
/* The src block may be split into smaller blocks,
some of which may be free. Thus, the
mach_read_from_4() calls below may attempt to read
=== modified file 'storage/xtradb/buf/buf0flu.c'
--- a/storage/xtradb/buf/buf0flu.c 2009-08-09 07:04:58 +0000
+++ b/storage/xtradb/buf/buf0flu.c 2009-09-09 22:15:38 +0000
@@ -1233,13 +1233,13 @@
+ BUF_FLUSH_EXTRA_MARGIN)
&& (distance < BUF_LRU_FREE_SEARCH_LEN)) {
+ mutex_t* block_mutex;
if (!bpage->in_LRU_list) {
/* reatart. but it is very optimistic */
bpage = UT_LIST_GET_LAST(buf_pool->LRU);
continue;
}
-
- mutex_t* block_mutex = buf_page_get_mutex(bpage);
+ block_mutex = buf_page_get_mutex_enter(bpage);
retry_lock:
mutex_enter(block_mutex);
=== modified file 'storage/xtradb/fil/fil0fil.c'
--- a/storage/xtradb/fil/fil0fil.c 2009-06-25 01:43:25 +0000
+++ b/storage/xtradb/fil/fil0fil.c 2009-09-09 22:15:38 +0000
@@ -3039,6 +3039,13 @@
ulint i;
int len;
ib_uint64_t current_lsn;
+ ulint size_low, size_high, size;
+ ib_int64_t size_bytes;
+ dict_table_t* table;
+ dict_index_t* index;
+ fil_system_t* system;
+ fil_node_t* node = NULL;
+ fil_space_t* space;
current_lsn = log_get_lsn();
@@ -3060,25 +3067,20 @@
success = os_file_write(filepath, file, page, 0, 0, UNIV_PAGE_SIZE);
/* get file size */
- ulint size_low, size_high, size;
- ib_int64_t size_bytes;
os_file_get_size(file, &size_low, &size_high);
size_bytes = (((ib_int64_t)size_high) << 32)
+ (ib_int64_t)size_low;
/* get cruster index information */
- dict_table_t* table;
- dict_index_t* index;
table = dict_table_get_low(name);
index = dict_table_get_first_index(table);
ut_a(index->page==3);
-
/* read metadata from .exp file */
n_index = 0;
- bzero(old_id, sizeof(old_id));
- bzero(new_id, sizeof(new_id));
- bzero(root_page, sizeof(root_page));
+ memset(old_id, 0, sizeof(old_id));
+ memset(new_id, 0, sizeof(new_id));
+ memset(root_page, 0, sizeof(root_page));
info_file_path = fil_make_ibd_name(name, FALSE);
len = strlen(info_file_path);
@@ -3128,10 +3130,10 @@
mem_heap_t* heap = NULL;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
ulint* offsets = offsets_;
+ ib_int64_t offset;
+
size = (ulint) (size_bytes / UNIV_PAGE_SIZE);
/* over write space id of all pages */
- ib_int64_t offset;
-
rec_offs_init(offsets_);
fprintf(stderr, "InnoDB: Progress in %:");
@@ -3284,10 +3286,8 @@
}
mem_free(info_file_path);
- fil_system_t* system = fil_system;
+ system = fil_system;
mutex_enter(&(system->mutex));
- fil_node_t* node = NULL;
- fil_space_t* space;
space = fil_space_get_by_id(id);
if (space)
node = UT_LIST_GET_FIRST(space->chain);
=== modified file 'storage/xtradb/handler/i_s.cc'
--- a/storage/xtradb/handler/i_s.cc 2009-06-25 01:43:25 +0000
+++ b/storage/xtradb/handler/i_s.cc 2009-09-09 22:15:38 +0000
@@ -806,7 +806,7 @@
field_store_string(table->field[0], NULL);
p = (char *)index->table_name;
}
- strcpy(table_name_raw, p);
+ strcpy(table_name_raw, (const char*)p);
filename_to_tablename(table_name_raw, table_name, sizeof(table_name));
field_store_string(table->field[1], table_name);
field_store_string(table->field[2], index->name);
@@ -2861,7 +2861,7 @@
} else {
rec_per_key = n_rows;
}
- snprintf(buff, 256, (i == index->n_uniq)?"%llu":"%llu, ",
+ ut_snprintf(buff, 256, (i == index->n_uniq)?"%llu":"%llu, ",
rec_per_key);
strncat(row_per_keys, buff, 256 - strlen(row_per_keys));
}
=== modified file 'storage/xtradb/srv/srv0srv.c'
--- a/storage/xtradb/srv/srv0srv.c 2009-09-08 16:04:58 +0000
+++ b/storage/xtradb/srv/srv0srv.c 2009-09-09 22:15:38 +0000
@@ -2694,11 +2694,11 @@
/* defence line (max_checkpoint_age * 1/2) */
ib_uint64_t lsn = log_sys->lsn;
- mutex_exit(&(log_sys->mutex));
-
ib_uint64_t level, bpl;
buf_page_t* bpage;
+ mutex_exit(&(log_sys->mutex));
+
mutex_enter(&flush_list_mutex);
level = 0;
=== modified file 'storage/xtradb/srv/srv0start.c'
--- a/storage/xtradb/srv/srv0start.c 2009-08-03 20:09:53 +0000
+++ b/storage/xtradb/srv/srv0start.c 2009-09-09 22:15:38 +0000
@@ -1134,7 +1134,12 @@
os_aio_use_native_aio = FALSE;
} else {
/* On Win 2000 and XP use async i/o */
- os_aio_use_native_aio = TRUE;
+ //os_aio_use_native_aio = TRUE;
+ os_aio_use_native_aio = FALSE;
+ fprintf(stderr,
+ "InnoDB: Windows native async i/o is disabled as default.\n"
+ "InnoDB: It is not applicable for the current"
+ " multi io threads implementation.\n");
}
#endif
if (srv_file_flush_method_str == NULL) {
@@ -1170,6 +1175,12 @@
} else if (0 == ut_strcmp(srv_file_flush_method_str,
"async_unbuffered")) {
srv_win_file_flush_method = SRV_WIN_IO_UNBUFFERED;
+ os_aio_use_native_aio = TRUE;
+ srv_n_read_io_threads = srv_n_write_io_threads = 1;
+ fprintf(stderr,
+ "InnoDB: 'async_unbuffered' was detected as innodb_flush_method.\n"
+ "InnoDB: Windows native async i/o is enabled.\n"
+ "InnoDB: And io threads are restricted.\n");
#endif
} else {
fprintf(stderr,