Merge lp:~akopytov/percona-server/bug785489-5.1 into lp:percona-server/5.1
- bug785489-5.1
- Merge into 5.1
Proposed by
Alexey Kopytov
Status: | Superseded | ||||
---|---|---|---|---|---|
Proposed branch: | lp:~akopytov/percona-server/bug785489-5.1 | ||||
Merge into: | lp:percona-server/5.1 | ||||
Diff against target: |
1147 lines (+177/-122) 11 files modified
patches/innodb_admin_command_base.patch (+10/-10) patches/innodb_extend_slow.patch (+7/-7) patches/innodb_lru_dump_restore.patch (+67/-16) patches/innodb_pass_corrupt_table.patch (+28/-28) patches/innodb_purge_thread.patch (+12/-12) patches/innodb_recovery_patches.patch (+5/-5) patches/innodb_separate_doublewrite.patch (+6/-6) patches/innodb_show_lock_name.patch (+5/-5) patches/innodb_stats.patch (+34/-32) patches/mysql-test.diff (+2/-0) patches/series (+1/-1) |
||||
To merge this branch: | bzr merge lp:~akopytov/percona-server/bug785489-5.1 | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Percona developers | Pending | ||
Review via email: mp+76885@code.launchpad.net |
This proposal has been superseded by a proposal from 2011-09-25.
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Alexey Kopytov (akopytov) wrote : | # |
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'patches/innodb_admin_command_base.patch' | |||
2 | --- patches/innodb_admin_command_base.patch 2011-09-06 08:23:51 +0000 | |||
3 | +++ patches/innodb_admin_command_base.patch 2011-09-25 06:36:21 +0000 | |||
4 | @@ -7,18 +7,18 @@ | |||
5 | 7 | # should be done or reviewed by the maintainer! | 7 | # should be done or reviewed by the maintainer! |
6 | 8 | --- a/storage/innodb_plugin/handler/ha_innodb.cc | 8 | --- a/storage/innodb_plugin/handler/ha_innodb.cc |
7 | 9 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc | 9 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc |
9 | 10 | @@ -11608,6 +11608,7 @@ | 10 | @@ -11534,6 +11534,7 @@ |
10 | 11 | i_s_innodb_cmp_reset, | ||
11 | 12 | i_s_innodb_cmpmem, | ||
12 | 11 | i_s_innodb_cmpmem_reset, | 13 | i_s_innodb_cmpmem_reset, |
13 | 12 | i_s_innodb_table_stats, | ||
14 | 13 | i_s_innodb_index_stats, | ||
15 | 14 | +i_s_innodb_admin_command, | 14 | +i_s_innodb_admin_command, |
16 | 15 | i_s_innodb_patches | 15 | i_s_innodb_patches |
17 | 16 | mysql_declare_plugin_end; | 16 | mysql_declare_plugin_end; |
18 | 17 | 17 | ||
19 | 18 | --- a/storage/innodb_plugin/handler/i_s.cc | 18 | --- a/storage/innodb_plugin/handler/i_s.cc |
20 | 19 | +++ b/storage/innodb_plugin/handler/i_s.cc | 19 | +++ b/storage/innodb_plugin/handler/i_s.cc |
23 | 20 | @@ -2947,3 +2947,139 @@ | 20 | @@ -2602,3 +2602,139 @@ |
24 | 21 | STRUCT_FLD(system_vars, NULL), | 21 | /* void* */ |
25 | 22 | STRUCT_FLD(__reserved1, NULL) | 22 | STRUCT_FLD(__reserved1, NULL) |
26 | 23 | }; | 23 | }; |
27 | 24 | + | 24 | + |
28 | @@ -159,17 +159,17 @@ | |||
29 | 159 | +}; | 159 | +}; |
30 | 160 | --- a/storage/innodb_plugin/handler/i_s.h | 160 | --- a/storage/innodb_plugin/handler/i_s.h |
31 | 161 | +++ b/storage/innodb_plugin/handler/i_s.h | 161 | +++ b/storage/innodb_plugin/handler/i_s.h |
33 | 162 | @@ -40,5 +40,6 @@ | 162 | @@ -38,5 +38,6 @@ |
34 | 163 | extern struct st_mysql_plugin i_s_innodb_cmpmem_reset; | ||
35 | 164 | extern struct st_mysql_plugin i_s_innodb_patches; | ||
36 | 163 | extern struct st_mysql_plugin i_s_innodb_rseg; | 165 | extern struct st_mysql_plugin i_s_innodb_rseg; |
37 | 164 | extern struct st_mysql_plugin i_s_innodb_table_stats; | ||
38 | 165 | extern struct st_mysql_plugin i_s_innodb_index_stats; | ||
39 | 166 | +extern struct st_mysql_plugin i_s_innodb_admin_command; | 166 | +extern struct st_mysql_plugin i_s_innodb_admin_command; |
40 | 167 | 167 | ||
41 | 168 | #endif /* i_s_h */ | 168 | #endif /* i_s_h */ |
42 | 169 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h | 169 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h |
43 | 170 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h | 170 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h |
46 | 171 | @@ -38,5 +38,6 @@ | 171 | @@ -37,5 +37,6 @@ |
47 | 172 | {"innodb_stats","Additional features about InnoDB statistics/optimizer","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 172 | {"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"}, |
48 | 173 | {"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 173 | {"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
49 | 174 | {"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 174 | {"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
50 | 175 | +{"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 175 | +{"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
51 | 176 | 176 | ||
52 | === modified file 'patches/innodb_extend_slow.patch' | |||
53 | --- patches/innodb_extend_slow.patch 2011-08-09 13:35:34 +0000 | |||
54 | +++ patches/innodb_extend_slow.patch 2011-09-25 06:36:21 +0000 | |||
55 | @@ -374,7 +374,7 @@ | |||
56 | 374 | 374 | ||
57 | 375 | --- a/storage/innodb_plugin/handler/ha_innodb.cc | 375 | --- a/storage/innodb_plugin/handler/ha_innodb.cc |
58 | 376 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc | 376 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc |
60 | 377 | @@ -1391,6 +1391,16 @@ | 377 | @@ -1390,6 +1390,16 @@ |
61 | 378 | trx->check_unique_secondary = !thd_test_options( | 378 | trx->check_unique_secondary = !thd_test_options( |
62 | 379 | thd, OPTION_RELAXED_UNIQUE_CHECKS); | 379 | thd, OPTION_RELAXED_UNIQUE_CHECKS); |
63 | 380 | 380 | ||
64 | @@ -391,7 +391,7 @@ | |||
65 | 391 | DBUG_VOID_RETURN; | 391 | DBUG_VOID_RETURN; |
66 | 392 | } | 392 | } |
67 | 393 | 393 | ||
69 | 394 | @@ -1446,6 +1456,32 @@ | 394 | @@ -1445,6 +1455,32 @@ |
70 | 395 | } | 395 | } |
71 | 396 | 396 | ||
72 | 397 | 397 | ||
73 | @@ -424,7 +424,7 @@ | |||
74 | 424 | /*********************************************************************//** | 424 | /*********************************************************************//** |
75 | 425 | Construct ha_innobase handler. */ | 425 | Construct ha_innobase handler. */ |
76 | 426 | UNIV_INTERN | 426 | UNIV_INTERN |
78 | 427 | @@ -9024,6 +9060,25 @@ | 427 | @@ -8975,6 +9011,25 @@ |
79 | 428 | statement has ended */ | 428 | statement has ended */ |
80 | 429 | 429 | ||
81 | 430 | if (trx->n_mysql_tables_in_use == 0) { | 430 | if (trx->n_mysql_tables_in_use == 0) { |
82 | @@ -452,7 +452,7 @@ | |||
83 | 452 | prebuilt->used_in_HANDLER = FALSE; | 452 | prebuilt->used_in_HANDLER = FALSE; |
84 | 453 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h | 453 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h |
85 | 454 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h | 454 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h |
87 | 455 | @@ -40,5 +40,6 @@ | 455 | @@ -39,5 +39,6 @@ |
88 | 456 | {"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 456 | {"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
89 | 457 | {"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 457 | {"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
90 | 458 | {"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 458 | {"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
91 | @@ -802,7 +802,7 @@ | |||
92 | 802 | /* This is set to TRUE if the MySQL user has set it in MySQL; currently | 802 | /* This is set to TRUE if the MySQL user has set it in MySQL; currently |
93 | 803 | affects only FOREIGN KEY definition parsing */ | 803 | affects only FOREIGN KEY definition parsing */ |
94 | 804 | UNIV_INTERN ibool srv_lower_case_table_names = FALSE; | 804 | UNIV_INTERN ibool srv_lower_case_table_names = FALSE; |
96 | 805 | @@ -1159,6 +1162,10 @@ | 805 | @@ -1156,6 +1159,10 @@ |
97 | 806 | ibool has_slept = FALSE; | 806 | ibool has_slept = FALSE; |
98 | 807 | srv_conc_slot_t* slot = NULL; | 807 | srv_conc_slot_t* slot = NULL; |
99 | 808 | ulint i; | 808 | ulint i; |
100 | @@ -813,7 +813,7 @@ | |||
101 | 813 | 813 | ||
102 | 814 | if (trx->mysql_thd != NULL | 814 | if (trx->mysql_thd != NULL |
103 | 815 | && thd_is_replication_slave_thread(trx->mysql_thd)) { | 815 | && thd_is_replication_slave_thread(trx->mysql_thd)) { |
105 | 816 | @@ -1235,6 +1242,7 @@ | 816 | @@ -1232,6 +1239,7 @@ |
106 | 817 | switches. */ | 817 | switches. */ |
107 | 818 | if (SRV_THREAD_SLEEP_DELAY > 0) { | 818 | if (SRV_THREAD_SLEEP_DELAY > 0) { |
108 | 819 | os_thread_sleep(SRV_THREAD_SLEEP_DELAY); | 819 | os_thread_sleep(SRV_THREAD_SLEEP_DELAY); |
109 | @@ -821,7 +821,7 @@ | |||
110 | 821 | } | 821 | } |
111 | 822 | 822 | ||
112 | 823 | trx->op_info = ""; | 823 | trx->op_info = ""; |
114 | 824 | @@ -1290,12 +1298,25 @@ | 824 | @@ -1287,12 +1295,25 @@ |
115 | 825 | /* Go to wait for the event; when a thread leaves InnoDB it will | 825 | /* Go to wait for the event; when a thread leaves InnoDB it will |
116 | 826 | release this thread */ | 826 | release this thread */ |
117 | 827 | 827 | ||
118 | 828 | 828 | ||
119 | === modified file 'patches/innodb_lru_dump_restore.patch' | |||
120 | --- patches/innodb_lru_dump_restore.patch 2011-08-09 13:35:34 +0000 | |||
121 | +++ patches/innodb_lru_dump_restore.patch 2011-09-25 06:36:21 +0000 | |||
122 | @@ -41,7 +41,7 @@ | |||
123 | 41 | +--file_exists $MYSQLD_DATADIR/ib_lru_dump; | 41 | +--file_exists $MYSQLD_DATADIR/ib_lru_dump; |
124 | 42 | --- a/storage/innodb_plugin/buf/buf0lru.c | 42 | --- a/storage/innodb_plugin/buf/buf0lru.c |
125 | 43 | +++ b/storage/innodb_plugin/buf/buf0lru.c | 43 | +++ b/storage/innodb_plugin/buf/buf0lru.c |
127 | 44 | @@ -2121,6 +2121,277 @@ | 44 | @@ -2121,6 +2121,282 @@ |
128 | 45 | memset(&buf_LRU_stat_cur, 0, sizeof buf_LRU_stat_cur); | 45 | memset(&buf_LRU_stat_cur, 0, sizeof buf_LRU_stat_cur); |
129 | 46 | } | 46 | } |
130 | 47 | 47 | ||
131 | @@ -201,6 +201,11 @@ | |||
132 | 201 | + " InnoDB: cannot open %s\n", LRU_DUMP_FILE); | 201 | + " InnoDB: cannot open %s\n", LRU_DUMP_FILE); |
133 | 202 | + goto end; | 202 | + goto end; |
134 | 203 | + } | 203 | + } |
135 | 204 | + | ||
136 | 205 | + ut_print_timestamp(stderr); | ||
137 | 206 | + fprintf(stderr, " InnoDB: Restoring buffer pool pages from %s\n", | ||
138 | 207 | + LRU_DUMP_FILE); | ||
139 | 208 | + | ||
140 | 204 | + if (size == 0 || size_high > 0 || size % 8) { | 209 | + if (size == 0 || size_high > 0 || size % 8) { |
141 | 205 | + fprintf(stderr, " InnoDB: broken LRU dump file\n"); | 210 | + fprintf(stderr, " InnoDB: broken LRU dump file\n"); |
142 | 206 | + goto end; | 211 | + goto end; |
143 | @@ -302,7 +307,7 @@ | |||
144 | 302 | + | 307 | + |
145 | 303 | + ut_print_timestamp(stderr); | 308 | + ut_print_timestamp(stderr); |
146 | 304 | + fprintf(stderr, | 309 | + fprintf(stderr, |
148 | 305 | + " InnoDB: reading pages based on the dumped LRU list was done." | 310 | + " InnoDB: Completed reading buffer pool pages" |
149 | 306 | + " (requested: %lu, read: %lu)\n", req, reads); | 311 | + " (requested: %lu, read: %lu)\n", req, reads); |
150 | 307 | + ret = TRUE; | 312 | + ret = TRUE; |
151 | 308 | +end: | 313 | +end: |
152 | @@ -405,7 +410,25 @@ | |||
153 | 405 | Waits for an aio operation to complete. This function is used to write the | 410 | Waits for an aio operation to complete. This function is used to write the |
154 | 406 | --- a/storage/innodb_plugin/handler/ha_innodb.cc | 411 | --- a/storage/innodb_plugin/handler/ha_innodb.cc |
155 | 407 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc | 412 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc |
157 | 408 | @@ -11547,6 +11547,12 @@ | 413 | @@ -197,6 +197,8 @@ |
158 | 414 | |||
159 | 415 | static char* innodb_version_str = (char*) INNODB_VERSION_STR; | ||
160 | 416 | |||
161 | 417 | +static my_bool innobase_blocking_lru_restore = FALSE; | ||
162 | 418 | + | ||
163 | 419 | /** Possible values for system variable "innodb_stats_method". The values | ||
164 | 420 | are defined the same as its corresponding MyISAM system variable | ||
165 | 421 | "myisam_stats_method"(see "myisam_stats_method_names"), for better usability */ | ||
166 | 422 | @@ -2408,6 +2410,8 @@ | ||
167 | 423 | srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite; | ||
168 | 424 | srv_use_checksums = (ibool) innobase_use_checksums; | ||
169 | 425 | |||
170 | 426 | + srv_blocking_lru_restore = (ibool) innobase_blocking_lru_restore; | ||
171 | 427 | + | ||
172 | 428 | #ifdef HAVE_LARGE_PAGES | ||
173 | 429 | if ((os_use_large_pages = (ibool) my_use_large_pages)) | ||
174 | 430 | os_large_page_size = (ulint) opt_large_page_size; | ||
175 | 431 | @@ -11478,6 +11482,18 @@ | ||
176 | 409 | "Limit the allocated memory for dictionary cache. (0: unlimited)", | 432 | "Limit the allocated memory for dictionary cache. (0: unlimited)", |
177 | 410 | NULL, NULL, 0, 0, LONG_MAX, 0); | 433 | NULL, NULL, 0, 0, LONG_MAX, 0); |
178 | 411 | 434 | ||
179 | @@ -415,28 +438,35 @@ | |||
180 | 415 | + "0 (the default) disables automatic dumps.", | 438 | + "0 (the default) disables automatic dumps.", |
181 | 416 | + NULL, NULL, 0, 0, UINT_MAX32, 0); | 439 | + NULL, NULL, 0, 0, UINT_MAX32, 0); |
182 | 417 | + | 440 | + |
183 | 441 | +static MYSQL_SYSVAR_BOOL(blocking_lru_restore, innobase_blocking_lru_restore, | ||
184 | 442 | + PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, | ||
185 | 443 | + "Block XtraDB startup process until buffer pool is full restored from a " | ||
186 | 444 | + "dump file (if present). Disabled by default.", | ||
187 | 445 | + NULL, NULL, FALSE); | ||
188 | 446 | + | ||
189 | 418 | static struct st_mysql_sys_var* innobase_system_variables[]= { | 447 | static struct st_mysql_sys_var* innobase_system_variables[]= { |
190 | 419 | MYSQL_SYSVAR(additional_mem_pool_size), | 448 | MYSQL_SYSVAR(additional_mem_pool_size), |
191 | 420 | MYSQL_SYSVAR(autoextend_increment), | 449 | MYSQL_SYSVAR(autoextend_increment), |
193 | 421 | @@ -11629,6 +11635,7 @@ | 450 | @@ -11557,6 +11573,8 @@ |
194 | 422 | #endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */ | 451 | #endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */ |
195 | 423 | MYSQL_SYSVAR(read_ahead_threshold), | 452 | MYSQL_SYSVAR(read_ahead_threshold), |
196 | 424 | MYSQL_SYSVAR(io_capacity), | 453 | MYSQL_SYSVAR(io_capacity), |
197 | 425 | + MYSQL_SYSVAR(auto_lru_dump), | 454 | + MYSQL_SYSVAR(auto_lru_dump), |
198 | 455 | + MYSQL_SYSVAR(blocking_lru_restore), | ||
199 | 426 | MYSQL_SYSVAR(use_purge_thread), | 456 | MYSQL_SYSVAR(use_purge_thread), |
200 | 427 | NULL | 457 | NULL |
201 | 428 | }; | 458 | }; |
202 | 429 | --- a/storage/innodb_plugin/handler/i_s.cc | 459 | --- a/storage/innodb_plugin/handler/i_s.cc |
203 | 430 | +++ b/storage/innodb_plugin/handler/i_s.cc | 460 | +++ b/storage/innodb_plugin/handler/i_s.cc |
205 | 431 | @@ -46,6 +46,7 @@ | 461 | @@ -45,6 +45,7 @@ |
206 | 462 | #include "btr0btr.h" /* for btr_page_get_index_id */ | ||
207 | 432 | #include "trx0rseg.h" /* for trx_rseg_struct */ | 463 | #include "trx0rseg.h" /* for trx_rseg_struct */ |
208 | 433 | #include "trx0sys.h" /* for trx_sys */ | 464 | #include "trx0sys.h" /* for trx_sys */ |
209 | 434 | #include "dict0dict.h" /* for dict_sys */ | ||
210 | 435 | +#include "buf0lru.h" /* for XTRA_LRU_[DUMP/RESTORE] */ | 465 | +#include "buf0lru.h" /* for XTRA_LRU_[DUMP/RESTORE] */ |
211 | 436 | } | 466 | } |
212 | 437 | 467 | ||
213 | 438 | static const char plugin_author[] = "Innobase Oy"; | 468 | static const char plugin_author[] = "Innobase Oy"; |
215 | 439 | @@ -3040,6 +3041,36 @@ | 469 | @@ -2695,6 +2696,36 @@ |
216 | 440 | "Hello!"); | 470 | "Hello!"); |
217 | 441 | goto end_func; | 471 | goto end_func; |
218 | 442 | } | 472 | } |
219 | @@ -475,7 +505,7 @@ | |||
220 | 475 | "Undefined XTRA_* command."); | 505 | "Undefined XTRA_* command."); |
221 | 476 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h | 506 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h |
222 | 477 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h | 507 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h |
224 | 478 | @@ -41,5 +41,6 @@ | 508 | @@ -40,5 +40,6 @@ |
225 | 479 | {"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 509 | {"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
226 | 480 | {"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 510 | {"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
227 | 481 | {"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"}, | 511 | {"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"}, |
228 | @@ -562,17 +592,20 @@ | |||
229 | 562 | handler for completed requests. The aio array of pending requests is divided | 592 | handler for completed requests. The aio array of pending requests is divided |
230 | 563 | --- a/storage/innodb_plugin/include/srv0srv.h | 593 | --- a/storage/innodb_plugin/include/srv0srv.h |
231 | 564 | +++ b/storage/innodb_plugin/include/srv0srv.h | 594 | +++ b/storage/innodb_plugin/include/srv0srv.h |
233 | 565 | @@ -335,6 +335,9 @@ | 595 | @@ -332,6 +332,12 @@ |
234 | 566 | reading of a disk page */ | 596 | reading of a disk page */ |
235 | 567 | extern ulint srv_buf_pool_reads; | 597 | extern ulint srv_buf_pool_reads; |
236 | 568 | 598 | ||
237 | 569 | +/** Time in seconds between automatic buffer pool dumps */ | 599 | +/** Time in seconds between automatic buffer pool dumps */ |
238 | 570 | +extern uint srv_auto_lru_dump; | 600 | +extern uint srv_auto_lru_dump; |
239 | 571 | + | 601 | + |
240 | 602 | +/** Whether startup should be blocked until buffer pool is fully restored */ | ||
241 | 603 | +extern ibool srv_blocking_lru_restore; | ||
242 | 604 | + | ||
243 | 572 | /** Status variables to be passed to MySQL */ | 605 | /** Status variables to be passed to MySQL */ |
244 | 573 | typedef struct export_var_struct export_struc; | 606 | typedef struct export_var_struct export_struc; |
245 | 574 | 607 | ||
247 | 575 | @@ -616,6 +619,16 @@ | 608 | @@ -613,6 +619,16 @@ |
248 | 576 | /*=====================*/ | 609 | /*=====================*/ |
249 | 577 | void* arg); /*!< in: a dummy parameter required by | 610 | void* arg); /*!< in: a dummy parameter required by |
250 | 578 | os_thread_create */ | 611 | os_thread_create */ |
251 | @@ -591,17 +624,20 @@ | |||
252 | 591 | @return FALSE if not all information printed | 624 | @return FALSE if not all information printed |
253 | 592 | --- a/storage/innodb_plugin/srv/srv0srv.c | 625 | --- a/storage/innodb_plugin/srv/srv0srv.c |
254 | 593 | +++ b/storage/innodb_plugin/srv/srv0srv.c | 626 | +++ b/storage/innodb_plugin/srv/srv0srv.c |
256 | 594 | @@ -303,6 +303,9 @@ | 627 | @@ -303,6 +303,12 @@ |
257 | 595 | reading of a disk page */ | 628 | reading of a disk page */ |
258 | 596 | UNIV_INTERN ulint srv_buf_pool_reads = 0; | 629 | UNIV_INTERN ulint srv_buf_pool_reads = 0; |
259 | 597 | 630 | ||
260 | 598 | +/** Time in seconds between automatic buffer pool dumps */ | 631 | +/** Time in seconds between automatic buffer pool dumps */ |
261 | 599 | +UNIV_INTERN uint srv_auto_lru_dump = 0; | 632 | +UNIV_INTERN uint srv_auto_lru_dump = 0; |
262 | 600 | + | 633 | + |
263 | 634 | +/** Whether startup should be blocked until buffer pool is fully restored */ | ||
264 | 635 | +UNIV_INTERN ibool srv_blocking_lru_restore; | ||
265 | 636 | + | ||
266 | 601 | /* structure to pass status variables to MySQL */ | 637 | /* structure to pass status variables to MySQL */ |
267 | 602 | UNIV_INTERN export_struc export_vars; | 638 | UNIV_INTERN export_struc export_vars; |
268 | 603 | 639 | ||
270 | 604 | @@ -2555,6 +2558,56 @@ | 640 | @@ -2552,6 +2558,58 @@ |
271 | 605 | OS_THREAD_DUMMY_RETURN; | 641 | OS_THREAD_DUMMY_RETURN; |
272 | 606 | } | 642 | } |
273 | 607 | 643 | ||
274 | @@ -626,7 +662,9 @@ | |||
275 | 626 | + os_thread_pf(os_thread_get_curr_id())); | 662 | + os_thread_pf(os_thread_get_curr_id())); |
276 | 627 | +#endif | 663 | +#endif |
277 | 628 | + | 664 | + |
279 | 629 | + if (srv_auto_lru_dump) | 665 | + /* If srv_blocking_lru_restore is TRUE, restore will be done |
280 | 666 | + synchronously on startup. */ | ||
281 | 667 | + if (srv_auto_lru_dump && !srv_blocking_lru_restore) | ||
282 | 630 | + buf_LRU_file_restore(); | 668 | + buf_LRU_file_restore(); |
283 | 631 | + | 669 | + |
284 | 632 | + last_dump_time = time(NULL); | 670 | + last_dump_time = time(NULL); |
285 | @@ -660,7 +698,15 @@ | |||
286 | 660 | and wakes up the master thread if it is suspended (not sleeping). Used | 698 | and wakes up the master thread if it is suspended (not sleeping). Used |
287 | 661 | --- a/storage/innodb_plugin/srv/srv0start.c | 699 | --- a/storage/innodb_plugin/srv/srv0start.c |
288 | 662 | +++ b/storage/innodb_plugin/srv/srv0start.c | 700 | +++ b/storage/innodb_plugin/srv/srv0start.c |
290 | 663 | @@ -126,9 +126,9 @@ | 701 | @@ -88,6 +88,7 @@ |
291 | 702 | # include "thr0loc.h" | ||
292 | 703 | # include "os0sync.h" /* for INNODB_RW_LOCKS_USE_ATOMICS */ | ||
293 | 704 | # include "zlib.h" /* for ZLIB_VERSION */ | ||
294 | 705 | +# include "buf0lru.h" /* for buf_LRU_file_restore() */ | ||
295 | 706 | |||
296 | 707 | /** Log sequence number immediately after startup */ | ||
297 | 708 | UNIV_INTERN ib_uint64_t srv_start_lsn; | ||
298 | 709 | @@ -126,9 +127,9 @@ | ||
299 | 664 | static ulint ios; | 710 | static ulint ios; |
300 | 665 | 711 | ||
301 | 666 | /** io_handler_thread parameters for thread identification */ | 712 | /** io_handler_thread parameters for thread identification */ |
302 | @@ -672,7 +718,7 @@ | |||
303 | 672 | 718 | ||
304 | 673 | /** We use this mutex to test the return value of pthread_mutex_trylock | 719 | /** We use this mutex to test the return value of pthread_mutex_trylock |
305 | 674 | on successful locking. HP-UX does NOT return 0, though Linux et al do. */ | 720 | on successful locking. HP-UX does NOT return 0, though Linux et al do. */ |
307 | 675 | @@ -1706,6 +1706,10 @@ | 721 | @@ -1706,6 +1707,15 @@ |
308 | 676 | os_thread_create(&srv_monitor_thread, NULL, | 722 | os_thread_create(&srv_monitor_thread, NULL, |
309 | 677 | thread_ids + 4 + SRV_MAX_N_IO_THREADS); | 723 | thread_ids + 4 + SRV_MAX_N_IO_THREADS); |
310 | 678 | 724 | ||
311 | @@ -680,10 +726,15 @@ | |||
312 | 680 | + os_thread_create(&srv_LRU_dump_restore_thread, NULL, | 726 | + os_thread_create(&srv_LRU_dump_restore_thread, NULL, |
313 | 681 | + thread_ids + 5 + SRV_MAX_N_IO_THREADS); | 727 | + thread_ids + 5 + SRV_MAX_N_IO_THREADS); |
314 | 682 | + | 728 | + |
315 | 729 | + /* If srv_blocking_lru_restore is TRUE, load buffer pool contents | ||
316 | 730 | + synchronously */ | ||
317 | 731 | + if (srv_auto_lru_dump && srv_blocking_lru_restore) | ||
318 | 732 | + buf_LRU_file_restore(); | ||
319 | 733 | + | ||
320 | 683 | srv_is_being_started = FALSE; | 734 | srv_is_being_started = FALSE; |
321 | 684 | 735 | ||
322 | 685 | if (trx_doublewrite == NULL) { | 736 | if (trx_doublewrite == NULL) { |
324 | 686 | @@ -1730,13 +1734,13 @@ | 737 | @@ -1730,13 +1740,13 @@ |
325 | 687 | ulint i; | 738 | ulint i; |
326 | 688 | 739 | ||
327 | 689 | os_thread_create(&srv_purge_thread, NULL, thread_ids | 740 | os_thread_create(&srv_purge_thread, NULL, thread_ids |
328 | 690 | 741 | ||
329 | === modified file 'patches/innodb_pass_corrupt_table.patch' | |||
330 | --- patches/innodb_pass_corrupt_table.patch 2011-08-09 13:35:34 +0000 | |||
331 | +++ patches/innodb_pass_corrupt_table.patch 2011-09-25 06:36:21 +0000 | |||
332 | @@ -468,7 +468,7 @@ | |||
333 | 468 | goto next_loop; | 468 | goto next_loop; |
334 | 469 | 469 | ||
335 | 470 | cached_foreign_tables = 0; | 470 | cached_foreign_tables = 0; |
337 | 471 | @@ -4657,6 +4658,12 @@ | 471 | @@ -4328,6 +4329,12 @@ |
338 | 472 | } | 472 | } |
339 | 473 | 473 | ||
340 | 474 | do { | 474 | do { |
341 | @@ -481,7 +481,7 @@ | |||
342 | 481 | if (UNIV_LIKELY | 481 | if (UNIV_LIKELY |
343 | 482 | (srv_force_recovery < SRV_FORCE_NO_IBUF_MERGE | 482 | (srv_force_recovery < SRV_FORCE_NO_IBUF_MERGE |
344 | 483 | || (srv_force_recovery < SRV_FORCE_NO_LOG_REDO | 483 | || (srv_force_recovery < SRV_FORCE_NO_LOG_REDO |
346 | 484 | @@ -5460,4 +5467,42 @@ | 484 | @@ -5054,4 +5061,42 @@ |
347 | 485 | rw_lock_free(&dict_table_stats_latches[i]); | 485 | rw_lock_free(&dict_table_stats_latches[i]); |
348 | 486 | } | 486 | } |
349 | 487 | } | 487 | } |
350 | @@ -757,7 +757,7 @@ | |||
351 | 757 | if (descr != NULL) { | 757 | if (descr != NULL) { |
352 | 758 | --- a/storage/innodb_plugin/handler/ha_innodb.cc | 758 | --- a/storage/innodb_plugin/handler/ha_innodb.cc |
353 | 759 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc | 759 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc |
355 | 760 | @@ -3735,6 +3735,12 @@ | 760 | @@ -3732,6 +3732,12 @@ |
356 | 761 | DBUG_RETURN(1); | 761 | DBUG_RETURN(1); |
357 | 762 | } | 762 | } |
358 | 763 | 763 | ||
359 | @@ -770,7 +770,7 @@ | |||
360 | 770 | /* Create buffers for packing the fields of a record. Why | 770 | /* Create buffers for packing the fields of a record. Why |
361 | 771 | table->reclength did not work here? Obviously, because char | 771 | table->reclength did not work here? Obviously, because char |
362 | 772 | fields when packed actually became 1 byte longer, when we also | 772 | fields when packed actually became 1 byte longer, when we also |
364 | 773 | @@ -3762,6 +3768,19 @@ | 773 | @@ -3759,6 +3765,19 @@ |
365 | 774 | /* Get pointer to a table object in InnoDB dictionary cache */ | 774 | /* Get pointer to a table object in InnoDB dictionary cache */ |
366 | 775 | ib_table = dict_table_get(norm_name, TRUE); | 775 | ib_table = dict_table_get(norm_name, TRUE); |
367 | 776 | 776 | ||
368 | @@ -790,7 +790,7 @@ | |||
369 | 790 | if (NULL == ib_table) { | 790 | if (NULL == ib_table) { |
370 | 791 | if (is_part && retries < 10) { | 791 | if (is_part && retries < 10) { |
371 | 792 | ++retries; | 792 | ++retries; |
373 | 793 | @@ -4928,6 +4947,10 @@ | 793 | @@ -4925,6 +4944,10 @@ |
374 | 794 | 794 | ||
375 | 795 | ha_statistic_increment(&SSV::ha_write_count); | 795 | ha_statistic_increment(&SSV::ha_write_count); |
376 | 796 | 796 | ||
377 | @@ -801,7 +801,7 @@ | |||
378 | 801 | if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_INSERT) | 801 | if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_INSERT) |
379 | 802 | table->timestamp_field->set_time(); | 802 | table->timestamp_field->set_time(); |
380 | 803 | 803 | ||
382 | 804 | @@ -5145,6 +5168,10 @@ | 804 | @@ -5138,6 +5161,10 @@ |
383 | 805 | func_exit: | 805 | func_exit: |
384 | 806 | innobase_active_small(); | 806 | innobase_active_small(); |
385 | 807 | 807 | ||
386 | @@ -812,7 +812,7 @@ | |||
387 | 812 | DBUG_RETURN(error_result); | 812 | DBUG_RETURN(error_result); |
388 | 813 | } | 813 | } |
389 | 814 | 814 | ||
391 | 815 | @@ -5321,6 +5348,10 @@ | 815 | @@ -5314,6 +5341,10 @@ |
392 | 816 | 816 | ||
393 | 817 | ha_statistic_increment(&SSV::ha_update_count); | 817 | ha_statistic_increment(&SSV::ha_update_count); |
394 | 818 | 818 | ||
395 | @@ -823,7 +823,7 @@ | |||
396 | 823 | if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_UPDATE) | 823 | if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_UPDATE) |
397 | 824 | table->timestamp_field->set_time(); | 824 | table->timestamp_field->set_time(); |
398 | 825 | 825 | ||
400 | 826 | @@ -5410,6 +5441,10 @@ | 826 | @@ -5399,6 +5430,10 @@ |
401 | 827 | 827 | ||
402 | 828 | innobase_active_small(); | 828 | innobase_active_small(); |
403 | 829 | 829 | ||
404 | @@ -834,7 +834,7 @@ | |||
405 | 834 | DBUG_RETURN(error); | 834 | DBUG_RETURN(error); |
406 | 835 | } | 835 | } |
407 | 836 | 836 | ||
409 | 837 | @@ -5431,6 +5466,10 @@ | 837 | @@ -5420,6 +5455,10 @@ |
410 | 838 | 838 | ||
411 | 839 | ha_statistic_increment(&SSV::ha_delete_count); | 839 | ha_statistic_increment(&SSV::ha_delete_count); |
412 | 840 | 840 | ||
413 | @@ -845,7 +845,7 @@ | |||
414 | 845 | if (!prebuilt->upd_node) { | 845 | if (!prebuilt->upd_node) { |
415 | 846 | row_get_prebuilt_update_vector(prebuilt); | 846 | row_get_prebuilt_update_vector(prebuilt); |
416 | 847 | } | 847 | } |
418 | 848 | @@ -5457,6 +5496,10 @@ | 848 | @@ -5442,6 +5481,10 @@ |
419 | 849 | 849 | ||
420 | 850 | innobase_active_small(); | 850 | innobase_active_small(); |
421 | 851 | 851 | ||
422 | @@ -856,7 +856,7 @@ | |||
423 | 856 | DBUG_RETURN(error); | 856 | DBUG_RETURN(error); |
424 | 857 | } | 857 | } |
425 | 858 | 858 | ||
427 | 859 | @@ -5696,6 +5739,10 @@ | 859 | @@ -5681,6 +5724,10 @@ |
428 | 860 | 860 | ||
429 | 861 | ha_statistic_increment(&SSV::ha_read_key_count); | 861 | ha_statistic_increment(&SSV::ha_read_key_count); |
430 | 862 | 862 | ||
431 | @@ -867,7 +867,7 @@ | |||
432 | 867 | index = prebuilt->index; | 867 | index = prebuilt->index; |
433 | 868 | 868 | ||
434 | 869 | if (UNIV_UNLIKELY(index == NULL)) { | 869 | if (UNIV_UNLIKELY(index == NULL)) { |
436 | 870 | @@ -5761,6 +5808,10 @@ | 870 | @@ -5746,6 +5793,10 @@ |
437 | 871 | ret = DB_UNSUPPORTED; | 871 | ret = DB_UNSUPPORTED; |
438 | 872 | } | 872 | } |
439 | 873 | 873 | ||
440 | @@ -878,7 +878,7 @@ | |||
441 | 878 | switch (ret) { | 878 | switch (ret) { |
442 | 879 | case DB_SUCCESS: | 879 | case DB_SUCCESS: |
443 | 880 | error = 0; | 880 | error = 0; |
445 | 881 | @@ -5876,6 +5927,10 @@ | 881 | @@ -5856,6 +5907,10 @@ |
446 | 882 | { | 882 | { |
447 | 883 | DBUG_ENTER("change_active_index"); | 883 | DBUG_ENTER("change_active_index"); |
448 | 884 | 884 | ||
449 | @@ -889,7 +889,7 @@ | |||
450 | 889 | ut_ad(user_thd == ha_thd()); | 889 | ut_ad(user_thd == ha_thd()); |
451 | 890 | ut_a(prebuilt->trx == thd_to_trx(user_thd)); | 890 | ut_a(prebuilt->trx == thd_to_trx(user_thd)); |
452 | 891 | 891 | ||
454 | 892 | @@ -5966,6 +6021,10 @@ | 892 | @@ -5946,6 +6001,10 @@ |
455 | 893 | 893 | ||
456 | 894 | DBUG_ENTER("general_fetch"); | 894 | DBUG_ENTER("general_fetch"); |
457 | 895 | 895 | ||
458 | @@ -900,7 +900,7 @@ | |||
459 | 900 | ut_a(prebuilt->trx == thd_to_trx(user_thd)); | 900 | ut_a(prebuilt->trx == thd_to_trx(user_thd)); |
460 | 901 | 901 | ||
461 | 902 | innodb_srv_conc_enter_innodb(prebuilt->trx); | 902 | innodb_srv_conc_enter_innodb(prebuilt->trx); |
463 | 903 | @@ -5975,6 +6034,10 @@ | 903 | @@ -5955,6 +6014,10 @@ |
464 | 904 | 904 | ||
465 | 905 | innodb_srv_conc_exit_innodb(prebuilt->trx); | 905 | innodb_srv_conc_exit_innodb(prebuilt->trx); |
466 | 906 | 906 | ||
467 | @@ -911,7 +911,7 @@ | |||
468 | 911 | switch (ret) { | 911 | switch (ret) { |
469 | 912 | case DB_SUCCESS: | 912 | case DB_SUCCESS: |
470 | 913 | error = 0; | 913 | error = 0; |
472 | 914 | @@ -7227,6 +7290,10 @@ | 914 | @@ -7202,6 +7265,10 @@ |
473 | 915 | DBUG_RETURN(my_errno=HA_ERR_WRONG_COMMAND); | 915 | DBUG_RETURN(my_errno=HA_ERR_WRONG_COMMAND); |
474 | 916 | } | 916 | } |
475 | 917 | 917 | ||
476 | @@ -922,7 +922,7 @@ | |||
477 | 922 | /* Truncate the table in InnoDB */ | 922 | /* Truncate the table in InnoDB */ |
478 | 923 | 923 | ||
479 | 924 | error = row_truncate_table_for_mysql(prebuilt->table, prebuilt->trx); | 924 | error = row_truncate_table_for_mysql(prebuilt->table, prebuilt->trx); |
481 | 925 | @@ -7235,6 +7302,10 @@ | 925 | @@ -7210,6 +7277,10 @@ |
482 | 926 | goto fallback; | 926 | goto fallback; |
483 | 927 | } | 927 | } |
484 | 928 | 928 | ||
485 | @@ -933,7 +933,7 @@ | |||
486 | 933 | error = convert_error_code_to_mysql(error, prebuilt->table->flags, | 933 | error = convert_error_code_to_mysql(error, prebuilt->table->flags, |
487 | 934 | NULL); | 934 | NULL); |
488 | 935 | 935 | ||
490 | 936 | @@ -7739,6 +7810,16 @@ | 936 | @@ -7714,6 +7785,16 @@ |
491 | 937 | return(ranges + (double) rows / (double) total_rows * time_for_scan); | 937 | return(ranges + (double) rows / (double) total_rows * time_for_scan); |
492 | 938 | } | 938 | } |
493 | 939 | 939 | ||
494 | @@ -950,7 +950,7 @@ | |||
495 | 950 | /*********************************************************************//** | 950 | /*********************************************************************//** |
496 | 951 | Calculates the key number used inside MySQL for an Innobase index. We will | 951 | Calculates the key number used inside MySQL for an Innobase index. We will |
497 | 952 | first check the "index translation table" for a match of the index to get | 952 | first check the "index translation table" for a match of the index to get |
499 | 953 | @@ -7919,7 +8000,7 @@ | 953 | @@ -7894,7 +7975,7 @@ |
500 | 954 | ib_table = prebuilt->table; | 954 | ib_table = prebuilt->table; |
501 | 955 | 955 | ||
502 | 956 | if (flag & HA_STATUS_TIME) { | 956 | if (flag & HA_STATUS_TIME) { |
503 | @@ -959,7 +959,7 @@ | |||
504 | 959 | /* In sql_show we call with this flag: update | 959 | /* In sql_show we call with this flag: update |
505 | 960 | then statistics so that they are up-to-date */ | 960 | then statistics so that they are up-to-date */ |
506 | 961 | 961 | ||
508 | 962 | @@ -8209,10 +8290,18 @@ | 962 | @@ -8160,10 +8241,18 @@ |
509 | 963 | THD* thd, /*!< in: connection thread handle */ | 963 | THD* thd, /*!< in: connection thread handle */ |
510 | 964 | HA_CHECK_OPT* check_opt) /*!< in: currently ignored */ | 964 | HA_CHECK_OPT* check_opt) /*!< in: currently ignored */ |
511 | 965 | { | 965 | { |
512 | @@ -978,7 +978,7 @@ | |||
513 | 978 | return(0); | 978 | return(0); |
514 | 979 | } | 979 | } |
515 | 980 | 980 | ||
517 | 981 | @@ -8394,6 +8483,10 @@ | 981 | @@ -8345,6 +8434,10 @@ |
518 | 982 | my_error(ER_QUERY_INTERRUPTED, MYF(0)); | 982 | my_error(ER_QUERY_INTERRUPTED, MYF(0)); |
519 | 983 | } | 983 | } |
520 | 984 | 984 | ||
521 | @@ -989,7 +989,7 @@ | |||
522 | 989 | DBUG_RETURN(is_ok ? HA_ADMIN_OK : HA_ADMIN_CORRUPT); | 989 | DBUG_RETURN(is_ok ? HA_ADMIN_OK : HA_ADMIN_CORRUPT); |
523 | 990 | } | 990 | } |
524 | 991 | 991 | ||
526 | 992 | @@ -9127,6 +9220,10 @@ | 992 | @@ -9078,6 +9171,10 @@ |
527 | 993 | 993 | ||
528 | 994 | update_thd(thd); | 994 | update_thd(thd); |
529 | 995 | 995 | ||
530 | @@ -1000,7 +1000,7 @@ | |||
531 | 1000 | if (prebuilt->table->ibd_file_missing && !thd_tablespace_op(thd)) { | 1000 | if (prebuilt->table->ibd_file_missing && !thd_tablespace_op(thd)) { |
532 | 1001 | ut_print_timestamp(stderr); | 1001 | ut_print_timestamp(stderr); |
533 | 1002 | fprintf(stderr, | 1002 | fprintf(stderr, |
535 | 1003 | @@ -11561,6 +11658,14 @@ | 1003 | @@ -11492,6 +11589,14 @@ |
536 | 1004 | "0 (the default) disables automatic dumps.", | 1004 | "0 (the default) disables automatic dumps.", |
537 | 1005 | NULL, NULL, 0, 0, UINT_MAX32, 0); | 1005 | NULL, NULL, 0, 0, UINT_MAX32, 0); |
538 | 1006 | 1006 | ||
539 | @@ -1015,7 +1015,7 @@ | |||
540 | 1015 | static struct st_mysql_sys_var* innobase_system_variables[]= { | 1015 | static struct st_mysql_sys_var* innobase_system_variables[]= { |
541 | 1016 | MYSQL_SYSVAR(additional_mem_pool_size), | 1016 | MYSQL_SYSVAR(additional_mem_pool_size), |
542 | 1017 | MYSQL_SYSVAR(autoextend_increment), | 1017 | MYSQL_SYSVAR(autoextend_increment), |
544 | 1018 | @@ -11646,6 +11751,7 @@ | 1018 | @@ -11574,6 +11679,7 @@ |
545 | 1019 | MYSQL_SYSVAR(io_capacity), | 1019 | MYSQL_SYSVAR(io_capacity), |
546 | 1020 | MYSQL_SYSVAR(auto_lru_dump), | 1020 | MYSQL_SYSVAR(auto_lru_dump), |
547 | 1021 | MYSQL_SYSVAR(use_purge_thread), | 1021 | MYSQL_SYSVAR(use_purge_thread), |
548 | @@ -1043,7 +1043,7 @@ | |||
549 | 1043 | int update_row(const uchar * old_data, uchar * new_data); | 1043 | int update_row(const uchar * old_data, uchar * new_data); |
550 | 1044 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h | 1044 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h |
551 | 1045 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h | 1045 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h |
553 | 1046 | @@ -43,5 +43,6 @@ | 1046 | @@ -42,5 +42,6 @@ |
554 | 1047 | {"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"}, | 1047 | {"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"}, |
555 | 1048 | {"innodb_lru_dump_restore","Dump and restore command for content of buffer pool","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 1048 | {"innodb_lru_dump_restore","Dump and restore command for content of buffer pool","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
556 | 1049 | {"innodb_separate_doublewrite","Add option 'innodb_doublewrite_file' to separate doublewrite dedicated tablespace","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 1049 | {"innodb_separate_doublewrite","Add option 'innodb_doublewrite_file' to separate doublewrite dedicated tablespace","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
557 | @@ -1117,7 +1117,7 @@ | |||
558 | 1117 | switch (buf_block_get_state(block)) { | 1117 | switch (buf_block_get_state(block)) { |
559 | 1118 | --- a/storage/innodb_plugin/include/dict0dict.h | 1118 | --- a/storage/innodb_plugin/include/dict0dict.h |
560 | 1119 | +++ b/storage/innodb_plugin/include/dict0dict.h | 1119 | +++ b/storage/innodb_plugin/include/dict0dict.h |
562 | 1120 | @@ -1206,6 +1206,15 @@ | 1120 | @@ -1197,6 +1197,15 @@ |
563 | 1121 | dict_close(void); | 1121 | dict_close(void); |
564 | 1122 | /*============*/ | 1122 | /*============*/ |
565 | 1123 | 1123 | ||
566 | @@ -1224,7 +1224,7 @@ | |||
567 | 1224 | Decompress a page. This function should tolerate errors on the compressed | 1224 | Decompress a page. This function should tolerate errors on the compressed |
568 | 1225 | --- a/storage/innodb_plugin/include/srv0srv.h | 1225 | --- a/storage/innodb_plugin/include/srv0srv.h |
569 | 1226 | +++ b/storage/innodb_plugin/include/srv0srv.h | 1226 | +++ b/storage/innodb_plugin/include/srv0srv.h |
571 | 1227 | @@ -231,6 +231,7 @@ | 1227 | @@ -228,6 +228,7 @@ |
572 | 1228 | extern ulint srv_adaptive_checkpoint; | 1228 | extern ulint srv_adaptive_checkpoint; |
573 | 1229 | 1229 | ||
574 | 1230 | extern ulint srv_expand_import; | 1230 | extern ulint srv_expand_import; |
575 | @@ -1319,7 +1319,7 @@ | |||
576 | 1319 | fprintf(stderr, | 1319 | fprintf(stderr, |
577 | 1320 | --- a/storage/innodb_plugin/srv/srv0srv.c | 1320 | --- a/storage/innodb_plugin/srv/srv0srv.c |
578 | 1321 | +++ b/storage/innodb_plugin/srv/srv0srv.c | 1321 | +++ b/storage/innodb_plugin/srv/srv0srv.c |
580 | 1322 | @@ -406,6 +406,7 @@ | 1322 | @@ -403,6 +403,7 @@ |
581 | 1323 | UNIV_INTERN ulint srv_adaptive_checkpoint = 0; /* 0: none 1: reflex 2: estimate */ | 1323 | UNIV_INTERN ulint srv_adaptive_checkpoint = 0; /* 0: none 1: reflex 2: estimate */ |
582 | 1324 | 1324 | ||
583 | 1325 | UNIV_INTERN ulint srv_expand_import = 0; /* 0:disable 1:enable */ | 1325 | UNIV_INTERN ulint srv_expand_import = 0; /* 0:disable 1:enable */ |
584 | 1326 | 1326 | ||
585 | === modified file 'patches/innodb_purge_thread.patch' | |||
586 | --- patches/innodb_purge_thread.patch 2011-08-09 13:35:34 +0000 | |||
587 | +++ patches/innodb_purge_thread.patch 2011-09-25 06:36:21 +0000 | |||
588 | @@ -7,7 +7,7 @@ | |||
589 | 7 | # should be done or reviewed by the maintainer! | 7 | # should be done or reviewed by the maintainer! |
590 | 8 | --- a/storage/innodb_plugin/handler/ha_innodb.cc | 8 | --- a/storage/innodb_plugin/handler/ha_innodb.cc |
591 | 9 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc | 9 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc |
593 | 10 | @@ -11060,6 +11060,11 @@ | 10 | @@ -11011,6 +11011,11 @@ |
594 | 11 | "Output statistics of recovery process after it.", | 11 | "Output statistics of recovery process after it.", |
595 | 12 | NULL, NULL, FALSE); | 12 | NULL, NULL, FALSE); |
596 | 13 | 13 | ||
597 | @@ -19,7 +19,7 @@ | |||
598 | 19 | static MYSQL_SYSVAR_BOOL(overwrite_relay_log_info, innobase_overwrite_relay_log_info, | 19 | static MYSQL_SYSVAR_BOOL(overwrite_relay_log_info, innobase_overwrite_relay_log_info, |
599 | 20 | PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, | 20 | PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, |
600 | 21 | "During InnoDB crash recovery on slave overwrite relay-log.info " | 21 | "During InnoDB crash recovery on slave overwrite relay-log.info " |
602 | 22 | @@ -11571,6 +11576,7 @@ | 22 | @@ -11499,6 +11504,7 @@ |
603 | 23 | #endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */ | 23 | #endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */ |
604 | 24 | MYSQL_SYSVAR(read_ahead_threshold), | 24 | MYSQL_SYSVAR(read_ahead_threshold), |
605 | 25 | MYSQL_SYSVAR(io_capacity), | 25 | MYSQL_SYSVAR(io_capacity), |
606 | @@ -29,9 +29,9 @@ | |||
607 | 29 | 29 | ||
608 | 30 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h | 30 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h |
609 | 31 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h | 31 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h |
611 | 32 | @@ -37,5 +37,6 @@ | 32 | @@ -36,5 +36,6 @@ |
612 | 33 | {"innodb_dict_size_limit","Limit dictionary cache size","Variable innodb_dict_size_limit in bytes","http://www.percona.com/docs/wiki/percona-xtradb"}, | ||
613 | 33 | {"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"}, | 34 | {"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"}, |
614 | 34 | {"innodb_stats","Additional features about InnoDB statistics/optimizer","","http://www.percona.com/docs/wiki/percona-xtradb"}, | ||
615 | 35 | {"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 35 | {"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
616 | 36 | +{"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 36 | +{"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
617 | 37 | {NULL, NULL, NULL, NULL} | 37 | {NULL, NULL, NULL, NULL} |
618 | @@ -47,7 +47,7 @@ | |||
619 | 47 | extern ibool srv_auto_extend_last_data_file; | 47 | extern ibool srv_auto_extend_last_data_file; |
620 | 48 | extern ulint srv_last_file_size_max; | 48 | extern ulint srv_last_file_size_max; |
621 | 49 | extern char** srv_log_group_home_dirs; | 49 | extern char** srv_log_group_home_dirs; |
623 | 50 | @@ -421,6 +423,8 @@ | 50 | @@ -418,6 +420,8 @@ |
624 | 51 | SRV_RECOVERY, /**< threads finishing a recovery */ | 51 | SRV_RECOVERY, /**< threads finishing a recovery */ |
625 | 52 | SRV_INSERT, /**< thread flushing the insert buffer to disk */ | 52 | SRV_INSERT, /**< thread flushing the insert buffer to disk */ |
626 | 53 | #endif | 53 | #endif |
627 | @@ -56,7 +56,7 @@ | |||
628 | 56 | SRV_MASTER /**< the master thread, (whose type number must | 56 | SRV_MASTER /**< the master thread, (whose type number must |
629 | 57 | be biggest) */ | 57 | be biggest) */ |
630 | 58 | }; | 58 | }; |
632 | 59 | @@ -494,6 +498,21 @@ | 59 | @@ -491,6 +495,21 @@ |
633 | 60 | /*==============*/ | 60 | /*==============*/ |
634 | 61 | void* arg); /*!< in: a dummy parameter required by | 61 | void* arg); /*!< in: a dummy parameter required by |
635 | 62 | os_thread_create */ | 62 | os_thread_create */ |
636 | @@ -148,7 +148,7 @@ | |||
637 | 148 | /* if TRUE, then we auto-extend the last data file */ | 148 | /* if TRUE, then we auto-extend the last data file */ |
638 | 149 | UNIV_INTERN ibool srv_auto_extend_last_data_file = FALSE; | 149 | UNIV_INTERN ibool srv_auto_extend_last_data_file = FALSE; |
639 | 150 | /* if != 0, this tells the max size auto-extending may increase the | 150 | /* if != 0, this tells the max size auto-extending may increase the |
641 | 151 | @@ -2639,10 +2641,10 @@ | 151 | @@ -2636,10 +2638,10 @@ |
642 | 152 | srv_main_thread_process_no = os_proc_get_number(); | 152 | srv_main_thread_process_no = os_proc_get_number(); |
643 | 153 | srv_main_thread_id = os_thread_pf(os_thread_get_curr_id()); | 153 | srv_main_thread_id = os_thread_pf(os_thread_get_curr_id()); |
644 | 154 | 154 | ||
645 | @@ -160,7 +160,7 @@ | |||
646 | 160 | srv_n_threads_active[SRV_MASTER]++; | 160 | srv_n_threads_active[SRV_MASTER]++; |
647 | 161 | 161 | ||
648 | 162 | mutex_exit(&kernel_mutex); | 162 | mutex_exit(&kernel_mutex); |
650 | 163 | @@ -3100,6 +3102,7 @@ | 163 | @@ -3097,6 +3099,7 @@ |
651 | 164 | /* Flush logs if needed */ | 164 | /* Flush logs if needed */ |
652 | 165 | srv_sync_log_buffer_in_background(); | 165 | srv_sync_log_buffer_in_background(); |
653 | 166 | 166 | ||
654 | @@ -168,7 +168,7 @@ | |||
655 | 168 | /* We run a full purge every 10 seconds, even if the server | 168 | /* We run a full purge every 10 seconds, even if the server |
656 | 169 | were active */ | 169 | were active */ |
657 | 170 | do { | 170 | do { |
659 | 171 | @@ -3116,6 +3119,7 @@ | 171 | @@ -3113,6 +3116,7 @@ |
660 | 172 | srv_sync_log_buffer_in_background(); | 172 | srv_sync_log_buffer_in_background(); |
661 | 173 | 173 | ||
662 | 174 | } while (n_pages_purged); | 174 | } while (n_pages_purged); |
663 | @@ -176,7 +176,7 @@ | |||
664 | 176 | 176 | ||
665 | 177 | srv_main_thread_op_info = "flushing buffer pool pages"; | 177 | srv_main_thread_op_info = "flushing buffer pool pages"; |
666 | 178 | 178 | ||
668 | 179 | @@ -3184,6 +3188,7 @@ | 179 | @@ -3181,6 +3185,7 @@ |
669 | 180 | os_thread_sleep(100000); | 180 | os_thread_sleep(100000); |
670 | 181 | } | 181 | } |
671 | 182 | 182 | ||
672 | @@ -184,7 +184,7 @@ | |||
673 | 184 | srv_main_thread_op_info = "purging"; | 184 | srv_main_thread_op_info = "purging"; |
674 | 185 | 185 | ||
675 | 186 | /* Run a full purge */ | 186 | /* Run a full purge */ |
677 | 187 | @@ -3200,6 +3205,7 @@ | 187 | @@ -3197,6 +3202,7 @@ |
678 | 188 | srv_sync_log_buffer_in_background(); | 188 | srv_sync_log_buffer_in_background(); |
679 | 189 | 189 | ||
680 | 190 | } while (n_pages_purged); | 190 | } while (n_pages_purged); |
681 | @@ -192,7 +192,7 @@ | |||
682 | 192 | 192 | ||
683 | 193 | srv_main_thread_op_info = "reserving kernel mutex"; | 193 | srv_main_thread_op_info = "reserving kernel mutex"; |
684 | 194 | 194 | ||
686 | 195 | @@ -3352,3 +3358,143 @@ | 195 | @@ -3349,3 +3355,143 @@ |
687 | 196 | 196 | ||
688 | 197 | OS_THREAD_DUMMY_RETURN; /* Not reached, avoid compiler warning */ | 197 | OS_THREAD_DUMMY_RETURN; /* Not reached, avoid compiler warning */ |
689 | 198 | } | 198 | } |
690 | 199 | 199 | ||
691 | === modified file 'patches/innodb_recovery_patches.patch' | |||
692 | --- patches/innodb_recovery_patches.patch 2011-08-09 13:35:34 +0000 | |||
693 | +++ patches/innodb_recovery_patches.patch 2011-09-25 06:36:21 +0000 | |||
694 | @@ -116,7 +116,7 @@ | |||
695 | 116 | static my_bool innobase_locks_unsafe_for_binlog = FALSE; | 116 | static my_bool innobase_locks_unsafe_for_binlog = FALSE; |
696 | 117 | static my_bool innobase_overwrite_relay_log_info = FALSE; | 117 | static my_bool innobase_overwrite_relay_log_info = FALSE; |
697 | 118 | static my_bool innobase_rollback_on_timeout = FALSE; | 118 | static my_bool innobase_rollback_on_timeout = FALSE; |
699 | 119 | @@ -2368,6 +2370,8 @@ | 119 | @@ -2365,6 +2367,8 @@ |
700 | 120 | 120 | ||
701 | 121 | srv_force_recovery = (ulint) innobase_force_recovery; | 121 | srv_force_recovery = (ulint) innobase_force_recovery; |
702 | 122 | 122 | ||
703 | @@ -125,7 +125,7 @@ | |||
704 | 125 | srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite; | 125 | srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite; |
705 | 126 | srv_use_checksums = (ibool) innobase_use_checksums; | 126 | srv_use_checksums = (ibool) innobase_use_checksums; |
706 | 127 | 127 | ||
708 | 128 | @@ -11046,6 +11050,16 @@ | 128 | @@ -10997,6 +11001,16 @@ |
709 | 129 | "don't use the datafile for normal mysqld or ibbackup! ####", | 129 | "don't use the datafile for normal mysqld or ibbackup! ####", |
710 | 130 | NULL, NULL, FALSE); | 130 | NULL, NULL, FALSE); |
711 | 131 | 131 | ||
712 | @@ -142,7 +142,7 @@ | |||
713 | 142 | static MYSQL_SYSVAR_BOOL(overwrite_relay_log_info, innobase_overwrite_relay_log_info, | 142 | static MYSQL_SYSVAR_BOOL(overwrite_relay_log_info, innobase_overwrite_relay_log_info, |
714 | 143 | PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, | 143 | PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, |
715 | 144 | "During InnoDB crash recovery on slave overwrite relay-log.info " | 144 | "During InnoDB crash recovery on slave overwrite relay-log.info " |
717 | 145 | @@ -11486,6 +11500,8 @@ | 145 | @@ -11417,6 +11431,8 @@ |
718 | 146 | MYSQL_SYSVAR(data_home_dir), | 146 | MYSQL_SYSVAR(data_home_dir), |
719 | 147 | MYSQL_SYSVAR(doublewrite), | 147 | MYSQL_SYSVAR(doublewrite), |
720 | 148 | MYSQL_SYSVAR(extra_undoslots), | 148 | MYSQL_SYSVAR(extra_undoslots), |
721 | @@ -153,10 +153,10 @@ | |||
722 | 153 | MYSQL_SYSVAR(read_io_threads), | 153 | MYSQL_SYSVAR(read_io_threads), |
723 | 154 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h | 154 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h |
724 | 155 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h | 155 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h |
726 | 156 | @@ -36,5 +36,6 @@ | 156 | @@ -35,5 +35,6 @@ |
727 | 157 | {"innodb_expand_import","convert .ibd file automatically when import tablespace","the files are generated by xtrabackup export mode.","http://www.percona.com/docs/wiki/percona-xtradb"}, | ||
728 | 157 | {"innodb_dict_size_limit","Limit dictionary cache size","Variable innodb_dict_size_limit in bytes","http://www.percona.com/docs/wiki/percona-xtradb"}, | 158 | {"innodb_dict_size_limit","Limit dictionary cache size","Variable innodb_dict_size_limit in bytes","http://www.percona.com/docs/wiki/percona-xtradb"}, |
729 | 158 | {"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"}, | 159 | {"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"}, |
730 | 159 | {"innodb_stats","Additional features about InnoDB statistics/optimizer","","http://www.percona.com/docs/wiki/percona-xtradb"}, | ||
731 | 160 | +{"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 160 | +{"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
732 | 161 | {NULL, NULL, NULL, NULL} | 161 | {NULL, NULL, NULL, NULL} |
733 | 162 | }; | 162 | }; |
734 | 163 | 163 | ||
735 | === modified file 'patches/innodb_separate_doublewrite.patch' | |||
736 | --- patches/innodb_separate_doublewrite.patch 2011-09-06 08:23:51 +0000 | |||
737 | +++ patches/innodb_separate_doublewrite.patch 2011-09-25 06:36:21 +0000 | |||
738 | @@ -341,7 +341,7 @@ | |||
739 | 341 | 341 | ||
740 | 342 | /* Note: This variable can be set to on/off and any of the supported | 342 | /* Note: This variable can be set to on/off and any of the supported |
741 | 343 | file formats in the configuration file, but can only be set to any | 343 | file formats in the configuration file, but can only be set to any |
743 | 344 | @@ -2267,6 +2268,8 @@ | 344 | @@ -2266,6 +2267,8 @@ |
744 | 345 | goto error; | 345 | goto error; |
745 | 346 | } | 346 | } |
746 | 347 | 347 | ||
747 | @@ -349,8 +349,8 @@ | |||
748 | 349 | + | 349 | + |
749 | 350 | srv_extra_undoslots = (ibool) innobase_extra_undoslots; | 350 | srv_extra_undoslots = (ibool) innobase_extra_undoslots; |
750 | 351 | 351 | ||
753 | 352 | srv_use_sys_stats_table = (ibool) innobase_use_sys_stats_table; | 352 | /* -------------- Log files ---------------------------*/ |
754 | 353 | @@ -11388,6 +11391,11 @@ | 353 | @@ -11319,6 +11322,11 @@ |
755 | 354 | "Path to individual files and their sizes.", | 354 | "Path to individual files and their sizes.", |
756 | 355 | NULL, NULL, NULL); | 355 | NULL, NULL, NULL); |
757 | 356 | 356 | ||
758 | @@ -362,7 +362,7 @@ | |||
759 | 362 | static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode, | 362 | static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode, |
760 | 363 | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, | 363 | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, |
761 | 364 | "The AUTOINC lock modes supported by InnoDB: " | 364 | "The AUTOINC lock modes supported by InnoDB: " |
763 | 365 | @@ -11561,6 +11569,7 @@ | 365 | @@ -11492,6 +11500,7 @@ |
764 | 366 | MYSQL_SYSVAR(commit_concurrency), | 366 | MYSQL_SYSVAR(commit_concurrency), |
765 | 367 | MYSQL_SYSVAR(concurrency_tickets), | 367 | MYSQL_SYSVAR(concurrency_tickets), |
766 | 368 | MYSQL_SYSVAR(data_file_path), | 368 | MYSQL_SYSVAR(data_file_path), |
767 | @@ -372,7 +372,7 @@ | |||
768 | 372 | MYSQL_SYSVAR(extra_undoslots), | 372 | MYSQL_SYSVAR(extra_undoslots), |
769 | 373 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h | 373 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h |
770 | 374 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h | 374 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h |
772 | 375 | @@ -42,5 +42,6 @@ | 375 | @@ -41,5 +41,6 @@ |
773 | 376 | {"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 376 | {"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
774 | 377 | {"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"}, | 377 | {"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"}, |
775 | 378 | {"innodb_lru_dump_restore","Dump and restore command for content of buffer pool","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 378 | {"innodb_lru_dump_restore","Dump and restore command for content of buffer pool","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
776 | @@ -515,7 +515,7 @@ | |||
777 | 515 | UNIV_INLINE | 515 | UNIV_INLINE |
778 | 516 | --- a/storage/innodb_plugin/row/row0mysql.c | 516 | --- a/storage/innodb_plugin/row/row0mysql.c |
779 | 517 | +++ b/storage/innodb_plugin/row/row0mysql.c | 517 | +++ b/storage/innodb_plugin/row/row0mysql.c |
781 | 518 | @@ -3401,7 +3401,7 @@ | 518 | @@ -3331,7 +3331,7 @@ |
782 | 519 | /* Do not drop possible .ibd tablespace if something went | 519 | /* Do not drop possible .ibd tablespace if something went |
783 | 520 | wrong: we do not want to delete valuable data of the user */ | 520 | wrong: we do not want to delete valuable data of the user */ |
784 | 521 | 521 | ||
785 | 522 | 522 | ||
786 | === modified file 'patches/innodb_show_lock_name.patch' | |||
787 | --- patches/innodb_show_lock_name.patch 2011-08-09 13:35:34 +0000 | |||
788 | +++ patches/innodb_show_lock_name.patch 2011-09-25 06:36:21 +0000 | |||
789 | @@ -7,7 +7,7 @@ | |||
790 | 7 | # should be done or reviewed by the maintainer! | 7 | # should be done or reviewed by the maintainer! |
791 | 8 | --- a/storage/innodb_plugin/handler/ha_innodb.cc | 8 | --- a/storage/innodb_plugin/handler/ha_innodb.cc |
792 | 9 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc | 9 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc |
794 | 10 | @@ -9317,8 +9317,8 @@ | 10 | @@ -9268,8 +9268,8 @@ |
795 | 11 | rw_lock_wait_time += mutex->lspent_time; | 11 | rw_lock_wait_time += mutex->lspent_time; |
796 | 12 | } | 12 | } |
797 | 13 | #else /* UNIV_DEBUG */ | 13 | #else /* UNIV_DEBUG */ |
798 | @@ -18,7 +18,7 @@ | |||
799 | 18 | buf2len= (uint) my_snprintf(buf2, sizeof(buf2), "os_waits=%lu", | 18 | buf2len= (uint) my_snprintf(buf2, sizeof(buf2), "os_waits=%lu", |
800 | 19 | (ulong) mutex->count_os_wait); | 19 | (ulong) mutex->count_os_wait); |
801 | 20 | 20 | ||
803 | 21 | @@ -9333,9 +9333,8 @@ | 21 | @@ -9284,9 +9284,8 @@ |
804 | 22 | 22 | ||
805 | 23 | if (block_mutex) { | 23 | if (block_mutex) { |
806 | 24 | buf1len = (uint) my_snprintf(buf1, sizeof buf1, | 24 | buf1len = (uint) my_snprintf(buf1, sizeof buf1, |
807 | @@ -30,7 +30,7 @@ | |||
808 | 30 | buf2len = (uint) my_snprintf(buf2, sizeof buf2, | 30 | buf2len = (uint) my_snprintf(buf2, sizeof buf2, |
809 | 31 | "os_waits=%lu", | 31 | "os_waits=%lu", |
810 | 32 | (ulong) block_mutex_oswait_count); | 32 | (ulong) block_mutex_oswait_count); |
812 | 33 | @@ -9364,8 +9363,8 @@ | 33 | @@ -9315,8 +9314,8 @@ |
813 | 34 | continue; | 34 | continue; |
814 | 35 | } | 35 | } |
815 | 36 | 36 | ||
816 | @@ -41,7 +41,7 @@ | |||
817 | 41 | buf2len = my_snprintf(buf2, sizeof buf2, "os_waits=%lu", | 41 | buf2len = my_snprintf(buf2, sizeof buf2, "os_waits=%lu", |
818 | 42 | (ulong) lock->count_os_wait); | 42 | (ulong) lock->count_os_wait); |
819 | 43 | 43 | ||
821 | 44 | @@ -9379,9 +9378,8 @@ | 44 | @@ -9330,9 +9329,8 @@ |
822 | 45 | 45 | ||
823 | 46 | if (block_lock) { | 46 | if (block_lock) { |
824 | 47 | buf1len = (uint) my_snprintf(buf1, sizeof buf1, | 47 | buf1len = (uint) my_snprintf(buf1, sizeof buf1, |
825 | @@ -55,7 +55,7 @@ | |||
826 | 55 | (ulong) block_lock_oswait_count); | 55 | (ulong) block_lock_oswait_count); |
827 | 56 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h | 56 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h |
828 | 57 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h | 57 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h |
830 | 58 | @@ -39,5 +39,6 @@ | 58 | @@ -38,5 +38,6 @@ |
831 | 59 | {"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 59 | {"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
832 | 60 | {"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 60 | {"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
833 | 61 | {"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 61 | {"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
834 | 62 | 62 | ||
835 | === modified file 'patches/innodb_stats.patch' | |||
836 | --- patches/innodb_stats.patch 2011-08-09 13:35:34 +0000 | |||
837 | +++ patches/innodb_stats.patch 2011-09-25 06:36:21 +0000 | |||
838 | @@ -347,7 +347,7 @@ | |||
839 | 347 | not of the right form. | 347 | not of the right form. |
840 | 348 | --- a/storage/innodb_plugin/dict/dict0dict.c | 348 | --- a/storage/innodb_plugin/dict/dict0dict.c |
841 | 349 | +++ b/storage/innodb_plugin/dict/dict0dict.c | 349 | +++ b/storage/innodb_plugin/dict/dict0dict.c |
843 | 350 | @@ -739,7 +739,7 @@ | 350 | @@ -740,7 +740,7 @@ |
844 | 351 | print an error message and return without doing | 351 | print an error message and return without doing |
845 | 352 | anything. */ | 352 | anything. */ |
846 | 353 | dict_update_statistics(table, TRUE /* only update stats | 353 | dict_update_statistics(table, TRUE /* only update stats |
847 | @@ -356,7 +356,7 @@ | |||
848 | 356 | } | 356 | } |
849 | 357 | 357 | ||
850 | 358 | return(table); | 358 | return(table); |
852 | 359 | @@ -4282,6 +4282,313 @@ | 359 | @@ -4283,6 +4283,313 @@ |
853 | 360 | } | 360 | } |
854 | 361 | 361 | ||
855 | 362 | /*********************************************************************//** | 362 | /*********************************************************************//** |
856 | @@ -670,7 +670,7 @@ | |||
857 | 670 | Calculates new estimates for table and index statistics. The statistics | 670 | Calculates new estimates for table and index statistics. The statistics |
858 | 671 | are used in query optimization. */ | 671 | are used in query optimization. */ |
859 | 672 | UNIV_INTERN | 672 | UNIV_INTERN |
861 | 673 | @@ -4289,10 +4596,11 @@ | 673 | @@ -4290,10 +4597,11 @@ |
862 | 674 | dict_update_statistics( | 674 | dict_update_statistics( |
863 | 675 | /*===================*/ | 675 | /*===================*/ |
864 | 676 | dict_table_t* table, /*!< in/out: table */ | 676 | dict_table_t* table, /*!< in/out: table */ |
865 | @@ -683,7 +683,7 @@ | |||
866 | 683 | { | 683 | { |
867 | 684 | dict_index_t* index; | 684 | dict_index_t* index; |
868 | 685 | ulint sum_of_index_sizes = 0; | 685 | ulint sum_of_index_sizes = 0; |
870 | 686 | @@ -4309,6 +4617,27 @@ | 686 | @@ -4310,6 +4618,27 @@ |
871 | 687 | return; | 687 | return; |
872 | 688 | } | 688 | } |
873 | 689 | 689 | ||
874 | @@ -711,7 +711,7 @@ | |||
875 | 711 | /* Find out the sizes of the indexes and how many different values | 711 | /* Find out the sizes of the indexes and how many different values |
876 | 712 | for the key they approximately have */ | 712 | for the key they approximately have */ |
877 | 713 | 713 | ||
879 | 714 | @@ -4373,6 +4702,11 @@ | 714 | @@ -4380,6 +4709,11 @@ |
880 | 715 | index = dict_table_get_next_index(index); | 715 | index = dict_table_get_next_index(index); |
881 | 716 | } while (index); | 716 | } while (index); |
882 | 717 | 717 | ||
883 | @@ -723,7 +723,7 @@ | |||
884 | 723 | index = dict_table_get_first_index(table); | 723 | index = dict_table_get_first_index(table); |
885 | 724 | 724 | ||
886 | 725 | table->stat_n_rows = index->stat_n_diff_key_vals[ | 725 | table->stat_n_rows = index->stat_n_diff_key_vals[ |
888 | 726 | @@ -4390,6 +4724,78 @@ | 726 | @@ -4397,6 +4731,78 @@ |
889 | 727 | dict_table_stats_unlock(table, RW_X_LATCH); | 727 | dict_table_stats_unlock(table, RW_X_LATCH); |
890 | 728 | } | 728 | } |
891 | 729 | 729 | ||
892 | @@ -802,7 +802,7 @@ | |||
893 | 802 | /**********************************************************************//** | 802 | /**********************************************************************//** |
894 | 803 | Prints info of a foreign key constraint. */ | 803 | Prints info of a foreign key constraint. */ |
895 | 804 | static | 804 | static |
897 | 805 | @@ -4467,7 +4873,7 @@ | 805 | @@ -4474,7 +4880,7 @@ |
898 | 806 | 806 | ||
899 | 807 | ut_ad(mutex_own(&(dict_sys->mutex))); | 807 | ut_ad(mutex_own(&(dict_sys->mutex))); |
900 | 808 | 808 | ||
901 | @@ -813,7 +813,7 @@ | |||
902 | 813 | 813 | ||
903 | 814 | --- a/storage/innodb_plugin/dict/dict0load.c | 814 | --- a/storage/innodb_plugin/dict/dict0load.c |
904 | 815 | +++ b/storage/innodb_plugin/dict/dict0load.c | 815 | +++ b/storage/innodb_plugin/dict/dict0load.c |
906 | 816 | @@ -223,7 +223,7 @@ | 816 | @@ -224,7 +224,7 @@ |
907 | 817 | 817 | ||
908 | 818 | if (dict_table_get_first_index(table)) { | 818 | if (dict_table_get_first_index(table)) { |
909 | 819 | dict_update_statistics(table, FALSE /* update | 819 | dict_update_statistics(table, FALSE /* update |
910 | @@ -824,7 +824,7 @@ | |||
911 | 824 | dict_table_print_low(table); | 824 | dict_table_print_low(table); |
912 | 825 | --- a/storage/innodb_plugin/handler/ha_innodb.cc | 825 | --- a/storage/innodb_plugin/handler/ha_innodb.cc |
913 | 826 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc | 826 | +++ b/storage/innodb_plugin/handler/ha_innodb.cc |
915 | 827 | @@ -190,6 +190,7 @@ | 827 | @@ -193,6 +193,7 @@ |
916 | 828 | static my_bool innobase_rollback_on_timeout = FALSE; | 828 | static my_bool innobase_rollback_on_timeout = FALSE; |
917 | 829 | static my_bool innobase_create_status_file = FALSE; | 829 | static my_bool innobase_create_status_file = FALSE; |
918 | 830 | static my_bool innobase_stats_on_metadata = TRUE; | 830 | static my_bool innobase_stats_on_metadata = TRUE; |
919 | @@ -832,7 +832,7 @@ | |||
920 | 832 | 832 | ||
921 | 833 | static char* internal_innobase_data_file_path = NULL; | 833 | static char* internal_innobase_data_file_path = NULL; |
922 | 834 | 834 | ||
924 | 835 | @@ -2230,6 +2231,8 @@ | 835 | @@ -2271,6 +2272,8 @@ |
925 | 836 | 836 | ||
926 | 837 | srv_extra_undoslots = (ibool) innobase_extra_undoslots; | 837 | srv_extra_undoslots = (ibool) innobase_extra_undoslots; |
927 | 838 | 838 | ||
928 | @@ -841,7 +841,7 @@ | |||
929 | 841 | /* -------------- Log files ---------------------------*/ | 841 | /* -------------- Log files ---------------------------*/ |
930 | 842 | 842 | ||
931 | 843 | /* The default dir for log files is the datadir of MySQL */ | 843 | /* The default dir for log files is the datadir of MySQL */ |
933 | 844 | @@ -5000,6 +5003,10 @@ | 844 | @@ -5066,6 +5069,10 @@ |
934 | 845 | 845 | ||
935 | 846 | error = row_insert_for_mysql((byte*) record, prebuilt); | 846 | error = row_insert_for_mysql((byte*) record, prebuilt); |
936 | 847 | 847 | ||
937 | @@ -852,7 +852,7 @@ | |||
938 | 852 | /* Handle duplicate key errors */ | 852 | /* Handle duplicate key errors */ |
939 | 853 | if (auto_inc_used) { | 853 | if (auto_inc_used) { |
940 | 854 | ulint err; | 854 | ulint err; |
942 | 855 | @@ -5336,6 +5343,10 @@ | 855 | @@ -5410,6 +5417,10 @@ |
943 | 856 | } | 856 | } |
944 | 857 | } | 857 | } |
945 | 858 | 858 | ||
946 | @@ -863,7 +863,7 @@ | |||
947 | 863 | innodb_srv_conc_exit_innodb(trx); | 863 | innodb_srv_conc_exit_innodb(trx); |
948 | 864 | 864 | ||
949 | 865 | error = convert_error_code_to_mysql(error, | 865 | error = convert_error_code_to_mysql(error, |
951 | 866 | @@ -5389,6 +5400,10 @@ | 866 | @@ -5471,6 +5482,10 @@ |
952 | 867 | 867 | ||
953 | 868 | error = row_update_for_mysql((byte*) record, prebuilt); | 868 | error = row_update_for_mysql((byte*) record, prebuilt); |
954 | 869 | 869 | ||
955 | @@ -874,7 +874,7 @@ | |||
956 | 874 | innodb_srv_conc_exit_innodb(trx); | 874 | innodb_srv_conc_exit_innodb(trx); |
957 | 875 | 875 | ||
958 | 876 | error = convert_error_code_to_mysql( | 876 | error = convert_error_code_to_mysql( |
960 | 877 | @@ -5707,6 +5722,11 @@ | 877 | @@ -5801,6 +5816,11 @@ |
961 | 878 | case DB_SUCCESS: | 878 | case DB_SUCCESS: |
962 | 879 | error = 0; | 879 | error = 0; |
963 | 880 | table->status = 0; | 880 | table->status = 0; |
964 | @@ -886,7 +886,7 @@ | |||
965 | 886 | break; | 886 | break; |
966 | 887 | case DB_RECORD_NOT_FOUND: | 887 | case DB_RECORD_NOT_FOUND: |
967 | 888 | error = HA_ERR_KEY_NOT_FOUND; | 888 | error = HA_ERR_KEY_NOT_FOUND; |
969 | 889 | @@ -5916,6 +5936,11 @@ | 889 | @@ -6022,6 +6042,11 @@ |
970 | 890 | case DB_SUCCESS: | 890 | case DB_SUCCESS: |
971 | 891 | error = 0; | 891 | error = 0; |
972 | 892 | table->status = 0; | 892 | table->status = 0; |
973 | @@ -898,7 +898,7 @@ | |||
974 | 898 | break; | 898 | break; |
975 | 899 | case DB_RECORD_NOT_FOUND: | 899 | case DB_RECORD_NOT_FOUND: |
976 | 900 | error = HA_ERR_END_OF_FILE; | 900 | error = HA_ERR_END_OF_FILE; |
978 | 901 | @@ -7855,11 +7880,35 @@ | 901 | @@ -7979,11 +8004,35 @@ |
979 | 902 | /* In sql_show we call with this flag: update | 902 | /* In sql_show we call with this flag: update |
980 | 903 | then statistics so that they are up-to-date */ | 903 | then statistics so that they are up-to-date */ |
981 | 904 | 904 | ||
982 | @@ -935,7 +935,7 @@ | |||
983 | 935 | 935 | ||
984 | 936 | prebuilt->trx->op_info = "returning various info to MySQL"; | 936 | prebuilt->trx->op_info = "returning various info to MySQL"; |
985 | 937 | } | 937 | } |
987 | 938 | @@ -7937,7 +7986,7 @@ | 938 | @@ -8061,7 +8110,7 @@ |
988 | 939 | are asked by MySQL to avoid locking. Another reason to | 939 | are asked by MySQL to avoid locking. Another reason to |
989 | 940 | avoid the call is that it uses quite a lot of CPU. | 940 | avoid the call is that it uses quite a lot of CPU. |
990 | 941 | See Bug#38185. */ | 941 | See Bug#38185. */ |
991 | @@ -944,7 +944,7 @@ | |||
992 | 944 | /* We do not update delete_length if no | 944 | /* We do not update delete_length if no |
993 | 945 | locking is requested so the "old" value can | 945 | locking is requested so the "old" value can |
994 | 946 | remain. delete_length is initialized to 0 in | 946 | remain. delete_length is initialized to 0 in |
996 | 947 | @@ -11122,6 +11171,26 @@ | 947 | @@ -11294,6 +11343,26 @@ |
997 | 948 | "The number of index pages to sample when calculating statistics (default 8)", | 948 | "The number of index pages to sample when calculating statistics (default 8)", |
998 | 949 | NULL, NULL, 8, 1, ~0ULL, 0); | 949 | NULL, NULL, 8, 1, ~0ULL, 0); |
999 | 950 | 950 | ||
1000 | @@ -971,7 +971,7 @@ | |||
1001 | 971 | static MYSQL_SYSVAR_BOOL(adaptive_hash_index, btr_search_enabled, | 971 | static MYSQL_SYSVAR_BOOL(adaptive_hash_index, btr_search_enabled, |
1002 | 972 | PLUGIN_VAR_OPCMDARG, | 972 | PLUGIN_VAR_OPCMDARG, |
1003 | 973 | "Enable InnoDB adaptive hash index (enabled by default). " | 973 | "Enable InnoDB adaptive hash index (enabled by default). " |
1005 | 974 | @@ -11447,6 +11516,9 @@ | 974 | @@ -11641,6 +11710,9 @@ |
1006 | 975 | MYSQL_SYSVAR(overwrite_relay_log_info), | 975 | MYSQL_SYSVAR(overwrite_relay_log_info), |
1007 | 976 | MYSQL_SYSVAR(rollback_on_timeout), | 976 | MYSQL_SYSVAR(rollback_on_timeout), |
1008 | 977 | MYSQL_SYSVAR(stats_on_metadata), | 977 | MYSQL_SYSVAR(stats_on_metadata), |
1009 | @@ -981,15 +981,15 @@ | |||
1010 | 981 | MYSQL_SYSVAR(stats_sample_pages), | 981 | MYSQL_SYSVAR(stats_sample_pages), |
1011 | 982 | MYSQL_SYSVAR(adaptive_hash_index), | 982 | MYSQL_SYSVAR(adaptive_hash_index), |
1012 | 983 | MYSQL_SYSVAR(stats_method), | 983 | MYSQL_SYSVAR(stats_method), |
1014 | 984 | @@ -11512,6 +11584,8 @@ | 984 | @@ -11709,6 +11781,8 @@ |
1015 | 985 | i_s_innodb_cmp_reset, | 985 | i_s_innodb_cmp_reset, |
1016 | 986 | i_s_innodb_cmpmem, | 986 | i_s_innodb_cmpmem, |
1017 | 987 | i_s_innodb_cmpmem_reset, | 987 | i_s_innodb_cmpmem_reset, |
1018 | 988 | +i_s_innodb_table_stats, | 988 | +i_s_innodb_table_stats, |
1019 | 989 | +i_s_innodb_index_stats, | 989 | +i_s_innodb_index_stats, |
1020 | 990 | i_s_innodb_admin_command, | ||
1021 | 990 | i_s_innodb_patches | 991 | i_s_innodb_patches |
1022 | 991 | mysql_declare_plugin_end; | 992 | mysql_declare_plugin_end; |
1023 | 992 | |||
1024 | 993 | --- a/storage/innodb_plugin/handler/i_s.cc | 993 | --- a/storage/innodb_plugin/handler/i_s.cc |
1025 | 994 | +++ b/storage/innodb_plugin/handler/i_s.cc | 994 | +++ b/storage/innodb_plugin/handler/i_s.cc |
1026 | 995 | @@ -45,6 +45,7 @@ | 995 | @@ -45,6 +45,7 @@ |
1027 | @@ -997,11 +997,11 @@ | |||
1028 | 997 | #include "trx0rseg.h" /* for trx_rseg_struct */ | 997 | #include "trx0rseg.h" /* for trx_rseg_struct */ |
1029 | 998 | #include "trx0sys.h" /* for trx_sys */ | 998 | #include "trx0sys.h" /* for trx_sys */ |
1030 | 999 | +#include "dict0dict.h" /* for dict_sys */ | 999 | +#include "dict0dict.h" /* for dict_sys */ |
1031 | 1000 | #include "buf0lru.h" /* for XTRA_LRU_[DUMP/RESTORE] */ | ||
1032 | 1000 | } | 1001 | } |
1033 | 1001 | 1002 | ||
1037 | 1002 | static const char plugin_author[] = "Innobase Oy"; | 1003 | @@ -2769,3 +2770,347 @@ |
1038 | 1003 | @@ -2602,3 +2603,347 @@ | 1004 | STRUCT_FLD(system_vars, NULL), |
1036 | 1004 | /* void* */ | ||
1039 | 1005 | STRUCT_FLD(__reserved1, NULL) | 1005 | STRUCT_FLD(__reserved1, NULL) |
1040 | 1006 | }; | 1006 | }; |
1041 | 1007 | + | 1007 | + |
1042 | @@ -1350,23 +1350,25 @@ | |||
1043 | 1350 | +}; | 1350 | +}; |
1044 | 1351 | --- a/storage/innodb_plugin/handler/i_s.h | 1351 | --- a/storage/innodb_plugin/handler/i_s.h |
1045 | 1352 | +++ b/storage/innodb_plugin/handler/i_s.h | 1352 | +++ b/storage/innodb_plugin/handler/i_s.h |
1047 | 1353 | @@ -38,5 +38,7 @@ | 1353 | @@ -38,6 +38,8 @@ |
1048 | 1354 | extern struct st_mysql_plugin i_s_innodb_cmpmem_reset; | 1354 | extern struct st_mysql_plugin i_s_innodb_cmpmem_reset; |
1049 | 1355 | extern struct st_mysql_plugin i_s_innodb_patches; | 1355 | extern struct st_mysql_plugin i_s_innodb_patches; |
1050 | 1356 | extern struct st_mysql_plugin i_s_innodb_rseg; | 1356 | extern struct st_mysql_plugin i_s_innodb_rseg; |
1051 | 1357 | +extern struct st_mysql_plugin i_s_innodb_table_stats; | 1357 | +extern struct st_mysql_plugin i_s_innodb_table_stats; |
1052 | 1358 | +extern struct st_mysql_plugin i_s_innodb_index_stats; | 1358 | +extern struct st_mysql_plugin i_s_innodb_index_stats; |
1053 | 1359 | extern struct st_mysql_plugin i_s_innodb_admin_command; | ||
1054 | 1359 | 1360 | ||
1055 | 1360 | #endif /* i_s_h */ | 1361 | #endif /* i_s_h */ |
1056 | 1361 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h | 1362 | --- a/storage/innodb_plugin/handler/innodb_patch_info.h |
1057 | 1362 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h | 1363 | +++ b/storage/innodb_plugin/handler/innodb_patch_info.h |
1059 | 1363 | @@ -35,5 +35,6 @@ | 1364 | @@ -35,6 +35,7 @@ |
1060 | 1364 | {"innodb_expand_import","convert .ibd file automatically when import tablespace","the files are generated by xtrabackup export mode.","http://www.percona.com/docs/wiki/percona-xtradb"}, | 1365 | {"innodb_expand_import","convert .ibd file automatically when import tablespace","the files are generated by xtrabackup export mode.","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1061 | 1365 | {"innodb_dict_size_limit","Limit dictionary cache size","Variable innodb_dict_size_limit in bytes","http://www.percona.com/docs/wiki/percona-xtradb"}, | 1366 | {"innodb_dict_size_limit","Limit dictionary cache size","Variable innodb_dict_size_limit in bytes","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1062 | 1366 | {"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"}, | 1367 | {"innodb_split_buf_pool_mutex","More fix of buffer_pool mutex","Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1063 | 1367 | +{"innodb_stats","Additional features about InnoDB statistics/optimizer","","http://www.percona.com/docs/wiki/percona-xtradb"}, | 1368 | +{"innodb_stats","Additional features about InnoDB statistics/optimizer","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1066 | 1368 | {NULL, NULL, NULL, NULL} | 1369 | {"innodb_recovery_patches","Bugfixes and adjustments about recovery process","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1067 | 1369 | }; | 1370 | {"innodb_purge_thread","Enable to use purge devoted thread","","http://www.percona.com/docs/wiki/percona-xtradb"}, |
1068 | 1371 | {"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, | ||
1069 | 1370 | --- a/storage/innodb_plugin/include/dict0boot.h | 1372 | --- a/storage/innodb_plugin/include/dict0boot.h |
1070 | 1371 | +++ b/storage/innodb_plugin/include/dict0boot.h | 1373 | +++ b/storage/innodb_plugin/include/dict0boot.h |
1071 | 1372 | @@ -101,6 +101,7 @@ | 1374 | @@ -101,6 +101,7 @@ |
1072 | @@ -1531,7 +1533,7 @@ | |||
1073 | 1531 | should be called after the indexes for a table have been created. | 1533 | should be called after the indexes for a table have been created. |
1074 | 1532 | --- a/storage/innodb_plugin/include/srv0srv.h | 1534 | --- a/storage/innodb_plugin/include/srv0srv.h |
1075 | 1533 | +++ b/storage/innodb_plugin/include/srv0srv.h | 1535 | +++ b/storage/innodb_plugin/include/srv0srv.h |
1077 | 1534 | @@ -197,6 +197,9 @@ | 1536 | @@ -206,6 +206,9 @@ |
1078 | 1535 | extern ibool srv_innodb_status; | 1537 | extern ibool srv_innodb_status; |
1079 | 1536 | 1538 | ||
1080 | 1537 | extern unsigned long long srv_stats_sample_pages; | 1539 | extern unsigned long long srv_stats_sample_pages; |
1081 | @@ -1585,7 +1587,7 @@ | |||
1082 | 1585 | } else { | 1587 | } else { |
1083 | 1586 | --- a/storage/innodb_plugin/row/row0ins.c | 1588 | --- a/storage/innodb_plugin/row/row0ins.c |
1084 | 1587 | +++ b/storage/innodb_plugin/row/row0ins.c | 1589 | +++ b/storage/innodb_plugin/row/row0ins.c |
1086 | 1588 | @@ -2020,6 +2020,8 @@ | 1590 | @@ -2026,6 +2026,8 @@ |
1087 | 1589 | } | 1591 | } |
1088 | 1590 | 1592 | ||
1089 | 1591 | #ifdef UNIV_DEBUG | 1593 | #ifdef UNIV_DEBUG |
1090 | @@ -1596,7 +1598,7 @@ | |||
1091 | 1596 | rec_t* first_rec = page_rec_get_next( | 1598 | rec_t* first_rec = page_rec_get_next( |
1092 | 1597 | --- a/storage/innodb_plugin/row/row0merge.c | 1599 | --- a/storage/innodb_plugin/row/row0merge.c |
1093 | 1598 | +++ b/storage/innodb_plugin/row/row0merge.c | 1600 | +++ b/storage/innodb_plugin/row/row0merge.c |
1095 | 1599 | @@ -2021,6 +2021,8 @@ | 1601 | @@ -2028,6 +2028,8 @@ |
1096 | 1600 | "UPDATE SYS_INDEXES SET NAME=CONCAT('" | 1602 | "UPDATE SYS_INDEXES SET NAME=CONCAT('" |
1097 | 1601 | TEMP_INDEX_PREFIX_STR "', NAME) WHERE ID = :indexid;\n" | 1603 | TEMP_INDEX_PREFIX_STR "', NAME) WHERE ID = :indexid;\n" |
1098 | 1602 | "COMMIT WORK;\n" | 1604 | "COMMIT WORK;\n" |
1099 | @@ -1784,7 +1786,7 @@ | |||
1100 | 1784 | dfield = dtuple_get_nth_field(entry, i); | 1786 | dfield = dtuple_get_nth_field(entry, i); |
1101 | 1785 | --- a/storage/innodb_plugin/srv/srv0srv.c | 1787 | --- a/storage/innodb_plugin/srv/srv0srv.c |
1102 | 1786 | +++ b/storage/innodb_plugin/srv/srv0srv.c | 1788 | +++ b/storage/innodb_plugin/srv/srv0srv.c |
1104 | 1787 | @@ -369,6 +369,9 @@ | 1789 | @@ -381,6 +381,9 @@ |
1105 | 1788 | /* When estimating number of different key values in an index, sample | 1790 | /* When estimating number of different key values in an index, sample |
1106 | 1789 | this many index pages */ | 1791 | this many index pages */ |
1107 | 1790 | UNIV_INTERN unsigned long long srv_stats_sample_pages = 8; | 1792 | UNIV_INTERN unsigned long long srv_stats_sample_pages = 8; |
1108 | 1791 | 1793 | ||
1109 | === modified file 'patches/mysql-test.diff' | |||
1110 | --- patches/mysql-test.diff 2011-09-12 12:25:39 +0000 | |||
1111 | +++ patches/mysql-test.diff 2011-09-25 06:36:21 +0000 | |||
1112 | @@ -4093,6 +4093,7 @@ | |||
1113 | 4093 | +INNODB_AUTOEXTEND_INCREMENT | 4093 | +INNODB_AUTOEXTEND_INCREMENT |
1114 | 4094 | +INNODB_AUTOINC_LOCK_MODE | 4094 | +INNODB_AUTOINC_LOCK_MODE |
1115 | 4095 | +INNODB_AUTO_LRU_DUMP | 4095 | +INNODB_AUTO_LRU_DUMP |
1116 | 4096 | +INNODB_BLOCKING_LRU_RESTORE | ||
1117 | 4096 | +INNODB_BUFFER_POOL_SHM_CHECKSUM | 4097 | +INNODB_BUFFER_POOL_SHM_CHECKSUM |
1118 | 4097 | +INNODB_BUFFER_POOL_SHM_KEY | 4098 | +INNODB_BUFFER_POOL_SHM_KEY |
1119 | 4098 | +INNODB_BUFFER_POOL_SIZE | 4099 | +INNODB_BUFFER_POOL_SIZE |
1120 | @@ -4441,6 +4442,7 @@ | |||
1121 | 4441 | +INNODB_AUTOEXTEND_INCREMENT | 4442 | +INNODB_AUTOEXTEND_INCREMENT |
1122 | 4442 | +INNODB_AUTOINC_LOCK_MODE | 4443 | +INNODB_AUTOINC_LOCK_MODE |
1123 | 4443 | +INNODB_AUTO_LRU_DUMP | 4444 | +INNODB_AUTO_LRU_DUMP |
1124 | 4445 | +INNODB_BLOCKING_LRU_RESTORE | ||
1125 | 4444 | +INNODB_BUFFER_POOL_SHM_CHECKSUM | 4446 | +INNODB_BUFFER_POOL_SHM_CHECKSUM |
1126 | 4445 | +INNODB_BUFFER_POOL_SHM_KEY | 4447 | +INNODB_BUFFER_POOL_SHM_KEY |
1127 | 4446 | +INNODB_BUFFER_POOL_SIZE | 4448 | +INNODB_BUFFER_POOL_SIZE |
1128 | 4447 | 4449 | ||
1129 | === modified file 'patches/series' | |||
1130 | --- patches/series 2011-09-06 08:23:51 +0000 | |||
1131 | +++ patches/series 2011-09-25 06:36:21 +0000 | |||
1132 | @@ -20,7 +20,6 @@ | |||
1133 | 20 | innodb_dict_size_limit.patch | 20 | innodb_dict_size_limit.patch |
1134 | 21 | innodb_split_buf_pool_mutex.patch | 21 | innodb_split_buf_pool_mutex.patch |
1135 | 22 | innodb_expand_import.patch | 22 | innodb_expand_import.patch |
1136 | 23 | innodb_stats.patch | ||
1137 | 24 | innodb_recovery_patches.patch | 23 | innodb_recovery_patches.patch |
1138 | 25 | innodb_purge_thread.patch | 24 | innodb_purge_thread.patch |
1139 | 26 | innodb_admin_command_base.patch | 25 | innodb_admin_command_base.patch |
1140 | @@ -29,6 +28,7 @@ | |||
1141 | 29 | innodb_lru_dump_restore.patch | 28 | innodb_lru_dump_restore.patch |
1142 | 30 | innodb_separate_doublewrite.patch | 29 | innodb_separate_doublewrite.patch |
1143 | 31 | innodb_pass_corrupt_table.patch | 30 | innodb_pass_corrupt_table.patch |
1144 | 31 | innodb_stats.patch | ||
1145 | 32 | innodb_fast_checksum.patch | 32 | innodb_fast_checksum.patch |
1146 | 33 | innodb_files_extend.patch | 33 | innodb_files_extend.patch |
1147 | 34 | innodb_show_sys_tables.patch | 34 | innodb_show_sys_tables.patch |
http:// jenkins. percona. com/view/ Percona% 20Server% 205.1/job/ percona- server- 5.1-param/ 148/