Merge lp:~stewart/percona-server/5.5.20 into lp:percona-server/5.5
- 5.5.20
- Merge into 5.5
Proposed by
Stewart Smith
Status: | Merged |
---|---|
Approved by: | Stewart Smith |
Approved revision: | no longer in the source branch. |
Merged at revision: | 214 |
Proposed branch: | lp:~stewart/percona-server/5.5.20 |
Merge into: | lp:percona-server/5.5 |
Diff against target: |
5315 lines (+680/-631) 46 files modified
Makefile (+2/-2) patches/bug860910.patch (+1/-1) patches/control_online_alter_index.patch (+1/-1) patches/group_commit.patch (+26/-26) patches/innodb_adaptive_hash_index_partitions.patch (+8/-8) patches/innodb_admin_command_base.patch (+1/-1) patches/innodb_buffer_pool_pages_i_s.patch (+3/-3) patches/innodb_buffer_pool_shm.patch (+2/-2) patches/innodb_deadlock_count.patch (+3/-3) patches/innodb_dict_size_limit.patch (+9/-9) patches/innodb_expand_fast_index_creation.patch (+5/-5) patches/innodb_expand_import.patch (+11/-11) patches/innodb_extend_slow.patch (+27/-27) patches/innodb_extra_rseg.patch (+1/-1) patches/innodb_fake_changes.patch (+8/-8) patches/innodb_fast_checksum.patch (+4/-4) patches/innodb_files_extend.patch (+17/-17) patches/innodb_fix_misc.patch (+27/-27) patches/innodb_io_patches.patch (+41/-17) patches/innodb_kill_idle_transaction.patch (+5/-5) patches/innodb_lru_dump_restore.patch (+19/-19) patches/innodb_opt_lru_count.patch (+16/-16) patches/innodb_overwrite_relay_log_info.patch (+2/-2) patches/innodb_pass_corrupt_table.patch (+40/-40) patches/innodb_recovery_patches.patch (+2/-2) patches/innodb_separate_doublewrite.patch (+20/-20) patches/innodb_show_lock_name.patch (+4/-4) patches/innodb_show_status.patch (+8/-8) patches/innodb_show_status_extend.patch (+7/-7) patches/innodb_show_sys_tables.patch (+1/-1) patches/innodb_split_buf_pool_mutex.patch (+232/-203) patches/innodb_stats.patch (+24/-24) patches/innodb_thread_concurrency_timer_based.patch (+6/-6) patches/log_connection_error.patch (+3/-3) patches/log_warnings_suppress.patch (+4/-4) patches/mysql-test.diff (+0/-4) patches/optimizer_fix.patch (+2/-2) patches/processlist_row_stats.patch (+1/-1) patches/query_cache_enhance.patch (+2/-2) patches/response_time_distribution.patch (+15/-15) patches/show_slave_status_nolock.patch (+2/-2) patches/show_temp.patch (+5/-5) patches/slow_extended.patch (+11/-11) patches/sql_no_fcache.patch (+8/-8) patches/subunit.patch (+5/-5) patches/userstat.patch (+39/-39) |
To merge this branch: | bzr merge lp:~stewart/percona-server/5.5.20 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Stewart Smith (community) | Approve | ||
Review via email: mp+91605@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Stewart Smith (stewart) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'Makefile' |
2 | --- Makefile 2012-01-09 02:00:29 +0000 |
3 | +++ Makefile 2012-02-06 05:02:26 +0000 |
4 | @@ -1,7 +1,7 @@ |
5 | FETCH_CMD=wget |
6 | MASTER_SITE=http://s3.amazonaws.com/percona.com/downloads/community |
7 | -MYSQL_VERSION=5.5.19 |
8 | -PERCONA_SERVER_VERSION=rel24.0 |
9 | +MYSQL_VERSION=5.5.20 |
10 | +PERCONA_SERVER_VERSION=rel24.1 |
11 | PERCONA_SERVER ?=Percona-Server-$(MYSQL_VERSION)-$(PERCONA_SERVER_VERSION) |
12 | PERCONA_SERVER_SHORT_1 ?=Percona-Server-$(MYSQL_VERSION) |
13 | PERCONA_SERVER_SHORT_2 ?=Percona-Server |
14 | |
15 | === modified file 'patches/bug860910.patch' |
16 | --- patches/bug860910.patch 2011-12-27 15:32:16 +0000 |
17 | +++ patches/bug860910.patch 2012-02-06 05:02:26 +0000 |
18 | @@ -77,7 +77,7 @@ |
19 | +--source include/rpl_end.inc |
20 | --- a/sql/log.cc |
21 | +++ b/sql/log.cc |
22 | -@@ -5076,6 +5076,12 @@ |
23 | +@@ -5112,6 +5112,12 @@ |
24 | user_var_event->type, |
25 | user_var_event->charset_number, |
26 | flags); |
27 | |
28 | === modified file 'patches/control_online_alter_index.patch' |
29 | --- patches/control_online_alter_index.patch 2011-12-27 15:32:16 +0000 |
30 | +++ patches/control_online_alter_index.patch 2012-02-06 05:02:26 +0000 |
31 | @@ -58,7 +58,7 @@ |
32 | for (idx_p= index_drop_buffer, idx_end_p= idx_p + index_drop_count; |
33 | --- a/sql/sys_vars.cc |
34 | +++ b/sql/sys_vars.cc |
35 | -@@ -2192,6 +2192,13 @@ |
36 | +@@ -2265,6 +2265,13 @@ |
37 | GLOBAL_VAR(opt_optimizer_fix), |
38 | NO_CMD_LINE, DEFAULT(TRUE)); |
39 | |
40 | |
41 | === modified file 'patches/group_commit.patch' |
42 | --- patches/group_commit.patch 2012-01-11 15:14:15 +0000 |
43 | +++ patches/group_commit.patch 2012-02-06 05:02:26 +0000 |
44 | @@ -522,7 +522,7 @@ |
45 | sync_period_ptr(sync_period), |
46 | is_relay_log(0), signal_cnt(0), |
47 | description_event_for_exec(0), description_event_for_queue(0) |
48 | -@@ -5325,19 +5327,15 @@ |
49 | +@@ -5361,19 +5363,15 @@ |
50 | SYNOPSIS |
51 | write_cache() |
52 | cache Cache to write to the binary log |
53 | @@ -544,7 +544,7 @@ |
54 | if (reinit_io_cache(cache, READ_CACHE, 0, 0, 0)) |
55 | return ER_ERROR_ON_WRITE; |
56 | uint length= my_b_bytes_in_cache(cache), group, carry, hdr_offs; |
57 | -@@ -5448,6 +5446,8 @@ |
58 | +@@ -5484,6 +5482,8 @@ |
59 | } |
60 | |
61 | /* Write data to the binary log file */ |
62 | @@ -553,7 +553,7 @@ |
63 | if (my_b_write(&log_file, cache->read_pos, length)) |
64 | return ER_ERROR_ON_WRITE; |
65 | thd->binlog_bytes_written+= length; |
66 | -@@ -5456,9 +5456,6 @@ |
67 | +@@ -5492,9 +5492,6 @@ |
68 | |
69 | DBUG_ASSERT(carry == 0); |
70 | |
71 | @@ -563,7 +563,7 @@ |
72 | return 0; // All OK |
73 | } |
74 | |
75 | -@@ -5499,8 +5496,6 @@ |
76 | +@@ -5535,8 +5532,6 @@ |
77 | if (!is_open()) |
78 | DBUG_RETURN(error); |
79 | |
80 | @@ -572,7 +572,7 @@ |
81 | Incident incident= INCIDENT_LOST_EVENTS; |
82 | Incident_log_event ev(thd, incident, write_error_msg); |
83 | if (lock) |
84 | -@@ -5549,112 +5544,332 @@ |
85 | +@@ -5585,112 +5580,332 @@ |
86 | 'cache' needs to be reinitialized after this functions returns. |
87 | */ |
88 | |
89 | @@ -971,7 +971,7 @@ |
90 | /** |
91 | Wait until we get a signal that the relay log has been updated. |
92 | |
93 | -@@ -6059,6 +6274,68 @@ |
94 | +@@ -6095,6 +6310,68 @@ |
95 | } |
96 | |
97 | |
98 | @@ -1040,7 +1040,7 @@ |
99 | /********* transaction coordinator log for 2pc - mmap() based solution *******/ |
100 | |
101 | /* |
102 | -@@ -6195,6 +6472,7 @@ |
103 | +@@ -6231,6 +6508,7 @@ |
104 | mysql_mutex_init(key_LOCK_pool, &LOCK_pool, MY_MUTEX_INIT_FAST); |
105 | mysql_cond_init(key_COND_active, &COND_active, 0); |
106 | mysql_cond_init(key_COND_pool, &COND_pool, 0); |
107 | @@ -1048,7 +1048,7 @@ |
108 | |
109 | inited=6; |
110 | |
111 | -@@ -6202,6 +6480,8 @@ |
112 | +@@ -6238,6 +6516,8 @@ |
113 | active=pages; |
114 | pool=pages+1; |
115 | pool_last=pages+npages-1; |
116 | @@ -1057,7 +1057,7 @@ |
117 | |
118 | return 0; |
119 | |
120 | -@@ -6307,7 +6587,7 @@ |
121 | +@@ -6343,7 +6623,7 @@ |
122 | to the position in memory where xid was logged to. |
123 | */ |
124 | |
125 | @@ -1066,7 +1066,7 @@ |
126 | { |
127 | int err; |
128 | PAGE *p; |
129 | -@@ -6446,7 +6726,9 @@ |
130 | +@@ -6482,7 +6762,9 @@ |
131 | mysql_mutex_destroy(&LOCK_sync); |
132 | mysql_mutex_destroy(&LOCK_active); |
133 | mysql_mutex_destroy(&LOCK_pool); |
134 | @@ -1076,7 +1076,7 @@ |
135 | case 5: |
136 | data[0]='A'; // garble the first (signature) byte, in case mysql_file_delete fails |
137 | case 4: |
138 | -@@ -6656,42 +6938,87 @@ |
139 | +@@ -6692,42 +6974,87 @@ |
140 | mysql_cond_destroy(&COND_prep_xids); |
141 | } |
142 | |
143 | @@ -1176,7 +1176,7 @@ |
144 | } |
145 | |
146 | int TC_LOG_BINLOG::recover(IO_CACHE *log, Format_description_log_event *fdle) |
147 | -@@ -6760,9 +7087,67 @@ |
148 | +@@ -6796,9 +7123,67 @@ |
149 | { |
150 | return (ulonglong) mysql_bin_log.get_log_file()->pos_in_file; |
151 | } |
152 | @@ -1244,7 +1244,7 @@ |
153 | struct st_mysql_storage_engine binlog_storage_engine= |
154 | { MYSQL_HANDLERTON_INTERFACE_VERSION }; |
155 | |
156 | -@@ -6777,7 +7162,7 @@ |
157 | +@@ -6813,7 +7198,7 @@ |
158 | binlog_init, /* Plugin Init */ |
159 | NULL, /* Plugin Deinit */ |
160 | 0x0100 /* 1.0 */, |
161 | @@ -1446,7 +1446,7 @@ |
162 | class Log_event_handler |
163 | --- a/sql/mysqld.cc |
164 | +++ b/sql/mysqld.cc |
165 | -@@ -1490,6 +1490,7 @@ |
166 | +@@ -1495,6 +1495,7 @@ |
167 | ha_end(); |
168 | if (tc_log) |
169 | tc_log->close(); |
170 | @@ -1454,7 +1454,7 @@ |
171 | delegates_destroy(); |
172 | xid_cache_free(); |
173 | table_def_free(); |
174 | -@@ -4061,6 +4062,8 @@ |
175 | +@@ -3911,6 +3912,8 @@ |
176 | query_response_time_init(); |
177 | #endif // HAVE_RESPONSE_TIME_DISTRIBUTION |
178 | /* We have to initialize the storage engines before CSV logging */ |
179 | @@ -1463,7 +1463,7 @@ |
180 | init_global_table_stats(); |
181 | init_global_index_stats(); |
182 | |
183 | -@@ -8004,6 +8007,7 @@ |
184 | +@@ -7872,6 +7875,7 @@ |
185 | key_LOCK_error_messages, key_LOG_INFO_lock, key_LOCK_thread_count, |
186 | key_PARTITION_LOCK_auto_inc; |
187 | PSI_mutex_key key_RELAYLOG_LOCK_index; |
188 | @@ -1471,7 +1471,7 @@ |
189 | |
190 | static PSI_mutex_info all_server_mutexes[]= |
191 | { |
192 | -@@ -8024,6 +8028,7 @@ |
193 | +@@ -7892,6 +7896,7 @@ |
194 | { &key_delayed_insert_mutex, "Delayed_insert::mutex", 0}, |
195 | { &key_hash_filo_lock, "hash_filo::lock", 0}, |
196 | { &key_LOCK_active_mi, "LOCK_active_mi", PSI_FLAG_GLOBAL}, |
197 | @@ -1479,7 +1479,7 @@ |
198 | { &key_LOCK_connection_count, "LOCK_connection_count", PSI_FLAG_GLOBAL}, |
199 | { &key_LOCK_crypt, "LOCK_crypt", PSI_FLAG_GLOBAL}, |
200 | { &key_LOCK_delayed_create, "LOCK_delayed_create", PSI_FLAG_GLOBAL}, |
201 | -@@ -8039,6 +8044,7 @@ |
202 | +@@ -7907,6 +7912,7 @@ |
203 | "LOCK_global_index_stats", PSI_FLAG_GLOBAL}, |
204 | { &key_LOCK_gdl, "LOCK_gdl", PSI_FLAG_GLOBAL}, |
205 | { &key_LOCK_global_system_variables, "LOCK_global_system_variables", PSI_FLAG_GLOBAL}, |
206 | @@ -1487,7 +1487,7 @@ |
207 | { &key_LOCK_manager, "LOCK_manager", PSI_FLAG_GLOBAL}, |
208 | { &key_LOCK_prepared_stmt_count, "LOCK_prepared_stmt_count", PSI_FLAG_GLOBAL}, |
209 | { &key_LOCK_rpl_status, "LOCK_rpl_status", PSI_FLAG_GLOBAL}, |
210 | -@@ -8050,6 +8056,7 @@ |
211 | +@@ -7918,6 +7924,7 @@ |
212 | { &key_LOCK_temporary_tables, "THD::LOCK_temporary_tables", 0}, |
213 | { &key_LOCK_user_conn, "LOCK_user_conn", PSI_FLAG_GLOBAL}, |
214 | { &key_LOCK_uuid_generator, "LOCK_uuid_generator", PSI_FLAG_GLOBAL}, |
215 | @@ -1495,7 +1495,7 @@ |
216 | { &key_LOG_LOCK_log, "LOG::LOCK_log", 0}, |
217 | { &key_master_info_data_lock, "Master_info::data_lock", 0}, |
218 | { &key_master_info_run_lock, "Master_info::run_lock", 0}, |
219 | -@@ -8097,6 +8104,7 @@ |
220 | +@@ -7965,6 +7972,7 @@ |
221 | key_TABLE_SHARE_cond, key_user_level_lock_cond, |
222 | key_COND_thread_count, key_COND_thread_cache, key_COND_flush_thread_cache; |
223 | PSI_cond_key key_RELAYLOG_update_cond; |
224 | @@ -1503,7 +1503,7 @@ |
225 | |
226 | static PSI_cond_info all_server_conds[]= |
227 | { |
228 | -@@ -8113,8 +8121,10 @@ |
229 | +@@ -7981,8 +7989,10 @@ |
230 | { &key_RELAYLOG_update_cond, "MYSQL_RELAY_LOG::update_cond", 0}, |
231 | { &key_COND_cache_status_changed, "Query_cache::COND_cache_status_changed", 0}, |
232 | { &key_COND_manager, "COND_manager", PSI_FLAG_GLOBAL}, |
233 | @@ -1516,7 +1516,7 @@ |
234 | { &key_item_func_sleep_cond, "Item_func_sleep::cond", 0}, |
235 | --- a/sql/mysqld.h |
236 | +++ b/sql/mysqld.h |
237 | -@@ -273,6 +273,7 @@ |
238 | +@@ -274,6 +274,7 @@ |
239 | key_structure_guard_mutex, key_TABLE_SHARE_LOCK_ha_data, |
240 | key_LOCK_error_messages, key_LOCK_thread_count, key_PARTITION_LOCK_auto_inc; |
241 | extern PSI_mutex_key key_RELAYLOG_LOCK_index; |
242 | @@ -1524,7 +1524,7 @@ |
243 | |
244 | extern PSI_rwlock_key key_rwlock_LOCK_grant, key_rwlock_LOCK_logger, |
245 | key_rwlock_LOCK_sys_init_connect, key_rwlock_LOCK_sys_init_slave, |
246 | -@@ -293,6 +294,7 @@ |
247 | +@@ -294,6 +295,7 @@ |
248 | key_TABLE_SHARE_cond, key_user_level_lock_cond, |
249 | key_COND_thread_count, key_COND_thread_cache, key_COND_flush_thread_cache; |
250 | extern PSI_cond_key key_RELAYLOG_update_cond; |
251 | @@ -1552,7 +1552,7 @@ |
252 | mysql_mutex_destroy(&LOCK_thd_data); |
253 | mysql_mutex_destroy(&LOCK_temporary_tables); |
254 | #ifndef DBUG_OFF |
255 | -@@ -5292,6 +5296,24 @@ |
256 | +@@ -5297,6 +5301,24 @@ |
257 | DBUG_RETURN(0); |
258 | } |
259 | |
260 | @@ -1887,7 +1887,7 @@ |
261 | |
262 | trx_deregister_from_2pc(trx); |
263 | |
264 | -@@ -10982,6 +11149,7 @@ |
265 | +@@ -10981,6 +11148,7 @@ |
266 | |
267 | srv_active_wake_master_thread(); |
268 | |
269 | @@ -1895,7 +1895,7 @@ |
270 | if (thd_sql_command(thd) != SQLCOM_XA_PREPARE |
271 | && (all |
272 | || !thd_test_options( |
273 | -@@ -11008,6 +11176,7 @@ |
274 | +@@ -11007,6 +11175,7 @@ |
275 | mysql_mutex_lock(&prepare_commit_mutex); |
276 | trx_owns_prepare_commit_mutex_set(trx); |
277 | } |
278 | |
279 | === modified file 'patches/innodb_adaptive_hash_index_partitions.patch' |
280 | --- patches/innodb_adaptive_hash_index_partitions.patch 2012-01-11 15:14:15 +0000 |
281 | +++ patches/innodb_adaptive_hash_index_partitions.patch 2012-02-06 05:02:26 +0000 |
282 | @@ -851,7 +851,7 @@ |
283 | |
284 | #ifdef UNIV_DEBUG |
285 | block->page.in_page_hash = FALSE; |
286 | -@@ -1427,7 +1428,11 @@ |
287 | +@@ -1429,7 +1430,11 @@ |
288 | ulint p; |
289 | |
290 | #ifdef UNIV_SYNC_DEBUG |
291 | @@ -864,7 +864,7 @@ |
292 | #endif /* UNIV_SYNC_DEBUG */ |
293 | ut_ad(!btr_search_enabled); |
294 | |
295 | -@@ -2142,6 +2147,7 @@ |
296 | +@@ -2144,6 +2149,7 @@ |
297 | { |
298 | block->check_index_page_at_flush = FALSE; |
299 | block->index = NULL; |
300 | @@ -874,7 +874,7 @@ |
301 | block->n_fields = 1; |
302 | --- a/storage/innobase/buf/buf0lru.c |
303 | +++ b/storage/innobase/buf/buf0lru.c |
304 | -@@ -560,7 +560,7 @@ |
305 | +@@ -576,7 +576,7 @@ |
306 | |
307 | mutex_exit(&buf_pool->LRU_list_mutex); |
308 | |
309 | @@ -883,7 +883,7 @@ |
310 | chunk = buf_pool->chunks; |
311 | for (j = buf_pool->n_chunks; j--; chunk++) { |
312 | buf_block_t* block = chunk->blocks; |
313 | -@@ -572,16 +572,16 @@ |
314 | +@@ -588,16 +588,16 @@ |
315 | continue; |
316 | } |
317 | |
318 | @@ -905,7 +905,7 @@ |
319 | |
320 | --- a/storage/innobase/dict/dict0dict.c |
321 | +++ b/storage/innobase/dict/dict0dict.c |
322 | -@@ -1846,7 +1846,7 @@ |
323 | +@@ -1851,7 +1851,7 @@ |
324 | zero. */ |
325 | |
326 | for (;;) { |
327 | @@ -916,7 +916,7 @@ |
328 | } |
329 | --- a/storage/innobase/handler/ha_innodb.cc |
330 | +++ b/storage/innobase/handler/ha_innodb.cc |
331 | -@@ -11833,6 +11833,11 @@ |
332 | +@@ -11832,6 +11832,11 @@ |
333 | "Disable with --skip-innodb-adaptive-hash-index.", |
334 | NULL, innodb_adaptive_hash_index_update, TRUE); |
335 | |
336 | @@ -928,7 +928,7 @@ |
337 | static MYSQL_SYSVAR_ULONG(replication_delay, srv_replication_delay, |
338 | PLUGIN_VAR_RQCMDARG, |
339 | "Replication thread delay (ms) on the slave server if " |
340 | -@@ -12253,6 +12258,7 @@ |
341 | +@@ -12252,6 +12257,7 @@ |
342 | MYSQL_SYSVAR(use_sys_stats_table), |
343 | MYSQL_SYSVAR(stats_sample_pages), |
344 | MYSQL_SYSVAR(adaptive_hash_index), |
345 | @@ -1411,7 +1411,7 @@ |
346 | |
347 | --- a/storage/innobase/include/buf0buf.h |
348 | +++ b/storage/innobase/include/buf0buf.h |
349 | -@@ -1580,6 +1580,7 @@ |
350 | +@@ -1600,6 +1600,7 @@ |
351 | complete, though: there may |
352 | have been hash collisions, |
353 | record deletions, etc. */ |
354 | |
355 | === modified file 'patches/innodb_admin_command_base.patch' |
356 | --- patches/innodb_admin_command_base.patch 2011-12-27 15:32:16 +0000 |
357 | +++ patches/innodb_admin_command_base.patch 2012-02-06 05:02:26 +0000 |
358 | @@ -7,7 +7,7 @@ |
359 | # should be done or reviewed by the maintainer! |
360 | --- a/storage/innobase/handler/ha_innodb.cc |
361 | +++ b/storage/innobase/handler/ha_innodb.cc |
362 | -@@ -11999,7 +11999,8 @@ |
363 | +@@ -12041,7 +12041,8 @@ |
364 | i_s_innodb_sys_foreign_cols, |
365 | i_s_innodb_sys_stats, |
366 | i_s_innodb_table_stats, |
367 | |
368 | === modified file 'patches/innodb_buffer_pool_pages_i_s.patch' |
369 | --- patches/innodb_buffer_pool_pages_i_s.patch 2011-12-27 15:32:16 +0000 |
370 | +++ patches/innodb_buffer_pool_pages_i_s.patch 2012-02-06 05:02:26 +0000 |
371 | @@ -7,7 +7,7 @@ |
372 | # should be done or reviewed by the maintainer! |
373 | --- a/storage/innobase/buf/buf0buf.c |
374 | +++ b/storage/innobase/buf/buf0buf.c |
375 | -@@ -4161,6 +4161,36 @@ |
376 | +@@ -4163,6 +4163,36 @@ |
377 | mutex_exit(block_mutex); |
378 | } |
379 | |
380 | @@ -46,7 +46,7 @@ |
381 | @return TRUE */ |
382 | --- a/storage/innobase/handler/ha_innodb.cc |
383 | +++ b/storage/innobase/handler/ha_innodb.cc |
384 | -@@ -12296,6 +12296,9 @@ |
385 | +@@ -12338,6 +12338,9 @@ |
386 | i_s_innodb_sys_stats, |
387 | i_s_innodb_table_stats, |
388 | i_s_innodb_index_stats, |
389 | @@ -793,7 +793,7 @@ |
390 | #endif /* i_s_h */ |
391 | --- a/storage/innobase/include/buf0buf.h |
392 | +++ b/storage/innobase/include/buf0buf.h |
393 | -@@ -1161,6 +1161,14 @@ |
394 | +@@ -1181,6 +1181,14 @@ |
395 | /*===========*/ |
396 | const buf_pool_t* buf_pool) /*!< in: buffer pool */ |
397 | __attribute__((nonnull, const)); |
398 | |
399 | === modified file 'patches/innodb_buffer_pool_shm.patch' |
400 | --- patches/innodb_buffer_pool_shm.patch 2011-12-27 15:32:16 +0000 |
401 | +++ patches/innodb_buffer_pool_shm.patch 2012-02-06 05:02:26 +0000 |
402 | @@ -55,7 +55,7 @@ |
403 | srv_mem_pool_size = (ulint) innobase_additional_mem_pool_size; |
404 | |
405 | srv_n_file_io_threads = (ulint) innobase_file_io_threads; |
406 | -@@ -11864,6 +11872,16 @@ |
407 | +@@ -11863,6 +11871,16 @@ |
408 | "Number of buffer pool instances, set to higher value on high-end machines to increase scalability", |
409 | NULL, NULL, 1L, 1L, MAX_BUFFER_POOLS, 1L); |
410 | |
411 | @@ -72,7 +72,7 @@ |
412 | static MYSQL_SYSVAR_ULONG(commit_concurrency, innobase_commit_concurrency, |
413 | PLUGIN_VAR_RQCMDARG, |
414 | "Helps in performance tuning in heavily concurrent environments.", |
415 | -@@ -12170,6 +12188,8 @@ |
416 | +@@ -12209,6 +12227,8 @@ |
417 | MYSQL_SYSVAR(autoextend_increment), |
418 | MYSQL_SYSVAR(buffer_pool_size), |
419 | MYSQL_SYSVAR(buffer_pool_instances), |
420 | |
421 | === modified file 'patches/innodb_deadlock_count.patch' |
422 | --- patches/innodb_deadlock_count.patch 2011-10-28 08:46:55 +0000 |
423 | +++ patches/innodb_deadlock_count.patch 2012-02-06 05:02:26 +0000 |
424 | @@ -28,7 +28,7 @@ |
425 | Gets the size of a lock struct. |
426 | --- a/storage/innobase/include/srv0srv.h |
427 | +++ b/storage/innobase/include/srv0srv.h |
428 | -@@ -767,6 +767,7 @@ |
429 | +@@ -770,6 +770,7 @@ |
430 | ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/ |
431 | ulint innodb_dblwr_pages_written; /*!< srv_dblwr_pages_written */ |
432 | ulint innodb_dblwr_writes; /*!< srv_dblwr_writes */ |
433 | @@ -48,7 +48,7 @@ |
434 | break; |
435 | --- a/storage/innobase/srv/srv0srv.c |
436 | +++ b/storage/innobase/srv/srv0srv.c |
437 | -@@ -474,6 +474,7 @@ |
438 | +@@ -477,6 +477,7 @@ |
439 | static ulint srv_n_rows_deleted_old = 0; |
440 | static ulint srv_n_rows_read_old = 0; |
441 | |
442 | @@ -56,7 +56,7 @@ |
443 | UNIV_INTERN ulint srv_n_lock_wait_count = 0; |
444 | UNIV_INTERN ulint srv_n_lock_wait_current_count = 0; |
445 | UNIV_INTERN ib_int64_t srv_n_lock_wait_time = 0; |
446 | -@@ -2290,6 +2291,7 @@ |
447 | +@@ -2293,6 +2294,7 @@ |
448 | export_vars.innodb_buffer_pool_pages_data = LRU_len; |
449 | export_vars.innodb_buffer_pool_pages_dirty = flush_list_len; |
450 | export_vars.innodb_buffer_pool_pages_free = free_len; |
451 | |
452 | === modified file 'patches/innodb_dict_size_limit.patch' |
453 | --- patches/innodb_dict_size_limit.patch 2011-12-27 15:32:16 +0000 |
454 | +++ patches/innodb_dict_size_limit.patch 2012-02-06 05:02:26 +0000 |
455 | @@ -289,7 +289,7 @@ |
456 | mutex_exit(&(dict_sys->mutex)); |
457 | |
458 | if (table != NULL) { |
459 | -@@ -1259,6 +1263,64 @@ |
460 | +@@ -1264,6 +1268,64 @@ |
461 | dict_mem_table_free(table); |
462 | } |
463 | |
464 | @@ -354,7 +354,7 @@ |
465 | /****************************************************************//** |
466 | If the given column name is reserved for InnoDB system columns, return |
467 | TRUE. |
468 | -@@ -1763,6 +1825,11 @@ |
469 | +@@ -1768,6 +1830,11 @@ |
470 | ut_ad(index->magic_n == DICT_INDEX_MAGIC_N); |
471 | ut_ad(mutex_own(&(dict_sys->mutex))); |
472 | |
473 | @@ -377,9 +377,9 @@ |
474 | {"have_atomic_builtins", |
475 | (char*) &export_vars.innodb_have_atomic_builtins, SHOW_BOOL}, |
476 | {"log_waits", |
477 | -@@ -11774,6 +11776,11 @@ |
478 | - "Choose method of innodb_adaptive_flushing. (native, [estimate], keep_average)", |
479 | - NULL, innodb_adaptive_flushing_method_update, 1, &adaptive_flushing_method_typelib); |
480 | +@@ -11813,6 +11815,11 @@ |
481 | + NULL, NULL, 0, 0, 1, 0); |
482 | + #endif |
483 | |
484 | +static MYSQL_SYSVAR_ULONG(dict_size_limit, srv_dict_size_limit, |
485 | + PLUGIN_VAR_RQCMDARG, |
486 | @@ -389,7 +389,7 @@ |
487 | static struct st_mysql_sys_var* innobase_system_variables[]= { |
488 | MYSQL_SYSVAR(additional_mem_pool_size), |
489 | MYSQL_SYSVAR(autoextend_increment), |
490 | -@@ -11843,6 +11850,7 @@ |
491 | +@@ -11882,6 +11889,7 @@ |
492 | MYSQL_SYSVAR(flush_neighbor_pages), |
493 | MYSQL_SYSVAR(read_ahead), |
494 | MYSQL_SYSVAR(adaptive_flushing_method), |
495 | @@ -425,7 +425,7 @@ |
496 | or freed in a file segment. */ |
497 | --- a/storage/innobase/include/buf0buf.h |
498 | +++ b/storage/innobase/include/buf0buf.h |
499 | -@@ -1575,6 +1575,15 @@ |
500 | +@@ -1595,6 +1595,15 @@ |
501 | #define BUF_POOL_ZIP_FOLD_BPAGE(b) BUF_POOL_ZIP_FOLD((buf_block_t*) (b)) |
502 | /* @} */ |
503 | |
504 | @@ -495,7 +495,7 @@ |
505 | /*-------------------------------------------*/ |
506 | |
507 | extern ulint srv_n_rows_inserted; |
508 | -@@ -714,6 +715,7 @@ |
509 | +@@ -717,6 +718,7 @@ |
510 | ulint innodb_data_writes; /*!< I/O write requests */ |
511 | ulint innodb_data_written; /*!< Data bytes written */ |
512 | ulint innodb_data_reads; /*!< I/O read requests */ |
513 | @@ -514,7 +514,7 @@ |
514 | /*-------------------------------------------*/ |
515 | UNIV_INTERN ulong srv_n_spin_wait_rounds = 30; |
516 | UNIV_INTERN ulong srv_n_free_tickets_to_enter = 500; |
517 | -@@ -2222,6 +2224,7 @@ |
518 | +@@ -2225,6 +2227,7 @@ |
519 | export_vars.innodb_data_reads = os_n_file_reads; |
520 | export_vars.innodb_data_writes = os_n_file_writes; |
521 | export_vars.innodb_data_written = srv_data_written; |
522 | |
523 | === modified file 'patches/innodb_expand_fast_index_creation.patch' |
524 | --- patches/innodb_expand_fast_index_creation.patch 2011-12-27 15:32:16 +0000 |
525 | +++ patches/innodb_expand_fast_index_creation.patch 2012-02-06 05:02:26 +0000 |
526 | @@ -884,7 +884,7 @@ |
527 | |
528 | --- a/sql/sql_lex.h |
529 | +++ b/sql/sql_lex.h |
530 | -@@ -1013,6 +1013,9 @@ |
531 | +@@ -1014,6 +1014,9 @@ |
532 | List<Alter_column> alter_list; |
533 | List<Key> key_list; |
534 | List<Create_field> create_list; |
535 | @@ -894,7 +894,7 @@ |
536 | uint flags; |
537 | enum enum_enable_or_disable keys_onoff; |
538 | enum tablespace_op_type tablespace_op; |
539 | -@@ -1024,6 +1027,8 @@ |
540 | +@@ -1025,6 +1028,8 @@ |
541 | |
542 | |
543 | Alter_info() : |
544 | @@ -903,7 +903,7 @@ |
545 | flags(0), |
546 | keys_onoff(LEAVE_AS_IS), |
547 | tablespace_op(NO_TABLESPACE_OP), |
548 | -@@ -1039,6 +1044,9 @@ |
549 | +@@ -1040,6 +1045,9 @@ |
550 | alter_list.empty(); |
551 | key_list.empty(); |
552 | create_list.empty(); |
553 | @@ -1322,7 +1322,7 @@ |
554 | |
555 | --- a/sql/sys_vars.cc |
556 | +++ b/sql/sys_vars.cc |
557 | -@@ -710,6 +710,14 @@ |
558 | +@@ -783,6 +783,14 @@ |
559 | ON_CHECK(event_scheduler_check), ON_UPDATE(event_scheduler_update)); |
560 | #endif |
561 | |
562 | @@ -1425,7 +1425,7 @@ |
563 | --expire-logs-days=# |
564 | If non-zero, binary logs will be purged after |
565 | expire_logs_days days; possible purges happen at startup |
566 | -@@ -777,6 +781,7 @@ |
567 | +@@ -781,6 +785,7 @@ |
568 | div-precision-increment 4 |
569 | engine-condition-pushdown TRUE |
570 | event-scheduler OFF |
571 | |
572 | === modified file 'patches/innodb_expand_import.patch' |
573 | --- patches/innodb_expand_import.patch 2011-12-27 15:32:16 +0000 |
574 | +++ patches/innodb_expand_import.patch 2012-02-06 05:02:26 +0000 |
575 | @@ -51,7 +51,7 @@ |
576 | #ifndef UNIV_HOTBACKUP |
577 | # include "buf0lru.h" |
578 | # include "ibuf0ibuf.h" |
579 | -@@ -3033,6 +3041,84 @@ |
580 | +@@ -3041,6 +3049,84 @@ |
581 | } |
582 | |
583 | /********************************************************************//** |
584 | @@ -136,7 +136,7 @@ |
585 | Tries to open a single-table tablespace and optionally checks the space id is |
586 | right in it. If does not succeed, prints an error message to the .err log. This |
587 | function is used to open a tablespace when we start up mysqld, and also in |
588 | -@@ -3055,8 +3141,11 @@ |
589 | +@@ -3063,8 +3149,11 @@ |
590 | accessing the first page of the file */ |
591 | ulint id, /*!< in: space id */ |
592 | ulint flags, /*!< in: tablespace flags */ |
593 | @@ -149,7 +149,7 @@ |
594 | { |
595 | os_file_t file; |
596 | char* filepath; |
597 | -@@ -3079,7 +3168,7 @@ |
598 | +@@ -3087,7 +3176,7 @@ |
599 | |
600 | file = os_file_create_simple_no_error_handling( |
601 | innodb_file_data_key, filepath, OS_FILE_OPEN, |
602 | @@ -158,7 +158,7 @@ |
603 | if (!success) { |
604 | /* The following call prints an error message */ |
605 | os_file_get_last_error(TRUE); |
606 | -@@ -3126,6 +3215,453 @@ |
607 | +@@ -3134,6 +3223,453 @@ |
608 | space_id = fsp_header_get_space_id(page); |
609 | space_flags = fsp_header_get_flags(page); |
610 | |
611 | @@ -612,7 +612,7 @@ |
612 | ut_free(buf2); |
613 | |
614 | if (UNIV_UNLIKELY(space_id != id |
615 | -@@ -3167,6 +3703,269 @@ |
616 | +@@ -3175,6 +3711,269 @@ |
617 | os_file_close(file); |
618 | mem_free(filepath); |
619 | |
620 | @@ -884,7 +884,7 @@ |
621 | #endif /* !UNIV_HOTBACKUP */ |
622 | --- a/storage/innobase/handler/ha_innodb.cc |
623 | +++ b/storage/innobase/handler/ha_innodb.cc |
624 | -@@ -7422,6 +7422,14 @@ |
625 | +@@ -7421,6 +7421,14 @@ |
626 | err = row_discard_tablespace_for_mysql(dict_table->name, trx); |
627 | } else { |
628 | err = row_import_tablespace_for_mysql(dict_table->name, trx); |
629 | @@ -899,9 +899,9 @@ |
630 | } |
631 | |
632 | err = convert_error_code_to_mysql(err, dict_table->flags, NULL); |
633 | -@@ -11781,6 +11789,11 @@ |
634 | - "Choose method of innodb_adaptive_flushing. (native, [estimate], keep_average)", |
635 | - NULL, innodb_adaptive_flushing_method_update, 1, &adaptive_flushing_method_typelib); |
636 | +@@ -11820,6 +11828,11 @@ |
637 | + NULL, NULL, 0, 0, 1, 0); |
638 | + #endif |
639 | |
640 | +static MYSQL_SYSVAR_ULONG(import_table_from_xtrabackup, srv_expand_import, |
641 | + PLUGIN_VAR_RQCMDARG, |
642 | @@ -911,7 +911,7 @@ |
643 | static MYSQL_SYSVAR_ULONG(dict_size_limit, srv_dict_size_limit, |
644 | PLUGIN_VAR_RQCMDARG, |
645 | "Limit the allocated memory for dictionary cache. (0: unlimited)", |
646 | -@@ -11855,6 +11868,7 @@ |
647 | +@@ -11894,6 +11907,7 @@ |
648 | MYSQL_SYSVAR(flush_neighbor_pages), |
649 | MYSQL_SYSVAR(read_ahead), |
650 | MYSQL_SYSVAR(adaptive_flushing_method), |
651 | @@ -1120,7 +1120,7 @@ |
652 | |
653 | /** When mysqld is run, the default directory "." is the mysqld datadir, |
654 | but in the MySQL Embedded Server Library and ibbackup it is not the default |
655 | -@@ -473,8 +474,11 @@ |
656 | +@@ -478,8 +479,11 @@ |
657 | accessing the first page of the file */ |
658 | ulint id, /*!< in: space id */ |
659 | ulint flags, /*!< in: tablespace flags */ |
660 | |
661 | === modified file 'patches/innodb_extend_slow.patch' |
662 | --- patches/innodb_extend_slow.patch 2011-12-27 15:32:16 +0000 |
663 | +++ patches/innodb_extend_slow.patch 2012-02-06 05:02:26 +0000 |
664 | @@ -48,7 +48,7 @@ |
665 | |
666 | /* |
667 | IMPLEMENTATION OF THE BUFFER POOL |
668 | -@@ -1869,8 +1903,16 @@ |
669 | +@@ -1871,8 +1905,16 @@ |
670 | mutex_t* block_mutex; |
671 | ibool must_read; |
672 | unsigned access_time; |
673 | @@ -65,7 +65,7 @@ |
674 | buf_pool->stat.n_page_gets++; |
675 | |
676 | for (;;) { |
677 | -@@ -1888,7 +1930,7 @@ |
678 | +@@ -1890,7 +1932,7 @@ |
679 | //buf_pool_mutex_exit(buf_pool); |
680 | rw_lock_s_unlock(&buf_pool->page_hash_latch); |
681 | |
682 | @@ -74,7 +74,7 @@ |
683 | |
684 | #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG |
685 | ut_a(++buf_dbg_counter % 37 || buf_validate()); |
686 | -@@ -1984,6 +2026,13 @@ |
687 | +@@ -1986,6 +2028,13 @@ |
688 | /* Let us wait until the read operation |
689 | completes */ |
690 | |
691 | @@ -88,7 +88,7 @@ |
692 | for (;;) { |
693 | enum buf_io_fix io_fix; |
694 | |
695 | -@@ -1998,6 +2047,12 @@ |
696 | +@@ -2000,6 +2049,12 @@ |
697 | break; |
698 | } |
699 | } |
700 | @@ -101,7 +101,7 @@ |
701 | } |
702 | |
703 | #ifdef UNIV_IBUF_COUNT_DEBUG |
704 | -@@ -2312,6 +2367,11 @@ |
705 | +@@ -2314,6 +2369,11 @@ |
706 | ibool must_read; |
707 | ulint retries = 0; |
708 | mutex_t* block_mutex = NULL; |
709 | @@ -113,7 +113,7 @@ |
710 | buf_pool_t* buf_pool = buf_pool_get(space, offset); |
711 | |
712 | ut_ad(mtr); |
713 | -@@ -2341,6 +2401,9 @@ |
714 | +@@ -2343,6 +2403,9 @@ |
715 | || ibuf_page_low(space, zip_size, offset, |
716 | FALSE, file, line, NULL)); |
717 | #endif |
718 | @@ -123,7 +123,7 @@ |
719 | buf_pool->stat.n_page_gets++; |
720 | fold = buf_page_address_fold(space, offset); |
721 | loop: |
722 | -@@ -2411,9 +2474,9 @@ |
723 | +@@ -2413,9 +2476,9 @@ |
724 | return(NULL); |
725 | } |
726 | |
727 | @@ -135,7 +135,7 @@ |
728 | |
729 | retries = 0; |
730 | } else if (retries < BUF_PAGE_READ_MAX_RETRIES) { |
731 | -@@ -2723,6 +2786,13 @@ |
732 | +@@ -2725,6 +2788,13 @@ |
733 | /* Let us wait until the read operation |
734 | completes */ |
735 | |
736 | @@ -149,7 +149,7 @@ |
737 | for (;;) { |
738 | enum buf_io_fix io_fix; |
739 | |
740 | -@@ -2737,6 +2807,12 @@ |
741 | +@@ -2739,6 +2809,12 @@ |
742 | break; |
743 | } |
744 | } |
745 | @@ -162,7 +162,7 @@ |
746 | } |
747 | |
748 | fix_type = MTR_MEMO_BUF_FIX; |
749 | -@@ -2763,13 +2839,17 @@ |
750 | +@@ -2765,13 +2841,17 @@ |
751 | read-ahead */ |
752 | |
753 | buf_read_ahead_linear(space, zip_size, offset, |
754 | @@ -181,7 +181,7 @@ |
755 | return(block); |
756 | } |
757 | |
758 | -@@ -2793,6 +2873,7 @@ |
759 | +@@ -2795,6 +2875,7 @@ |
760 | unsigned access_time; |
761 | ibool success; |
762 | ulint fix_type; |
763 | @@ -189,7 +189,7 @@ |
764 | |
765 | ut_ad(block); |
766 | ut_ad(mtr); |
767 | -@@ -2870,6 +2951,10 @@ |
768 | +@@ -2872,6 +2953,10 @@ |
769 | #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG |
770 | ut_a(block->page.file_page_was_freed == FALSE); |
771 | #endif |
772 | @@ -200,7 +200,7 @@ |
773 | if (UNIV_UNLIKELY(!access_time)) { |
774 | /* In the case of a first access, try to apply linear |
775 | read-ahead */ |
776 | -@@ -2877,7 +2962,7 @@ |
777 | +@@ -2879,7 +2964,7 @@ |
778 | buf_read_ahead_linear(buf_block_get_space(block), |
779 | buf_block_get_zip_size(block), |
780 | buf_block_get_page_no(block), |
781 | @@ -209,7 +209,7 @@ |
782 | } |
783 | |
784 | #ifdef UNIV_IBUF_COUNT_DEBUG |
785 | -@@ -2887,6 +2972,9 @@ |
786 | +@@ -2889,6 +2974,9 @@ |
787 | buf_pool = buf_pool_from_block(block); |
788 | buf_pool->stat.n_page_gets++; |
789 | |
790 | @@ -219,7 +219,7 @@ |
791 | return(TRUE); |
792 | } |
793 | |
794 | -@@ -2909,6 +2997,7 @@ |
795 | +@@ -2911,6 +2999,7 @@ |
796 | buf_pool_t* buf_pool; |
797 | ibool success; |
798 | ulint fix_type; |
799 | @@ -227,7 +227,7 @@ |
800 | |
801 | ut_ad(mtr); |
802 | ut_ad(mtr->state == MTR_ACTIVE); |
803 | -@@ -2995,6 +3084,11 @@ |
804 | +@@ -2997,6 +3086,11 @@ |
805 | #endif |
806 | buf_pool->stat.n_page_gets++; |
807 | |
808 | @@ -355,7 +355,7 @@ |
809 | |
810 | --- a/storage/innobase/fil/fil0fil.c |
811 | +++ b/storage/innobase/fil/fil0fil.c |
812 | -@@ -4757,7 +4757,7 @@ |
813 | +@@ -4765,7 +4765,7 @@ |
814 | node->name, node->handle, buf, |
815 | offset_low, offset_high, |
816 | page_size * n_pages, |
817 | @@ -364,7 +364,7 @@ |
818 | #endif |
819 | if (success) { |
820 | node->size += n_pages; |
821 | -@@ -5084,7 +5084,7 @@ |
822 | +@@ -5092,7 +5092,7 @@ |
823 | i/o on a tablespace which does not exist */ |
824 | UNIV_INTERN |
825 | ulint |
826 | @@ -373,7 +373,7 @@ |
827 | /*===*/ |
828 | ulint type, /*!< in: OS_FILE_READ or OS_FILE_WRITE, |
829 | ORed to OS_FILE_LOG, if a log i/o |
830 | -@@ -5109,8 +5109,9 @@ |
831 | +@@ -5117,8 +5117,9 @@ |
832 | void* buf, /*!< in/out: buffer where to store read data |
833 | or from where to write; in aio this must be |
834 | appropriately aligned */ |
835 | @@ -384,7 +384,7 @@ |
836 | { |
837 | ulint mode; |
838 | fil_space_t* space; |
839 | -@@ -5278,7 +5279,7 @@ |
840 | +@@ -5286,7 +5287,7 @@ |
841 | #else |
842 | /* Queue the aio request */ |
843 | ret = os_aio(type, mode | wake_later, node->name, node->handle, buf, |
844 | @@ -445,7 +445,7 @@ |
845 | /*********************************************************************//** |
846 | Note that a transaction has been registered with MySQL. |
847 | @return true if transaction is registered with MySQL 2PC coordinator */ |
848 | -@@ -9418,6 +9454,25 @@ |
849 | +@@ -9417,6 +9453,25 @@ |
850 | statement has ended */ |
851 | |
852 | if (trx->n_mysql_tables_in_use == 0) { |
853 | @@ -514,7 +514,7 @@ |
854 | order to contract the insert buffer tree. Technically, this function is like |
855 | --- a/storage/innobase/include/fil0fil.h |
856 | +++ b/storage/innobase/include/fil0fil.h |
857 | -@@ -615,9 +615,12 @@ |
858 | +@@ -620,9 +620,12 @@ |
859 | Reads or writes data. This operation is asynchronous (aio). |
860 | @return DB_SUCCESS, or DB_TABLESPACE_DELETED if we are trying to do |
861 | i/o on a tablespace which does not exist */ |
862 | @@ -528,7 +528,7 @@ |
863 | /*===*/ |
864 | ulint type, /*!< in: OS_FILE_READ or OS_FILE_WRITE, |
865 | ORed to OS_FILE_LOG, if a log i/o |
866 | -@@ -642,8 +645,9 @@ |
867 | +@@ -647,8 +650,9 @@ |
868 | void* buf, /*!< in/out: buffer where to store read data |
869 | or from where to write; in aio this must be |
870 | appropriately aligned */ |
871 | @@ -887,7 +887,7 @@ |
872 | /* The following counter is incremented whenever there is some user activity |
873 | in the server */ |
874 | UNIV_INTERN ulint srv_activity_count = 0; |
875 | -@@ -1234,6 +1237,10 @@ |
876 | +@@ -1237,6 +1240,10 @@ |
877 | ibool has_slept = FALSE; |
878 | srv_conc_slot_t* slot = NULL; |
879 | ulint i; |
880 | @@ -898,7 +898,7 @@ |
881 | |
882 | #ifdef UNIV_SYNC_DEBUG |
883 | ut_ad(!sync_thread_levels_nonempty_trx(trx->has_search_latch)); |
884 | -@@ -1314,6 +1321,7 @@ |
885 | +@@ -1317,6 +1324,7 @@ |
886 | switches. */ |
887 | if (SRV_THREAD_SLEEP_DELAY > 0) { |
888 | os_thread_sleep(SRV_THREAD_SLEEP_DELAY); |
889 | @@ -906,7 +906,7 @@ |
890 | } |
891 | |
892 | trx->op_info = ""; |
893 | -@@ -1373,6 +1381,14 @@ |
894 | +@@ -1376,6 +1384,14 @@ |
895 | #ifdef UNIV_SYNC_DEBUG |
896 | ut_ad(!sync_thread_levels_nonempty_trx(trx->has_search_latch)); |
897 | #endif /* UNIV_SYNC_DEBUG */ |
898 | @@ -921,7 +921,7 @@ |
899 | trx->op_info = "waiting in InnoDB queue"; |
900 | |
901 | thd_wait_begin(trx->mysql_thd, THD_WAIT_USER_LOCK); |
902 | -@@ -1381,6 +1397,12 @@ |
903 | +@@ -1384,6 +1400,12 @@ |
904 | |
905 | trx->op_info = ""; |
906 | |
907 | |
908 | === modified file 'patches/innodb_extra_rseg.patch' |
909 | --- patches/innodb_extra_rseg.patch 2011-12-27 15:32:16 +0000 |
910 | +++ patches/innodb_extra_rseg.patch 2012-02-06 05:02:26 +0000 |
911 | @@ -7,7 +7,7 @@ |
912 | # should be done or reviewed by the maintainer! |
913 | --- a/storage/innobase/handler/ha_innodb.cc |
914 | +++ b/storage/innobase/handler/ha_innodb.cc |
915 | -@@ -11664,6 +11664,7 @@ |
916 | +@@ -11706,6 +11706,7 @@ |
917 | NULL, /* reserved */ |
918 | 0, /* flags */ |
919 | }, |
920 | |
921 | === modified file 'patches/innodb_fake_changes.patch' |
922 | --- patches/innodb_fake_changes.patch 2011-12-27 15:32:16 +0000 |
923 | +++ patches/innodb_fake_changes.patch 2012-02-06 05:02:26 +0000 |
924 | @@ -214,7 +214,7 @@ |
925 | /* Transaction is deregistered only in a commit or a rollback. If |
926 | it is deregistered we know there cannot be resources to be freed |
927 | and we could return immediately. For the time being, we play safe |
928 | -@@ -7544,6 +7557,12 @@ |
929 | +@@ -7543,6 +7556,12 @@ |
930 | |
931 | trx = innobase_trx_allocate(thd); |
932 | |
933 | @@ -227,7 +227,7 @@ |
934 | /* Latch the InnoDB data dictionary exclusively so that no deadlocks |
935 | or lock waits can happen in it during a table create operation. |
936 | Drop table etc. do this latching in row0mysql.c. */ |
937 | -@@ -7764,6 +7783,10 @@ |
938 | +@@ -7763,6 +7782,10 @@ |
939 | DBUG_RETURN(HA_ERR_CRASHED); |
940 | } |
941 | |
942 | @@ -238,7 +238,7 @@ |
943 | /* Truncate the table in InnoDB */ |
944 | |
945 | error = row_truncate_table_for_mysql(prebuilt->table, prebuilt->trx); |
946 | -@@ -7820,6 +7843,12 @@ |
947 | +@@ -7819,6 +7842,12 @@ |
948 | |
949 | trx = innobase_trx_allocate(thd); |
950 | |
951 | @@ -251,7 +251,7 @@ |
952 | name_len = strlen(name); |
953 | |
954 | ut_a(name_len < 1000); |
955 | -@@ -7906,6 +7935,12 @@ |
956 | +@@ -7905,6 +7934,12 @@ |
957 | trx->mysql_thd = NULL; |
958 | #else |
959 | trx = innobase_trx_allocate(thd); |
960 | @@ -264,7 +264,7 @@ |
961 | #endif |
962 | row_drop_database_for_mysql(namebuf, trx); |
963 | my_free(namebuf); |
964 | -@@ -8011,6 +8046,11 @@ |
965 | +@@ -8010,6 +8045,11 @@ |
966 | trx_search_latch_release_if_reserved(parent_trx); |
967 | |
968 | trx = innobase_trx_allocate(thd); |
969 | @@ -276,7 +276,7 @@ |
970 | |
971 | error = innobase_rename_table(trx, from, to, TRUE); |
972 | |
973 | -@@ -10881,6 +10921,10 @@ |
974 | +@@ -10880,6 +10920,10 @@ |
975 | return(0); |
976 | } |
977 | |
978 | @@ -287,8 +287,8 @@ |
979 | thd_get_xid(thd, (MYSQL_XID*) &trx->xid); |
980 | |
981 | /* Release a possible FIFO ticket and search latch. Since we will |
982 | -@@ -12438,6 +12482,7 @@ |
983 | - MYSQL_SYSVAR(rollback_segments), |
984 | +@@ -12480,6 +12524,7 @@ |
985 | + #endif |
986 | MYSQL_SYSVAR(corrupt_table_action), |
987 | MYSQL_SYSVAR(lazy_drop_table), |
988 | + MYSQL_SYSVAR(fake_changes), |
989 | |
990 | === modified file 'patches/innodb_fast_checksum.patch' |
991 | --- patches/innodb_fast_checksum.patch 2011-12-27 15:32:16 +0000 |
992 | +++ patches/innodb_fast_checksum.patch 2012-02-06 05:02:26 +0000 |
993 | @@ -106,7 +106,7 @@ |
994 | /* We overwrite the first 4 bytes of the end lsn field to store |
995 | --- a/storage/innobase/fil/fil0fil.c |
996 | +++ b/storage/innobase/fil/fil0fil.c |
997 | -@@ -3095,13 +3095,24 @@ |
998 | +@@ -3103,13 +3103,24 @@ |
999 | return(TRUE); |
1000 | } |
1001 | |
1002 | @@ -132,7 +132,7 @@ |
1003 | return(FALSE); |
1004 | } |
1005 | |
1006 | -@@ -3117,7 +3128,9 @@ |
1007 | +@@ -3125,7 +3136,9 @@ |
1008 | if (!zip_size) { |
1009 | mach_write_to_4(page + FIL_PAGE_SPACE_OR_CHKSUM, |
1010 | srv_use_checksums |
1011 | @@ -161,7 +161,7 @@ |
1012 | |
1013 | srv_blocking_lru_restore = (ibool) innobase_blocking_lru_restore; |
1014 | |
1015 | -@@ -11542,6 +11544,15 @@ |
1016 | +@@ -11541,6 +11543,15 @@ |
1017 | "Disable with --skip-innodb-checksums.", |
1018 | NULL, NULL, TRUE); |
1019 | |
1020 | @@ -177,7 +177,7 @@ |
1021 | static MYSQL_SYSVAR_STR(data_home_dir, innobase_data_home_dir, |
1022 | PLUGIN_VAR_READONLY, |
1023 | "The common part for InnoDB table spaces.", |
1024 | -@@ -12073,6 +12084,7 @@ |
1025 | +@@ -12112,6 +12123,7 @@ |
1026 | MYSQL_SYSVAR(buffer_pool_size), |
1027 | MYSQL_SYSVAR(buffer_pool_instances), |
1028 | MYSQL_SYSVAR(checksums), |
1029 | |
1030 | === modified file 'patches/innodb_files_extend.patch' |
1031 | --- patches/innodb_files_extend.patch 2011-12-27 15:32:16 +0000 |
1032 | +++ patches/innodb_files_extend.patch 2012-02-06 05:02:26 +0000 |
1033 | @@ -16,7 +16,7 @@ |
1034 | fprintf(stderr, |
1035 | "InnoDB: Error: the size of single-table" |
1036 | " tablespace file %s\n" |
1037 | -@@ -4161,7 +4161,7 @@ |
1038 | +@@ -4169,7 +4169,7 @@ |
1039 | |
1040 | size = (((ib_int64_t)size_high) << 32) + (ib_int64_t)size_low; |
1041 | #ifndef UNIV_HOTBACKUP |
1042 | @@ -25,7 +25,7 @@ |
1043 | fprintf(stderr, |
1044 | "InnoDB: Error: the size of single-table tablespace" |
1045 | " file %s\n" |
1046 | -@@ -4181,7 +4181,7 @@ |
1047 | +@@ -4189,7 +4189,7 @@ |
1048 | /* Align the memory for file i/o if we might have O_DIRECT set */ |
1049 | page = ut_align(buf2, UNIV_PAGE_SIZE); |
1050 | |
1051 | @@ -34,7 +34,7 @@ |
1052 | success = os_file_read(file, page, 0, 0, UNIV_PAGE_SIZE); |
1053 | |
1054 | /* We have to read the tablespace id from the file */ |
1055 | -@@ -5159,9 +5159,9 @@ |
1056 | +@@ -5167,9 +5167,9 @@ |
1057 | ut_ad(ut_is_2pow(zip_size)); |
1058 | ut_ad(buf); |
1059 | ut_ad(len > 0); |
1060 | @@ -49,7 +49,7 @@ |
1061 | # ifndef UNIV_LOG_DEBUG |
1062 | --- a/storage/innobase/fsp/fsp0fsp.c |
1063 | +++ b/storage/innobase/fsp/fsp0fsp.c |
1064 | -@@ -656,16 +656,18 @@ |
1065 | +@@ -595,16 +595,18 @@ |
1066 | 0 for uncompressed pages */ |
1067 | ulint offset) /*!< in: page offset */ |
1068 | { |
1069 | @@ -78,7 +78,7 @@ |
1070 | ut_ad(ut_is_2pow(zip_size)); |
1071 | |
1072 | if (!zip_size) { |
1073 | -@@ -1464,12 +1466,12 @@ |
1074 | +@@ -1403,12 +1405,12 @@ |
1075 | mtr); |
1076 | xdes_init(descr, mtr); |
1077 | |
1078 | @@ -175,7 +175,7 @@ |
1079 | #ifndef MYSQL_SERVER |
1080 | innodb_overwrite_relay_log_info = FALSE; |
1081 | #endif |
1082 | -@@ -7290,9 +7352,9 @@ |
1083 | +@@ -7289,9 +7351,9 @@ |
1084 | | DICT_TF_COMPACT |
1085 | | DICT_TF_FORMAT_ZIP |
1086 | << DICT_TF_FORMAT_SHIFT; |
1087 | @@ -188,7 +188,7 @@ |
1088 | } |
1089 | } |
1090 | |
1091 | -@@ -11553,6 +11615,16 @@ |
1092 | +@@ -11552,6 +11614,16 @@ |
1093 | "#### Attention: The checksum is not compatible for normal or disabled version! ####", |
1094 | NULL, NULL, FALSE); |
1095 | |
1096 | @@ -205,7 +205,7 @@ |
1097 | static MYSQL_SYSVAR_STR(data_home_dir, innobase_data_home_dir, |
1098 | PLUGIN_VAR_READONLY, |
1099 | "The common part for InnoDB table spaces.", |
1100 | -@@ -12079,6 +12151,8 @@ |
1101 | +@@ -12118,6 +12190,8 @@ |
1102 | NULL, NULL, 0, &corrupt_table_action_typelib); |
1103 | |
1104 | static struct st_mysql_sys_var* innobase_system_variables[]= { |
1105 | @@ -216,7 +216,7 @@ |
1106 | MYSQL_SYSVAR(buffer_pool_size), |
1107 | --- a/storage/innobase/include/buf0buf.h |
1108 | +++ b/storage/innobase/include/buf0buf.h |
1109 | -@@ -1705,7 +1705,7 @@ |
1110 | +@@ -1725,7 +1725,7 @@ |
1111 | time_t last_printout_time; |
1112 | /*!< when buf_print_io was last time |
1113 | called */ |
1114 | @@ -225,7 +225,7 @@ |
1115 | /*!< Statistics of buddy system, |
1116 | indexed by block size */ |
1117 | buf_pool_stat_t stat; /*!< current statistics */ |
1118 | -@@ -1803,7 +1803,7 @@ |
1119 | +@@ -1823,7 +1823,7 @@ |
1120 | UT_LIST_BASE_NODE_T(buf_page_t) zip_clean; |
1121 | /*!< unmodified compressed pages */ |
1122 | #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ |
1123 | @@ -234,7 +234,7 @@ |
1124 | /*!< buddy free lists */ |
1125 | |
1126 | buf_page_t watch[BUF_POOL_WATCH_SIZE]; |
1127 | -@@ -1811,9 +1811,9 @@ |
1128 | +@@ -1831,9 +1831,9 @@ |
1129 | pool watches. Protected by |
1130 | buf_pool->mutex. */ |
1131 | |
1132 | @@ -249,7 +249,7 @@ |
1133 | #endif |
1134 | --- a/storage/innobase/include/buf0types.h |
1135 | +++ b/storage/innobase/include/buf0types.h |
1136 | -@@ -67,12 +67,13 @@ |
1137 | +@@ -70,12 +70,13 @@ |
1138 | #define BUF_BUDDY_LOW (1 << BUF_BUDDY_LOW_SHIFT) |
1139 | |
1140 | #define BUF_BUDDY_SIZES (UNIV_PAGE_SIZE_SHIFT - BUF_BUDDY_LOW_SHIFT) |
1141 | @@ -412,7 +412,7 @@ |
1142 | dest_offset = nth_file * group->file_size; |
1143 | |
1144 | #ifdef UNIV_DEBUG |
1145 | -@@ -1794,9 +1799,7 @@ |
1146 | +@@ -1797,9 +1802,7 @@ |
1147 | ulint i; |
1148 | |
1149 | ut_ad(mutex_own(&(log_sys->mutex))); |
1150 | @@ -423,7 +423,7 @@ |
1151 | |
1152 | buf = group->checkpoint_buf; |
1153 | |
1154 | -@@ -1810,6 +1813,7 @@ |
1155 | +@@ -1813,6 +1816,7 @@ |
1156 | mach_write_to_4(buf + LOG_CHECKPOINT_LOG_BUF_SIZE, log_sys->buf_size); |
1157 | |
1158 | #ifdef UNIV_LOG_ARCHIVE |
1159 | @@ -431,7 +431,7 @@ |
1160 | if (log_sys->archiving_state == LOG_ARCH_OFF) { |
1161 | archived_lsn = IB_ULONGLONG_MAX; |
1162 | } else { |
1163 | -@@ -1823,7 +1827,9 @@ |
1164 | +@@ -1826,7 +1830,9 @@ |
1165 | |
1166 | mach_write_to_8(buf + LOG_CHECKPOINT_ARCHIVED_LSN, archived_lsn); |
1167 | #else /* UNIV_LOG_ARCHIVE */ |
1168 | @@ -538,7 +538,7 @@ |
1169 | readahead request. */ |
1170 | --- a/storage/innobase/srv/srv0start.c |
1171 | +++ b/storage/innobase/srv/srv0start.c |
1172 | -@@ -1562,11 +1562,13 @@ |
1173 | +@@ -1582,11 +1582,13 @@ |
1174 | } |
1175 | #endif /* UNIV_LOG_ARCHIVE */ |
1176 | |
1177 | @@ -554,7 +554,7 @@ |
1178 | |
1179 | return(DB_ERROR); |
1180 | } |
1181 | -@@ -1575,7 +1577,7 @@ |
1182 | +@@ -1595,7 +1597,7 @@ |
1183 | |
1184 | for (i = 0; i < srv_n_data_files; i++) { |
1185 | #ifndef __WIN__ |
1186 | |
1187 | === modified file 'patches/innodb_fix_misc.patch' |
1188 | --- patches/innodb_fix_misc.patch 2011-12-27 15:32:16 +0000 |
1189 | +++ patches/innodb_fix_misc.patch 2012-02-06 05:02:26 +0000 |
1190 | @@ -12,7 +12,7 @@ |
1191 | # should be done or reviewed by the maintainer! |
1192 | --- a/storage/innobase/buf/buf0buf.c |
1193 | +++ b/storage/innobase/buf/buf0buf.c |
1194 | -@@ -1979,6 +1979,27 @@ |
1195 | +@@ -1981,6 +1981,27 @@ |
1196 | #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ |
1197 | } |
1198 | |
1199 | @@ -40,7 +40,7 @@ |
1200 | if (UNIV_UNLIKELY(!bpage->zip.data)) { |
1201 | /* There is no compressed page. */ |
1202 | err_exit: |
1203 | -@@ -2487,6 +2508,27 @@ |
1204 | +@@ -2489,6 +2510,27 @@ |
1205 | block = (buf_block_t*) buf_page_hash_get_low( |
1206 | buf_pool, space, offset, fold); |
1207 | if (block) { |
1208 | @@ -68,7 +68,7 @@ |
1209 | block_mutex = buf_page_get_mutex_enter((buf_page_t*)block); |
1210 | ut_a(block_mutex); |
1211 | } |
1212 | -@@ -3409,11 +3451,28 @@ |
1213 | +@@ -3411,11 +3453,28 @@ |
1214 | |
1215 | fold = buf_page_address_fold(space, offset); |
1216 | |
1217 | @@ -97,7 +97,7 @@ |
1218 | if (watch_page && !buf_pool_watch_is_sentinel(buf_pool, watch_page)) { |
1219 | /* The page is already in the buffer pool. */ |
1220 | watch_page = NULL; |
1221 | -@@ -3544,6 +3603,7 @@ |
1222 | +@@ -3546,6 +3605,7 @@ |
1223 | bpage->state = BUF_BLOCK_ZIP_PAGE; |
1224 | bpage->space = space; |
1225 | bpage->offset = offset; |
1226 | @@ -105,7 +105,7 @@ |
1227 | |
1228 | #ifdef UNIV_DEBUG |
1229 | bpage->in_page_hash = FALSE; |
1230 | -@@ -3628,6 +3688,7 @@ |
1231 | +@@ -3630,6 +3690,7 @@ |
1232 | |
1233 | fold = buf_page_address_fold(space, offset); |
1234 | |
1235 | @@ -113,7 +113,7 @@ |
1236 | //buf_pool_mutex_enter(buf_pool); |
1237 | mutex_enter(&buf_pool->LRU_list_mutex); |
1238 | rw_lock_x_lock(&buf_pool->page_hash_latch); |
1239 | -@@ -3635,6 +3696,21 @@ |
1240 | +@@ -3637,6 +3698,21 @@ |
1241 | block = (buf_block_t*) buf_page_hash_get_low( |
1242 | buf_pool, space, offset, fold); |
1243 | |
1244 | @@ -135,7 +135,7 @@ |
1245 | if (block |
1246 | && buf_page_in_file(&block->page) |
1247 | && !buf_pool_watch_is_sentinel(buf_pool, &block->page)) { |
1248 | -@@ -3988,8 +4064,11 @@ |
1249 | +@@ -3990,8 +4066,11 @@ |
1250 | } |
1251 | |
1252 | if (io_type == BUF_IO_WRITE |
1253 | @@ -176,7 +176,7 @@ |
1254 | return(TRUE); |
1255 | --- a/storage/innobase/buf/buf0lru.c |
1256 | +++ b/storage/innobase/buf/buf0lru.c |
1257 | -@@ -529,6 +529,62 @@ |
1258 | +@@ -545,6 +545,62 @@ |
1259 | } |
1260 | } |
1261 | |
1262 | @@ -239,7 +239,7 @@ |
1263 | #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG |
1264 | /********************************************************************//** |
1265 | Insert a compressed block into buf_pool->zip_clean in the LRU order. */ |
1266 | -@@ -1483,6 +1539,10 @@ |
1267 | +@@ -1499,6 +1555,10 @@ |
1268 | return(FALSE); |
1269 | } |
1270 | |
1271 | @@ -296,7 +296,7 @@ |
1272 | |
1273 | fil_system->spaces = hash_create(hash_size); |
1274 | fil_system->name_hash = hash_create(hash_size); |
1275 | -@@ -2344,7 +2347,11 @@ |
1276 | +@@ -2352,7 +2355,11 @@ |
1277 | completely and permanently. The flag is_being_deleted also prevents |
1278 | fil_flush() from being applied to this tablespace. */ |
1279 | |
1280 | @@ -308,7 +308,7 @@ |
1281 | #endif |
1282 | /* printf("Deleting tablespace %s id %lu\n", space->name, id); */ |
1283 | |
1284 | -@@ -4731,6 +4738,10 @@ |
1285 | +@@ -4739,6 +4746,10 @@ |
1286 | ulint page_size; |
1287 | ibool success = TRUE; |
1288 | |
1289 | @@ -319,7 +319,7 @@ |
1290 | fil_mutex_enter_and_prepare_for_io(space_id); |
1291 | |
1292 | space = fil_space_get_by_id(space_id); |
1293 | -@@ -4742,6 +4753,7 @@ |
1294 | +@@ -4750,6 +4761,7 @@ |
1295 | *actual_size = space->size; |
1296 | |
1297 | mutex_exit(&fil_system->mutex); |
1298 | @@ -327,7 +327,7 @@ |
1299 | |
1300 | return(TRUE); |
1301 | } |
1302 | -@@ -4774,6 +4786,8 @@ |
1303 | +@@ -4782,6 +4794,8 @@ |
1304 | offset_low = ((start_page_no - file_start_page_no) |
1305 | % (4096 * ((1024 * 1024) / page_size))) |
1306 | * page_size; |
1307 | @@ -336,7 +336,7 @@ |
1308 | #ifdef UNIV_HOTBACKUP |
1309 | success = os_file_write(node->name, node->handle, buf, |
1310 | offset_low, offset_high, |
1311 | -@@ -4783,8 +4797,10 @@ |
1312 | +@@ -4791,8 +4805,10 @@ |
1313 | node->name, node->handle, buf, |
1314 | offset_low, offset_high, |
1315 | page_size * n_pages, |
1316 | @@ -348,7 +348,7 @@ |
1317 | if (success) { |
1318 | node->size += n_pages; |
1319 | space->size += n_pages; |
1320 | -@@ -4830,6 +4846,7 @@ |
1321 | +@@ -4838,6 +4854,7 @@ |
1322 | printf("Extended %s to %lu, actual size %lu pages\n", space->name, |
1323 | size_after_extend, *actual_size); */ |
1324 | mutex_exit(&fil_system->mutex); |
1325 | @@ -356,7 +356,7 @@ |
1326 | |
1327 | fil_flush(space_id, TRUE); |
1328 | |
1329 | -@@ -5192,6 +5209,22 @@ |
1330 | +@@ -5200,6 +5217,22 @@ |
1331 | srv_data_written+= len; |
1332 | } |
1333 | |
1334 | @@ -379,7 +379,7 @@ |
1335 | /* Reserve the fil_system mutex and make sure that we can open at |
1336 | least one file while holding it, if the file is not already open */ |
1337 | |
1338 | -@@ -5333,10 +5366,24 @@ |
1339 | +@@ -5341,10 +5374,24 @@ |
1340 | #else |
1341 | /* Queue the aio request */ |
1342 | ret = os_aio(type, mode | wake_later, node->name, node->handle, buf, |
1343 | @@ -405,7 +405,7 @@ |
1344 | ut_a(ret); |
1345 | |
1346 | if (mode == OS_AIO_SYNC) { |
1347 | -@@ -5436,6 +5483,7 @@ |
1348 | +@@ -5444,6 +5491,7 @@ |
1349 | fil_node_t* fil_node; |
1350 | void* message; |
1351 | ulint type; |
1352 | @@ -413,7 +413,7 @@ |
1353 | |
1354 | ut_ad(fil_validate_skip()); |
1355 | |
1356 | -@@ -5443,10 +5491,10 @@ |
1357 | +@@ -5451,10 +5499,10 @@ |
1358 | srv_set_io_thread_op_info(segment, "native aio handle"); |
1359 | #ifdef WIN_ASYNC_IO |
1360 | ret = os_aio_windows_handle(segment, 0, &fil_node, |
1361 | @@ -426,7 +426,7 @@ |
1362 | #else |
1363 | ut_error; |
1364 | ret = 0; /* Eliminate compiler warning */ |
1365 | -@@ -5455,7 +5503,22 @@ |
1366 | +@@ -5463,7 +5511,22 @@ |
1367 | srv_set_io_thread_op_info(segment, "simulated aio handle"); |
1368 | |
1369 | ret = os_aio_simulated_handle(segment, &fil_node, |
1370 | @@ -452,7 +452,7 @@ |
1371 | ut_a(ret); |
1372 | --- a/storage/innobase/handler/ha_innodb.cc |
1373 | +++ b/storage/innobase/handler/ha_innodb.cc |
1374 | -@@ -12150,6 +12150,12 @@ |
1375 | +@@ -12189,6 +12189,12 @@ |
1376 | "except for the deletion.", |
1377 | NULL, NULL, 0, &corrupt_table_action_typelib); |
1378 | |
1379 | @@ -465,15 +465,15 @@ |
1380 | static struct st_mysql_sys_var* innobase_system_variables[]= { |
1381 | MYSQL_SYSVAR(page_size), |
1382 | MYSQL_SYSVAR(log_block_size), |
1383 | -@@ -12244,6 +12250,7 @@ |
1384 | - MYSQL_SYSVAR(purge_batch_size), |
1385 | - MYSQL_SYSVAR(rollback_segments), |
1386 | +@@ -12286,6 +12292,7 @@ |
1387 | + MYSQL_SYSVAR(flush_checkpoint_debug), |
1388 | + #endif |
1389 | MYSQL_SYSVAR(corrupt_table_action), |
1390 | + MYSQL_SYSVAR(lazy_drop_table), |
1391 | NULL |
1392 | }; |
1393 | |
1394 | -@@ -12253,7 +12260,7 @@ |
1395 | +@@ -12295,7 +12302,7 @@ |
1396 | &innobase_storage_engine, |
1397 | innobase_hton_name, |
1398 | plugin_author, |
1399 | @@ -484,7 +484,7 @@ |
1400 | NULL, /* Plugin Deinit */ |
1401 | --- a/storage/innobase/include/buf0buf.h |
1402 | +++ b/storage/innobase/include/buf0buf.h |
1403 | -@@ -1455,6 +1455,7 @@ |
1404 | +@@ -1475,6 +1475,7 @@ |
1405 | 0 if the block was never accessed |
1406 | in the buffer pool */ |
1407 | /* @} */ |
1408 | @@ -888,7 +888,7 @@ |
1409 | UNIV_INTERN ulong srv_n_free_tickets_to_enter = 500; |
1410 | --- a/storage/innobase/srv/srv0start.c |
1411 | +++ b/storage/innobase/srv/srv0start.c |
1412 | -@@ -2167,7 +2167,7 @@ |
1413 | +@@ -2187,7 +2187,7 @@ |
1414 | if (srv_print_verbose_log) { |
1415 | ut_print_timestamp(stderr); |
1416 | fprintf(stderr, |
1417 | |
1418 | === modified file 'patches/innodb_io_patches.patch' |
1419 | --- patches/innodb_io_patches.patch 2012-01-10 11:30:16 +0000 |
1420 | +++ patches/innodb_io_patches.patch 2012-02-06 05:02:26 +0000 |
1421 | @@ -155,7 +155,7 @@ |
1422 | return(0); |
1423 | --- a/storage/innobase/fil/fil0fil.c |
1424 | +++ b/storage/innobase/fil/fil0fil.c |
1425 | -@@ -2601,7 +2601,7 @@ |
1426 | +@@ -2609,7 +2609,7 @@ |
1427 | |
1428 | os_thread_sleep(20000); |
1429 | |
1430 | @@ -164,7 +164,7 @@ |
1431 | |
1432 | goto retry; |
1433 | |
1434 | -@@ -2815,7 +2815,7 @@ |
1435 | +@@ -2823,7 +2823,7 @@ |
1436 | goto error_exit; |
1437 | } |
1438 | |
1439 | @@ -173,7 +173,7 @@ |
1440 | |
1441 | if (!ret) { |
1442 | fputs("InnoDB: Error: file flush of tablespace ", stderr); |
1443 | -@@ -3001,7 +3001,7 @@ |
1444 | +@@ -3009,7 +3009,7 @@ |
1445 | } |
1446 | } |
1447 | |
1448 | @@ -182,7 +182,7 @@ |
1449 | if (!success) { |
1450 | |
1451 | goto func_exit; |
1452 | -@@ -3023,7 +3023,7 @@ |
1453 | +@@ -3031,7 +3031,7 @@ |
1454 | |
1455 | goto func_exit; |
1456 | } |
1457 | @@ -191,7 +191,7 @@ |
1458 | func_exit: |
1459 | os_file_close(file); |
1460 | ut_free(buf2); |
1461 | -@@ -4006,7 +4006,7 @@ |
1462 | +@@ -4014,7 +4014,7 @@ |
1463 | size_after_extend, *actual_size); */ |
1464 | mutex_exit(&fil_system->mutex); |
1465 | |
1466 | @@ -200,7 +200,7 @@ |
1467 | |
1468 | return(success); |
1469 | } |
1470 | -@@ -4577,8 +4577,9 @@ |
1471 | +@@ -4585,8 +4585,9 @@ |
1472 | void |
1473 | fil_flush( |
1474 | /*======*/ |
1475 | @@ -211,7 +211,7 @@ |
1476 | { |
1477 | fil_space_t* space; |
1478 | fil_node_t* node; |
1479 | -@@ -4649,7 +4650,7 @@ |
1480 | +@@ -4657,7 +4658,7 @@ |
1481 | /* fprintf(stderr, "Flushing to file %s\n", |
1482 | node->name); */ |
1483 | |
1484 | @@ -220,7 +220,7 @@ |
1485 | |
1486 | mutex_enter(&fil_system->mutex); |
1487 | |
1488 | -@@ -4732,7 +4733,7 @@ |
1489 | +@@ -4740,7 +4741,7 @@ |
1490 | a non-existing space id. */ |
1491 | for (i = 0; i < n_space_ids; i++) { |
1492 | |
1493 | @@ -272,7 +272,7 @@ |
1494 | srv_force_recovery = (ulint) innobase_force_recovery; |
1495 | |
1496 | srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite; |
1497 | -@@ -11142,7 +11162,7 @@ |
1498 | +@@ -11141,7 +11161,7 @@ |
1499 | PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_READONLY, |
1500 | "Purge threads can be either 0 or 1.", |
1501 | NULL, NULL, |
1502 | @@ -281,7 +281,7 @@ |
1503 | 0, /* Minimum value */ |
1504 | 1, 0); /* Maximum value */ |
1505 | |
1506 | -@@ -11184,12 +11204,18 @@ |
1507 | +@@ -11183,12 +11203,18 @@ |
1508 | innodb_file_format_max_validate, |
1509 | innodb_file_format_max_update, "Antelope"); |
1510 | |
1511 | @@ -306,7 +306,7 @@ |
1512 | |
1513 | static MYSQL_SYSVAR_STR(flush_method, innobase_file_flush_method, |
1514 | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, |
1515 | -@@ -11294,7 +11320,7 @@ |
1516 | +@@ -11293,7 +11319,7 @@ |
1517 | static MYSQL_SYSVAR_LONGLONG(buffer_pool_size, innobase_buffer_pool_size, |
1518 | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, |
1519 | "The size of the memory buffer InnoDB uses to cache data and indexes of its tables.", |
1520 | @@ -315,7 +315,7 @@ |
1521 | |
1522 | static MYSQL_SYSVAR_LONG(buffer_pool_instances, innobase_buffer_pool_instances, |
1523 | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, |
1524 | -@@ -11451,6 +11477,135 @@ |
1525 | +@@ -11450,6 +11476,135 @@ |
1526 | "trigger a readahead.", |
1527 | NULL, NULL, 56, 0, 64, 0); |
1528 | |
1529 | @@ -451,7 +451,7 @@ |
1530 | static struct st_mysql_sys_var* innobase_system_variables[]= { |
1531 | MYSQL_SYSVAR(additional_mem_pool_size), |
1532 | MYSQL_SYSVAR(autoextend_increment), |
1533 | -@@ -11471,6 +11626,7 @@ |
1534 | +@@ -11470,6 +11625,7 @@ |
1535 | MYSQL_SYSVAR(file_format_check), |
1536 | MYSQL_SYSVAR(file_format_max), |
1537 | MYSQL_SYSVAR(flush_log_at_trx_commit), |
1538 | @@ -459,7 +459,7 @@ |
1539 | MYSQL_SYSVAR(flush_method), |
1540 | MYSQL_SYSVAR(force_recovery), |
1541 | MYSQL_SYSVAR(large_prefix), |
1542 | -@@ -11510,6 +11666,13 @@ |
1543 | +@@ -11509,6 +11665,13 @@ |
1544 | MYSQL_SYSVAR(show_verbose_locks), |
1545 | MYSQL_SYSVAR(show_locks_held), |
1546 | MYSQL_SYSVAR(version), |
1547 | @@ -473,7 +473,7 @@ |
1548 | MYSQL_SYSVAR(use_sys_malloc), |
1549 | MYSQL_SYSVAR(use_native_aio), |
1550 | MYSQL_SYSVAR(change_buffering), |
1551 | -@@ -11522,6 +11685,9 @@ |
1552 | +@@ -11521,6 +11684,9 @@ |
1553 | MYSQL_SYSVAR(purge_threads), |
1554 | MYSQL_SYSVAR(purge_batch_size), |
1555 | MYSQL_SYSVAR(rollback_segments), |
1556 | @@ -524,7 +524,7 @@ |
1557 | /** read only pages belonging to the insert buffer tree */ |
1558 | --- a/storage/innobase/include/fil0fil.h |
1559 | +++ b/storage/innobase/include/fil0fil.h |
1560 | -@@ -658,8 +658,9 @@ |
1561 | +@@ -663,8 +663,9 @@ |
1562 | void |
1563 | fil_flush( |
1564 | /*======*/ |
1565 | @@ -1600,7 +1600,7 @@ |
1566 | mutex_enter(&kernel_mutex); |
1567 | --- a/storage/innobase/srv/srv0start.c |
1568 | +++ b/storage/innobase/srv/srv0start.c |
1569 | -@@ -1217,6 +1217,9 @@ |
1570 | +@@ -1237,6 +1237,9 @@ |
1571 | } else if (0 == ut_strcmp(srv_file_flush_method_str, "O_DIRECT")) { |
1572 | srv_unix_file_flush_method = SRV_UNIX_O_DIRECT; |
1573 | |
1574 | @@ -1926,3 +1926,27 @@ |
1575 | |
1576 | # Performance schema variables are too long for files named |
1577 | # 'mysql-test/suite/sys_vars/t/' ... |
1578 | +--- a/mysql-test/suite/innodb/t/innodb_cmp_drop_table-master.opt |
1579 | ++++ b/mysql-test/suite/innodb/t/innodb_cmp_drop_table-master.opt |
1580 | +@@ -1 +1 @@ |
1581 | +---innodb-buffer-pool-size=8M |
1582 | ++--innodb-buffer-pool-size=32M |
1583 | +--- a/mysql-test/suite/innodb/t/innodb_cmp_drop_table.test |
1584 | ++++ b/mysql-test/suite/innodb/t/innodb_cmp_drop_table.test |
1585 | +@@ -36,13 +36,14 @@ |
1586 | + |
1587 | + -- disable_query_log |
1588 | + |
1589 | +--- let $i = 400 |
1590 | ++-- let $i = 4000 |
1591 | ++begin; |
1592 | + while ($i) |
1593 | + { |
1594 | + insert into t2 values(repeat('abcdefghijklmnopqrstuvwxyz',1000)); |
1595 | + dec $i; |
1596 | + } |
1597 | +- |
1598 | ++commit; |
1599 | + -- enable_query_log |
1600 | + |
1601 | + # now there should be no 8K pages in the buffer pool |
1602 | |
1603 | === modified file 'patches/innodb_kill_idle_transaction.patch' |
1604 | --- patches/innodb_kill_idle_transaction.patch 2011-12-27 15:32:16 +0000 |
1605 | +++ patches/innodb_kill_idle_transaction.patch 2012-02-06 05:02:26 +0000 |
1606 | @@ -114,7 +114,7 @@ |
1607 | #ifdef HAVE_PSI_INTERFACE |
1608 | /* Register keys with MySQL performance schema */ |
1609 | if (PSI_server) { |
1610 | -@@ -11695,6 +11699,57 @@ |
1611 | +@@ -11694,6 +11698,57 @@ |
1612 | return(false); |
1613 | } |
1614 | |
1615 | @@ -172,7 +172,7 @@ |
1616 | static SHOW_VAR innodb_status_variables_export[]= { |
1617 | {"Innodb", (char*) &show_innodb_vars, SHOW_FUNC}, |
1618 | {NullS, NullS, SHOW_LONG} |
1619 | -@@ -11986,6 +12041,15 @@ |
1620 | +@@ -11985,6 +12040,15 @@ |
1621 | "Number of times a thread is allowed to enter InnoDB within the same SQL query after it has once got the ticket", |
1622 | NULL, NULL, 500L, 1L, ~0L, 0); |
1623 | |
1624 | @@ -188,7 +188,7 @@ |
1625 | static MYSQL_SYSVAR_LONG(file_io_threads, innobase_file_io_threads, |
1626 | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY | PLUGIN_VAR_NOSYSVAR, |
1627 | "Number of file I/O threads in InnoDB.", |
1628 | -@@ -12288,6 +12352,7 @@ |
1629 | +@@ -12327,6 +12391,7 @@ |
1630 | MYSQL_SYSVAR(fast_checksum), |
1631 | MYSQL_SYSVAR(commit_concurrency), |
1632 | MYSQL_SYSVAR(concurrency_tickets), |
1633 | @@ -198,7 +198,7 @@ |
1634 | MYSQL_SYSVAR(data_home_dir), |
1635 | --- a/storage/innobase/include/srv0srv.h |
1636 | +++ b/storage/innobase/include/srv0srv.h |
1637 | -@@ -296,6 +296,7 @@ |
1638 | +@@ -299,6 +299,7 @@ |
1639 | extern ulint srv_activity_count; |
1640 | extern ulint srv_fatal_semaphore_wait_threshold; |
1641 | extern ulint srv_dml_needed_delay; |
1642 | @@ -242,7 +242,7 @@ |
1643 | /* How much data manipulation language (DML) statements need to be delayed, |
1644 | in microseconds, in order to reduce the lagging of the purge thread. */ |
1645 | UNIV_INTERN ulint srv_dml_needed_delay = 0; |
1646 | -@@ -2834,6 +2843,36 @@ |
1647 | +@@ -2837,6 +2846,36 @@ |
1648 | old_sema = sema; |
1649 | } |
1650 | |
1651 | |
1652 | === modified file 'patches/innodb_lru_dump_restore.patch' |
1653 | --- patches/innodb_lru_dump_restore.patch 2011-12-27 15:32:16 +0000 |
1654 | +++ patches/innodb_lru_dump_restore.patch 2012-02-06 05:02:26 +0000 |
1655 | @@ -7,7 +7,7 @@ |
1656 | # should be done or reviewed by the maintainer! |
1657 | --- a/storage/innobase/buf/buf0lru.c |
1658 | +++ b/storage/innobase/buf/buf0lru.c |
1659 | -@@ -2183,6 +2183,289 @@ |
1660 | +@@ -2197,6 +2197,289 @@ |
1661 | memset(&buf_LRU_stat_cur, 0, sizeof buf_LRU_stat_cur); |
1662 | } |
1663 | |
1664 | @@ -310,7 +310,7 @@ |
1665 | /*==============*/ |
1666 | --- a/storage/innobase/fil/fil0fil.c |
1667 | +++ b/storage/innobase/fil/fil0fil.c |
1668 | -@@ -5299,6 +5299,70 @@ |
1669 | +@@ -5307,6 +5307,70 @@ |
1670 | return(DB_SUCCESS); |
1671 | } |
1672 | |
1673 | @@ -401,7 +401,7 @@ |
1674 | #ifdef HAVE_LARGE_PAGES |
1675 | if ((os_use_large_pages = (ibool) my_use_large_pages)) |
1676 | os_large_page_size = (ulint) opt_large_page_size; |
1677 | -@@ -11925,6 +11929,19 @@ |
1678 | +@@ -11964,6 +11968,19 @@ |
1679 | "Limit the allocated memory for dictionary cache. (0: unlimited)", |
1680 | NULL, NULL, 0, 0, LONG_MAX, 0); |
1681 | |
1682 | @@ -421,7 +421,7 @@ |
1683 | static struct st_mysql_sys_var* innobase_system_variables[]= { |
1684 | MYSQL_SYSVAR(additional_mem_pool_size), |
1685 | MYSQL_SYSVAR(autoextend_increment), |
1686 | -@@ -12009,6 +12026,8 @@ |
1687 | +@@ -12048,6 +12065,8 @@ |
1688 | MYSQL_SYSVAR(random_read_ahead), |
1689 | MYSQL_SYSVAR(read_ahead_threshold), |
1690 | MYSQL_SYSVAR(io_capacity), |
1691 | @@ -540,7 +540,7 @@ |
1692 | an exclusive lock on the buffer frame. The flag is cleared and the x-lock |
1693 | --- a/storage/innobase/include/fil0fil.h |
1694 | +++ b/storage/innobase/include/fil0fil.h |
1695 | -@@ -648,6 +648,14 @@ |
1696 | +@@ -653,6 +653,14 @@ |
1697 | void* message, /*!< in: message for aio handler if non-sync |
1698 | aio used, else ignored */ |
1699 | trx_t* trx); |
1700 | @@ -557,7 +557,7 @@ |
1701 | handler for completed requests. The aio array of pending requests is divided |
1702 | --- a/storage/innobase/include/srv0srv.h |
1703 | +++ b/storage/innobase/include/srv0srv.h |
1704 | -@@ -361,6 +361,12 @@ |
1705 | +@@ -364,6 +364,12 @@ |
1706 | reading of a disk page */ |
1707 | extern ulint srv_buf_pool_reads; |
1708 | |
1709 | @@ -570,7 +570,7 @@ |
1710 | /** Status variables to be passed to MySQL */ |
1711 | typedef struct export_var_struct export_struc; |
1712 | |
1713 | -@@ -666,6 +672,16 @@ |
1714 | +@@ -669,6 +675,16 @@ |
1715 | /*=====================*/ |
1716 | void* arg); /*!< in: a dummy parameter required by |
1717 | os_thread_create */ |
1718 | @@ -602,10 +602,15 @@ |
1719 | /* structure to pass status variables to MySQL */ |
1720 | UNIV_INTERN export_struc export_vars; |
1721 | |
1722 | -@@ -2710,6 +2716,58 @@ |
1723 | - OS_THREAD_DUMMY_RETURN; |
1724 | - } |
1725 | +@@ -2708,6 +2714,58 @@ |
1726 | + /* We count the number of threads in os_thread_exit(). A created |
1727 | + thread should always use that to exit and not use return() to exit. */ |
1728 | |
1729 | ++ os_thread_exit(NULL); |
1730 | ++ |
1731 | ++ OS_THREAD_DUMMY_RETURN; |
1732 | ++} |
1733 | ++ |
1734 | +/*********************************************************************//** |
1735 | +A thread which restores the buffer pool from a dump file on startup and does |
1736 | +periodic buffer pool dumps. |
1737 | @@ -653,14 +658,9 @@ |
1738 | + /* We count the number of threads in os_thread_exit(). A created |
1739 | + thread should always use that to exit and not use return() to exit. */ |
1740 | + |
1741 | -+ os_thread_exit(NULL); |
1742 | -+ |
1743 | -+ OS_THREAD_DUMMY_RETURN; |
1744 | -+} |
1745 | -+ |
1746 | - /**********************************************************************//** |
1747 | - Check whether any background thread is active. |
1748 | - @return FALSE if all are are suspended or have exited. */ |
1749 | + os_thread_exit(NULL); |
1750 | + |
1751 | + OS_THREAD_DUMMY_RETURN; |
1752 | --- a/storage/innobase/srv/srv0start.c |
1753 | +++ b/storage/innobase/srv/srv0start.c |
1754 | @@ -87,6 +87,7 @@ |
1755 | @@ -683,7 +683,7 @@ |
1756 | |
1757 | /** We use this mutex to test the return value of pthread_mutex_trylock |
1758 | on successful locking. HP-UX does NOT return 0, though Linux et al do. */ |
1759 | -@@ -1821,6 +1822,15 @@ |
1760 | +@@ -1841,6 +1842,15 @@ |
1761 | os_thread_create(&srv_monitor_thread, NULL, |
1762 | thread_ids + 4 + SRV_MAX_N_IO_THREADS); |
1763 | |
1764 | |
1765 | === modified file 'patches/innodb_opt_lru_count.patch' |
1766 | --- patches/innodb_opt_lru_count.patch 2011-12-27 15:32:16 +0000 |
1767 | +++ patches/innodb_opt_lru_count.patch 2012-02-06 05:02:26 +0000 |
1768 | @@ -29,7 +29,7 @@ |
1769 | #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG |
1770 | block->n_pointers = 0; |
1771 | #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */ |
1772 | -@@ -1401,7 +1401,7 @@ |
1773 | +@@ -1403,7 +1403,7 @@ |
1774 | |
1775 | memcpy(dpage, bpage, sizeof *dpage); |
1776 | |
1777 | @@ -38,7 +38,7 @@ |
1778 | ut_d(bpage->in_page_hash = FALSE); |
1779 | |
1780 | /* relocate buf_pool->LRU */ |
1781 | -@@ -3223,8 +3223,8 @@ |
1782 | +@@ -3225,8 +3225,8 @@ |
1783 | bpage->in_zip_hash = FALSE; |
1784 | bpage->in_flush_list = FALSE; |
1785 | bpage->in_free_list = FALSE; |
1786 | @@ -48,7 +48,7 @@ |
1787 | |
1788 | ut_d(bpage->in_page_hash = TRUE); |
1789 | |
1790 | -@@ -3389,7 +3389,7 @@ |
1791 | +@@ -3391,7 +3391,7 @@ |
1792 | ibuf_merge_or_delete_for_page(NULL, space, offset, zip_size, TRUE); |
1793 | |
1794 | /* Flush pages from the end of the LRU list if necessary */ |
1795 | @@ -94,7 +94,7 @@ |
1796 | |
1797 | return(FALSE); |
1798 | } |
1799 | -@@ -1985,8 +1988,14 @@ |
1800 | +@@ -2049,8 +2052,14 @@ |
1801 | buf_page_t* bpage; |
1802 | ulint n_replaceable; |
1803 | ulint distance = 0; |
1804 | @@ -110,7 +110,7 @@ |
1805 | |
1806 | n_replaceable = UT_LIST_GET_LEN(buf_pool->free); |
1807 | |
1808 | -@@ -1997,7 +2006,13 @@ |
1809 | +@@ -2061,7 +2070,13 @@ |
1810 | + BUF_FLUSH_EXTRA_MARGIN(buf_pool)) |
1811 | && (distance < BUF_LRU_FREE_SEARCH_LEN(buf_pool))) { |
1812 | |
1813 | @@ -125,7 +125,7 @@ |
1814 | |
1815 | mutex_enter(block_mutex); |
1816 | |
1817 | -@@ -2012,11 +2027,18 @@ |
1818 | +@@ -2076,11 +2091,18 @@ |
1819 | bpage = UT_LIST_GET_PREV(LRU, bpage); |
1820 | } |
1821 | |
1822 | @@ -145,7 +145,7 @@ |
1823 | } |
1824 | |
1825 | return(BUF_FLUSH_FREE_BLOCK_MARGIN(buf_pool) |
1826 | -@@ -2034,7 +2056,8 @@ |
1827 | +@@ -2098,7 +2120,8 @@ |
1828 | void |
1829 | buf_flush_free_margin( |
1830 | /*==================*/ |
1831 | @@ -155,7 +155,7 @@ |
1832 | { |
1833 | ulint n_to_flush; |
1834 | |
1835 | -@@ -2045,7 +2068,7 @@ |
1836 | +@@ -2109,7 +2132,7 @@ |
1837 | |
1838 | n_flushed = buf_flush_LRU(buf_pool, n_to_flush); |
1839 | |
1840 | @@ -164,7 +164,7 @@ |
1841 | /* There was an LRU type flush batch already running; |
1842 | let us wait for it to end */ |
1843 | |
1844 | -@@ -2058,8 +2081,9 @@ |
1845 | +@@ -2122,8 +2145,9 @@ |
1846 | Flushes pages from the end of all the LRU lists. */ |
1847 | UNIV_INTERN |
1848 | void |
1849 | @@ -175,7 +175,7 @@ |
1850 | { |
1851 | ulint i; |
1852 | |
1853 | -@@ -2068,7 +2092,7 @@ |
1854 | +@@ -2132,7 +2156,7 @@ |
1855 | |
1856 | buf_pool = buf_pool_from_array(i); |
1857 | |
1858 | @@ -186,7 +186,7 @@ |
1859 | |
1860 | --- a/storage/innobase/buf/buf0lru.c |
1861 | +++ b/storage/innobase/buf/buf0lru.c |
1862 | -@@ -923,7 +923,7 @@ |
1863 | +@@ -934,7 +934,7 @@ |
1864 | |
1865 | /* No free block was found: try to flush the LRU list */ |
1866 | |
1867 | @@ -195,7 +195,7 @@ |
1868 | ++srv_buf_pool_wait_free; |
1869 | |
1870 | os_aio_simulated_wake_handler_threads(); |
1871 | -@@ -1120,7 +1120,7 @@ |
1872 | +@@ -1131,7 +1131,7 @@ |
1873 | |
1874 | /* Remove the block from the LRU list */ |
1875 | UT_LIST_REMOVE(LRU, buf_pool->LRU, bpage); |
1876 | @@ -204,7 +204,7 @@ |
1877 | |
1878 | buf_unzip_LRU_remove_block_if_needed(bpage); |
1879 | |
1880 | -@@ -1199,7 +1199,7 @@ |
1881 | +@@ -1210,7 +1210,7 @@ |
1882 | |
1883 | ut_ad(!bpage->in_LRU_list); |
1884 | UT_LIST_ADD_LAST(LRU, buf_pool->LRU, bpage); |
1885 | @@ -213,7 +213,7 @@ |
1886 | |
1887 | if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) { |
1888 | |
1889 | -@@ -1269,7 +1269,7 @@ |
1890 | +@@ -1280,7 +1280,7 @@ |
1891 | buf_pool->LRU_old_len++; |
1892 | } |
1893 | |
1894 | @@ -222,7 +222,7 @@ |
1895 | |
1896 | if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) { |
1897 | |
1898 | -@@ -1513,7 +1513,7 @@ |
1899 | +@@ -1524,7 +1524,7 @@ |
1900 | buf_page_set_old(b, buf_page_is_old(b)); |
1901 | #endif /* UNIV_LRU_DEBUG */ |
1902 | } else { |
1903 | @@ -271,7 +271,7 @@ |
1904 | if (buf_debug_prints) { |
1905 | --- a/storage/innobase/include/buf0buf.h |
1906 | +++ b/storage/innobase/include/buf0buf.h |
1907 | -@@ -1404,11 +1404,11 @@ |
1908 | +@@ -1424,11 +1424,11 @@ |
1909 | |
1910 | UT_LIST_NODE_T(buf_page_t) LRU; |
1911 | /*!< node of the LRU list */ |
1912 | |
1913 | === modified file 'patches/innodb_overwrite_relay_log_info.patch' |
1914 | --- patches/innodb_overwrite_relay_log_info.patch 2011-12-27 15:32:16 +0000 |
1915 | +++ patches/innodb_overwrite_relay_log_info.patch 2012-02-06 05:02:26 +0000 |
1916 | @@ -248,7 +248,7 @@ |
1917 | |
1918 | trx_commit_for_mysql(trx); |
1919 | } |
1920 | -@@ -11131,6 +11323,12 @@ |
1921 | +@@ -11130,6 +11322,12 @@ |
1922 | "The common part for InnoDB table spaces.", |
1923 | NULL, NULL, NULL); |
1924 | |
1925 | @@ -261,7 +261,7 @@ |
1926 | static MYSQL_SYSVAR_BOOL(doublewrite, innobase_use_doublewrite, |
1927 | PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, |
1928 | "Enable InnoDB doublewrite buffer (enabled by default). " |
1929 | -@@ -11608,6 +11806,7 @@ |
1930 | +@@ -11647,6 +11845,7 @@ |
1931 | MYSQL_SYSVAR(old_blocks_pct), |
1932 | MYSQL_SYSVAR(old_blocks_time), |
1933 | MYSQL_SYSVAR(open_files), |
1934 | |
1935 | === modified file 'patches/innodb_pass_corrupt_table.patch' |
1936 | --- patches/innodb_pass_corrupt_table.patch 2012-01-10 11:28:15 +0000 |
1937 | +++ patches/innodb_pass_corrupt_table.patch 2012-02-06 05:02:26 +0000 |
1938 | @@ -338,7 +338,7 @@ |
1939 | if (!ready) { |
1940 | |
1941 | return(block); |
1942 | -@@ -1945,6 +1951,13 @@ |
1943 | +@@ -1947,6 +1953,13 @@ |
1944 | return(NULL); |
1945 | } |
1946 | |
1947 | @@ -352,7 +352,7 @@ |
1948 | block_mutex = buf_page_get_mutex_enter(bpage); |
1949 | |
1950 | rw_lock_s_unlock(&buf_pool->page_hash_latch); |
1951 | -@@ -2524,6 +2537,13 @@ |
1952 | +@@ -2526,6 +2539,13 @@ |
1953 | return(NULL); |
1954 | } |
1955 | |
1956 | @@ -366,7 +366,7 @@ |
1957 | switch (buf_block_get_state(block)) { |
1958 | buf_page_t* bpage; |
1959 | ibool success; |
1960 | -@@ -3198,6 +3218,7 @@ |
1961 | +@@ -3200,6 +3220,7 @@ |
1962 | bpage->newest_modification = 0; |
1963 | bpage->oldest_modification = 0; |
1964 | HASH_INVALIDATE(bpage, hash); |
1965 | @@ -374,7 +374,7 @@ |
1966 | #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG |
1967 | bpage->file_page_was_freed = FALSE; |
1968 | #endif /* UNIV_DEBUG_FILE_ACCESSES || UNIV_DEBUG */ |
1969 | -@@ -3836,6 +3857,7 @@ |
1970 | +@@ -3838,6 +3859,7 @@ |
1971 | (ulong) bpage->offset); |
1972 | } |
1973 | |
1974 | @@ -382,7 +382,7 @@ |
1975 | /* From version 3.23.38 up we store the page checksum |
1976 | to the 4 first bytes of the page end lsn field */ |
1977 | |
1978 | -@@ -3877,6 +3899,23 @@ |
1979 | +@@ -3879,6 +3901,23 @@ |
1980 | REFMAN "forcing-innodb-recovery.html\n" |
1981 | "InnoDB: about forcing recovery.\n", stderr); |
1982 | |
1983 | @@ -406,7 +406,7 @@ |
1984 | if (srv_force_recovery < SRV_FORCE_IGNORE_CORRUPT) { |
1985 | /* If page space id is larger than TRX_SYS_SPACE |
1986 | (0), we will attempt to mark the corresponding |
1987 | -@@ -3893,6 +3932,7 @@ |
1988 | +@@ -3895,6 +3934,7 @@ |
1989 | } |
1990 | } |
1991 | } |
1992 | @@ -414,7 +414,7 @@ |
1993 | |
1994 | if (recv_recovery_is_on()) { |
1995 | /* Pages must be uncompressed for crash recovery. */ |
1996 | -@@ -3902,8 +3942,11 @@ |
1997 | +@@ -3904,8 +3944,11 @@ |
1998 | |
1999 | if (uncompressed && !recv_no_ibuf_operations) { |
2000 | ibuf_merge_or_delete_for_page( |
2001 | @@ -462,7 +462,7 @@ |
2002 | /* If table->ibd_file_missing == TRUE, this will |
2003 | print an error message and return without doing |
2004 | anything. */ |
2005 | -@@ -1293,7 +1294,7 @@ |
2006 | +@@ -1298,7 +1299,7 @@ |
2007 | + dict_sys->size) > srv_dict_size_limit ) { |
2008 | prev_table = UT_LIST_GET_PREV(table_LRU, table); |
2009 | |
2010 | @@ -471,7 +471,7 @@ |
2011 | goto next_loop; |
2012 | |
2013 | cached_foreign_tables = 0; |
2014 | -@@ -4367,6 +4368,12 @@ |
2015 | +@@ -4377,6 +4378,12 @@ |
2016 | heap = mem_heap_create(1000); |
2017 | |
2018 | while (index) { |
2019 | @@ -484,7 +484,7 @@ |
2020 | size = btr_get_size(index, BTR_TOTAL_SIZE); |
2021 | |
2022 | index->stat_index_size = size; |
2023 | -@@ -4514,6 +4521,12 @@ |
2024 | +@@ -4524,6 +4531,12 @@ |
2025 | heap = mem_heap_create(1000); |
2026 | |
2027 | while (index) { |
2028 | @@ -497,7 +497,7 @@ |
2029 | /*===========================================*/ |
2030 | { |
2031 | dict_table_t* sys_stats; |
2032 | -@@ -4706,6 +4719,13 @@ |
2033 | +@@ -4716,6 +4729,13 @@ |
2034 | || (srv_force_recovery < SRV_FORCE_NO_LOG_REDO |
2035 | && dict_index_is_clust(index)))) { |
2036 | ulint size; |
2037 | @@ -511,7 +511,7 @@ |
2038 | size = btr_get_size(index, BTR_TOTAL_SIZE); |
2039 | |
2040 | index->stat_index_size = size; |
2041 | -@@ -5685,4 +5705,42 @@ |
2042 | +@@ -5695,4 +5715,42 @@ |
2043 | |
2044 | index->type |= DICT_CORRUPT; |
2045 | } |
2046 | @@ -584,7 +584,7 @@ |
2047 | UT_LIST_ADD_LAST(space_list, fil_system->space_list, space); |
2048 | |
2049 | mutex_exit(&fil_system->mutex); |
2050 | -@@ -5277,6 +5280,34 @@ |
2051 | +@@ -5285,6 +5288,34 @@ |
2052 | ut_a(byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0); |
2053 | ut_a((len % OS_FILE_LOG_BLOCK_SIZE) == 0); |
2054 | |
2055 | @@ -619,7 +619,7 @@ |
2056 | #ifdef UNIV_HOTBACKUP |
2057 | /* In ibbackup do normal i/o, not aio */ |
2058 | if (type == OS_FILE_READ) { |
2059 | -@@ -5291,6 +5322,8 @@ |
2060 | +@@ -5299,6 +5330,8 @@ |
2061 | ret = os_aio(type, mode | wake_later, node->name, node->handle, buf, |
2062 | offset_low, offset_high, len, node, message, trx); |
2063 | #endif |
2064 | @@ -628,7 +628,7 @@ |
2065 | ut_a(ret); |
2066 | |
2067 | if (mode == OS_AIO_SYNC) { |
2068 | -@@ -5791,3 +5824,46 @@ |
2069 | +@@ -5799,3 +5832,46 @@ |
2070 | return 0; |
2071 | } |
2072 | } |
2073 | @@ -677,7 +677,7 @@ |
2074 | + |
2075 | --- a/storage/innobase/fsp/fsp0fsp.c |
2076 | +++ b/storage/innobase/fsp/fsp0fsp.c |
2077 | -@@ -369,6 +369,12 @@ |
2078 | +@@ -308,6 +308,12 @@ |
2079 | ut_ad(id || !zip_size); |
2080 | |
2081 | block = buf_page_get(id, zip_size, 0, RW_X_LATCH, mtr); |
2082 | @@ -690,7 +690,7 @@ |
2083 | header = FSP_HEADER_OFFSET + buf_block_get_frame(block); |
2084 | buf_block_dbg_add_level(block, SYNC_FSP_PAGE); |
2085 | |
2086 | -@@ -787,6 +793,12 @@ |
2087 | +@@ -726,6 +732,12 @@ |
2088 | fsp_header_t* sp_header; |
2089 | |
2090 | block = buf_page_get(space, zip_size, 0, RW_X_LATCH, mtr); |
2091 | @@ -703,7 +703,7 @@ |
2092 | buf_block_dbg_add_level(block, SYNC_FSP_PAGE); |
2093 | |
2094 | sp_header = FSP_HEADER_OFFSET + buf_block_get_frame(block); |
2095 | -@@ -1866,6 +1878,11 @@ |
2096 | +@@ -1805,6 +1817,11 @@ |
2097 | { |
2098 | fseg_inode_t* inode; |
2099 | |
2100 | @@ -715,7 +715,7 @@ |
2101 | for (; i < FSP_SEG_INODES_PER_PAGE(zip_size); i++) { |
2102 | |
2103 | inode = fsp_seg_inode_page_get_nth_inode( |
2104 | -@@ -1979,6 +1996,11 @@ |
2105 | +@@ -1918,6 +1935,11 @@ |
2106 | |
2107 | page = buf_block_get_frame(block); |
2108 | |
2109 | @@ -727,7 +727,7 @@ |
2110 | n = fsp_seg_inode_page_find_free(page, 0, zip_size, mtr); |
2111 | |
2112 | ut_a(n != ULINT_UNDEFINED); |
2113 | -@@ -2072,6 +2094,11 @@ |
2114 | +@@ -2011,6 +2033,11 @@ |
2115 | |
2116 | inode = fut_get_ptr(space, zip_size, inode_addr, RW_X_LATCH, mtr); |
2117 | |
2118 | @@ -739,7 +739,7 @@ |
2119 | if (UNIV_UNLIKELY(!mach_read_from_8(inode + FSEG_ID))) { |
2120 | |
2121 | inode = NULL; |
2122 | -@@ -2098,7 +2125,7 @@ |
2123 | +@@ -2037,7 +2064,7 @@ |
2124 | { |
2125 | fseg_inode_t* inode |
2126 | = fseg_inode_try_get(header, space, zip_size, mtr); |
2127 | @@ -748,7 +748,7 @@ |
2128 | return(inode); |
2129 | } |
2130 | |
2131 | -@@ -3304,6 +3331,11 @@ |
2132 | +@@ -3243,6 +3270,11 @@ |
2133 | |
2134 | descr = xdes_get_descriptor(space, zip_size, page, mtr); |
2135 | |
2136 | @@ -760,7 +760,7 @@ |
2137 | ut_a(descr); |
2138 | if (xdes_get_bit(descr, XDES_FREE_BIT, page % FSP_EXTENT_SIZE, mtr)) { |
2139 | fputs("InnoDB: Dump of the tablespace extent descriptor: ", |
2140 | -@@ -3551,6 +3583,11 @@ |
2141 | +@@ -3490,6 +3522,11 @@ |
2142 | |
2143 | descr = xdes_get_descriptor(space, zip_size, header_page, mtr); |
2144 | |
2145 | @@ -772,7 +772,7 @@ |
2146 | /* Check that the header resides on a page which has not been |
2147 | freed yet */ |
2148 | |
2149 | -@@ -3635,6 +3672,12 @@ |
2150 | +@@ -3574,6 +3611,12 @@ |
2151 | |
2152 | inode = fseg_inode_get(header, space, zip_size, mtr); |
2153 | |
2154 | @@ -908,7 +908,7 @@ |
2155 | switch (ret) { |
2156 | case DB_SUCCESS: |
2157 | error = 0; |
2158 | -@@ -6137,6 +6188,10 @@ |
2159 | +@@ -6136,6 +6187,10 @@ |
2160 | { |
2161 | DBUG_ENTER("change_active_index"); |
2162 | |
2163 | @@ -919,7 +919,7 @@ |
2164 | ut_ad(user_thd == ha_thd()); |
2165 | ut_a(prebuilt->trx == thd_to_trx(user_thd)); |
2166 | |
2167 | -@@ -6250,6 +6305,10 @@ |
2168 | +@@ -6249,6 +6304,10 @@ |
2169 | |
2170 | DBUG_ENTER("general_fetch"); |
2171 | |
2172 | @@ -930,7 +930,7 @@ |
2173 | ut_a(prebuilt->trx == thd_to_trx(user_thd)); |
2174 | |
2175 | innodb_srv_conc_enter_innodb(prebuilt->trx); |
2176 | -@@ -6259,6 +6318,10 @@ |
2177 | +@@ -6258,6 +6317,10 @@ |
2178 | |
2179 | innodb_srv_conc_exit_innodb(prebuilt->trx); |
2180 | |
2181 | @@ -941,7 +941,7 @@ |
2182 | switch (ret) { |
2183 | case DB_SUCCESS: |
2184 | error = 0; |
2185 | -@@ -7525,10 +7588,18 @@ |
2186 | +@@ -7524,10 +7587,18 @@ |
2187 | |
2188 | update_thd(ha_thd()); |
2189 | |
2190 | @@ -960,7 +960,7 @@ |
2191 | error = convert_error_code_to_mysql(error, prebuilt->table->flags, |
2192 | NULL); |
2193 | |
2194 | -@@ -8040,6 +8111,16 @@ |
2195 | +@@ -8039,6 +8110,16 @@ |
2196 | return(ranges + (double) rows / (double) total_rows * time_for_scan); |
2197 | } |
2198 | |
2199 | @@ -977,7 +977,7 @@ |
2200 | /*********************************************************************//** |
2201 | Calculates the key number used inside MySQL for an Innobase index. We will |
2202 | first check the "index translation table" for a match of the index to get |
2203 | -@@ -8217,7 +8298,7 @@ |
2204 | +@@ -8216,7 +8297,7 @@ |
2205 | ib_table = prebuilt->table; |
2206 | |
2207 | if (flag & HA_STATUS_TIME) { |
2208 | @@ -986,7 +986,7 @@ |
2209 | /* In sql_show we call with this flag: update |
2210 | then statistics so that they are up-to-date */ |
2211 | |
2212 | -@@ -8517,10 +8598,18 @@ |
2213 | +@@ -8516,10 +8597,18 @@ |
2214 | THD* thd, /*!< in: connection thread handle */ |
2215 | HA_CHECK_OPT* check_opt) /*!< in: currently ignored */ |
2216 | { |
2217 | @@ -1005,7 +1005,7 @@ |
2218 | return(0); |
2219 | } |
2220 | |
2221 | -@@ -8756,6 +8845,10 @@ |
2222 | +@@ -8755,6 +8844,10 @@ |
2223 | my_error(ER_QUERY_INTERRUPTED, MYF(0)); |
2224 | } |
2225 | |
2226 | @@ -1016,7 +1016,7 @@ |
2227 | DBUG_RETURN(is_ok ? HA_ADMIN_OK : HA_ADMIN_CORRUPT); |
2228 | } |
2229 | |
2230 | -@@ -9526,6 +9619,10 @@ |
2231 | +@@ -9525,6 +9618,10 @@ |
2232 | |
2233 | update_thd(thd); |
2234 | |
2235 | @@ -1027,7 +1027,7 @@ |
2236 | if (prebuilt->table->ibd_file_missing && !thd_tablespace_op(thd)) { |
2237 | ut_print_timestamp(stderr); |
2238 | fprintf(stderr, |
2239 | -@@ -11990,6 +12087,26 @@ |
2240 | +@@ -11989,6 +12086,26 @@ |
2241 | "dump file (if present). Disabled by default.", |
2242 | NULL, NULL, FALSE); |
2243 | |
2244 | @@ -1054,7 +1054,7 @@ |
2245 | static struct st_mysql_sys_var* innobase_system_variables[]= { |
2246 | MYSQL_SYSVAR(additional_mem_pool_size), |
2247 | MYSQL_SYSVAR(autoextend_increment), |
2248 | -@@ -12083,6 +12200,7 @@ |
2249 | +@@ -12082,6 +12199,7 @@ |
2250 | #ifdef UNIV_DEBUG |
2251 | MYSQL_SYSVAR(flush_checkpoint_debug), |
2252 | #endif |
2253 | @@ -1104,7 +1104,7 @@ |
2254 | block, index != NULL && dict_index_is_ibuf(index) |
2255 | --- a/storage/innobase/include/buf0buf.h |
2256 | +++ b/storage/innobase/include/buf0buf.h |
2257 | -@@ -1003,7 +1003,7 @@ |
2258 | +@@ -1023,7 +1023,7 @@ |
2259 | const buf_block_t* block) /*!< in: pointer to the control block */ |
2260 | __attribute__((pure)); |
2261 | #else /* UNIV_DEBUG */ |
2262 | @@ -1113,7 +1113,7 @@ |
2263 | #endif /* UNIV_DEBUG */ |
2264 | /*********************************************************************//** |
2265 | Gets the space id of a block. |
2266 | -@@ -1450,6 +1450,7 @@ |
2267 | +@@ -1470,6 +1470,7 @@ |
2268 | 0 if the block was never accessed |
2269 | in the buffer pool */ |
2270 | /* @} */ |
2271 | @@ -1132,7 +1132,7 @@ |
2272 | /*********************************************************************//** |
2273 | Gets the current size of buffer buf_pool in bytes. |
2274 | @return size in bytes */ |
2275 | -@@ -637,6 +637,12 @@ |
2276 | +@@ -681,6 +681,12 @@ |
2277 | /*================*/ |
2278 | const buf_block_t* block) /*!< in: pointer to the control block */ |
2279 | { |
2280 | @@ -1175,7 +1175,7 @@ |
2281 | #ifdef UNIV_DEBUG |
2282 | --- a/storage/innobase/include/fil0fil.h |
2283 | +++ b/storage/innobase/include/fil0fil.h |
2284 | -@@ -754,6 +754,19 @@ |
2285 | +@@ -759,6 +759,19 @@ |
2286 | fil_system_hash_nodes(void); |
2287 | /*========================*/ |
2288 | |
2289 | @@ -1359,7 +1359,7 @@ |
2290 | /*-------------------------------------------*/ |
2291 | --- a/storage/innobase/srv/srv0start.c |
2292 | +++ b/storage/innobase/srv/srv0start.c |
2293 | -@@ -2155,6 +2155,13 @@ |
2294 | +@@ -2175,6 +2175,13 @@ |
2295 | |
2296 | os_fast_mutex_free(&srv_os_test_mutex); |
2297 | |
2298 | |
2299 | === modified file 'patches/innodb_recovery_patches.patch' |
2300 | --- patches/innodb_recovery_patches.patch 2011-12-27 15:32:16 +0000 |
2301 | +++ patches/innodb_recovery_patches.patch 2012-02-06 05:02:26 +0000 |
2302 | @@ -124,7 +124,7 @@ |
2303 | srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite; |
2304 | srv_use_checksums = (ibool) innobase_use_checksums; |
2305 | |
2306 | -@@ -11391,6 +11394,11 @@ |
2307 | +@@ -11390,6 +11393,11 @@ |
2308 | "The common part for InnoDB table spaces.", |
2309 | NULL, NULL, NULL); |
2310 | |
2311 | @@ -136,7 +136,7 @@ |
2312 | static MYSQL_SYSVAR_BOOL(recovery_update_relay_log, innobase_overwrite_relay_log_info, |
2313 | PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, |
2314 | "During InnoDB crash recovery on slave overwrite relay-log.info " |
2315 | -@@ -11879,6 +11887,7 @@ |
2316 | +@@ -11918,6 +11926,7 @@ |
2317 | MYSQL_SYSVAR(data_file_path), |
2318 | MYSQL_SYSVAR(data_home_dir), |
2319 | MYSQL_SYSVAR(doublewrite), |
2320 | |
2321 | === modified file 'patches/innodb_separate_doublewrite.patch' |
2322 | --- patches/innodb_separate_doublewrite.patch 2011-12-27 15:32:16 +0000 |
2323 | +++ patches/innodb_separate_doublewrite.patch 2012-02-06 05:02:26 +0000 |
2324 | @@ -7,7 +7,7 @@ |
2325 | # should be done or reviewed by the maintainer! |
2326 | --- a/storage/innobase/buf/buf0buf.c |
2327 | +++ b/storage/innobase/buf/buf0buf.c |
2328 | -@@ -3805,7 +3805,8 @@ |
2329 | +@@ -3807,7 +3807,8 @@ |
2330 | read_space_id = mach_read_from_4( |
2331 | frame + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); |
2332 | |
2333 | @@ -262,7 +262,7 @@ |
2334 | if (err != DB_SUCCESS) { |
2335 | |
2336 | return(err); |
2337 | -@@ -4168,7 +4178,7 @@ |
2338 | +@@ -4176,7 +4186,7 @@ |
2339 | } |
2340 | |
2341 | #ifndef UNIV_HOTBACKUP |
2342 | @@ -271,7 +271,7 @@ |
2343 | fprintf(stderr, |
2344 | "InnoDB: Error: tablespace id %lu in file %s" |
2345 | " is not sensible\n", |
2346 | -@@ -4177,7 +4187,7 @@ |
2347 | +@@ -4185,7 +4195,7 @@ |
2348 | goto func_exit; |
2349 | } |
2350 | #else |
2351 | @@ -280,7 +280,7 @@ |
2352 | char* new_path; |
2353 | |
2354 | fprintf(stderr, |
2355 | -@@ -4998,7 +5008,7 @@ |
2356 | +@@ -5006,7 +5016,7 @@ |
2357 | } |
2358 | |
2359 | if (node->n_pending == 0 && space->purpose == FIL_TABLESPACE |
2360 | @@ -289,7 +289,7 @@ |
2361 | /* The node is in the LRU list, remove it */ |
2362 | |
2363 | ut_a(UT_LIST_GET_LEN(system->LRU) > 0); |
2364 | -@@ -5044,7 +5054,7 @@ |
2365 | +@@ -5052,7 +5062,7 @@ |
2366 | } |
2367 | |
2368 | if (node->n_pending == 0 && node->space->purpose == FIL_TABLESPACE |
2369 | @@ -298,7 +298,7 @@ |
2370 | /* The node must be put back to the LRU list */ |
2371 | UT_LIST_ADD_FIRST(LRU, system->LRU, node); |
2372 | } |
2373 | -@@ -5655,7 +5665,7 @@ |
2374 | +@@ -5663,7 +5673,7 @@ |
2375 | ut_a(fil_node->n_pending == 0); |
2376 | ut_a(fil_node->open); |
2377 | ut_a(fil_node->space->purpose == FIL_TABLESPACE); |
2378 | @@ -316,9 +316,9 @@ |
2379 | - |
2380 | +#include "trx0sys.h" |
2381 | |
2382 | - #define FSP_HEADER_OFFSET FIL_PAGE_DATA /* Offset of the space header |
2383 | - within a file page */ |
2384 | -@@ -999,10 +999,10 @@ |
2385 | + /* FILE SEGMENT INODE |
2386 | + ================== |
2387 | +@@ -938,10 +938,10 @@ |
2388 | flst_init(header + FSP_SEG_INODES_FREE, mtr); |
2389 | |
2390 | mlog_write_ull(header + FSP_SEG_ID, 1, mtr); |
2391 | @@ -350,7 +350,7 @@ |
2392 | srv_use_sys_stats_table = (ibool) innobase_use_sys_stats_table; |
2393 | |
2394 | /* -------------- Log files ---------------------------*/ |
2395 | -@@ -11772,6 +11775,11 @@ |
2396 | +@@ -11771,6 +11774,11 @@ |
2397 | "Path to individual files and their sizes.", |
2398 | NULL, NULL, NULL); |
2399 | |
2400 | @@ -362,7 +362,7 @@ |
2401 | static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode, |
2402 | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, |
2403 | "The AUTOINC lock modes supported by InnoDB: " |
2404 | -@@ -11951,6 +11959,7 @@ |
2405 | +@@ -11990,6 +11998,7 @@ |
2406 | MYSQL_SYSVAR(commit_concurrency), |
2407 | MYSQL_SYSVAR(concurrency_tickets), |
2408 | MYSQL_SYSVAR(data_file_path), |
2409 | @@ -536,7 +536,7 @@ |
2410 | #ifdef UNIV_LOG_ARCHIVE |
2411 | ulint* min_arch_log_no,/*!< out: min of archived log |
2412 | numbers in data files */ |
2413 | -@@ -747,6 +748,7 @@ |
2414 | +@@ -748,6 +749,7 @@ |
2415 | *sum_of_new_sizes = 0; |
2416 | |
2417 | *create_new_db = FALSE; |
2418 | @@ -544,7 +544,7 @@ |
2419 | |
2420 | srv_normalize_path_for_win(srv_data_home); |
2421 | |
2422 | -@@ -984,6 +986,142 @@ |
2423 | +@@ -1004,6 +1006,142 @@ |
2424 | srv_data_file_is_raw_partition[i] != 0); |
2425 | } |
2426 | |
2427 | @@ -622,8 +622,8 @@ |
2428 | + (ulong) TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9); |
2429 | + } |
2430 | + |
2431 | -+ fil_read_flushed_lsn_and_arch_log_no( |
2432 | -+ files[i], one_opened, |
2433 | ++ fil_read_first_page( |
2434 | ++ files[i], one_opened, &flags, |
2435 | +#ifdef UNIV_LOG_ARCHIVE |
2436 | + min_arch_log_no, max_arch_log_no, |
2437 | +#endif /* UNIV_LOG_ARCHIVE */ |
2438 | @@ -687,7 +687,7 @@ |
2439 | return(DB_SUCCESS); |
2440 | } |
2441 | |
2442 | -@@ -997,6 +1135,7 @@ |
2443 | +@@ -1017,6 +1155,7 @@ |
2444 | /*====================================*/ |
2445 | { |
2446 | ibool create_new_db; |
2447 | @@ -695,7 +695,7 @@ |
2448 | ibool log_file_created; |
2449 | ibool log_created = FALSE; |
2450 | ibool log_opened = FALSE; |
2451 | -@@ -1462,6 +1601,7 @@ |
2452 | +@@ -1482,6 +1621,7 @@ |
2453 | } |
2454 | |
2455 | err = open_or_create_data_files(&create_new_db, |
2456 | @@ -703,7 +703,7 @@ |
2457 | #ifdef UNIV_LOG_ARCHIVE |
2458 | &min_arch_log_no, &max_arch_log_no, |
2459 | #endif /* UNIV_LOG_ARCHIVE */ |
2460 | -@@ -1629,6 +1769,14 @@ |
2461 | +@@ -1649,6 +1789,14 @@ |
2462 | after the double write buffer has been created. */ |
2463 | trx_sys_create(); |
2464 | |
2465 | @@ -718,7 +718,7 @@ |
2466 | dict_create(); |
2467 | |
2468 | srv_startup_is_before_trx_rollback_phase = FALSE; |
2469 | -@@ -1662,6 +1810,13 @@ |
2470 | +@@ -1682,6 +1830,13 @@ |
2471 | recv_recovery_from_archive_finish(); |
2472 | #endif /* UNIV_LOG_ARCHIVE */ |
2473 | } else { |
2474 | @@ -732,7 +732,7 @@ |
2475 | |
2476 | /* Check if we support the max format that is stamped |
2477 | on the system tablespace. |
2478 | -@@ -1748,6 +1903,17 @@ |
2479 | +@@ -1768,6 +1923,17 @@ |
2480 | we have finished the recovery process so that the |
2481 | image of TRX_SYS_PAGE_NO is not stale. */ |
2482 | trx_sys_file_format_tag_init(); |
2483 | |
2484 | === modified file 'patches/innodb_show_lock_name.patch' |
2485 | --- patches/innodb_show_lock_name.patch 2011-12-27 15:32:16 +0000 |
2486 | +++ patches/innodb_show_lock_name.patch 2012-02-06 05:02:26 +0000 |
2487 | @@ -7,7 +7,7 @@ |
2488 | # should be done or reviewed by the maintainer! |
2489 | --- a/storage/innobase/handler/ha_innodb.cc |
2490 | +++ b/storage/innobase/handler/ha_innodb.cc |
2491 | -@@ -9710,9 +9710,8 @@ |
2492 | +@@ -9709,9 +9709,8 @@ |
2493 | rw_lock_wait_time += mutex->lspent_time; |
2494 | } |
2495 | #else /* UNIV_DEBUG */ |
2496 | @@ -19,7 +19,7 @@ |
2497 | buf2len= (uint) my_snprintf(buf2, sizeof(buf2), "os_waits=%lu", |
2498 | (ulong) mutex->count_os_wait); |
2499 | |
2500 | -@@ -9727,10 +9726,8 @@ |
2501 | +@@ -9726,10 +9725,8 @@ |
2502 | |
2503 | if (block_mutex) { |
2504 | buf1len = (uint) my_snprintf(buf1, sizeof buf1, |
2505 | @@ -32,7 +32,7 @@ |
2506 | buf2len = (uint) my_snprintf(buf2, sizeof buf2, |
2507 | "os_waits=%lu", |
2508 | (ulong) block_mutex_oswait_count); |
2509 | -@@ -9759,9 +9756,8 @@ |
2510 | +@@ -9758,9 +9755,8 @@ |
2511 | continue; |
2512 | } |
2513 | |
2514 | @@ -44,7 +44,7 @@ |
2515 | buf2len = my_snprintf(buf2, sizeof buf2, "os_waits=%lu", |
2516 | (ulong) lock->count_os_wait); |
2517 | |
2518 | -@@ -9775,10 +9771,8 @@ |
2519 | +@@ -9774,10 +9770,8 @@ |
2520 | |
2521 | if (block_lock) { |
2522 | buf1len = (uint) my_snprintf(buf1, sizeof buf1, |
2523 | |
2524 | === modified file 'patches/innodb_show_status.patch' |
2525 | --- patches/innodb_show_status.patch 2011-12-27 15:32:16 +0000 |
2526 | +++ patches/innodb_show_status.patch 2012-02-06 05:02:26 +0000 |
2527 | @@ -7,7 +7,7 @@ |
2528 | # should be done or reviewed by the maintainer! |
2529 | --- a/storage/innobase/buf/buf0buf.c |
2530 | +++ b/storage/innobase/buf/buf0buf.c |
2531 | -@@ -4365,6 +4365,7 @@ |
2532 | +@@ -4372,6 +4372,7 @@ |
2533 | } |
2534 | |
2535 | total_info->pool_size += pool_info->pool_size; |
2536 | @@ -15,7 +15,7 @@ |
2537 | total_info->lru_len += pool_info->lru_len; |
2538 | total_info->old_lru_len += pool_info->old_lru_len; |
2539 | total_info->free_list_len += pool_info->free_list_len; |
2540 | -@@ -4430,6 +4431,8 @@ |
2541 | +@@ -4437,6 +4438,8 @@ |
2542 | |
2543 | pool_info->pool_size = buf_pool->curr_size; |
2544 | |
2545 | @@ -24,7 +24,7 @@ |
2546 | pool_info->lru_len = UT_LIST_GET_LEN(buf_pool->LRU); |
2547 | |
2548 | pool_info->old_lru_len = buf_pool->LRU_old_len; |
2549 | -@@ -4551,14 +4554,16 @@ |
2550 | +@@ -4558,14 +4561,16 @@ |
2551 | ut_ad(pool_info); |
2552 | |
2553 | fprintf(file, |
2554 | @@ -59,7 +59,7 @@ |
2555 | |
2556 | --- a/storage/innobase/fil/fil0fil.c |
2557 | +++ b/storage/innobase/fil/fil0fil.c |
2558 | -@@ -4889,3 +4889,30 @@ |
2559 | +@@ -4897,3 +4897,30 @@ |
2560 | |
2561 | fil_system = NULL; |
2562 | } |
2563 | @@ -101,7 +101,7 @@ |
2564 | {"buffer_pool_pages_free", |
2565 | (char*) &export_vars.innodb_buffer_pool_pages_free, SHOW_LONG}, |
2566 | #ifdef UNIV_DEBUG |
2567 | -@@ -11208,6 +11210,16 @@ |
2568 | +@@ -11207,6 +11209,16 @@ |
2569 | "Force InnoDB to not use next-key locking, to use only row-level locking.", |
2570 | NULL, NULL, FALSE); |
2571 | |
2572 | @@ -118,7 +118,7 @@ |
2573 | #ifdef UNIV_LOG_ARCHIVE |
2574 | static MYSQL_SYSVAR_STR(log_arch_dir, innobase_log_arch_dir, |
2575 | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, |
2576 | -@@ -11395,7 +11407,7 @@ |
2577 | +@@ -11394,7 +11406,7 @@ |
2578 | |
2579 | static MYSQL_SYSVAR_STR(version, innodb_version_str, |
2580 | PLUGIN_VAR_NOCMDOPT | PLUGIN_VAR_READONLY, |
2581 | @@ -127,7 +127,7 @@ |
2582 | |
2583 | static MYSQL_SYSVAR_BOOL(use_sys_malloc, srv_use_sys_malloc, |
2584 | PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, |
2585 | -@@ -11495,6 +11507,8 @@ |
2586 | +@@ -11494,6 +11506,8 @@ |
2587 | MYSQL_SYSVAR(thread_concurrency), |
2588 | MYSQL_SYSVAR(thread_sleep_delay), |
2589 | MYSQL_SYSVAR(autoinc_lock_mode), |
2590 | @@ -148,7 +148,7 @@ |
2591 | ulint free_list_len; /*!< Length of buf_pool->free list */ |
2592 | --- a/storage/innobase/include/fil0fil.h |
2593 | +++ b/storage/innobase/include/fil0fil.h |
2594 | -@@ -726,6 +726,17 @@ |
2595 | +@@ -731,6 +731,17 @@ |
2596 | /*============================*/ |
2597 | ulint id); /*!< in: space id */ |
2598 | |
2599 | |
2600 | === modified file 'patches/innodb_show_status_extend.patch' |
2601 | --- patches/innodb_show_status_extend.patch 2011-12-27 15:32:16 +0000 |
2602 | +++ patches/innodb_show_status_extend.patch 2012-02-06 05:02:26 +0000 |
2603 | @@ -240,7 +240,7 @@ |
2604 | /** The lock system */ |
2605 | --- a/storage/innobase/include/srv0srv.h |
2606 | +++ b/storage/innobase/include/srv0srv.h |
2607 | -@@ -739,6 +739,11 @@ |
2608 | +@@ -742,6 +742,11 @@ |
2609 | |
2610 | /** Status variables to be passed to MySQL */ |
2611 | struct export_var_struct{ |
2612 | @@ -252,7 +252,7 @@ |
2613 | ulint innodb_data_pending_reads; /*!< Pending reads */ |
2614 | ulint innodb_data_pending_writes; /*!< Pending writes */ |
2615 | ulint innodb_data_pending_fsyncs; /*!< Pending fsyncs */ |
2616 | -@@ -756,6 +761,9 @@ |
2617 | +@@ -759,6 +764,9 @@ |
2618 | #ifdef UNIV_DEBUG |
2619 | ulint innodb_buffer_pool_pages_latched; /*!< Latched pages */ |
2620 | #endif /* UNIV_DEBUG */ |
2621 | @@ -262,7 +262,7 @@ |
2622 | ulint innodb_buffer_pool_read_requests; /*!< buf_pool->stat.n_page_gets */ |
2623 | ulint innodb_buffer_pool_reads; /*!< srv_buf_pool_reads */ |
2624 | ulint innodb_buffer_pool_wait_free; /*!< srv_buf_pool_wait_free */ |
2625 | -@@ -765,13 +773,43 @@ |
2626 | +@@ -768,13 +776,43 @@ |
2627 | ulint innodb_buffer_pool_read_ahead_rnd;/*!< srv_read_ahead_rnd */ |
2628 | ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */ |
2629 | ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/ |
2630 | @@ -306,7 +306,7 @@ |
2631 | ulint innodb_os_log_written; /*!< srv_os_log_written */ |
2632 | ulint innodb_os_log_fsyncs; /*!< fil_n_log_flushes */ |
2633 | ulint innodb_os_log_pending_writes; /*!< srv_os_log_pending_writes */ |
2634 | -@@ -780,6 +818,8 @@ |
2635 | +@@ -783,6 +821,8 @@ |
2636 | ulint innodb_pages_created; /*!< buf_pool->stat.n_pages_created */ |
2637 | ulint innodb_pages_read; /*!< buf_pool->stat.n_pages_read */ |
2638 | ulint innodb_pages_written; /*!< buf_pool->stat.n_pages_written */ |
2639 | @@ -315,7 +315,7 @@ |
2640 | ulint innodb_row_lock_waits; /*!< srv_n_lock_wait_count */ |
2641 | ulint innodb_row_lock_current_waits; /*!< srv_n_lock_wait_current_count */ |
2642 | ib_int64_t innodb_row_lock_time; /*!< srv_n_lock_wait_time |
2643 | -@@ -789,11 +829,18 @@ |
2644 | +@@ -792,11 +832,18 @@ |
2645 | / srv_n_lock_wait_count */ |
2646 | ulint innodb_row_lock_time_max; /*!< srv_n_lock_max_wait_time |
2647 | / 1000 */ |
2648 | @@ -383,7 +383,7 @@ |
2649 | } |
2650 | --- a/storage/innobase/srv/srv0srv.c |
2651 | +++ b/storage/innobase/srv/srv0srv.c |
2652 | -@@ -2259,12 +2259,49 @@ |
2653 | +@@ -2262,12 +2262,49 @@ |
2654 | ulint LRU_len; |
2655 | ulint free_len; |
2656 | ulint flush_list_len; |
2657 | @@ -433,7 +433,7 @@ |
2658 | export_vars.innodb_data_pending_reads |
2659 | = os_n_pending_reads; |
2660 | export_vars.innodb_data_pending_writes |
2661 | -@@ -2303,6 +2340,92 @@ |
2662 | +@@ -2306,6 +2343,92 @@ |
2663 | |
2664 | export_vars.innodb_buffer_pool_pages_misc |
2665 | = buf_pool_get_n_pages() - LRU_len - free_len; |
2666 | |
2667 | === modified file 'patches/innodb_show_sys_tables.patch' |
2668 | --- patches/innodb_show_sys_tables.patch 2011-12-27 15:32:16 +0000 |
2669 | +++ patches/innodb_show_sys_tables.patch 2012-02-06 05:02:26 +0000 |
2670 | @@ -39,7 +39,7 @@ |
2671 | Determine the flags of a table described in SYS_TABLES. |
2672 | --- a/storage/innobase/handler/ha_innodb.cc |
2673 | +++ b/storage/innobase/handler/ha_innodb.cc |
2674 | -@@ -11908,7 +11908,14 @@ |
2675 | +@@ -11950,7 +11950,14 @@ |
2676 | i_s_innodb_cmp, |
2677 | i_s_innodb_cmp_reset, |
2678 | i_s_innodb_cmpmem, |
2679 | |
2680 | === modified file 'patches/innodb_split_buf_pool_mutex.patch' |
2681 | --- patches/innodb_split_buf_pool_mutex.patch 2012-01-11 15:14:15 +0000 |
2682 | +++ patches/innodb_split_buf_pool_mutex.patch 2012-02-06 05:02:26 +0000 |
2683 | @@ -527,7 +527,7 @@ |
2684 | buf_pool_mutex_exit(buf_pool); |
2685 | |
2686 | return(DB_SUCCESS); |
2687 | -@@ -1374,7 +1402,11 @@ |
2688 | +@@ -1376,7 +1404,11 @@ |
2689 | ulint fold; |
2690 | buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); |
2691 | |
2692 | @@ -540,7 +540,7 @@ |
2693 | ut_ad(mutex_own(buf_page_get_mutex(bpage))); |
2694 | ut_a(buf_page_get_io_fix(bpage) == BUF_IO_NONE); |
2695 | ut_a(bpage->buf_fix_count == 0); |
2696 | -@@ -1485,21 +1517,32 @@ |
2697 | +@@ -1487,21 +1519,32 @@ |
2698 | buf_page_t* bpage; |
2699 | ulint i; |
2700 | buf_pool_t* buf_pool = buf_pool_get(space, offset); |
2701 | @@ -574,7 +574,7 @@ |
2702 | for (i = 0; i < BUF_POOL_WATCH_SIZE; i++) { |
2703 | bpage = &buf_pool->watch[i]; |
2704 | |
2705 | -@@ -1523,10 +1566,12 @@ |
2706 | +@@ -1525,10 +1568,12 @@ |
2707 | bpage->space = space; |
2708 | bpage->offset = offset; |
2709 | bpage->buf_fix_count = 1; |
2710 | @@ -588,7 +588,7 @@ |
2711 | return(NULL); |
2712 | case BUF_BLOCK_ZIP_PAGE: |
2713 | ut_ad(bpage->in_page_hash); |
2714 | -@@ -1544,6 +1589,8 @@ |
2715 | +@@ -1546,6 +1591,8 @@ |
2716 | ut_error; |
2717 | |
2718 | /* Fix compiler warning */ |
2719 | @@ -597,7 +597,7 @@ |
2720 | return(NULL); |
2721 | } |
2722 | |
2723 | -@@ -1561,7 +1608,11 @@ |
2724 | +@@ -1563,7 +1610,11 @@ |
2725 | space, offset) */ |
2726 | buf_page_t* watch) /*!< in/out: sentinel for watch */ |
2727 | { |
2728 | @@ -610,7 +610,7 @@ |
2729 | |
2730 | HASH_DELETE(buf_page_t, hash, buf_pool->page_hash, fold, watch); |
2731 | ut_d(watch->in_page_hash = FALSE); |
2732 | -@@ -1583,28 +1634,31 @@ |
2733 | +@@ -1585,28 +1636,31 @@ |
2734 | buf_pool_t* buf_pool = buf_pool_get(space, offset); |
2735 | ulint fold = buf_page_address_fold(space, offset); |
2736 | |
2737 | @@ -646,7 +646,7 @@ |
2738 | } |
2739 | |
2740 | /****************************************************************//** |
2741 | -@@ -1624,14 +1678,16 @@ |
2742 | +@@ -1626,14 +1680,16 @@ |
2743 | buf_pool_t* buf_pool = buf_pool_get(space, offset); |
2744 | ulint fold = buf_page_address_fold(space, offset); |
2745 | |
2746 | @@ -665,7 +665,7 @@ |
2747 | |
2748 | return(ret); |
2749 | } |
2750 | -@@ -1648,13 +1704,15 @@ |
2751 | +@@ -1650,13 +1706,15 @@ |
2752 | { |
2753 | buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); |
2754 | |
2755 | @@ -683,7 +683,7 @@ |
2756 | } |
2757 | |
2758 | /********************************************************************//** |
2759 | -@@ -1678,14 +1736,20 @@ |
2760 | +@@ -1680,14 +1738,20 @@ |
2761 | ut_a(buf_page_in_file(bpage)); |
2762 | |
2763 | if (buf_page_peek_if_too_old(bpage)) { |
2764 | @@ -708,7 +708,7 @@ |
2765 | } |
2766 | } |
2767 | |
2768 | -@@ -1702,7 +1766,8 @@ |
2769 | +@@ -1704,7 +1768,8 @@ |
2770 | buf_block_t* block; |
2771 | buf_pool_t* buf_pool = buf_pool_get(space, offset); |
2772 | |
2773 | @@ -718,7 +718,7 @@ |
2774 | |
2775 | block = (buf_block_t*) buf_page_hash_get(buf_pool, space, offset); |
2776 | |
2777 | -@@ -1711,7 +1776,8 @@ |
2778 | +@@ -1713,7 +1778,8 @@ |
2779 | block->check_index_page_at_flush = FALSE; |
2780 | } |
2781 | |
2782 | @@ -728,7 +728,7 @@ |
2783 | } |
2784 | |
2785 | #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG |
2786 | -@@ -1731,7 +1797,8 @@ |
2787 | +@@ -1733,7 +1799,8 @@ |
2788 | buf_page_t* bpage; |
2789 | buf_pool_t* buf_pool = buf_pool_get(space, offset); |
2790 | |
2791 | @@ -738,7 +738,7 @@ |
2792 | |
2793 | bpage = buf_page_hash_get(buf_pool, space, offset); |
2794 | |
2795 | -@@ -1742,7 +1809,8 @@ |
2796 | +@@ -1744,7 +1811,8 @@ |
2797 | bpage->file_page_was_freed = TRUE; |
2798 | } |
2799 | |
2800 | @@ -748,7 +748,7 @@ |
2801 | |
2802 | return(bpage); |
2803 | } |
2804 | -@@ -1763,7 +1831,8 @@ |
2805 | +@@ -1765,7 +1833,8 @@ |
2806 | buf_page_t* bpage; |
2807 | buf_pool_t* buf_pool = buf_pool_get(space, offset); |
2808 | |
2809 | @@ -758,7 +758,7 @@ |
2810 | |
2811 | bpage = buf_page_hash_get(buf_pool, space, offset); |
2812 | |
2813 | -@@ -1772,7 +1841,8 @@ |
2814 | +@@ -1774,7 +1843,8 @@ |
2815 | bpage->file_page_was_freed = FALSE; |
2816 | } |
2817 | |
2818 | @@ -768,7 +768,7 @@ |
2819 | |
2820 | return(bpage); |
2821 | } |
2822 | -@@ -1804,8 +1874,9 @@ |
2823 | +@@ -1806,8 +1876,9 @@ |
2824 | buf_pool->stat.n_page_gets++; |
2825 | |
2826 | for (;;) { |
2827 | @@ -779,7 +779,7 @@ |
2828 | bpage = buf_page_hash_get(buf_pool, space, offset); |
2829 | if (bpage) { |
2830 | ut_ad(!buf_pool_watch_is_sentinel(buf_pool, bpage)); |
2831 | -@@ -1814,7 +1885,8 @@ |
2832 | +@@ -1816,7 +1887,8 @@ |
2833 | |
2834 | /* Page not in buf_pool: needs to be read from file */ |
2835 | |
2836 | @@ -789,7 +789,7 @@ |
2837 | |
2838 | buf_read_page(space, zip_size, offset); |
2839 | |
2840 | -@@ -1826,10 +1898,15 @@ |
2841 | +@@ -1828,10 +1900,15 @@ |
2842 | if (UNIV_UNLIKELY(!bpage->zip.data)) { |
2843 | /* There is no compressed page. */ |
2844 | err_exit: |
2845 | @@ -806,7 +806,7 @@ |
2846 | ut_ad(!buf_pool_watch_is_sentinel(buf_pool, bpage)); |
2847 | |
2848 | switch (buf_page_get_state(bpage)) { |
2849 | -@@ -1838,24 +1915,43 @@ |
2850 | +@@ -1840,24 +1917,43 @@ |
2851 | case BUF_BLOCK_MEMORY: |
2852 | case BUF_BLOCK_REMOVE_HASH: |
2853 | case BUF_BLOCK_ZIP_FREE: |
2854 | @@ -855,7 +855,7 @@ |
2855 | buf_block_buf_fix_inc((buf_block_t*) bpage, |
2856 | __FILE__, __LINE__); |
2857 | goto got_block; |
2858 | -@@ -1868,7 +1964,7 @@ |
2859 | +@@ -1870,7 +1966,7 @@ |
2860 | must_read = buf_page_get_io_fix(bpage) == BUF_IO_READ; |
2861 | access_time = buf_page_is_accessed(bpage); |
2862 | |
2863 | @@ -864,7 +864,7 @@ |
2864 | |
2865 | mutex_exit(block_mutex); |
2866 | |
2867 | -@@ -2179,7 +2275,7 @@ |
2868 | +@@ -2181,7 +2277,7 @@ |
2869 | const buf_block_t* block) /*!< in: pointer to block, |
2870 | not dereferenced */ |
2871 | { |
2872 | @@ -873,7 +873,7 @@ |
2873 | |
2874 | if (UNIV_UNLIKELY((((ulint) block) % sizeof *block) != 0)) { |
2875 | /* The pointer should be aligned. */ |
2876 | -@@ -2215,6 +2311,7 @@ |
2877 | +@@ -2217,6 +2313,7 @@ |
2878 | ulint fix_type; |
2879 | ibool must_read; |
2880 | ulint retries = 0; |
2881 | @@ -881,7 +881,7 @@ |
2882 | buf_pool_t* buf_pool = buf_pool_get(space, offset); |
2883 | |
2884 | ut_ad(mtr); |
2885 | -@@ -2248,18 +2345,24 @@ |
2886 | +@@ -2250,18 +2347,24 @@ |
2887 | fold = buf_page_address_fold(space, offset); |
2888 | loop: |
2889 | block = guess; |
2890 | @@ -908,7 +908,7 @@ |
2891 | block = guess = NULL; |
2892 | } else { |
2893 | ut_ad(!block->page.in_zip_hash); |
2894 | -@@ -2268,12 +2371,19 @@ |
2895 | +@@ -2270,12 +2373,19 @@ |
2896 | } |
2897 | |
2898 | if (block == NULL) { |
2899 | @@ -928,7 +928,7 @@ |
2900 | block = NULL; |
2901 | } |
2902 | |
2903 | -@@ -2285,12 +2395,14 @@ |
2904 | +@@ -2287,12 +2397,14 @@ |
2905 | space, offset, fold); |
2906 | |
2907 | if (UNIV_LIKELY_NULL(block)) { |
2908 | @@ -945,7 +945,7 @@ |
2909 | |
2910 | if (mode == BUF_GET_IF_IN_POOL |
2911 | || mode == BUF_PEEK_IF_IN_POOL |
2912 | -@@ -2343,7 +2455,8 @@ |
2913 | +@@ -2345,7 +2457,8 @@ |
2914 | /* The page is being read to buffer pool, |
2915 | but we cannot wait around for the read to |
2916 | complete. */ |
2917 | @@ -955,7 +955,7 @@ |
2918 | |
2919 | return(NULL); |
2920 | } |
2921 | -@@ -2353,38 +2466,49 @@ |
2922 | +@@ -2355,38 +2468,49 @@ |
2923 | ibool success; |
2924 | |
2925 | case BUF_BLOCK_FILE_PAGE: |
2926 | @@ -1012,7 +1012,7 @@ |
2927 | |
2928 | { |
2929 | buf_page_t* hash_bpage; |
2930 | -@@ -2397,35 +2521,47 @@ |
2931 | +@@ -2399,35 +2523,47 @@ |
2932 | while buf_pool->mutex was released. |
2933 | Free the block that was allocated. */ |
2934 | |
2935 | @@ -1066,7 +1066,7 @@ |
2936 | buf_block_init_low(block); |
2937 | block->lock_hash_val = lock_rec_hash(space, offset); |
2938 | |
2939 | -@@ -2435,7 +2571,7 @@ |
2940 | +@@ -2437,7 +2573,7 @@ |
2941 | if (buf_page_get_state(&block->page) |
2942 | == BUF_BLOCK_ZIP_PAGE) { |
2943 | #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG |
2944 | @@ -1075,7 +1075,7 @@ |
2945 | &block->page); |
2946 | #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ |
2947 | ut_ad(!block->page.in_flush_list); |
2948 | -@@ -2453,18 +2589,23 @@ |
2949 | +@@ -2455,18 +2591,23 @@ |
2950 | /* Insert at the front of unzip_LRU list */ |
2951 | buf_unzip_LRU_add_block(block, FALSE); |
2952 | |
2953 | @@ -1101,7 +1101,7 @@ |
2954 | buf_page_free_descriptor(bpage); |
2955 | |
2956 | /* Decompress the page and apply buffered operations |
2957 | -@@ -2478,12 +2619,15 @@ |
2958 | +@@ -2480,12 +2621,15 @@ |
2959 | } |
2960 | |
2961 | /* Unfix and unlatch the block. */ |
2962 | @@ -1120,7 +1120,7 @@ |
2963 | rw_lock_x_unlock(&block->lock); |
2964 | |
2965 | break; |
2966 | -@@ -2499,7 +2643,7 @@ |
2967 | +@@ -2501,7 +2645,7 @@ |
2968 | |
2969 | ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE); |
2970 | |
2971 | @@ -1129,7 +1129,7 @@ |
2972 | #if UNIV_WORD_SIZE == 4 |
2973 | /* On 32-bit systems, there is no padding in buf_page_t. On |
2974 | other systems, Valgrind could complain about uninitialized pad |
2975 | -@@ -2512,8 +2656,8 @@ |
2976 | +@@ -2514,8 +2658,8 @@ |
2977 | /* Try to evict the block from the buffer pool, to use the |
2978 | insert buffer (change buffer) as much as possible. */ |
2979 | |
2980 | @@ -1140,7 +1140,7 @@ |
2981 | if (mode == BUF_GET_IF_IN_POOL_OR_WATCH) { |
2982 | /* Set the watch, as it would have |
2983 | been set if the page were not in the |
2984 | -@@ -2522,6 +2666,9 @@ |
2985 | +@@ -2524,6 +2668,9 @@ |
2986 | space, offset, fold); |
2987 | |
2988 | if (UNIV_LIKELY_NULL(block)) { |
2989 | @@ -1150,7 +1150,7 @@ |
2990 | |
2991 | /* The page entered the buffer |
2992 | pool for some reason. Try to |
2993 | -@@ -2529,7 +2676,7 @@ |
2994 | +@@ -2531,7 +2678,7 @@ |
2995 | goto got_block; |
2996 | } |
2997 | } |
2998 | @@ -1159,7 +1159,7 @@ |
2999 | fprintf(stderr, |
3000 | "innodb_change_buffering_debug evict %u %u\n", |
3001 | (unsigned) space, (unsigned) offset); |
3002 | -@@ -2551,13 +2698,14 @@ |
3003 | +@@ -2553,13 +2700,14 @@ |
3004 | ut_a(mode == BUF_GET_POSSIBLY_FREED |
3005 | || !block->page.file_page_was_freed); |
3006 | #endif |
3007 | @@ -1176,7 +1176,7 @@ |
3008 | |
3009 | if (UNIV_LIKELY(mode != BUF_PEEK_IF_IN_POOL)) { |
3010 | buf_page_set_accessed_make_young(&block->page, access_time); |
3011 | -@@ -2790,9 +2938,11 @@ |
3012 | +@@ -2792,9 +2940,11 @@ |
3013 | buf_pool = buf_pool_from_block(block); |
3014 | |
3015 | if (mode == BUF_MAKE_YOUNG && buf_page_peek_if_too_old(&block->page)) { |
3016 | @@ -1190,7 +1190,7 @@ |
3017 | } else if (!buf_page_is_accessed(&block->page)) { |
3018 | /* Above, we do a dirty read on purpose, to avoid |
3019 | mutex contention. The field buf_page_t::access_time |
3020 | -@@ -2800,9 +2950,11 @@ |
3021 | +@@ -2802,9 +2952,11 @@ |
3022 | field must be protected by mutex, however. */ |
3023 | ulint time_ms = ut_time_ms(); |
3024 | |
3025 | @@ -1204,7 +1204,7 @@ |
3026 | } |
3027 | |
3028 | ut_ad(!ibuf_inside(mtr) || mode == BUF_KEEP_OLD); |
3029 | -@@ -2869,18 +3021,21 @@ |
3030 | +@@ -2871,18 +3023,21 @@ |
3031 | ut_ad(mtr); |
3032 | ut_ad(mtr->state == MTR_ACTIVE); |
3033 | |
3034 | @@ -1229,7 +1229,7 @@ |
3035 | |
3036 | #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG |
3037 | ut_a(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE); |
3038 | -@@ -2970,7 +3125,10 @@ |
3039 | +@@ -2972,7 +3127,10 @@ |
3040 | buf_page_t* hash_page; |
3041 | |
3042 | ut_ad(buf_pool == buf_pool_get(space, offset)); |
3043 | @@ -1241,7 +1241,7 @@ |
3044 | ut_ad(mutex_own(&(block->mutex))); |
3045 | ut_a(buf_block_get_state(block) != BUF_BLOCK_FILE_PAGE); |
3046 | |
3047 | -@@ -2999,11 +3157,14 @@ |
3048 | +@@ -3001,11 +3159,14 @@ |
3049 | if (UNIV_LIKELY(!hash_page)) { |
3050 | } else if (buf_pool_watch_is_sentinel(buf_pool, hash_page)) { |
3051 | /* Preserve the reference count. */ |
3052 | @@ -1257,7 +1257,7 @@ |
3053 | } else { |
3054 | fprintf(stderr, |
3055 | "InnoDB: Error: page %lu %lu already found" |
3056 | -@@ -3013,7 +3174,8 @@ |
3057 | +@@ -3015,7 +3176,8 @@ |
3058 | (const void*) hash_page, (const void*) block); |
3059 | #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG |
3060 | mutex_exit(&block->mutex); |
3061 | @@ -1267,7 +1267,7 @@ |
3062 | buf_print(); |
3063 | buf_LRU_print(); |
3064 | buf_validate(); |
3065 | -@@ -3096,7 +3258,9 @@ |
3066 | +@@ -3098,7 +3260,9 @@ |
3067 | |
3068 | fold = buf_page_address_fold(space, offset); |
3069 | |
3070 | @@ -1278,7 +1278,7 @@ |
3071 | |
3072 | watch_page = buf_page_hash_get_low(buf_pool, space, offset, fold); |
3073 | if (watch_page && !buf_pool_watch_is_sentinel(buf_pool, watch_page)) { |
3074 | -@@ -3105,9 +3269,15 @@ |
3075 | +@@ -3107,9 +3271,15 @@ |
3076 | err_exit: |
3077 | if (block) { |
3078 | mutex_enter(&block->mutex); |
3079 | @@ -1295,7 +1295,7 @@ |
3080 | |
3081 | bpage = NULL; |
3082 | goto func_exit; |
3083 | -@@ -3130,6 +3300,8 @@ |
3084 | +@@ -3132,6 +3302,8 @@ |
3085 | |
3086 | buf_page_init(buf_pool, space, offset, fold, block); |
3087 | |
3088 | @@ -1304,7 +1304,7 @@ |
3089 | /* The block must be put to the LRU list, to the old blocks */ |
3090 | buf_LRU_add_block(bpage, TRUE/* to old blocks */); |
3091 | |
3092 | -@@ -3157,7 +3329,7 @@ |
3093 | +@@ -3159,7 +3331,7 @@ |
3094 | been added to buf_pool->LRU and |
3095 | buf_pool->page_hash. */ |
3096 | mutex_exit(&block->mutex); |
3097 | @@ -1313,7 +1313,7 @@ |
3098 | mutex_enter(&block->mutex); |
3099 | block->page.zip.data = data; |
3100 | |
3101 | -@@ -3170,13 +3342,14 @@ |
3102 | +@@ -3172,13 +3344,14 @@ |
3103 | buf_unzip_LRU_add_block(block, TRUE); |
3104 | } |
3105 | |
3106 | @@ -1329,7 +1329,7 @@ |
3107 | |
3108 | /* If buf_buddy_alloc() allocated storage from the LRU list, |
3109 | it released and reacquired buf_pool->mutex. Thus, we must |
3110 | -@@ -3192,7 +3365,10 @@ |
3111 | +@@ -3194,7 +3367,10 @@ |
3112 | |
3113 | /* The block was added by some other thread. */ |
3114 | watch_page = NULL; |
3115 | @@ -1341,7 +1341,7 @@ |
3116 | |
3117 | bpage = NULL; |
3118 | goto func_exit; |
3119 | -@@ -3240,20 +3416,26 @@ |
3120 | +@@ -3242,20 +3418,26 @@ |
3121 | HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold, |
3122 | bpage); |
3123 | |
3124 | @@ -1369,7 +1369,7 @@ |
3125 | |
3126 | if (mode == BUF_READ_IBUF_PAGES_ONLY) { |
3127 | |
3128 | -@@ -3295,7 +3477,9 @@ |
3129 | +@@ -3297,7 +3479,9 @@ |
3130 | |
3131 | fold = buf_page_address_fold(space, offset); |
3132 | |
3133 | @@ -1380,7 +1380,7 @@ |
3134 | |
3135 | block = (buf_block_t*) buf_page_hash_get_low( |
3136 | buf_pool, space, offset, fold); |
3137 | -@@ -3311,7 +3495,9 @@ |
3138 | +@@ -3313,7 +3497,9 @@ |
3139 | #endif /* UNIV_DEBUG_FILE_ACCESSES || UNIV_DEBUG */ |
3140 | |
3141 | /* Page can be found in buf_pool */ |
3142 | @@ -1391,7 +1391,7 @@ |
3143 | |
3144 | buf_block_free(free_block); |
3145 | |
3146 | -@@ -3333,6 +3519,7 @@ |
3147 | +@@ -3335,6 +3521,7 @@ |
3148 | mutex_enter(&block->mutex); |
3149 | |
3150 | buf_page_init(buf_pool, space, offset, fold, block); |
3151 | @@ -1399,7 +1399,7 @@ |
3152 | |
3153 | /* The block must be put to the LRU list */ |
3154 | buf_LRU_add_block(&block->page, FALSE); |
3155 | -@@ -3359,7 +3546,7 @@ |
3156 | +@@ -3361,7 +3548,7 @@ |
3157 | the reacquisition of buf_pool->mutex. We also must |
3158 | defer this operation until after the block descriptor |
3159 | has been added to buf_pool->LRU and buf_pool->page_hash. */ |
3160 | @@ -1408,7 +1408,7 @@ |
3161 | mutex_enter(&block->mutex); |
3162 | block->page.zip.data = data; |
3163 | |
3164 | -@@ -3377,7 +3564,8 @@ |
3165 | +@@ -3379,7 +3566,8 @@ |
3166 | |
3167 | buf_page_set_accessed(&block->page, time_ms); |
3168 | |
3169 | @@ -1418,7 +1418,7 @@ |
3170 | |
3171 | mtr_memo_push(mtr, block, MTR_MEMO_BUF_FIX); |
3172 | |
3173 | -@@ -3432,7 +3620,9 @@ |
3174 | +@@ -3434,7 +3622,9 @@ |
3175 | ibool ret = TRUE; |
3176 | |
3177 | /* First unfix and release lock on the bpage */ |
3178 | @@ -1429,7 +1429,7 @@ |
3179 | mutex_enter(buf_page_get_mutex(bpage)); |
3180 | ut_ad(buf_page_get_io_fix(bpage) == BUF_IO_READ); |
3181 | ut_ad(bpage->buf_fix_count == 0); |
3182 | -@@ -3453,11 +3643,15 @@ |
3183 | +@@ -3455,11 +3645,15 @@ |
3184 | ret = FALSE; |
3185 | } |
3186 | |
3187 | @@ -1446,7 +1446,7 @@ |
3188 | |
3189 | return(ret); |
3190 | } |
3191 | -@@ -3475,6 +3669,8 @@ |
3192 | +@@ -3477,6 +3671,8 @@ |
3193 | buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); |
3194 | const ibool uncompressed = (buf_page_get_state(bpage) |
3195 | == BUF_BLOCK_FILE_PAGE); |
3196 | @@ -1455,7 +1455,7 @@ |
3197 | |
3198 | ut_a(buf_page_in_file(bpage)); |
3199 | |
3200 | -@@ -3617,8 +3813,26 @@ |
3201 | +@@ -3619,8 +3815,26 @@ |
3202 | } |
3203 | } |
3204 | |
3205 | @@ -1483,7 +1483,7 @@ |
3206 | |
3207 | #ifdef UNIV_IBUF_COUNT_DEBUG |
3208 | if (io_type == BUF_IO_WRITE || uncompressed) { |
3209 | -@@ -3641,6 +3855,7 @@ |
3210 | +@@ -3643,6 +3857,7 @@ |
3211 | the x-latch to this OS thread: do not let this confuse you in |
3212 | debugging! */ |
3213 | |
3214 | @@ -1491,7 +1491,7 @@ |
3215 | ut_ad(buf_pool->n_pend_reads > 0); |
3216 | buf_pool->n_pend_reads--; |
3217 | buf_pool->stat.n_pages_read++; |
3218 | -@@ -3658,6 +3873,9 @@ |
3219 | +@@ -3660,6 +3875,9 @@ |
3220 | |
3221 | buf_flush_write_complete(bpage); |
3222 | |
3223 | @@ -1501,7 +1501,7 @@ |
3224 | if (uncompressed) { |
3225 | rw_lock_s_unlock_gen(&((buf_block_t*) bpage)->lock, |
3226 | BUF_IO_WRITE); |
3227 | -@@ -3680,8 +3898,8 @@ |
3228 | +@@ -3682,8 +3900,8 @@ |
3229 | } |
3230 | #endif /* UNIV_DEBUG */ |
3231 | |
3232 | @@ -1511,7 +1511,7 @@ |
3233 | } |
3234 | |
3235 | /*********************************************************************//** |
3236 | -@@ -3698,7 +3916,9 @@ |
3237 | +@@ -3700,7 +3918,9 @@ |
3238 | |
3239 | ut_ad(buf_pool); |
3240 | |
3241 | @@ -1522,7 +1522,7 @@ |
3242 | |
3243 | chunk = buf_pool->chunks; |
3244 | |
3245 | -@@ -3715,7 +3935,9 @@ |
3246 | +@@ -3717,7 +3937,9 @@ |
3247 | } |
3248 | } |
3249 | |
3250 | @@ -1533,7 +1533,7 @@ |
3251 | |
3252 | return(TRUE); |
3253 | } |
3254 | -@@ -3763,7 +3985,8 @@ |
3255 | +@@ -3765,7 +3987,8 @@ |
3256 | freed = buf_LRU_search_and_free_block(buf_pool, 100); |
3257 | } |
3258 | |
3259 | @@ -1543,7 +1543,7 @@ |
3260 | |
3261 | ut_ad(UT_LIST_GET_LEN(buf_pool->LRU) == 0); |
3262 | ut_ad(UT_LIST_GET_LEN(buf_pool->unzip_LRU) == 0); |
3263 | -@@ -3776,7 +3999,8 @@ |
3264 | +@@ -3778,7 +4001,8 @@ |
3265 | memset(&buf_pool->stat, 0x00, sizeof(buf_pool->stat)); |
3266 | buf_refresh_io_stats(buf_pool); |
3267 | |
3268 | @@ -1553,7 +1553,7 @@ |
3269 | } |
3270 | |
3271 | /*********************************************************************//** |
3272 | -@@ -3818,7 +4042,10 @@ |
3273 | +@@ -3820,7 +4044,10 @@ |
3274 | |
3275 | ut_ad(buf_pool); |
3276 | |
3277 | @@ -1565,7 +1565,7 @@ |
3278 | |
3279 | chunk = buf_pool->chunks; |
3280 | |
3281 | -@@ -3913,7 +4140,7 @@ |
3282 | +@@ -3918,7 +4145,7 @@ |
3283 | /* Check clean compressed-only blocks. */ |
3284 | |
3285 | for (b = UT_LIST_GET_FIRST(buf_pool->zip_clean); b; |
3286 | @@ -1574,7 +1574,7 @@ |
3287 | ut_a(buf_page_get_state(b) == BUF_BLOCK_ZIP_PAGE); |
3288 | switch (buf_page_get_io_fix(b)) { |
3289 | case BUF_IO_NONE: |
3290 | -@@ -3944,7 +4171,7 @@ |
3291 | +@@ -3950,7 +4177,7 @@ |
3292 | |
3293 | buf_flush_list_mutex_enter(buf_pool); |
3294 | for (b = UT_LIST_GET_FIRST(buf_pool->flush_list); b; |
3295 | @@ -1583,7 +1583,7 @@ |
3296 | ut_ad(b->in_flush_list); |
3297 | ut_a(b->oldest_modification); |
3298 | n_flush++; |
3299 | -@@ -4003,6 +4230,8 @@ |
3300 | +@@ -4010,6 +4237,8 @@ |
3301 | } |
3302 | |
3303 | ut_a(UT_LIST_GET_LEN(buf_pool->LRU) == n_lru); |
3304 | @@ -1592,7 +1592,7 @@ |
3305 | if (UT_LIST_GET_LEN(buf_pool->free) != n_free) { |
3306 | fprintf(stderr, "Free list len %lu, free blocks %lu\n", |
3307 | (ulong) UT_LIST_GET_LEN(buf_pool->free), |
3308 | -@@ -4013,8 +4242,11 @@ |
3309 | +@@ -4020,8 +4249,11 @@ |
3310 | ut_a(buf_pool->n_flush[BUF_FLUSH_SINGLE_PAGE] == n_single_flush); |
3311 | ut_a(buf_pool->n_flush[BUF_FLUSH_LIST] == n_list_flush); |
3312 | ut_a(buf_pool->n_flush[BUF_FLUSH_LRU] == n_lru_flush); |
3313 | @@ -1605,7 +1605,7 @@ |
3314 | |
3315 | ut_a(buf_LRU_validate()); |
3316 | ut_a(buf_flush_validate(buf_pool)); |
3317 | -@@ -4070,7 +4302,9 @@ |
3318 | +@@ -4077,7 +4309,9 @@ |
3319 | index_ids = mem_alloc(size * sizeof *index_ids); |
3320 | counts = mem_alloc(sizeof(ulint) * size); |
3321 | |
3322 | @@ -1616,7 +1616,7 @@ |
3323 | buf_flush_list_mutex_enter(buf_pool); |
3324 | |
3325 | fprintf(stderr, |
3326 | -@@ -4139,7 +4373,9 @@ |
3327 | +@@ -4146,7 +4380,9 @@ |
3328 | } |
3329 | } |
3330 | |
3331 | @@ -1627,7 +1627,7 @@ |
3332 | |
3333 | for (i = 0; i < n_found; i++) { |
3334 | index = dict_index_get_if_in_cache(index_ids[i]); |
3335 | -@@ -4196,7 +4432,7 @@ |
3336 | +@@ -4203,7 +4439,7 @@ |
3337 | buf_chunk_t* chunk; |
3338 | ulint fixed_pages_number = 0; |
3339 | |
3340 | @@ -1636,7 +1636,7 @@ |
3341 | |
3342 | chunk = buf_pool->chunks; |
3343 | |
3344 | -@@ -4230,7 +4466,7 @@ |
3345 | +@@ -4237,7 +4473,7 @@ |
3346 | /* Traverse the lists of clean and dirty compressed-only blocks. */ |
3347 | |
3348 | for (b = UT_LIST_GET_FIRST(buf_pool->zip_clean); b; |
3349 | @@ -1645,7 +1645,7 @@ |
3350 | ut_a(buf_page_get_state(b) == BUF_BLOCK_ZIP_PAGE); |
3351 | ut_a(buf_page_get_io_fix(b) != BUF_IO_WRITE); |
3352 | |
3353 | -@@ -4242,7 +4478,7 @@ |
3354 | +@@ -4249,7 +4485,7 @@ |
3355 | |
3356 | buf_flush_list_mutex_enter(buf_pool); |
3357 | for (b = UT_LIST_GET_FIRST(buf_pool->flush_list); b; |
3358 | @@ -1654,7 +1654,7 @@ |
3359 | ut_ad(b->in_flush_list); |
3360 | |
3361 | switch (buf_page_get_state(b)) { |
3362 | -@@ -4268,7 +4504,7 @@ |
3363 | +@@ -4275,7 +4511,7 @@ |
3364 | |
3365 | buf_flush_list_mutex_exit(buf_pool); |
3366 | mutex_exit(&buf_pool->zip_mutex); |
3367 | @@ -1663,7 +1663,7 @@ |
3368 | |
3369 | return(fixed_pages_number); |
3370 | } |
3371 | -@@ -4426,6 +4662,8 @@ |
3372 | +@@ -4433,6 +4669,8 @@ |
3373 | /* Find appropriate pool_info to store stats for this buffer pool */ |
3374 | pool_info = &all_pool_info[pool_id]; |
3375 | |
3376 | @@ -1672,7 +1672,7 @@ |
3377 | buf_pool_mutex_enter(buf_pool); |
3378 | buf_flush_list_mutex_enter(buf_pool); |
3379 | |
3380 | -@@ -4541,6 +4779,8 @@ |
3381 | +@@ -4548,6 +4786,8 @@ |
3382 | pool_info->unzip_cur = buf_LRU_stat_cur.unzip; |
3383 | |
3384 | buf_refresh_io_stats(buf_pool); |
3385 | @@ -1681,7 +1681,7 @@ |
3386 | buf_pool_mutex_exit(buf_pool); |
3387 | } |
3388 | |
3389 | -@@ -4785,11 +5025,13 @@ |
3390 | +@@ -4792,11 +5032,13 @@ |
3391 | { |
3392 | ulint len; |
3393 | |
3394 | @@ -2127,7 +2127,7 @@ |
3395 | } |
3396 | --- a/storage/innobase/buf/buf0lru.c |
3397 | +++ b/storage/innobase/buf/buf0lru.c |
3398 | -@@ -143,8 +143,9 @@ |
3399 | +@@ -147,8 +147,9 @@ |
3400 | void |
3401 | buf_LRU_block_free_hashed_page( |
3402 | /*===========================*/ |
3403 | @@ -2138,7 +2138,7 @@ |
3404 | |
3405 | /******************************************************************//** |
3406 | Determines if the unzip_LRU list should be used for evicting a victim |
3407 | -@@ -154,15 +155,20 @@ |
3408 | +@@ -158,15 +159,20 @@ |
3409 | ibool |
3410 | buf_LRU_evict_from_unzip_LRU( |
3411 | /*=========================*/ |
3412 | @@ -2161,7 +2161,7 @@ |
3413 | return(FALSE); |
3414 | } |
3415 | |
3416 | -@@ -171,14 +177,20 @@ |
3417 | +@@ -175,14 +181,20 @@ |
3418 | decompressed pages in the buffer pool. */ |
3419 | if (UT_LIST_GET_LEN(buf_pool->unzip_LRU) |
3420 | <= UT_LIST_GET_LEN(buf_pool->LRU) / 10) { |
3421 | @@ -2182,9 +2182,9 @@ |
3422 | |
3423 | /* Calculate the average over past intervals, and add the values |
3424 | of the current interval. */ |
3425 | -@@ -246,18 +258,25 @@ |
3426 | +@@ -250,18 +262,25 @@ |
3427 | page_arr = ut_malloc( |
3428 | - sizeof(ulint) * BUF_LRU_DROP_SEARCH_HASH_SIZE); |
3429 | + sizeof(ulint) * BUF_LRU_DROP_SEARCH_SIZE); |
3430 | |
3431 | - buf_pool_mutex_enter(buf_pool); |
3432 | + //buf_pool_mutex_enter(buf_pool); |
3433 | @@ -2209,7 +2209,7 @@ |
3434 | ut_a(buf_page_in_file(bpage)); |
3435 | |
3436 | if (buf_page_get_state(bpage) != BUF_BLOCK_FILE_PAGE |
3437 | -@@ -266,23 +285,27 @@ |
3438 | +@@ -270,24 +289,30 @@ |
3439 | /* Compressed pages are never hashed. |
3440 | Skip blocks of other tablespaces. |
3441 | Skip I/O-fixed blocks (to be dealt with later). */ |
3442 | @@ -2234,12 +2234,15 @@ |
3443 | /* Store the page number so that we can drop the hash |
3444 | index in a batch later. */ |
3445 | page_arr[num_entries] = bpage->offset; |
3446 | ++ |
3447 | + mutex_exit(block_mutex); |
3448 | + |
3449 | - ut_a(num_entries < BUF_LRU_DROP_SEARCH_HASH_SIZE); |
3450 | + ut_a(num_entries < BUF_LRU_DROP_SEARCH_SIZE); |
3451 | ++ |
3452 | ++num_entries; |
3453 | |
3454 | -@@ -292,14 +315,16 @@ |
3455 | + if (num_entries < BUF_LRU_DROP_SEARCH_SIZE) { |
3456 | +@@ -296,14 +321,16 @@ |
3457 | |
3458 | /* Array full. We release the buf_pool->mutex to obey |
3459 | the latching order. */ |
3460 | @@ -2258,7 +2261,7 @@ |
3461 | |
3462 | /* Note that we released the buf_pool mutex above |
3463 | after reading the prev_bpage during processing of a |
3464 | -@@ -317,13 +342,23 @@ |
3465 | +@@ -321,13 +348,23 @@ |
3466 | /* If, however, bpage has been removed from LRU list |
3467 | to the free list then we should restart the scan. |
3468 | bpage->state is protected by buf_pool mutex. */ |
3469 | @@ -2283,67 +2286,73 @@ |
3470 | |
3471 | /* Drop any remaining batch of search hashed pages. */ |
3472 | buf_LRU_drop_page_hash_batch(id, zip_size, page_arr, num_entries); |
3473 | -@@ -345,7 +380,9 @@ |
3474 | - ibool all_freed; |
3475 | +@@ -351,7 +388,9 @@ |
3476 | + ulint i; |
3477 | |
3478 | scan_again: |
3479 | - buf_pool_mutex_enter(buf_pool); |
3480 | + //buf_pool_mutex_enter(buf_pool); |
3481 | + mutex_enter(&buf_pool->LRU_list_mutex); |
3482 | + rw_lock_x_lock(&buf_pool->page_hash_latch); |
3483 | + buf_flush_list_mutex_enter(buf_pool); |
3484 | |
3485 | all_freed = TRUE; |
3486 | - |
3487 | -@@ -375,8 +412,15 @@ |
3488 | - all_freed = FALSE; |
3489 | - goto next_page; |
3490 | - } else { |
3491 | -- block_mutex = buf_page_get_mutex(bpage); |
3492 | -- mutex_enter(block_mutex); |
3493 | -+ block_mutex = buf_page_get_mutex_enter(bpage); |
3494 | -+ |
3495 | -+ if (!block_mutex) { |
3496 | -+ /* It may be impossible case... |
3497 | -+ Something wrong, so will be scan_again */ |
3498 | -+ |
3499 | -+ all_freed = FALSE; |
3500 | -+ goto next_page; |
3501 | -+ } |
3502 | - |
3503 | - if (bpage->buf_fix_count > 0) { |
3504 | - |
3505 | -@@ -409,7 +453,9 @@ |
3506 | - ulint page_no; |
3507 | - ulint zip_size; |
3508 | - |
3509 | -- buf_pool_mutex_exit(buf_pool); |
3510 | -+ //buf_pool_mutex_exit(buf_pool); |
3511 | -+ mutex_exit(&buf_pool->LRU_list_mutex); |
3512 | -+ rw_lock_x_unlock(&buf_pool->page_hash_latch); |
3513 | - |
3514 | - zip_size = buf_page_get_zip_size(bpage); |
3515 | - page_no = buf_page_get_page_no(bpage); |
3516 | -@@ -433,7 +479,7 @@ |
3517 | - |
3518 | - if (buf_LRU_block_remove_hashed_page(bpage, TRUE) |
3519 | - != BUF_BLOCK_ZIP_FREE) { |
3520 | -- buf_LRU_block_free_hashed_page((buf_block_t*) bpage); |
3521 | -+ buf_LRU_block_free_hashed_page((buf_block_t*) bpage, TRUE); |
3522 | +@@ -364,7 +403,7 @@ |
3523 | + |
3524 | + ut_a(buf_page_in_file(bpage)); |
3525 | + |
3526 | +- prev_bpage = UT_LIST_GET_PREV(list, bpage); |
3527 | ++ prev_bpage = UT_LIST_GET_PREV(flush_list, bpage); |
3528 | + |
3529 | + /* bpage->space and bpage->io_fix are protected by |
3530 | + buf_pool->mutex and block_mutex. It is safe to check |
3531 | +@@ -388,8 +427,14 @@ |
3532 | + will stay in the flush_list because buf_flush_remove() |
3533 | + needs buf_pool->mutex as well. */ |
3534 | + buf_flush_list_mutex_exit(buf_pool); |
3535 | +- block_mutex = buf_page_get_mutex(bpage); |
3536 | +- mutex_enter(block_mutex); |
3537 | ++ block_mutex = buf_page_get_mutex_enter(bpage); |
3538 | ++ |
3539 | ++ if (!block_mutex) { |
3540 | ++ /* It may be impossible case... |
3541 | ++ Something wrong, so will be scan_again */ |
3542 | ++ all_freed = FALSE; |
3543 | ++ goto next_page; |
3544 | ++ } |
3545 | + |
3546 | + if (bpage->buf_fix_count > 0) { |
3547 | mutex_exit(block_mutex); |
3548 | - } else { |
3549 | - /* The block_mutex should have been released |
3550 | -@@ -446,7 +492,9 @@ |
3551 | - bpage = prev_bpage; |
3552 | +@@ -440,9 +485,15 @@ |
3553 | + mutex_exit(block_mutex); |
3554 | + |
3555 | + /* Now it is safe to release the buf_pool->mutex. */ |
3556 | +- buf_pool_mutex_exit(buf_pool); |
3557 | ++ //buf_pool_mutex_exit(buf_pool); |
3558 | ++ mutex_exit(&buf_pool->LRU_list_mutex); |
3559 | ++ rw_lock_x_unlock(&buf_pool->page_hash_latch); |
3560 | ++ |
3561 | + os_thread_yield(); |
3562 | +- buf_pool_mutex_enter(buf_pool); |
3563 | ++ //buf_pool_mutex_enter(buf_pool); |
3564 | ++ mutex_enter(&buf_pool->LRU_list_mutex); |
3565 | ++ rw_lock_x_lock(&buf_pool->page_hash_latch); |
3566 | ++ |
3567 | + |
3568 | + mutex_enter(block_mutex); |
3569 | + buf_page_unset_sticky(bpage); |
3570 | +@@ -454,7 +505,9 @@ |
3571 | + i = 0; |
3572 | } |
3573 | |
3574 | - buf_pool_mutex_exit(buf_pool); |
3575 | -+ //buf_pool_mutex_exit(buf_pool); |
3576 | ++// buf_pool_mutex_exit(buf_pool); |
3577 | + mutex_exit(&buf_pool->LRU_list_mutex); |
3578 | + rw_lock_x_unlock(&buf_pool->page_hash_latch); |
3579 | + buf_flush_list_mutex_exit(buf_pool); |
3580 | |
3581 | - if (!all_freed) { |
3582 | - os_thread_sleep(20000); |
3583 | -@@ -493,7 +541,9 @@ |
3584 | + ut_ad(buf_flush_validate(buf_pool)); |
3585 | +@@ -504,7 +557,9 @@ |
3586 | buf_page_t* b; |
3587 | buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); |
3588 | |
3589 | @@ -2354,7 +2363,7 @@ |
3590 | ut_ad(buf_page_get_state(bpage) == BUF_BLOCK_ZIP_PAGE); |
3591 | |
3592 | /* Find the first successor of bpage in the LRU list |
3593 | -@@ -501,17 +551,17 @@ |
3594 | +@@ -512,17 +567,17 @@ |
3595 | b = bpage; |
3596 | do { |
3597 | b = UT_LIST_GET_NEXT(LRU, b); |
3598 | @@ -2376,7 +2385,7 @@ |
3599 | } |
3600 | } |
3601 | #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ |
3602 | -@@ -525,18 +575,19 @@ |
3603 | +@@ -536,18 +591,19 @@ |
3604 | buf_LRU_free_from_unzip_LRU_list( |
3605 | /*=============================*/ |
3606 | buf_pool_t* buf_pool, /*!< in: buffer pool instance */ |
3607 | @@ -2398,7 +2407,7 @@ |
3608 | |
3609 | /* Theoratically it should be much easier to find a victim |
3610 | from unzip_LRU as we can choose even a dirty block (as we'll |
3611 | -@@ -546,7 +597,7 @@ |
3612 | +@@ -557,7 +613,7 @@ |
3613 | if we have done five iterations so far. */ |
3614 | |
3615 | if (UNIV_UNLIKELY(n_iterations >= 5) |
3616 | @@ -2407,7 +2416,7 @@ |
3617 | |
3618 | return(FALSE); |
3619 | } |
3620 | -@@ -554,18 +605,25 @@ |
3621 | +@@ -565,18 +621,25 @@ |
3622 | distance = 100 + (n_iterations |
3623 | * UT_LIST_GET_LEN(buf_pool->unzip_LRU)) / 5; |
3624 | |
3625 | @@ -2435,7 +2444,7 @@ |
3626 | mutex_exit(&block->mutex); |
3627 | |
3628 | if (freed) { |
3629 | -@@ -584,35 +642,46 @@ |
3630 | +@@ -595,35 +658,46 @@ |
3631 | buf_LRU_free_from_common_LRU_list( |
3632 | /*==============================*/ |
3633 | buf_pool_t* buf_pool, |
3634 | @@ -2487,7 +2496,7 @@ |
3635 | mutex_exit(block_mutex); |
3636 | |
3637 | if (freed) { |
3638 | -@@ -649,16 +718,23 @@ |
3639 | +@@ -660,16 +734,23 @@ |
3640 | n_iterations / 5 of the unzip_LRU list. */ |
3641 | { |
3642 | ibool freed = FALSE; |
3643 | @@ -2496,12 +2505,12 @@ |
3644 | - buf_pool_mutex_enter(buf_pool); |
3645 | + if (UT_LIST_GET_LEN(buf_pool->unzip_LRU)) |
3646 | + have_LRU_mutex = TRUE; |
3647 | ++ |
3648 | ++ //buf_pool_mutex_enter(buf_pool); |
3649 | ++ if (have_LRU_mutex) |
3650 | ++ mutex_enter(&buf_pool->LRU_list_mutex); |
3651 | |
3652 | - freed = buf_LRU_free_from_unzip_LRU_list(buf_pool, n_iterations); |
3653 | -+ //buf_pool_mutex_enter(buf_pool); |
3654 | -+ if (have_LRU_mutex) |
3655 | -+ mutex_enter(&buf_pool->LRU_list_mutex); |
3656 | -+ |
3657 | + freed = buf_LRU_free_from_unzip_LRU_list(buf_pool, n_iterations, have_LRU_mutex); |
3658 | |
3659 | if (!freed) { |
3660 | @@ -2514,7 +2523,7 @@ |
3661 | if (!freed) { |
3662 | buf_pool->LRU_flush_ended = 0; |
3663 | } else if (buf_pool->LRU_flush_ended > 0) { |
3664 | -@@ -666,6 +742,8 @@ |
3665 | +@@ -677,6 +758,8 @@ |
3666 | } |
3667 | |
3668 | buf_pool_mutex_exit(buf_pool); |
3669 | @@ -2523,7 +2532,7 @@ |
3670 | |
3671 | return(freed); |
3672 | } |
3673 | -@@ -726,7 +804,9 @@ |
3674 | +@@ -737,7 +820,9 @@ |
3675 | |
3676 | buf_pool = buf_pool_from_array(i); |
3677 | |
3678 | @@ -2534,7 +2543,7 @@ |
3679 | |
3680 | if (!recv_recovery_on |
3681 | && UT_LIST_GET_LEN(buf_pool->free) |
3682 | -@@ -736,7 +816,9 @@ |
3683 | +@@ -747,7 +832,9 @@ |
3684 | ret = TRUE; |
3685 | } |
3686 | |
3687 | @@ -2545,7 +2554,7 @@ |
3688 | } |
3689 | |
3690 | return(ret); |
3691 | -@@ -754,9 +836,10 @@ |
3692 | +@@ -765,9 +852,10 @@ |
3693 | { |
3694 | buf_block_t* block; |
3695 | |
3696 | @@ -2558,7 +2567,7 @@ |
3697 | |
3698 | if (block) { |
3699 | |
3700 | -@@ -765,7 +848,9 @@ |
3701 | +@@ -776,7 +864,9 @@ |
3702 | ut_ad(!block->page.in_flush_list); |
3703 | ut_ad(!block->page.in_LRU_list); |
3704 | ut_a(!buf_page_in_file(&block->page)); |
3705 | @@ -2569,7 +2578,7 @@ |
3706 | |
3707 | mutex_enter(&block->mutex); |
3708 | |
3709 | -@@ -775,6 +860,8 @@ |
3710 | +@@ -786,6 +876,8 @@ |
3711 | ut_ad(buf_pool_from_block(block) == buf_pool); |
3712 | |
3713 | mutex_exit(&block->mutex); |
3714 | @@ -2578,7 +2587,7 @@ |
3715 | } |
3716 | |
3717 | return(block); |
3718 | -@@ -797,7 +884,7 @@ |
3719 | +@@ -808,7 +900,7 @@ |
3720 | ibool mon_value_was = FALSE; |
3721 | ibool started_monitor = FALSE; |
3722 | loop: |
3723 | @@ -2587,7 +2596,7 @@ |
3724 | |
3725 | if (!recv_recovery_on && UT_LIST_GET_LEN(buf_pool->free) |
3726 | + UT_LIST_GET_LEN(buf_pool->LRU) < buf_pool->curr_size / 20) { |
3727 | -@@ -865,7 +952,7 @@ |
3728 | +@@ -876,7 +968,7 @@ |
3729 | |
3730 | /* If there is a block in the free list, take it */ |
3731 | block = buf_LRU_get_free_only(buf_pool); |
3732 | @@ -2596,7 +2605,7 @@ |
3733 | |
3734 | if (block) { |
3735 | ut_ad(buf_pool_from_block(block) == buf_pool); |
3736 | -@@ -965,7 +1052,8 @@ |
3737 | +@@ -976,7 +1068,8 @@ |
3738 | ulint new_len; |
3739 | |
3740 | ut_a(buf_pool->LRU_old); |
3741 | @@ -2606,7 +2615,7 @@ |
3742 | ut_ad(buf_pool->LRU_old_ratio >= BUF_LRU_OLD_RATIO_MIN); |
3743 | ut_ad(buf_pool->LRU_old_ratio <= BUF_LRU_OLD_RATIO_MAX); |
3744 | #if BUF_LRU_OLD_RATIO_MIN * BUF_LRU_OLD_MIN_LEN <= BUF_LRU_OLD_RATIO_DIV * (BUF_LRU_OLD_TOLERANCE + 5) |
3745 | -@@ -1031,7 +1119,8 @@ |
3746 | +@@ -1042,7 +1135,8 @@ |
3747 | { |
3748 | buf_page_t* bpage; |
3749 | |
3750 | @@ -2616,7 +2625,7 @@ |
3751 | ut_a(UT_LIST_GET_LEN(buf_pool->LRU) == BUF_LRU_OLD_MIN_LEN); |
3752 | |
3753 | /* We first initialize all blocks in the LRU list as old and then use |
3754 | -@@ -1066,13 +1155,14 @@ |
3755 | +@@ -1077,13 +1171,14 @@ |
3756 | ut_ad(buf_pool); |
3757 | ut_ad(bpage); |
3758 | ut_ad(buf_page_in_file(bpage)); |
3759 | @@ -2633,7 +2642,7 @@ |
3760 | |
3761 | UT_LIST_REMOVE(unzip_LRU, buf_pool->unzip_LRU, block); |
3762 | } |
3763 | -@@ -1090,7 +1180,8 @@ |
3764 | +@@ -1101,7 +1196,8 @@ |
3765 | |
3766 | ut_ad(buf_pool); |
3767 | ut_ad(bpage); |
3768 | @@ -2643,7 +2652,7 @@ |
3769 | |
3770 | ut_a(buf_page_in_file(bpage)); |
3771 | |
3772 | -@@ -1167,12 +1258,13 @@ |
3773 | +@@ -1178,12 +1274,13 @@ |
3774 | |
3775 | ut_ad(buf_pool); |
3776 | ut_ad(block); |
3777 | @@ -2659,7 +2668,7 @@ |
3778 | |
3779 | if (old) { |
3780 | UT_LIST_ADD_LAST(unzip_LRU, buf_pool->unzip_LRU, block); |
3781 | -@@ -1193,7 +1285,8 @@ |
3782 | +@@ -1204,7 +1301,8 @@ |
3783 | |
3784 | ut_ad(buf_pool); |
3785 | ut_ad(bpage); |
3786 | @@ -2669,7 +2678,7 @@ |
3787 | |
3788 | ut_a(buf_page_in_file(bpage)); |
3789 | |
3790 | -@@ -1244,7 +1337,8 @@ |
3791 | +@@ -1255,7 +1353,8 @@ |
3792 | |
3793 | ut_ad(buf_pool); |
3794 | ut_ad(bpage); |
3795 | @@ -2679,7 +2688,7 @@ |
3796 | |
3797 | ut_a(buf_page_in_file(bpage)); |
3798 | ut_ad(!bpage->in_LRU_list); |
3799 | -@@ -1323,7 +1417,8 @@ |
3800 | +@@ -1334,7 +1433,8 @@ |
3801 | { |
3802 | buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); |
3803 | |
3804 | @@ -2689,7 +2698,7 @@ |
3805 | |
3806 | if (bpage->old) { |
3807 | buf_pool->stat.n_pages_made_young++; |
3808 | -@@ -1362,17 +1457,18 @@ |
3809 | +@@ -1373,17 +1473,18 @@ |
3810 | buf_LRU_free_block( |
3811 | /*===============*/ |
3812 | buf_page_t* bpage, /*!< in: block to be freed */ |
3813 | @@ -2711,7 +2720,7 @@ |
3814 | ut_ad(!bpage->in_flush_list == !bpage->oldest_modification); |
3815 | #if UNIV_WORD_SIZE == 4 |
3816 | /* On 32-bit systems, there is no padding in buf_page_t. On |
3817 | -@@ -1381,7 +1477,7 @@ |
3818 | +@@ -1392,7 +1493,7 @@ |
3819 | UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage); |
3820 | #endif |
3821 | |
3822 | @@ -2720,7 +2729,7 @@ |
3823 | |
3824 | /* Do not free buffer-fixed or I/O-fixed blocks. */ |
3825 | return(FALSE); |
3826 | -@@ -1415,7 +1511,7 @@ |
3827 | +@@ -1426,7 +1527,7 @@ |
3828 | alloc: |
3829 | b = buf_page_alloc_descriptor(); |
3830 | ut_a(b); |
3831 | @@ -2729,7 +2738,7 @@ |
3832 | } |
3833 | |
3834 | #ifdef UNIV_DEBUG |
3835 | -@@ -1426,6 +1522,39 @@ |
3836 | +@@ -1437,6 +1538,39 @@ |
3837 | } |
3838 | #endif /* UNIV_DEBUG */ |
3839 | |
3840 | @@ -2769,7 +2778,7 @@ |
3841 | if (buf_LRU_block_remove_hashed_page(bpage, zip) |
3842 | != BUF_BLOCK_ZIP_FREE) { |
3843 | ut_a(bpage->buf_fix_count == 0); |
3844 | -@@ -1442,6 +1571,10 @@ |
3845 | +@@ -1453,6 +1587,10 @@ |
3846 | |
3847 | ut_a(!hash_b); |
3848 | |
3849 | @@ -2780,7 +2789,7 @@ |
3850 | b->state = b->oldest_modification |
3851 | ? BUF_BLOCK_ZIP_DIRTY |
3852 | : BUF_BLOCK_ZIP_PAGE; |
3853 | -@@ -1517,6 +1650,7 @@ |
3854 | +@@ -1528,6 +1666,7 @@ |
3855 | buf_LRU_add_block_low(b, buf_page_is_old(b)); |
3856 | } |
3857 | |
3858 | @@ -2788,11 +2797,13 @@ |
3859 | if (b->state == BUF_BLOCK_ZIP_PAGE) { |
3860 | #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG |
3861 | buf_LRU_insert_zip_clean(b); |
3862 | -@@ -1534,9 +1668,12 @@ |
3863 | +@@ -1543,12 +1682,13 @@ |
3864 | + /* Prevent buf_page_get_gen() from |
3865 | + decompressing the block while we release |
3866 | buf_pool->mutex and block_mutex. */ |
3867 | - b->buf_fix_count++; |
3868 | - b->io_fix = BUF_IO_READ; |
3869 | -+ mutex_exit(&buf_pool->zip_mutex); |
3870 | +- mutex_enter(&buf_pool->zip_mutex); |
3871 | + buf_page_set_sticky(b); |
3872 | + mutex_exit(&buf_pool->zip_mutex); |
3873 | } |
3874 | |
3875 | - buf_pool_mutex_exit(buf_pool); |
3876 | @@ -2802,7 +2813,7 @@ |
3877 | mutex_exit(block_mutex); |
3878 | |
3879 | /* Remove possible adaptive hash index on the page. |
3880 | -@@ -1568,7 +1705,9 @@ |
3881 | +@@ -1580,7 +1720,9 @@ |
3882 | : BUF_NO_CHECKSUM_MAGIC); |
3883 | } |
3884 | |
3885 | @@ -2813,7 +2824,7 @@ |
3886 | mutex_enter(block_mutex); |
3887 | |
3888 | if (b) { |
3889 | -@@ -1578,13 +1717,17 @@ |
3890 | +@@ -1589,13 +1731,17 @@ |
3891 | mutex_exit(&buf_pool->zip_mutex); |
3892 | } |
3893 | |
3894 | @@ -2832,7 +2843,7 @@ |
3895 | } |
3896 | |
3897 | return(TRUE); |
3898 | -@@ -1596,13 +1739,14 @@ |
3899 | +@@ -1607,13 +1753,14 @@ |
3900 | void |
3901 | buf_LRU_block_free_non_file_page( |
3902 | /*=============================*/ |
3903 | @@ -2849,7 +2860,7 @@ |
3904 | ut_ad(mutex_own(&block->mutex)); |
3905 | |
3906 | switch (buf_block_get_state(block)) { |
3907 | -@@ -1636,18 +1780,21 @@ |
3908 | +@@ -1647,18 +1794,21 @@ |
3909 | if (data) { |
3910 | block->page.zip.data = NULL; |
3911 | mutex_exit(&block->mutex); |
3912 | @@ -2875,7 +2886,7 @@ |
3913 | |
3914 | UNIV_MEM_ASSERT_AND_FREE(block->frame, UNIV_PAGE_SIZE); |
3915 | } |
3916 | -@@ -1677,7 +1824,11 @@ |
3917 | +@@ -1688,7 +1838,11 @@ |
3918 | buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); |
3919 | |
3920 | ut_ad(bpage); |
3921 | @@ -2888,7 +2899,7 @@ |
3922 | ut_ad(mutex_own(buf_page_get_mutex(bpage))); |
3923 | |
3924 | ut_a(buf_page_get_io_fix(bpage) == BUF_IO_NONE); |
3925 | -@@ -1785,7 +1936,9 @@ |
3926 | +@@ -1796,7 +1950,9 @@ |
3927 | |
3928 | #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG |
3929 | mutex_exit(buf_page_get_mutex(bpage)); |
3930 | @@ -2899,7 +2910,7 @@ |
3931 | buf_print(); |
3932 | buf_LRU_print(); |
3933 | buf_validate(); |
3934 | -@@ -1807,17 +1960,17 @@ |
3935 | +@@ -1818,17 +1974,17 @@ |
3936 | ut_a(buf_page_get_zip_size(bpage)); |
3937 | |
3938 | #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG |
3939 | @@ -2921,7 +2932,7 @@ |
3940 | buf_page_free_descriptor(bpage); |
3941 | return(BUF_BLOCK_ZIP_FREE); |
3942 | |
3943 | -@@ -1839,13 +1992,13 @@ |
3944 | +@@ -1850,13 +2006,13 @@ |
3945 | ut_ad(!bpage->in_flush_list); |
3946 | ut_ad(!bpage->in_LRU_list); |
3947 | mutex_exit(&((buf_block_t*) bpage)->mutex); |
3948 | @@ -2938,7 +2949,7 @@ |
3949 | mutex_enter(&((buf_block_t*) bpage)->mutex); |
3950 | page_zip_set_size(&bpage->zip, 0); |
3951 | } |
3952 | -@@ -1871,18 +2024,19 @@ |
3953 | +@@ -1882,18 +2038,19 @@ |
3954 | void |
3955 | buf_LRU_block_free_hashed_page( |
3956 | /*===========================*/ |
3957 | @@ -2962,7 +2973,7 @@ |
3958 | } |
3959 | |
3960 | /******************************************************************//** |
3961 | -@@ -1897,7 +2051,7 @@ |
3962 | +@@ -1908,7 +2065,7 @@ |
3963 | { |
3964 | if (buf_LRU_block_remove_hashed_page(bpage, TRUE) |
3965 | != BUF_BLOCK_ZIP_FREE) { |
3966 | @@ -2971,7 +2982,7 @@ |
3967 | } |
3968 | } |
3969 | |
3970 | -@@ -1925,7 +2079,8 @@ |
3971 | +@@ -1936,7 +2093,8 @@ |
3972 | } |
3973 | |
3974 | if (adjust) { |
3975 | @@ -2981,7 +2992,7 @@ |
3976 | |
3977 | if (ratio != buf_pool->LRU_old_ratio) { |
3978 | buf_pool->LRU_old_ratio = ratio; |
3979 | -@@ -1937,7 +2092,8 @@ |
3980 | +@@ -1948,7 +2106,8 @@ |
3981 | } |
3982 | } |
3983 | |
3984 | @@ -2991,7 +3002,7 @@ |
3985 | } else { |
3986 | buf_pool->LRU_old_ratio = ratio; |
3987 | } |
3988 | -@@ -2042,7 +2198,8 @@ |
3989 | +@@ -2053,7 +2212,8 @@ |
3990 | ulint new_len; |
3991 | |
3992 | ut_ad(buf_pool); |
3993 | @@ -3001,7 +3012,7 @@ |
3994 | |
3995 | if (UT_LIST_GET_LEN(buf_pool->LRU) >= BUF_LRU_OLD_MIN_LEN) { |
3996 | |
3997 | -@@ -2103,16 +2260,22 @@ |
3998 | +@@ -2114,16 +2274,22 @@ |
3999 | |
4000 | ut_a(buf_pool->LRU_old_len == old_len); |
4001 | |
4002 | @@ -3026,7 +3037,7 @@ |
4003 | UT_LIST_VALIDATE(unzip_LRU, buf_block_t, buf_pool->unzip_LRU, |
4004 | ut_ad(ut_list_node_313->in_unzip_LRU_list |
4005 | && ut_list_node_313->page.in_LRU_list)); |
4006 | -@@ -2126,7 +2289,8 @@ |
4007 | +@@ -2137,7 +2303,8 @@ |
4008 | ut_a(buf_page_belongs_to_unzip_LRU(&block->page)); |
4009 | } |
4010 | |
4011 | @@ -3036,7 +3047,7 @@ |
4012 | } |
4013 | |
4014 | /**********************************************************************//** |
4015 | -@@ -2162,7 +2326,8 @@ |
4016 | +@@ -2173,7 +2340,8 @@ |
4017 | const buf_page_t* bpage; |
4018 | |
4019 | ut_ad(buf_pool); |
4020 | @@ -3046,7 +3057,7 @@ |
4021 | |
4022 | bpage = UT_LIST_GET_FIRST(buf_pool->LRU); |
4023 | |
4024 | -@@ -2219,7 +2384,8 @@ |
4025 | +@@ -2230,7 +2398,8 @@ |
4026 | bpage = UT_LIST_GET_NEXT(LRU, bpage); |
4027 | } |
4028 | |
4029 | @@ -3312,7 +3323,7 @@ |
4030 | /*********************************************************************//** |
4031 | Get the flush type of a page. |
4032 | @return flush type */ |
4033 | -@@ -1332,7 +1355,7 @@ |
4034 | +@@ -1352,7 +1375,7 @@ |
4035 | All these are protected by buf_pool->mutex. */ |
4036 | /* @{ */ |
4037 | |
4038 | @@ -3321,7 +3332,7 @@ |
4039 | /*!< based on state, this is a |
4040 | list node, protected either by |
4041 | buf_pool->mutex or by |
4042 | -@@ -1360,6 +1383,10 @@ |
4043 | +@@ -1380,6 +1403,10 @@ |
4044 | BUF_BLOCK_REMOVE_HASH or |
4045 | BUF_BLOCK_READY_IN_USE. */ |
4046 | |
4047 | @@ -3332,7 +3343,7 @@ |
4048 | #ifdef UNIV_DEBUG |
4049 | ibool in_flush_list; /*!< TRUE if in buf_pool->flush_list; |
4050 | when buf_pool->flush_list_mutex is |
4051 | -@@ -1452,11 +1479,11 @@ |
4052 | +@@ -1472,11 +1499,11 @@ |
4053 | a block is in the unzip_LRU list |
4054 | if page.state == BUF_BLOCK_FILE_PAGE |
4055 | and page.zip.data != NULL */ |
4056 | @@ -3346,7 +3357,7 @@ |
4057 | mutex_t mutex; /*!< mutex protecting this block: |
4058 | state (also protected by the buffer |
4059 | pool mutex), io_fix, buf_fix_count, |
4060 | -@@ -1636,6 +1663,11 @@ |
4061 | +@@ -1656,6 +1683,11 @@ |
4062 | pool instance, protects compressed |
4063 | only pages (of type buf_page_t, not |
4064 | buf_block_t */ |
4065 | @@ -3358,7 +3369,7 @@ |
4066 | ulint instance_no; /*!< Array index of this buffer |
4067 | pool instance */ |
4068 | ulint old_pool_size; /*!< Old pool size in bytes */ |
4069 | -@@ -1789,8 +1821,8 @@ |
4070 | +@@ -1809,8 +1841,8 @@ |
4071 | /** Test if a buffer pool mutex is owned. */ |
4072 | #define buf_pool_mutex_own(b) mutex_own(&b->mutex) |
4073 | /** Acquire a buffer pool mutex. */ |
4074 | @@ -3426,7 +3437,7 @@ |
4075 | /*********************************************************************//** |
4076 | Get the flush type of a page. |
4077 | @return flush type */ |
4078 | -@@ -443,8 +472,8 @@ |
4079 | +@@ -444,8 +473,8 @@ |
4080 | enum buf_io_fix io_fix) /*!< in: io_fix state */ |
4081 | { |
4082 | #ifdef UNIV_DEBUG |
4083 | @@ -3437,7 +3448,25 @@ |
4084 | #endif |
4085 | ut_ad(mutex_own(buf_page_get_mutex(bpage))); |
4086 | |
4087 | -@@ -474,14 +503,14 @@ |
4088 | +@@ -482,7 +511,7 @@ |
4089 | + { |
4090 | + #ifdef UNIV_DEBUG |
4091 | + buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); |
4092 | +- ut_ad(buf_pool_mutex_own(buf_pool)); |
4093 | ++ ut_ad(mutex_own(&buf_pool->LRU_list_mutex)); |
4094 | + #endif |
4095 | + ut_ad(mutex_own(buf_page_get_mutex(bpage))); |
4096 | + ut_ad(buf_page_get_io_fix(bpage) == BUF_IO_NONE); |
4097 | +@@ -500,7 +529,7 @@ |
4098 | + { |
4099 | + #ifdef UNIV_DEBUG |
4100 | + buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); |
4101 | +- ut_ad(buf_pool_mutex_own(buf_pool)); |
4102 | ++ ut_ad(mutex_own(&buf_pool->LRU_list_mutex)); |
4103 | + #endif |
4104 | + ut_ad(mutex_own(buf_page_get_mutex(bpage))); |
4105 | + ut_ad(buf_page_get_io_fix(bpage) == BUF_IO_PIN); |
4106 | +@@ -518,14 +547,14 @@ |
4107 | const buf_page_t* bpage) /*!< control block being relocated */ |
4108 | { |
4109 | #ifdef UNIV_DEBUG |
4110 | @@ -3456,7 +3485,7 @@ |
4111 | && bpage->buf_fix_count == 0); |
4112 | } |
4113 | |
4114 | -@@ -495,8 +524,8 @@ |
4115 | +@@ -539,8 +568,8 @@ |
4116 | const buf_page_t* bpage) /*!< in: control block */ |
4117 | { |
4118 | #ifdef UNIV_DEBUG |
4119 | @@ -3467,7 +3496,7 @@ |
4120 | #endif |
4121 | ut_ad(buf_page_in_file(bpage)); |
4122 | |
4123 | -@@ -516,7 +545,8 @@ |
4124 | +@@ -560,7 +589,8 @@ |
4125 | buf_pool_t* buf_pool = buf_pool_from_bpage(bpage); |
4126 | #endif /* UNIV_DEBUG */ |
4127 | ut_a(buf_page_in_file(bpage)); |
4128 | @@ -3477,7 +3506,7 @@ |
4129 | ut_ad(bpage->in_LRU_list); |
4130 | |
4131 | #ifdef UNIV_LRU_DEBUG |
4132 | -@@ -563,9 +593,10 @@ |
4133 | +@@ -607,9 +637,10 @@ |
4134 | ulint time_ms) /*!< in: ut_time_ms() */ |
4135 | { |
4136 | #ifdef UNIV_DEBUG |
4137 | @@ -3490,7 +3519,7 @@ |
4138 | ut_a(buf_page_in_file(bpage)); |
4139 | |
4140 | if (!bpage->access_time) { |
4141 | -@@ -808,19 +839,19 @@ |
4142 | +@@ -852,19 +883,19 @@ |
4143 | /*===========*/ |
4144 | buf_block_t* block) /*!< in, own: block to be freed */ |
4145 | { |
4146 | @@ -3514,7 +3543,7 @@ |
4147 | } |
4148 | #endif /* !UNIV_HOTBACKUP */ |
4149 | |
4150 | -@@ -868,17 +899,17 @@ |
4151 | +@@ -912,17 +943,17 @@ |
4152 | page frame */ |
4153 | { |
4154 | ib_uint64_t lsn; |
4155 | @@ -3537,7 +3566,7 @@ |
4156 | |
4157 | return(lsn); |
4158 | } |
4159 | -@@ -896,7 +927,7 @@ |
4160 | +@@ -940,7 +971,7 @@ |
4161 | #ifdef UNIV_SYNC_DEBUG |
4162 | buf_pool_t* buf_pool = buf_pool_from_bpage((buf_page_t*)block); |
4163 | |
4164 | @@ -3546,7 +3575,7 @@ |
4165 | && (block->page.buf_fix_count == 0)) |
4166 | || rw_lock_own(&(block->lock), RW_LOCK_EXCLUSIVE)); |
4167 | #endif /* UNIV_SYNC_DEBUG */ |
4168 | -@@ -1026,7 +1057,11 @@ |
4169 | +@@ -1070,7 +1101,11 @@ |
4170 | buf_page_t* bpage; |
4171 | |
4172 | ut_ad(buf_pool); |
4173 | @@ -3559,7 +3588,7 @@ |
4174 | ut_ad(fold == buf_page_address_fold(space, offset)); |
4175 | |
4176 | /* Look for the page in the hash table */ |
4177 | -@@ -1111,11 +1146,13 @@ |
4178 | +@@ -1155,11 +1190,13 @@ |
4179 | const buf_page_t* bpage; |
4180 | buf_pool_t* buf_pool = buf_pool_get(space, offset); |
4181 | |
4182 | @@ -3575,7 +3604,7 @@ |
4183 | |
4184 | return(bpage != NULL); |
4185 | } |
4186 | -@@ -1243,4 +1280,38 @@ |
4187 | +@@ -1287,4 +1324,38 @@ |
4188 | buf_pool_mutex_exit(buf_pool); |
4189 | } |
4190 | } |
4191 | |
4192 | === modified file 'patches/innodb_stats.patch' |
4193 | --- patches/innodb_stats.patch 2011-12-27 15:32:16 +0000 |
4194 | +++ patches/innodb_stats.patch 2012-02-06 05:02:26 +0000 |
4195 | @@ -278,10 +278,16 @@ |
4196 | } |
4197 | |
4198 | if (node->state == INDEX_CREATE_INDEX_TREE) { |
4199 | -@@ -1183,6 +1322,66 @@ |
4200 | - } |
4201 | +@@ -1177,6 +1316,66 @@ |
4202 | + return(NULL); |
4203 | + } |
4204 | |
4205 | - /****************************************************************//** |
4206 | ++ thr->run_node = que_node_get_parent(node); |
4207 | ++ |
4208 | ++ return(thr); |
4209 | ++} |
4210 | ++ |
4211 | ++/****************************************************************//** |
4212 | +*/ |
4213 | +UNIV_INTERN |
4214 | +que_thr_t* |
4215 | @@ -336,15 +342,9 @@ |
4216 | + return(NULL); |
4217 | + } |
4218 | + |
4219 | -+ thr->run_node = que_node_get_parent(node); |
4220 | -+ |
4221 | -+ return(thr); |
4222 | -+} |
4223 | -+ |
4224 | -+/****************************************************************//** |
4225 | - Creates the foreign key constraints system tables inside InnoDB |
4226 | - at database creation or database start if they are not found or are |
4227 | - not of the right form. |
4228 | + thr->run_node = que_node_get_parent(node); |
4229 | + |
4230 | + return(thr); |
4231 | --- a/storage/innobase/dict/dict0dict.c |
4232 | +++ b/storage/innobase/dict/dict0dict.c |
4233 | @@ -755,7 +755,7 @@ |
4234 | @@ -356,7 +356,7 @@ |
4235 | } |
4236 | |
4237 | return(table); |
4238 | -@@ -4344,6 +4344,295 @@ |
4239 | +@@ -4354,6 +4354,295 @@ |
4240 | } |
4241 | |
4242 | /*********************************************************************//** |
4243 | @@ -652,7 +652,7 @@ |
4244 | Calculates new estimates for table and index statistics. The statistics |
4245 | are used in query optimization. */ |
4246 | UNIV_INTERN |
4247 | -@@ -4351,10 +4640,11 @@ |
4248 | +@@ -4361,10 +4650,11 @@ |
4249 | dict_update_statistics( |
4250 | /*===================*/ |
4251 | dict_table_t* table, /*!< in/out: table */ |
4252 | @@ -665,7 +665,7 @@ |
4253 | { |
4254 | dict_index_t* index; |
4255 | ulint sum_of_index_sizes = 0; |
4256 | -@@ -4371,6 +4661,27 @@ |
4257 | +@@ -4381,6 +4671,27 @@ |
4258 | return; |
4259 | } |
4260 | |
4261 | @@ -693,7 +693,7 @@ |
4262 | /* Find out the sizes of the indexes and how many different values |
4263 | for the key they approximately have */ |
4264 | |
4265 | -@@ -4435,6 +4746,11 @@ |
4266 | +@@ -4445,6 +4756,11 @@ |
4267 | index = dict_table_get_next_index(index); |
4268 | } while (index); |
4269 | |
4270 | @@ -705,7 +705,7 @@ |
4271 | index = dict_table_get_first_index(table); |
4272 | |
4273 | table->stat_n_rows = index->stat_n_diff_key_vals[ |
4274 | -@@ -4452,6 +4768,78 @@ |
4275 | +@@ -4462,6 +4778,78 @@ |
4276 | dict_table_stats_unlock(table, RW_X_LATCH); |
4277 | } |
4278 | |
4279 | @@ -784,7 +784,7 @@ |
4280 | /**********************************************************************//** |
4281 | Prints info of a foreign key constraint. */ |
4282 | static |
4283 | -@@ -4529,7 +4917,8 @@ |
4284 | +@@ -4539,7 +4927,8 @@ |
4285 | |
4286 | ut_ad(mutex_own(&(dict_sys->mutex))); |
4287 | |
4288 | @@ -961,7 +961,7 @@ |
4289 | break; |
4290 | case DB_RECORD_NOT_FOUND: |
4291 | error = HA_ERR_KEY_NOT_FOUND; |
4292 | -@@ -6197,6 +6217,11 @@ |
4293 | +@@ -6196,6 +6216,11 @@ |
4294 | case DB_SUCCESS: |
4295 | error = 0; |
4296 | table->status = 0; |
4297 | @@ -973,7 +973,7 @@ |
4298 | break; |
4299 | case DB_RECORD_NOT_FOUND: |
4300 | error = HA_ERR_END_OF_FILE; |
4301 | -@@ -8150,11 +8175,35 @@ |
4302 | +@@ -8149,11 +8174,35 @@ |
4303 | /* In sql_show we call with this flag: update |
4304 | then statistics so that they are up-to-date */ |
4305 | |
4306 | @@ -1010,7 +1010,7 @@ |
4307 | |
4308 | prebuilt->trx->op_info = "returning various info to MySQL"; |
4309 | } |
4310 | -@@ -8239,7 +8288,7 @@ |
4311 | +@@ -8238,7 +8287,7 @@ |
4312 | are asked by MySQL to avoid locking. Another reason to |
4313 | avoid the call is that it uses quite a lot of CPU. |
4314 | See Bug#38185. */ |
4315 | @@ -1019,7 +1019,7 @@ |
4316 | || !(flag & HA_STATUS_VARIABLE_EXTRA)) { |
4317 | /* We do not update delete_length if no |
4318 | locking is requested so the "old" value can |
4319 | -@@ -11512,6 +11561,26 @@ |
4320 | +@@ -11511,6 +11560,26 @@ |
4321 | "The number of index pages to sample when calculating statistics (default 8)", |
4322 | NULL, NULL, 8, 1, ~0ULL, 0); |
4323 | |
4324 | @@ -1046,7 +1046,7 @@ |
4325 | static MYSQL_SYSVAR_BOOL(adaptive_hash_index, btr_search_enabled, |
4326 | PLUGIN_VAR_OPCMDARG, |
4327 | "Enable InnoDB adaptive hash index (enabled by default). " |
4328 | -@@ -11844,6 +11913,9 @@ |
4329 | +@@ -11883,6 +11952,9 @@ |
4330 | MYSQL_SYSVAR(recovery_update_relay_log), |
4331 | MYSQL_SYSVAR(rollback_on_timeout), |
4332 | MYSQL_SYSVAR(stats_on_metadata), |
4333 | @@ -1056,7 +1056,7 @@ |
4334 | MYSQL_SYSVAR(stats_sample_pages), |
4335 | MYSQL_SYSVAR(adaptive_hash_index), |
4336 | MYSQL_SYSVAR(stats_method), |
4337 | -@@ -11915,7 +11987,10 @@ |
4338 | +@@ -11957,7 +12029,10 @@ |
4339 | i_s_innodb_sys_columns, |
4340 | i_s_innodb_sys_fields, |
4341 | i_s_innodb_sys_foreign, |
4342 | |
4343 | === modified file 'patches/innodb_thread_concurrency_timer_based.patch' |
4344 | --- patches/innodb_thread_concurrency_timer_based.patch 2011-12-27 15:32:16 +0000 |
4345 | +++ patches/innodb_thread_concurrency_timer_based.patch 2012-02-06 05:02:26 +0000 |
4346 | @@ -25,7 +25,7 @@ |
4347 | #ifdef UNIV_LOG_ARCHIVE |
4348 | srv_log_archive_on = (ulint) innobase_log_archive; |
4349 | #endif /* UNIV_LOG_ARCHIVE */ |
4350 | -@@ -11602,6 +11606,12 @@ |
4351 | +@@ -11601,6 +11605,12 @@ |
4352 | "Maximum delay between polling for a spin lock (6 by default)", |
4353 | NULL, NULL, 6L, 0L, ~0L, 0); |
4354 | |
4355 | @@ -38,7 +38,7 @@ |
4356 | static MYSQL_SYSVAR_ULONG(thread_concurrency, srv_thread_concurrency, |
4357 | PLUGIN_VAR_RQCMDARG, |
4358 | "Helps in performance tuning in heavily concurrent environments. Sets the maximum number of threads allowed inside InnoDB. Value 0 will disable the thread throttling.", |
4359 | -@@ -11820,6 +11830,7 @@ |
4360 | +@@ -11859,6 +11869,7 @@ |
4361 | MYSQL_SYSVAR(spin_wait_delay), |
4362 | MYSQL_SYSVAR(table_locks), |
4363 | MYSQL_SYSVAR(thread_concurrency), |
4364 | @@ -67,7 +67,7 @@ |
4365 | UNIV_INTERN ulong srv_thread_concurrency = 0; |
4366 | |
4367 | /* this mutex protects srv_conc data structures */ |
4368 | -@@ -1145,6 +1146,75 @@ |
4369 | +@@ -1148,6 +1149,75 @@ |
4370 | /*********************************************************************//** |
4371 | Puts an OS thread to wait if there are too many concurrent threads |
4372 | (>= srv_thread_concurrency) inside InnoDB. The threads wait in a FIFO queue. */ |
4373 | @@ -143,7 +143,7 @@ |
4374 | UNIV_INTERN |
4375 | void |
4376 | srv_conc_enter_innodb( |
4377 | -@@ -1179,6 +1249,13 @@ |
4378 | +@@ -1182,6 +1252,13 @@ |
4379 | return; |
4380 | } |
4381 | |
4382 | @@ -157,7 +157,7 @@ |
4383 | os_fast_mutex_lock(&srv_conc_mutex); |
4384 | retry: |
4385 | if (trx->declared_to_be_inside_innodb) { |
4386 | -@@ -1332,6 +1409,14 @@ |
4387 | +@@ -1335,6 +1412,14 @@ |
4388 | } |
4389 | |
4390 | ut_ad(srv_conc_n_threads >= 0); |
4391 | @@ -172,7 +172,7 @@ |
4392 | |
4393 | os_fast_mutex_lock(&srv_conc_mutex); |
4394 | |
4395 | -@@ -1365,6 +1450,13 @@ |
4396 | +@@ -1368,6 +1453,13 @@ |
4397 | return; |
4398 | } |
4399 | |
4400 | |
4401 | === modified file 'patches/log_connection_error.patch' |
4402 | --- patches/log_connection_error.patch 2011-09-07 14:00:24 +0000 |
4403 | +++ patches/log_connection_error.patch 2012-02-06 05:02:26 +0000 |
4404 | @@ -16,7 +16,7 @@ |
4405 | +Comment= |
4406 | --- a/sql/mysqld.cc |
4407 | +++ b/sql/mysqld.cc |
4408 | -@@ -5098,6 +5098,10 @@ |
4409 | +@@ -4959,6 +4959,10 @@ |
4410 | |
4411 | DBUG_PRINT("error",("Too many connections")); |
4412 | close_connection(thd, ER_CON_COUNT_ERROR); |
4413 | @@ -27,7 +27,7 @@ |
4414 | delete thd; |
4415 | DBUG_VOID_RETURN; |
4416 | } |
4417 | -@@ -5481,6 +5485,10 @@ |
4418 | +@@ -5342,6 +5346,10 @@ |
4419 | if (!(thd->net.vio= vio_new_win32pipe(hConnectedPipe)) || |
4420 | my_net_init(&thd->net, thd->net.vio)) |
4421 | { |
4422 | @@ -38,7 +38,7 @@ |
4423 | close_connection(thd, ER_OUT_OF_RESOURCES); |
4424 | delete thd; |
4425 | continue; |
4426 | -@@ -5676,6 +5684,10 @@ |
4427 | +@@ -5537,6 +5545,10 @@ |
4428 | event_conn_closed)) || |
4429 | my_net_init(&thd->net, thd->net.vio)) |
4430 | { |
4431 | |
4432 | === modified file 'patches/log_warnings_suppress.patch' |
4433 | --- patches/log_warnings_suppress.patch 2011-12-27 15:32:16 +0000 |
4434 | +++ patches/log_warnings_suppress.patch 2012-02-06 05:02:26 +0000 |
4435 | @@ -19,7 +19,7 @@ |
4436 | +2011-02-21 rename patch log_warning_silence.patch to log_warnings_suppress.patch. Also rename variable "log_warning_silence" to "log_warning_suppress". |
4437 | --- a/sql/mysqld.cc |
4438 | +++ b/sql/mysqld.cc |
4439 | -@@ -628,6 +628,8 @@ |
4440 | +@@ -632,6 +632,8 @@ |
4441 | SHOW_COMP_OPTION have_crypt, have_compress; |
4442 | SHOW_COMP_OPTION have_profiling; |
4443 | |
4444 | @@ -30,7 +30,7 @@ |
4445 | pthread_key(MEM_ROOT**,THR_MALLOC); |
4446 | --- a/sql/mysqld.h |
4447 | +++ b/sql/mysqld.h |
4448 | -@@ -228,6 +228,8 @@ |
4449 | +@@ -229,6 +229,8 @@ |
4450 | extern TYPELIB thread_handling_typelib; |
4451 | extern my_decimal decimal_zero; |
4452 | |
4453 | @@ -41,7 +41,7 @@ |
4454 | using my_pthread_setspecific_ptr()/my_thread_getspecific_ptr(). |
4455 | --- a/sql/sql_class.cc |
4456 | +++ b/sql/sql_class.cc |
4457 | -@@ -5024,7 +5024,7 @@ |
4458 | +@@ -5029,7 +5029,7 @@ |
4459 | ER_BINLOG_UNSAFE_STATEMENT, |
4460 | ER(ER_BINLOG_UNSAFE_STATEMENT), |
4461 | ER(LEX::binlog_stmt_unsafe_errcode[unsafe_type])); |
4462 | @@ -62,7 +62,7 @@ |
4463 | SLAVE_EXEC_MODE_LAST_BIT}; |
4464 | --- a/sql/sys_vars.cc |
4465 | +++ b/sql/sys_vars.cc |
4466 | -@@ -1499,6 +1499,15 @@ |
4467 | +@@ -1572,6 +1572,15 @@ |
4468 | READ_ONLY GLOBAL_VAR(mysqld_port), CMD_LINE(REQUIRED_ARG, 'P'), |
4469 | VALID_RANGE(0, UINT_MAX32), DEFAULT(0), BLOCK_SIZE(1)); |
4470 | |
4471 | |
4472 | === modified file 'patches/mysql-test.diff' |
4473 | --- patches/mysql-test.diff 2012-01-10 11:28:15 +0000 |
4474 | +++ patches/mysql-test.diff 2012-02-06 05:02:26 +0000 |
4475 | @@ -1823,7 +1823,3 @@ |
4476 | @@ -0,0 +1,2 @@ |
4477 | +--source include/have_nodebug.inc |
4478 | +--source include/percona_server_variables.inc |
4479 | ---- a/mysql-test/suite/innodb/t/innodb_cmp_drop_table-master.opt |
4480 | -+++ /dev/null |
4481 | -@@ -1 +0,0 @@ |
4482 | ----innodb-buffer-pool-size=8M |
4483 | |
4484 | === modified file 'patches/optimizer_fix.patch' |
4485 | --- patches/optimizer_fix.patch 2011-12-27 15:32:16 +0000 |
4486 | +++ patches/optimizer_fix.patch 2012-02-06 05:02:26 +0000 |
4487 | @@ -18,7 +18,7 @@ |
4488 | +Ported to 5.1.42 |
4489 | --- a/sql/mysqld.cc |
4490 | +++ b/sql/mysqld.cc |
4491 | -@@ -430,6 +430,7 @@ |
4492 | +@@ -434,6 +434,7 @@ |
4493 | MYSQL_PLUGIN_IMPORT uint opt_debug_sync_timeout= 0; |
4494 | #endif /* defined(ENABLED_DEBUG_SYNC) */ |
4495 | my_bool opt_old_style_user_limits= 0, trust_function_creators= 0; |
4496 | @@ -138,7 +138,7 @@ |
4497 | DBUG_RETURN(HA_POS_ERROR); /* This shouldn't happend */ |
4498 | --- a/sql/sys_vars.cc |
4499 | +++ b/sql/sys_vars.cc |
4500 | -@@ -2186,6 +2186,12 @@ |
4501 | +@@ -2259,6 +2259,12 @@ |
4502 | VALID_RANGE(1, IF_WIN(INT_MAX32/1000, LONG_TIMEOUT)), |
4503 | DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1)); |
4504 | |
4505 | |
4506 | === modified file 'patches/processlist_row_stats.patch' |
4507 | --- patches/processlist_row_stats.patch 2011-12-27 15:32:16 +0000 |
4508 | +++ patches/processlist_row_stats.patch 2012-02-06 05:02:26 +0000 |
4509 | @@ -7,7 +7,7 @@ |
4510 | # should be done or reviewed by the maintainer! |
4511 | --- a/sql/sql_class.cc |
4512 | +++ b/sql/sql_class.cc |
4513 | -@@ -2419,6 +2419,7 @@ |
4514 | +@@ -2424,6 +2424,7 @@ |
4515 | |
4516 | thd->sent_row_count++; |
4517 | thd->sent_row_count_2++; |
4518 | |
4519 | === modified file 'patches/query_cache_enhance.patch' |
4520 | --- patches/query_cache_enhance.patch 2011-12-27 15:32:16 +0000 |
4521 | +++ patches/query_cache_enhance.patch 2012-02-06 05:02:26 +0000 |
4522 | @@ -25,7 +25,7 @@ |
4523 | +2010-11 - Ported to 5.5 |
4524 | --- a/sql/mysqld.cc |
4525 | +++ b/sql/mysqld.cc |
4526 | -@@ -904,6 +904,7 @@ |
4527 | +@@ -909,6 +909,7 @@ |
4528 | #endif |
4529 | #ifdef HAVE_QUERY_CACHE |
4530 | ulong query_cache_min_res_unit= QUERY_CACHE_MIN_RESULT_DATA_SIZE; |
4531 | @@ -719,7 +719,7 @@ |
4532 | NET net; // client connection descriptor |
4533 | --- a/sql/sys_vars.cc |
4534 | +++ b/sql/sys_vars.cc |
4535 | -@@ -1815,6 +1815,11 @@ |
4536 | +@@ -1888,6 +1888,11 @@ |
4537 | NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), |
4538 | ON_UPDATE(fix_query_cache_size)); |
4539 | |
4540 | |
4541 | === modified file 'patches/response_time_distribution.patch' |
4542 | --- patches/response_time_distribution.patch 2011-12-27 15:32:16 +0000 |
4543 | +++ patches/response_time_distribution.patch 2012-02-06 05:02:26 +0000 |
4544 | @@ -2886,7 +2886,7 @@ |
4545 | +2010-09-15 add column 'total' |
4546 | --- a/sql/CMakeLists.txt |
4547 | +++ b/sql/CMakeLists.txt |
4548 | -@@ -51,7 +51,7 @@ |
4549 | +@@ -52,7 +52,7 @@ |
4550 | message.h mf_iocache.cc my_decimal.cc ../sql-common/my_time.c |
4551 | mysqld.cc net_serv.cc keycaches.cc |
4552 | ../sql-common/client_plugin.c |
4553 | @@ -2895,7 +2895,7 @@ |
4554 | ../sql-common/pack.c parse_file.cc password.c procedure.cc |
4555 | protocol.cc records.cc repl_failsafe.cc rpl_filter.cc set_var.cc |
4556 | slave.cc sp.cc sp_cache.cc sp_head.cc sp_pcontext.cc |
4557 | -@@ -59,7 +59,7 @@ |
4558 | +@@ -60,7 +60,7 @@ |
4559 | sql_cache.cc sql_class.cc sql_client.cc sql_crypt.cc sql_crypt.h |
4560 | sql_cursor.cc sql_db.cc sql_delete.cc sql_derived.cc sql_do.cc |
4561 | sql_error.cc sql_handler.cc sql_help.cc sql_insert.cc sql_lex.cc |
4562 | @@ -2935,7 +2935,7 @@ |
4563 | #ifdef WITH_PERFSCHEMA_STORAGE_ENGINE |
4564 | #include "../storage/perfschema/pfs_server.h" |
4565 | #endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */ |
4566 | -@@ -611,7 +613,7 @@ |
4567 | +@@ -615,7 +617,7 @@ |
4568 | MY_LOCALE *my_default_lc_messages; |
4569 | MY_LOCALE *my_default_lc_time_names; |
4570 | |
4571 | @@ -2944,7 +2944,7 @@ |
4572 | SHOW_COMP_OPTION have_geometry, have_rtree_keys; |
4573 | SHOW_COMP_OPTION have_crypt, have_compress; |
4574 | SHOW_COMP_OPTION have_profiling; |
4575 | -@@ -912,6 +914,10 @@ |
4576 | +@@ -917,6 +919,10 @@ |
4577 | my_bool opt_enable_shared_memory; |
4578 | HANDLE smem_event_connect_request= 0; |
4579 | #endif |
4580 | @@ -2955,7 +2955,7 @@ |
4581 | |
4582 | my_bool opt_use_ssl = 0; |
4583 | char *opt_ssl_ca= NULL, *opt_ssl_capath= NULL, *opt_ssl_cert= NULL, |
4584 | -@@ -1483,6 +1489,9 @@ |
4585 | +@@ -1488,6 +1494,9 @@ |
4586 | my_free(opt_bin_logname); |
4587 | bitmap_free(&temp_pool); |
4588 | free_max_user_conn(); |
4589 | @@ -2965,7 +2965,7 @@ |
4590 | #ifdef HAVE_REPLICATION |
4591 | end_slave_list(); |
4592 | #endif |
4593 | -@@ -4010,6 +4019,9 @@ |
4594 | +@@ -3860,6 +3869,9 @@ |
4595 | if (!DEFAULT_ERRMSGS[0][0]) |
4596 | unireg_abort(1); |
4597 | |
4598 | @@ -2975,7 +2975,7 @@ |
4599 | /* We have to initialize the storage engines before CSV logging */ |
4600 | if (ha_init()) |
4601 | { |
4602 | -@@ -6905,6 +6917,11 @@ |
4603 | +@@ -6773,6 +6785,11 @@ |
4604 | #else |
4605 | have_query_cache=SHOW_OPTION_NO; |
4606 | #endif |
4607 | @@ -3374,7 +3374,7 @@ |
4608 | +#endif // QUERY_RESPONSE_TIME_H |
4609 | --- a/sql/set_var.h |
4610 | +++ b/sql/set_var.h |
4611 | -@@ -293,6 +293,7 @@ |
4612 | +@@ -294,6 +294,7 @@ |
4613 | |
4614 | extern SHOW_COMP_OPTION have_ssl, have_symlink, have_dlopen; |
4615 | extern SHOW_COMP_OPTION have_query_cache; |
4616 | @@ -3486,7 +3486,7 @@ |
4617 | %token QUICK |
4618 | %token RANGE_SYM /* SQL-2003-R */ |
4619 | %token READS_SYM /* SQL-2003-R */ |
4620 | -@@ -11100,6 +11101,15 @@ |
4621 | +@@ -11105,6 +11106,15 @@ |
4622 | { |
4623 | Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT; |
4624 | } |
4625 | @@ -3502,7 +3502,7 @@ |
4626 | | CREATE PROCEDURE_SYM sp_name |
4627 | { |
4628 | LEX *lex= Lex; |
4629 | -@@ -11339,6 +11349,12 @@ |
4630 | +@@ -11344,6 +11354,12 @@ |
4631 | Lex->type|= REFRESH_SLAVE; |
4632 | Lex->reset_slave_info.all= false; |
4633 | } |
4634 | @@ -3515,7 +3515,7 @@ |
4635 | | MASTER_SYM |
4636 | { Lex->type|= REFRESH_MASTER; } |
4637 | | DES_KEY_FILE |
4638 | -@@ -12646,6 +12662,7 @@ |
4639 | +@@ -12651,6 +12667,7 @@ |
4640 | | PROXY_SYM {} |
4641 | | QUARTER_SYM {} |
4642 | | QUERY_SYM {} |
4643 | @@ -3525,15 +3525,15 @@ |
4644 | | REBUILD_SYM {} |
4645 | --- a/sql/sys_vars.cc |
4646 | +++ b/sql/sys_vars.cc |
4647 | -@@ -49,6 +49,7 @@ |
4648 | - #include "../storage/perfschema/pfs_server.h" |
4649 | - #endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */ |
4650 | +@@ -51,6 +51,7 @@ |
4651 | + |
4652 | + TYPELIB bool_typelib={ array_elements(bool_values)-1, "", bool_values, 0 }; |
4653 | |
4654 | +#include "query_response_time.h" |
4655 | /* |
4656 | This forward declaration is needed because including sql_base.h |
4657 | causes further includes. [TODO] Eliminate this forward declaration |
4658 | -@@ -1866,6 +1867,26 @@ |
4659 | +@@ -1939,6 +1940,26 @@ |
4660 | DEFAULT(FALSE)); |
4661 | #endif /* HAVE_QUERY_CACHE */ |
4662 | |
4663 | |
4664 | === modified file 'patches/show_slave_status_nolock.patch' |
4665 | --- patches/show_slave_status_nolock.patch 2011-12-13 13:49:04 +0000 |
4666 | +++ patches/show_slave_status_nolock.patch 2012-02-06 05:02:26 +0000 |
4667 | @@ -26,7 +26,7 @@ |
4668 | { "NVARCHAR", SYM(NVARCHAR_SYM)}, |
4669 | --- a/sql/mysqld.cc |
4670 | +++ b/sql/mysqld.cc |
4671 | -@@ -3121,6 +3121,7 @@ |
4672 | +@@ -2971,6 +2971,7 @@ |
4673 | {"show_relaylog_events", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_RELAYLOG_EVENTS]), SHOW_LONG_STATUS}, |
4674 | {"show_slave_hosts", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_SLAVE_HOSTS]), SHOW_LONG_STATUS}, |
4675 | {"show_slave_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_SLAVE_STAT]), SHOW_LONG_STATUS}, |
4676 | @@ -105,7 +105,7 @@ |
4677 | %token STDDEV_SAMP_SYM /* SQL-2003-N */ |
4678 | %token STD_SYM |
4679 | %token STOP_SYM |
4680 | -@@ -11106,6 +11107,11 @@ |
4681 | +@@ -11111,6 +11112,11 @@ |
4682 | { |
4683 | Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT; |
4684 | } |
4685 | |
4686 | === modified file 'patches/show_temp.patch' |
4687 | --- patches/show_temp.patch 2011-12-27 15:32:16 +0000 |
4688 | +++ patches/show_temp.patch 2012-02-06 05:02:26 +0000 |
4689 | @@ -25,7 +25,7 @@ |
4690 | SCH_VARIABLES, |
4691 | --- a/sql/mysqld.cc |
4692 | +++ b/sql/mysqld.cc |
4693 | -@@ -3101,6 +3101,7 @@ |
4694 | +@@ -2951,6 +2951,7 @@ |
4695 | {"show_storage_engines", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_STORAGE_ENGINES]), SHOW_LONG_STATUS}, |
4696 | {"show_table_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TABLE_STATUS]), SHOW_LONG_STATUS}, |
4697 | {"show_tables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TABLES]), SHOW_LONG_STATUS}, |
4698 | @@ -33,7 +33,7 @@ |
4699 | {"show_triggers", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TRIGGERS]), SHOW_LONG_STATUS}, |
4700 | {"show_variables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_VARIABLES]), SHOW_LONG_STATUS}, |
4701 | {"show_warnings", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_WARNS]), SHOW_LONG_STATUS}, |
4702 | -@@ -7802,6 +7803,7 @@ |
4703 | +@@ -7670,6 +7671,7 @@ |
4704 | PSI_mutex_key key_LOCK_des_key_file; |
4705 | #endif /* HAVE_OPENSSL */ |
4706 | |
4707 | @@ -41,7 +41,7 @@ |
4708 | PSI_mutex_key key_BINLOG_LOCK_index, key_BINLOG_LOCK_prep_xids, |
4709 | key_delayed_insert_mutex, key_hash_filo_lock, key_LOCK_active_mi, |
4710 | key_LOCK_connection_count, key_LOCK_crypt, key_LOCK_delayed_create, |
4711 | -@@ -7855,6 +7857,7 @@ |
4712 | +@@ -7723,6 +7725,7 @@ |
4713 | { &key_LOCK_system_variables_hash, "LOCK_system_variables_hash", PSI_FLAG_GLOBAL}, |
4714 | { &key_LOCK_table_share, "LOCK_table_share", PSI_FLAG_GLOBAL}, |
4715 | { &key_LOCK_thd_data, "THD::LOCK_thd_data", 0}, |
4716 | @@ -387,7 +387,7 @@ |
4717 | OPEN_TRIGGER_ONLY|OPTIMIZE_I_S_TABLE}, |
4718 | --- a/sql/sql_yacc.yy |
4719 | +++ b/sql/sql_yacc.yy |
4720 | -@@ -10893,6 +10893,15 @@ |
4721 | +@@ -10898,6 +10898,15 @@ |
4722 | if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES)) |
4723 | MYSQL_YYABORT; |
4724 | } |
4725 | @@ -405,7 +405,7 @@ |
4726 | LEX *lex= Lex; |
4727 | --- a/sql/mysqld.h |
4728 | +++ b/sql/mysqld.h |
4729 | -@@ -233,6 +233,7 @@ |
4730 | +@@ -234,6 +234,7 @@ |
4731 | extern PSI_mutex_key key_LOCK_des_key_file; |
4732 | #endif |
4733 | |
4734 | |
4735 | === modified file 'patches/slow_extended.patch' |
4736 | --- patches/slow_extended.patch 2011-12-27 15:32:16 +0000 |
4737 | +++ patches/slow_extended.patch 2012-02-06 05:02:26 +0000 |
4738 | @@ -411,7 +411,7 @@ |
4739 | ulonglong lock_utime, bool is_command, |
4740 | --- a/sql/mysqld.cc |
4741 | +++ b/sql/mysqld.cc |
4742 | -@@ -421,6 +421,10 @@ |
4743 | +@@ -425,6 +425,10 @@ |
4744 | char* opt_secure_file_priv; |
4745 | my_bool opt_log_slow_admin_statements= 0; |
4746 | my_bool opt_log_slow_slave_statements= 0; |
4747 | @@ -422,7 +422,7 @@ |
4748 | my_bool lower_case_file_system= 0; |
4749 | my_bool opt_large_pages= 0; |
4750 | my_bool opt_super_large_pages= 0; |
4751 | -@@ -5892,14 +5896,10 @@ |
4752 | +@@ -5753,14 +5757,10 @@ |
4753 | "Don't log extra information to update and slow-query logs.", |
4754 | &opt_short_log_format, &opt_short_log_format, |
4755 | 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, |
4756 | @@ -439,7 +439,7 @@ |
4757 | {"log-slow-queries", OPT_SLOW_QUERY_LOG, |
4758 | "Log slow queries to a table or log file. Defaults logging to table " |
4759 | "mysql.slow_log or hostname-slow.log if --log-output=file is used. " |
4760 | -@@ -7288,6 +7288,10 @@ |
4761 | +@@ -7156,6 +7156,10 @@ |
4762 | |
4763 | C_MODE_END |
4764 | |
4765 | @@ -450,7 +450,7 @@ |
4766 | /** |
4767 | Get server options from the command line, |
4768 | and perform related server initializations. |
4769 | -@@ -7437,6 +7441,8 @@ |
4770 | +@@ -7305,6 +7309,8 @@ |
4771 | global_system_variables.long_query_time= (ulonglong) |
4772 | (global_system_variables.long_query_time_double * 1e6); |
4773 | |
4774 | @@ -569,7 +569,7 @@ |
4775 | } |
4776 | |
4777 | |
4778 | -@@ -3682,8 +3717,6 @@ |
4779 | +@@ -3687,8 +3722,6 @@ |
4780 | backup->in_sub_stmt= in_sub_stmt; |
4781 | backup->enable_slow_log= enable_slow_log; |
4782 | backup->limit_found_rows= limit_found_rows; |
4783 | @@ -578,7 +578,7 @@ |
4784 | backup->cuted_fields= cuted_fields; |
4785 | backup->client_capabilities= client_capabilities; |
4786 | backup->savepoints= transaction.savepoints; |
4787 | -@@ -3691,6 +3724,7 @@ |
4788 | +@@ -3696,6 +3729,7 @@ |
4789 | first_successful_insert_id_in_prev_stmt; |
4790 | backup->first_successful_insert_id_in_cur_stmt= |
4791 | first_successful_insert_id_in_cur_stmt; |
4792 | @@ -586,7 +586,7 @@ |
4793 | |
4794 | if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) && |
4795 | !is_current_stmt_binlog_format_row()) |
4796 | -@@ -3706,13 +3740,74 @@ |
4797 | +@@ -3711,13 +3745,74 @@ |
4798 | /* Disable result sets */ |
4799 | client_capabilities &= ~CLIENT_MULTI_RESULTS; |
4800 | in_sub_stmt|= new_state; |
4801 | @@ -663,7 +663,7 @@ |
4802 | |
4803 | void THD::restore_sub_statement_state(Sub_statement_state *backup) |
4804 | { |
4805 | -@@ -3753,7 +3848,6 @@ |
4806 | +@@ -3758,7 +3853,6 @@ |
4807 | first_successful_insert_id_in_cur_stmt= |
4808 | backup->first_successful_insert_id_in_cur_stmt; |
4809 | limit_found_rows= backup->limit_found_rows; |
4810 | @@ -671,7 +671,7 @@ |
4811 | client_capabilities= backup->client_capabilities; |
4812 | /* |
4813 | If we've left sub-statement mode, reset the fatal error flag. |
4814 | -@@ -3771,8 +3865,8 @@ |
4815 | +@@ -3776,8 +3870,8 @@ |
4816 | The following is added to the old values as we are interested in the |
4817 | total complexity of the query |
4818 | */ |
4819 | @@ -1072,7 +1072,7 @@ |
4820 | { |
4821 | --- a/sql/sys_vars.cc |
4822 | +++ b/sql/sys_vars.cc |
4823 | -@@ -972,6 +972,29 @@ |
4824 | +@@ -1045,6 +1045,29 @@ |
4825 | NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), |
4826 | ON_UPDATE(update_cached_long_query_time)); |
4827 | |
4828 | @@ -1102,7 +1102,7 @@ |
4829 | static bool fix_low_prio_updates(sys_var *self, THD *thd, enum_var_type type) |
4830 | { |
4831 | if (type == OPT_SESSION) |
4832 | -@@ -2904,6 +2927,123 @@ |
4833 | +@@ -2977,6 +3000,123 @@ |
4834 | DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), |
4835 | ON_UPDATE(fix_log_state)); |
4836 | |
4837 | |
4838 | === modified file 'patches/sql_no_fcache.patch' |
4839 | --- patches/sql_no_fcache.patch 2011-12-13 13:49:04 +0000 |
4840 | +++ patches/sql_no_fcache.patch 2012-02-06 05:02:26 +0000 |
4841 | @@ -139,7 +139,7 @@ |
4842 | { "SQL_TSI_SECOND", SYM(SECOND_SYM)}, |
4843 | --- a/sql/mysqld.h |
4844 | +++ b/sql/mysqld.h |
4845 | -@@ -194,6 +194,8 @@ |
4846 | +@@ -195,6 +195,8 @@ |
4847 | extern char language[FN_REFLEN]; |
4848 | extern "C" MYSQL_PLUGIN_IMPORT ulong server_id; |
4849 | extern ulong concurrency; |
4850 | @@ -162,7 +162,7 @@ |
4851 | |
4852 | #include <thr_alarm.h> |
4853 | #include <ft_global.h> |
4854 | -@@ -487,6 +492,11 @@ |
4855 | +@@ -491,6 +496,11 @@ |
4856 | ulong binlog_cache_use= 0, binlog_cache_disk_use= 0; |
4857 | ulong binlog_stmt_cache_use= 0, binlog_stmt_cache_disk_use= 0; |
4858 | ulong max_connections, max_connect_errors; |
4859 | @@ -174,7 +174,7 @@ |
4860 | /* |
4861 | Maximum length of parameter value which can be set through |
4862 | mysql_send_long_data() call. |
4863 | -@@ -4252,6 +4262,97 @@ |
4864 | +@@ -4102,6 +4112,97 @@ |
4865 | #define decrement_handler_count() |
4866 | #endif /* defined(_WIN32) || defined(HAVE_SMEM) */ |
4867 | |
4868 | @@ -272,7 +272,7 @@ |
4869 | |
4870 | #ifndef EMBEDDED_LIBRARY |
4871 | #ifndef DBUG_OFF |
4872 | -@@ -4510,6 +4611,10 @@ |
4873 | +@@ -4363,6 +4464,10 @@ |
4874 | test_lc_time_sz(); |
4875 | #endif |
4876 | |
4877 | @@ -283,7 +283,7 @@ |
4878 | /* |
4879 | We have enough space for fiddling with the argv, continue |
4880 | */ |
4881 | -@@ -4713,6 +4818,10 @@ |
4882 | +@@ -4574,6 +4679,10 @@ |
4883 | } |
4884 | #endif |
4885 | clean_up(1); |
4886 | @@ -294,7 +294,7 @@ |
4887 | mysqld_exit(0); |
4888 | } |
4889 | |
4890 | -@@ -6553,6 +6662,7 @@ |
4891 | +@@ -6421,6 +6530,7 @@ |
4892 | {"Delayed_errors", (char*) &delayed_insert_errors, SHOW_LONG}, |
4893 | {"Delayed_insert_threads", (char*) &delayed_insert_threads, SHOW_LONG_NOFLUSH}, |
4894 | {"Delayed_writes", (char*) &delayed_insert_writes, SHOW_LONG}, |
4895 | @@ -314,7 +314,7 @@ |
4896 | lex->leaf_tables_insert= 0; |
4897 | --- a/sql/sql_lex.h |
4898 | +++ b/sql/sql_lex.h |
4899 | -@@ -2345,6 +2345,7 @@ |
4900 | +@@ -2346,6 +2346,7 @@ |
4901 | |
4902 | enum enum_yes_no_unknown tx_chain, tx_release; |
4903 | bool safe_to_cache_query; |
4904 | @@ -378,7 +378,7 @@ |
4905 | %token SQL_SMALL_RESULT |
4906 | %token SQL_SYM /* SQL-2003-R */ |
4907 | %token SQL_THREAD |
4908 | -@@ -7357,6 +7358,10 @@ |
4909 | +@@ -7362,6 +7363,10 @@ |
4910 | Lex->select_lex.sql_cache= SELECT_LEX::SQL_NO_CACHE; |
4911 | } |
4912 | } |
4913 | |
4914 | === modified file 'patches/subunit.patch' |
4915 | --- patches/subunit.patch 2012-01-10 07:01:07 +0000 |
4916 | +++ patches/subunit.patch 2012-02-06 05:02:26 +0000 |
4917 | @@ -189,7 +189,7 @@ |
4918 | |
4919 | require "lib/mtr_process.pl"; |
4920 | require "lib/mtr_io.pl"; |
4921 | -@@ -291,6 +292,7 @@ |
4922 | +@@ -292,6 +293,7 @@ |
4923 | my $opt_valgrind_path; |
4924 | my $valgrind_reports= 0; |
4925 | my $opt_callgrind; |
4926 | @@ -197,7 +197,7 @@ |
4927 | my %mysqld_logs; |
4928 | my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions. |
4929 | |
4930 | -@@ -630,6 +632,7 @@ |
4931 | +@@ -631,6 +633,7 @@ |
4932 | |
4933 | # Report test status |
4934 | mtr_report_test($result); |
4935 | @@ -205,7 +205,7 @@ |
4936 | |
4937 | if ( $result->is_failed() ) { |
4938 | |
4939 | -@@ -1142,6 +1145,7 @@ |
4940 | +@@ -1144,6 +1147,7 @@ |
4941 | 'valgrind-option=s' => \@valgrind_args, |
4942 | 'valgrind-path=s' => \$opt_valgrind_path, |
4943 | 'callgrind' => \$opt_callgrind, |
4944 | @@ -213,7 +213,7 @@ |
4945 | 'debug-sync-timeout=i' => \$opt_debug_sync_timeout, |
4946 | |
4947 | # Directories |
4948 | -@@ -1703,11 +1707,18 @@ |
4949 | +@@ -1705,11 +1709,18 @@ |
4950 | unless @valgrind_args; |
4951 | } |
4952 | |
4953 | @@ -233,7 +233,7 @@ |
4954 | |
4955 | # Don't add --quiet; you will loose the summary reports. |
4956 | |
4957 | -@@ -5796,6 +5807,10 @@ |
4958 | +@@ -5831,6 +5842,10 @@ |
4959 | mtr_add_arg($args, "--tool=callgrind"); |
4960 | mtr_add_arg($args, "--base=$opt_vardir/log"); |
4961 | } |
4962 | |
4963 | === modified file 'patches/userstat.patch' |
4964 | --- patches/userstat.patch 2011-12-27 15:32:16 +0000 |
4965 | +++ patches/userstat.patch 2012-02-06 05:02:26 +0000 |
4966 | @@ -363,7 +363,7 @@ |
4967 | /* |
4968 | Log error with all enabled log event handlers |
4969 | |
4970 | -@@ -5026,6 +5033,8 @@ |
4971 | +@@ -5062,6 +5069,8 @@ |
4972 | thd->first_successful_insert_id_in_prev_stmt_for_binlog); |
4973 | if (e.write(file)) |
4974 | goto err; |
4975 | @@ -372,7 +372,7 @@ |
4976 | } |
4977 | if (thd->auto_inc_intervals_in_cur_stmt_for_binlog.nb_elements() > 0) |
4978 | { |
4979 | -@@ -5037,12 +5046,16 @@ |
4980 | +@@ -5073,12 +5082,16 @@ |
4981 | minimum()); |
4982 | if (e.write(file)) |
4983 | goto err; |
4984 | @@ -389,7 +389,7 @@ |
4985 | } |
4986 | if (thd->user_var_events.elements) |
4987 | { |
4988 | -@@ -5065,6 +5078,8 @@ |
4989 | +@@ -5101,6 +5114,8 @@ |
4990 | flags); |
4991 | if (e.write(file)) |
4992 | goto err; |
4993 | @@ -398,7 +398,7 @@ |
4994 | } |
4995 | } |
4996 | } |
4997 | -@@ -5076,6 +5091,8 @@ |
4998 | +@@ -5112,6 +5127,8 @@ |
4999 | if (event_info->write(file) || |
5000 | DBUG_EVALUATE_IF("injecting_fault_writing", 1, 0)) |
The diff has been truncated for viewing.