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