Merge lp:~akopytov/percona-server/bug785489-5.1 into lp:percona-server/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
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.

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

Subscribers

People subscribed via source and target branches