Merge lp:~stewart/percona-server/5.5.20 into lp:percona-server/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
Reviewer Review Type Date Requested Status
Stewart Smith (community) Approve
Review via email: mp+91605@code.launchpad.net

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
=== modified file 'Makefile'
--- Makefile 2012-01-09 02:00:29 +0000
+++ Makefile 2012-02-06 05:02:26 +0000
@@ -1,7 +1,7 @@
1FETCH_CMD=wget1FETCH_CMD=wget
2MASTER_SITE=http://s3.amazonaws.com/percona.com/downloads/community2MASTER_SITE=http://s3.amazonaws.com/percona.com/downloads/community
3MYSQL_VERSION=5.5.193MYSQL_VERSION=5.5.20
4PERCONA_SERVER_VERSION=rel24.04PERCONA_SERVER_VERSION=rel24.1
5PERCONA_SERVER ?=Percona-Server-$(MYSQL_VERSION)-$(PERCONA_SERVER_VERSION)5PERCONA_SERVER ?=Percona-Server-$(MYSQL_VERSION)-$(PERCONA_SERVER_VERSION)
6PERCONA_SERVER_SHORT_1 ?=Percona-Server-$(MYSQL_VERSION)6PERCONA_SERVER_SHORT_1 ?=Percona-Server-$(MYSQL_VERSION)
7PERCONA_SERVER_SHORT_2 ?=Percona-Server7PERCONA_SERVER_SHORT_2 ?=Percona-Server
88
=== modified file 'patches/bug860910.patch'
--- patches/bug860910.patch 2011-12-27 15:32:16 +0000
+++ patches/bug860910.patch 2012-02-06 05:02:26 +0000
@@ -77,7 +77,7 @@
77+--source include/rpl_end.inc77+--source include/rpl_end.inc
78--- a/sql/log.cc78--- a/sql/log.cc
79+++ b/sql/log.cc79+++ b/sql/log.cc
80@@ -5076,6 +5076,12 @@80@@ -5112,6 +5112,12 @@
81 user_var_event->type,81 user_var_event->type,
82 user_var_event->charset_number,82 user_var_event->charset_number,
83 flags);83 flags);
8484
=== modified file 'patches/control_online_alter_index.patch'
--- patches/control_online_alter_index.patch 2011-12-27 15:32:16 +0000
+++ patches/control_online_alter_index.patch 2012-02-06 05:02:26 +0000
@@ -58,7 +58,7 @@
58 for (idx_p= index_drop_buffer, idx_end_p= idx_p + index_drop_count;58 for (idx_p= index_drop_buffer, idx_end_p= idx_p + index_drop_count;
59--- a/sql/sys_vars.cc59--- a/sql/sys_vars.cc
60+++ b/sql/sys_vars.cc60+++ b/sql/sys_vars.cc
61@@ -2192,6 +2192,13 @@61@@ -2265,6 +2265,13 @@
62 GLOBAL_VAR(opt_optimizer_fix),62 GLOBAL_VAR(opt_optimizer_fix),
63 NO_CMD_LINE, DEFAULT(TRUE));63 NO_CMD_LINE, DEFAULT(TRUE));
64 64
6565
=== modified file 'patches/group_commit.patch'
--- patches/group_commit.patch 2012-01-11 15:14:15 +0000
+++ patches/group_commit.patch 2012-02-06 05:02:26 +0000
@@ -522,7 +522,7 @@
522 sync_period_ptr(sync_period),522 sync_period_ptr(sync_period),
523 is_relay_log(0), signal_cnt(0),523 is_relay_log(0), signal_cnt(0),
524 description_event_for_exec(0), description_event_for_queue(0)524 description_event_for_exec(0), description_event_for_queue(0)
525@@ -5325,19 +5327,15 @@525@@ -5361,19 +5363,15 @@
526 SYNOPSIS526 SYNOPSIS
527 write_cache()527 write_cache()
528 cache Cache to write to the binary log528 cache Cache to write to the binary log
@@ -544,7 +544,7 @@
544 if (reinit_io_cache(cache, READ_CACHE, 0, 0, 0))544 if (reinit_io_cache(cache, READ_CACHE, 0, 0, 0))
545 return ER_ERROR_ON_WRITE;545 return ER_ERROR_ON_WRITE;
546 uint length= my_b_bytes_in_cache(cache), group, carry, hdr_offs;546 uint length= my_b_bytes_in_cache(cache), group, carry, hdr_offs;
547@@ -5448,6 +5446,8 @@547@@ -5484,6 +5482,8 @@
548 }548 }
549 549
550 /* Write data to the binary log file */550 /* Write data to the binary log file */
@@ -553,7 +553,7 @@
553 if (my_b_write(&log_file, cache->read_pos, length))553 if (my_b_write(&log_file, cache->read_pos, length))
554 return ER_ERROR_ON_WRITE;554 return ER_ERROR_ON_WRITE;
555 thd->binlog_bytes_written+= length;555 thd->binlog_bytes_written+= length;
556@@ -5456,9 +5456,6 @@556@@ -5492,9 +5492,6 @@
557 557
558 DBUG_ASSERT(carry == 0);558 DBUG_ASSERT(carry == 0);
559 559
@@ -563,7 +563,7 @@
563 return 0; // All OK563 return 0; // All OK
564 }564 }
565 565
566@@ -5499,8 +5496,6 @@566@@ -5535,8 +5532,6 @@
567 if (!is_open())567 if (!is_open())
568 DBUG_RETURN(error);568 DBUG_RETURN(error);
569 569
@@ -572,7 +572,7 @@
572 Incident incident= INCIDENT_LOST_EVENTS;572 Incident incident= INCIDENT_LOST_EVENTS;
573 Incident_log_event ev(thd, incident, write_error_msg);573 Incident_log_event ev(thd, incident, write_error_msg);
574 if (lock)574 if (lock)
575@@ -5549,112 +5544,332 @@575@@ -5585,112 +5580,332 @@
576 'cache' needs to be reinitialized after this functions returns.576 'cache' needs to be reinitialized after this functions returns.
577 */577 */
578 578
@@ -971,7 +971,7 @@
971 /**971 /**
972 Wait until we get a signal that the relay log has been updated.972 Wait until we get a signal that the relay log has been updated.
973 973
974@@ -6059,6 +6274,68 @@974@@ -6095,6 +6310,68 @@
975 }975 }
976 976
977 977
@@ -1040,7 +1040,7 @@
1040 /********* transaction coordinator log for 2pc - mmap() based solution *******/1040 /********* transaction coordinator log for 2pc - mmap() based solution *******/
1041 1041
1042 /*1042 /*
1043@@ -6195,6 +6472,7 @@1043@@ -6231,6 +6508,7 @@
1044 mysql_mutex_init(key_LOCK_pool, &LOCK_pool, MY_MUTEX_INIT_FAST);1044 mysql_mutex_init(key_LOCK_pool, &LOCK_pool, MY_MUTEX_INIT_FAST);
1045 mysql_cond_init(key_COND_active, &COND_active, 0);1045 mysql_cond_init(key_COND_active, &COND_active, 0);
1046 mysql_cond_init(key_COND_pool, &COND_pool, 0);1046 mysql_cond_init(key_COND_pool, &COND_pool, 0);
@@ -1048,7 +1048,7 @@
1048 1048
1049 inited=6;1049 inited=6;
1050 1050
1051@@ -6202,6 +6480,8 @@1051@@ -6238,6 +6516,8 @@
1052 active=pages;1052 active=pages;
1053 pool=pages+1;1053 pool=pages+1;
1054 pool_last=pages+npages-1;1054 pool_last=pages+npages-1;
@@ -1057,7 +1057,7 @@
1057 1057
1058 return 0;1058 return 0;
1059 1059
1060@@ -6307,7 +6587,7 @@1060@@ -6343,7 +6623,7 @@
1061 to the position in memory where xid was logged to.1061 to the position in memory where xid was logged to.
1062 */1062 */
1063 1063
@@ -1066,7 +1066,7 @@
1066 {1066 {
1067 int err;1067 int err;
1068 PAGE *p;1068 PAGE *p;
1069@@ -6446,7 +6726,9 @@1069@@ -6482,7 +6762,9 @@
1070 mysql_mutex_destroy(&LOCK_sync);1070 mysql_mutex_destroy(&LOCK_sync);
1071 mysql_mutex_destroy(&LOCK_active);1071 mysql_mutex_destroy(&LOCK_active);
1072 mysql_mutex_destroy(&LOCK_pool);1072 mysql_mutex_destroy(&LOCK_pool);
@@ -1076,7 +1076,7 @@
1076 case 5:1076 case 5:
1077 data[0]='A'; // garble the first (signature) byte, in case mysql_file_delete fails1077 data[0]='A'; // garble the first (signature) byte, in case mysql_file_delete fails
1078 case 4:1078 case 4:
1079@@ -6656,42 +6938,87 @@1079@@ -6692,42 +6974,87 @@
1080 mysql_cond_destroy(&COND_prep_xids);1080 mysql_cond_destroy(&COND_prep_xids);
1081 }1081 }
1082 1082
@@ -1176,7 +1176,7 @@
1176 }1176 }
1177 1177
1178 int TC_LOG_BINLOG::recover(IO_CACHE *log, Format_description_log_event *fdle)1178 int TC_LOG_BINLOG::recover(IO_CACHE *log, Format_description_log_event *fdle)
1179@@ -6760,9 +7087,67 @@1179@@ -6796,9 +7123,67 @@
1180 {1180 {
1181 return (ulonglong) mysql_bin_log.get_log_file()->pos_in_file;1181 return (ulonglong) mysql_bin_log.get_log_file()->pos_in_file;
1182 }1182 }
@@ -1244,7 +1244,7 @@
1244 struct st_mysql_storage_engine binlog_storage_engine=1244 struct st_mysql_storage_engine binlog_storage_engine=
1245 { MYSQL_HANDLERTON_INTERFACE_VERSION };1245 { MYSQL_HANDLERTON_INTERFACE_VERSION };
1246 1246
1247@@ -6777,7 +7162,7 @@1247@@ -6813,7 +7198,7 @@
1248 binlog_init, /* Plugin Init */1248 binlog_init, /* Plugin Init */
1249 NULL, /* Plugin Deinit */1249 NULL, /* Plugin Deinit */
1250 0x0100 /* 1.0 */,1250 0x0100 /* 1.0 */,
@@ -1446,7 +1446,7 @@
1446 class Log_event_handler1446 class Log_event_handler
1447--- a/sql/mysqld.cc1447--- a/sql/mysqld.cc
1448+++ b/sql/mysqld.cc1448+++ b/sql/mysqld.cc
1449@@ -1490,6 +1490,7 @@1449@@ -1495,6 +1495,7 @@
1450 ha_end();1450 ha_end();
1451 if (tc_log)1451 if (tc_log)
1452 tc_log->close();1452 tc_log->close();
@@ -1454,7 +1454,7 @@
1454 delegates_destroy();1454 delegates_destroy();
1455 xid_cache_free();1455 xid_cache_free();
1456 table_def_free();1456 table_def_free();
1457@@ -4061,6 +4062,8 @@1457@@ -3911,6 +3912,8 @@
1458 query_response_time_init();1458 query_response_time_init();
1459 #endif // HAVE_RESPONSE_TIME_DISTRIBUTION1459 #endif // HAVE_RESPONSE_TIME_DISTRIBUTION
1460 /* We have to initialize the storage engines before CSV logging */1460 /* We have to initialize the storage engines before CSV logging */
@@ -1463,7 +1463,7 @@
1463 init_global_table_stats();1463 init_global_table_stats();
1464 init_global_index_stats();1464 init_global_index_stats();
1465 1465
1466@@ -8004,6 +8007,7 @@1466@@ -7872,6 +7875,7 @@
1467 key_LOCK_error_messages, key_LOG_INFO_lock, key_LOCK_thread_count,1467 key_LOCK_error_messages, key_LOG_INFO_lock, key_LOCK_thread_count,
1468 key_PARTITION_LOCK_auto_inc;1468 key_PARTITION_LOCK_auto_inc;
1469 PSI_mutex_key key_RELAYLOG_LOCK_index;1469 PSI_mutex_key key_RELAYLOG_LOCK_index;
@@ -1471,7 +1471,7 @@
1471 1471
1472 static PSI_mutex_info all_server_mutexes[]=1472 static PSI_mutex_info all_server_mutexes[]=
1473 {1473 {
1474@@ -8024,6 +8028,7 @@1474@@ -7892,6 +7896,7 @@
1475 { &key_delayed_insert_mutex, "Delayed_insert::mutex", 0},1475 { &key_delayed_insert_mutex, "Delayed_insert::mutex", 0},
1476 { &key_hash_filo_lock, "hash_filo::lock", 0},1476 { &key_hash_filo_lock, "hash_filo::lock", 0},
1477 { &key_LOCK_active_mi, "LOCK_active_mi", PSI_FLAG_GLOBAL},1477 { &key_LOCK_active_mi, "LOCK_active_mi", PSI_FLAG_GLOBAL},
@@ -1479,7 +1479,7 @@
1479 { &key_LOCK_connection_count, "LOCK_connection_count", PSI_FLAG_GLOBAL},1479 { &key_LOCK_connection_count, "LOCK_connection_count", PSI_FLAG_GLOBAL},
1480 { &key_LOCK_crypt, "LOCK_crypt", PSI_FLAG_GLOBAL},1480 { &key_LOCK_crypt, "LOCK_crypt", PSI_FLAG_GLOBAL},
1481 { &key_LOCK_delayed_create, "LOCK_delayed_create", PSI_FLAG_GLOBAL},1481 { &key_LOCK_delayed_create, "LOCK_delayed_create", PSI_FLAG_GLOBAL},
1482@@ -8039,6 +8044,7 @@1482@@ -7907,6 +7912,7 @@
1483 "LOCK_global_index_stats", PSI_FLAG_GLOBAL},1483 "LOCK_global_index_stats", PSI_FLAG_GLOBAL},
1484 { &key_LOCK_gdl, "LOCK_gdl", PSI_FLAG_GLOBAL},1484 { &key_LOCK_gdl, "LOCK_gdl", PSI_FLAG_GLOBAL},
1485 { &key_LOCK_global_system_variables, "LOCK_global_system_variables", PSI_FLAG_GLOBAL},1485 { &key_LOCK_global_system_variables, "LOCK_global_system_variables", PSI_FLAG_GLOBAL},
@@ -1487,7 +1487,7 @@
1487 { &key_LOCK_manager, "LOCK_manager", PSI_FLAG_GLOBAL},1487 { &key_LOCK_manager, "LOCK_manager", PSI_FLAG_GLOBAL},
1488 { &key_LOCK_prepared_stmt_count, "LOCK_prepared_stmt_count", PSI_FLAG_GLOBAL},1488 { &key_LOCK_prepared_stmt_count, "LOCK_prepared_stmt_count", PSI_FLAG_GLOBAL},
1489 { &key_LOCK_rpl_status, "LOCK_rpl_status", PSI_FLAG_GLOBAL},1489 { &key_LOCK_rpl_status, "LOCK_rpl_status", PSI_FLAG_GLOBAL},
1490@@ -8050,6 +8056,7 @@1490@@ -7918,6 +7924,7 @@
1491 { &key_LOCK_temporary_tables, "THD::LOCK_temporary_tables", 0},1491 { &key_LOCK_temporary_tables, "THD::LOCK_temporary_tables", 0},
1492 { &key_LOCK_user_conn, "LOCK_user_conn", PSI_FLAG_GLOBAL},1492 { &key_LOCK_user_conn, "LOCK_user_conn", PSI_FLAG_GLOBAL},
1493 { &key_LOCK_uuid_generator, "LOCK_uuid_generator", PSI_FLAG_GLOBAL},1493 { &key_LOCK_uuid_generator, "LOCK_uuid_generator", PSI_FLAG_GLOBAL},
@@ -1495,7 +1495,7 @@
1495 { &key_LOG_LOCK_log, "LOG::LOCK_log", 0},1495 { &key_LOG_LOCK_log, "LOG::LOCK_log", 0},
1496 { &key_master_info_data_lock, "Master_info::data_lock", 0},1496 { &key_master_info_data_lock, "Master_info::data_lock", 0},
1497 { &key_master_info_run_lock, "Master_info::run_lock", 0},1497 { &key_master_info_run_lock, "Master_info::run_lock", 0},
1498@@ -8097,6 +8104,7 @@1498@@ -7965,6 +7972,7 @@
1499 key_TABLE_SHARE_cond, key_user_level_lock_cond,1499 key_TABLE_SHARE_cond, key_user_level_lock_cond,
1500 key_COND_thread_count, key_COND_thread_cache, key_COND_flush_thread_cache;1500 key_COND_thread_count, key_COND_thread_cache, key_COND_flush_thread_cache;
1501 PSI_cond_key key_RELAYLOG_update_cond;1501 PSI_cond_key key_RELAYLOG_update_cond;
@@ -1503,7 +1503,7 @@
1503 1503
1504 static PSI_cond_info all_server_conds[]=1504 static PSI_cond_info all_server_conds[]=
1505 {1505 {
1506@@ -8113,8 +8121,10 @@1506@@ -7981,8 +7989,10 @@
1507 { &key_RELAYLOG_update_cond, "MYSQL_RELAY_LOG::update_cond", 0},1507 { &key_RELAYLOG_update_cond, "MYSQL_RELAY_LOG::update_cond", 0},
1508 { &key_COND_cache_status_changed, "Query_cache::COND_cache_status_changed", 0},1508 { &key_COND_cache_status_changed, "Query_cache::COND_cache_status_changed", 0},
1509 { &key_COND_manager, "COND_manager", PSI_FLAG_GLOBAL},1509 { &key_COND_manager, "COND_manager", PSI_FLAG_GLOBAL},
@@ -1516,7 +1516,7 @@
1516 { &key_item_func_sleep_cond, "Item_func_sleep::cond", 0},1516 { &key_item_func_sleep_cond, "Item_func_sleep::cond", 0},
1517--- a/sql/mysqld.h1517--- a/sql/mysqld.h
1518+++ b/sql/mysqld.h1518+++ b/sql/mysqld.h
1519@@ -273,6 +273,7 @@1519@@ -274,6 +274,7 @@
1520 key_structure_guard_mutex, key_TABLE_SHARE_LOCK_ha_data,1520 key_structure_guard_mutex, key_TABLE_SHARE_LOCK_ha_data,
1521 key_LOCK_error_messages, key_LOCK_thread_count, key_PARTITION_LOCK_auto_inc;1521 key_LOCK_error_messages, key_LOCK_thread_count, key_PARTITION_LOCK_auto_inc;
1522 extern PSI_mutex_key key_RELAYLOG_LOCK_index;1522 extern PSI_mutex_key key_RELAYLOG_LOCK_index;
@@ -1524,7 +1524,7 @@
1524 1524
1525 extern PSI_rwlock_key key_rwlock_LOCK_grant, key_rwlock_LOCK_logger,1525 extern PSI_rwlock_key key_rwlock_LOCK_grant, key_rwlock_LOCK_logger,
1526 key_rwlock_LOCK_sys_init_connect, key_rwlock_LOCK_sys_init_slave,1526 key_rwlock_LOCK_sys_init_connect, key_rwlock_LOCK_sys_init_slave,
1527@@ -293,6 +294,7 @@1527@@ -294,6 +295,7 @@
1528 key_TABLE_SHARE_cond, key_user_level_lock_cond,1528 key_TABLE_SHARE_cond, key_user_level_lock_cond,
1529 key_COND_thread_count, key_COND_thread_cache, key_COND_flush_thread_cache;1529 key_COND_thread_count, key_COND_thread_cache, key_COND_flush_thread_cache;
1530 extern PSI_cond_key key_RELAYLOG_update_cond;1530 extern PSI_cond_key key_RELAYLOG_update_cond;
@@ -1552,7 +1552,7 @@
1552 mysql_mutex_destroy(&LOCK_thd_data);1552 mysql_mutex_destroy(&LOCK_thd_data);
1553 mysql_mutex_destroy(&LOCK_temporary_tables);1553 mysql_mutex_destroy(&LOCK_temporary_tables);
1554 #ifndef DBUG_OFF1554 #ifndef DBUG_OFF
1555@@ -5292,6 +5296,24 @@1555@@ -5297,6 +5301,24 @@
1556 DBUG_RETURN(0);1556 DBUG_RETURN(0);
1557 }1557 }
1558 1558
@@ -1887,7 +1887,7 @@
1887 1887
1888 trx_deregister_from_2pc(trx);1888 trx_deregister_from_2pc(trx);
1889 1889
1890@@ -10982,6 +11149,7 @@1890@@ -10981,6 +11148,7 @@
1891 1891
1892 srv_active_wake_master_thread();1892 srv_active_wake_master_thread();
1893 1893
@@ -1895,7 +1895,7 @@
1895 if (thd_sql_command(thd) != SQLCOM_XA_PREPARE1895 if (thd_sql_command(thd) != SQLCOM_XA_PREPARE
1896 && (all1896 && (all
1897 || !thd_test_options(1897 || !thd_test_options(
1898@@ -11008,6 +11176,7 @@1898@@ -11007,6 +11175,7 @@
1899 mysql_mutex_lock(&prepare_commit_mutex);1899 mysql_mutex_lock(&prepare_commit_mutex);
1900 trx_owns_prepare_commit_mutex_set(trx);1900 trx_owns_prepare_commit_mutex_set(trx);
1901 }1901 }
19021902
=== modified file 'patches/innodb_adaptive_hash_index_partitions.patch'
--- patches/innodb_adaptive_hash_index_partitions.patch 2012-01-11 15:14:15 +0000
+++ patches/innodb_adaptive_hash_index_partitions.patch 2012-02-06 05:02:26 +0000
@@ -851,7 +851,7 @@
851 851
852 #ifdef UNIV_DEBUG852 #ifdef UNIV_DEBUG
853 block->page.in_page_hash = FALSE;853 block->page.in_page_hash = FALSE;
854@@ -1427,7 +1428,11 @@854@@ -1429,7 +1430,11 @@
855 ulint p;855 ulint p;
856 856
857 #ifdef UNIV_SYNC_DEBUG857 #ifdef UNIV_SYNC_DEBUG
@@ -864,7 +864,7 @@
864 #endif /* UNIV_SYNC_DEBUG */864 #endif /* UNIV_SYNC_DEBUG */
865 ut_ad(!btr_search_enabled);865 ut_ad(!btr_search_enabled);
866 866
867@@ -2142,6 +2147,7 @@867@@ -2144,6 +2149,7 @@
868 {868 {
869 block->check_index_page_at_flush = FALSE;869 block->check_index_page_at_flush = FALSE;
870 block->index = NULL;870 block->index = NULL;
@@ -874,7 +874,7 @@
874 block->n_fields = 1;874 block->n_fields = 1;
875--- a/storage/innobase/buf/buf0lru.c875--- a/storage/innobase/buf/buf0lru.c
876+++ b/storage/innobase/buf/buf0lru.c876+++ b/storage/innobase/buf/buf0lru.c
877@@ -560,7 +560,7 @@877@@ -576,7 +576,7 @@
878 878
879 mutex_exit(&buf_pool->LRU_list_mutex);879 mutex_exit(&buf_pool->LRU_list_mutex);
880 880
@@ -883,7 +883,7 @@
883 chunk = buf_pool->chunks;883 chunk = buf_pool->chunks;
884 for (j = buf_pool->n_chunks; j--; chunk++) {884 for (j = buf_pool->n_chunks; j--; chunk++) {
885 buf_block_t* block = chunk->blocks;885 buf_block_t* block = chunk->blocks;
886@@ -572,16 +572,16 @@886@@ -588,16 +588,16 @@
887 continue;887 continue;
888 }888 }
889 889
@@ -905,7 +905,7 @@
905 905
906--- a/storage/innobase/dict/dict0dict.c906--- a/storage/innobase/dict/dict0dict.c
907+++ b/storage/innobase/dict/dict0dict.c907+++ b/storage/innobase/dict/dict0dict.c
908@@ -1846,7 +1846,7 @@908@@ -1851,7 +1851,7 @@
909 zero. */909 zero. */
910 910
911 for (;;) {911 for (;;) {
@@ -916,7 +916,7 @@
916 }916 }
917--- a/storage/innobase/handler/ha_innodb.cc917--- a/storage/innobase/handler/ha_innodb.cc
918+++ b/storage/innobase/handler/ha_innodb.cc918+++ b/storage/innobase/handler/ha_innodb.cc
919@@ -11833,6 +11833,11 @@919@@ -11832,6 +11832,11 @@
920 "Disable with --skip-innodb-adaptive-hash-index.",920 "Disable with --skip-innodb-adaptive-hash-index.",
921 NULL, innodb_adaptive_hash_index_update, TRUE);921 NULL, innodb_adaptive_hash_index_update, TRUE);
922 922
@@ -928,7 +928,7 @@
928 static MYSQL_SYSVAR_ULONG(replication_delay, srv_replication_delay,928 static MYSQL_SYSVAR_ULONG(replication_delay, srv_replication_delay,
929 PLUGIN_VAR_RQCMDARG,929 PLUGIN_VAR_RQCMDARG,
930 "Replication thread delay (ms) on the slave server if "930 "Replication thread delay (ms) on the slave server if "
931@@ -12253,6 +12258,7 @@931@@ -12252,6 +12257,7 @@
932 MYSQL_SYSVAR(use_sys_stats_table),932 MYSQL_SYSVAR(use_sys_stats_table),
933 MYSQL_SYSVAR(stats_sample_pages),933 MYSQL_SYSVAR(stats_sample_pages),
934 MYSQL_SYSVAR(adaptive_hash_index),934 MYSQL_SYSVAR(adaptive_hash_index),
@@ -1411,7 +1411,7 @@
1411 1411
1412--- a/storage/innobase/include/buf0buf.h1412--- a/storage/innobase/include/buf0buf.h
1413+++ b/storage/innobase/include/buf0buf.h1413+++ b/storage/innobase/include/buf0buf.h
1414@@ -1580,6 +1580,7 @@1414@@ -1600,6 +1600,7 @@
1415 complete, though: there may1415 complete, though: there may
1416 have been hash collisions,1416 have been hash collisions,
1417 record deletions, etc. */1417 record deletions, etc. */
14181418
=== modified file 'patches/innodb_admin_command_base.patch'
--- patches/innodb_admin_command_base.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_admin_command_base.patch 2012-02-06 05:02:26 +0000
@@ -7,7 +7,7 @@
7# should be done or reviewed by the maintainer!7# should be done or reviewed by the maintainer!
8--- a/storage/innobase/handler/ha_innodb.cc8--- a/storage/innobase/handler/ha_innodb.cc
9+++ b/storage/innobase/handler/ha_innodb.cc9+++ b/storage/innobase/handler/ha_innodb.cc
10@@ -11999,7 +11999,8 @@10@@ -12041,7 +12041,8 @@
11 i_s_innodb_sys_foreign_cols,11 i_s_innodb_sys_foreign_cols,
12 i_s_innodb_sys_stats,12 i_s_innodb_sys_stats,
13 i_s_innodb_table_stats,13 i_s_innodb_table_stats,
1414
=== modified file 'patches/innodb_buffer_pool_pages_i_s.patch'
--- patches/innodb_buffer_pool_pages_i_s.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_buffer_pool_pages_i_s.patch 2012-02-06 05:02:26 +0000
@@ -7,7 +7,7 @@
7# should be done or reviewed by the maintainer!7# should be done or reviewed by the maintainer!
8--- a/storage/innobase/buf/buf0buf.c8--- a/storage/innobase/buf/buf0buf.c
9+++ b/storage/innobase/buf/buf0buf.c9+++ b/storage/innobase/buf/buf0buf.c
10@@ -4161,6 +4161,36 @@10@@ -4163,6 +4163,36 @@
11 mutex_exit(block_mutex);11 mutex_exit(block_mutex);
12 }12 }
13 13
@@ -46,7 +46,7 @@
46 @return TRUE */46 @return TRUE */
47--- a/storage/innobase/handler/ha_innodb.cc47--- a/storage/innobase/handler/ha_innodb.cc
48+++ b/storage/innobase/handler/ha_innodb.cc48+++ b/storage/innobase/handler/ha_innodb.cc
49@@ -12296,6 +12296,9 @@49@@ -12338,6 +12338,9 @@
50 i_s_innodb_sys_stats,50 i_s_innodb_sys_stats,
51 i_s_innodb_table_stats,51 i_s_innodb_table_stats,
52 i_s_innodb_index_stats,52 i_s_innodb_index_stats,
@@ -793,7 +793,7 @@
793 #endif /* i_s_h */793 #endif /* i_s_h */
794--- a/storage/innobase/include/buf0buf.h794--- a/storage/innobase/include/buf0buf.h
795+++ b/storage/innobase/include/buf0buf.h795+++ b/storage/innobase/include/buf0buf.h
796@@ -1161,6 +1161,14 @@796@@ -1181,6 +1181,14 @@
797 /*===========*/797 /*===========*/
798 const buf_pool_t* buf_pool) /*!< in: buffer pool */798 const buf_pool_t* buf_pool) /*!< in: buffer pool */
799 __attribute__((nonnull, const));799 __attribute__((nonnull, const));
800800
=== modified file 'patches/innodb_buffer_pool_shm.patch'
--- patches/innodb_buffer_pool_shm.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_buffer_pool_shm.patch 2012-02-06 05:02:26 +0000
@@ -55,7 +55,7 @@
55 srv_mem_pool_size = (ulint) innobase_additional_mem_pool_size;55 srv_mem_pool_size = (ulint) innobase_additional_mem_pool_size;
56 56
57 srv_n_file_io_threads = (ulint) innobase_file_io_threads;57 srv_n_file_io_threads = (ulint) innobase_file_io_threads;
58@@ -11864,6 +11872,16 @@58@@ -11863,6 +11871,16 @@
59 "Number of buffer pool instances, set to higher value on high-end machines to increase scalability",59 "Number of buffer pool instances, set to higher value on high-end machines to increase scalability",
60 NULL, NULL, 1L, 1L, MAX_BUFFER_POOLS, 1L);60 NULL, NULL, 1L, 1L, MAX_BUFFER_POOLS, 1L);
61 61
@@ -72,7 +72,7 @@
72 static MYSQL_SYSVAR_ULONG(commit_concurrency, innobase_commit_concurrency,72 static MYSQL_SYSVAR_ULONG(commit_concurrency, innobase_commit_concurrency,
73 PLUGIN_VAR_RQCMDARG,73 PLUGIN_VAR_RQCMDARG,
74 "Helps in performance tuning in heavily concurrent environments.",74 "Helps in performance tuning in heavily concurrent environments.",
75@@ -12170,6 +12188,8 @@75@@ -12209,6 +12227,8 @@
76 MYSQL_SYSVAR(autoextend_increment),76 MYSQL_SYSVAR(autoextend_increment),
77 MYSQL_SYSVAR(buffer_pool_size),77 MYSQL_SYSVAR(buffer_pool_size),
78 MYSQL_SYSVAR(buffer_pool_instances),78 MYSQL_SYSVAR(buffer_pool_instances),
7979
=== modified file 'patches/innodb_deadlock_count.patch'
--- patches/innodb_deadlock_count.patch 2011-10-28 08:46:55 +0000
+++ patches/innodb_deadlock_count.patch 2012-02-06 05:02:26 +0000
@@ -28,7 +28,7 @@
28 Gets the size of a lock struct.28 Gets the size of a lock struct.
29--- a/storage/innobase/include/srv0srv.h29--- a/storage/innobase/include/srv0srv.h
30+++ b/storage/innobase/include/srv0srv.h30+++ b/storage/innobase/include/srv0srv.h
31@@ -767,6 +767,7 @@31@@ -770,6 +770,7 @@
32 ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/32 ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/
33 ulint innodb_dblwr_pages_written; /*!< srv_dblwr_pages_written */33 ulint innodb_dblwr_pages_written; /*!< srv_dblwr_pages_written */
34 ulint innodb_dblwr_writes; /*!< srv_dblwr_writes */34 ulint innodb_dblwr_writes; /*!< srv_dblwr_writes */
@@ -48,7 +48,7 @@
48 break;48 break;
49--- a/storage/innobase/srv/srv0srv.c49--- a/storage/innobase/srv/srv0srv.c
50+++ b/storage/innobase/srv/srv0srv.c50+++ b/storage/innobase/srv/srv0srv.c
51@@ -474,6 +474,7 @@51@@ -477,6 +477,7 @@
52 static ulint srv_n_rows_deleted_old = 0;52 static ulint srv_n_rows_deleted_old = 0;
53 static ulint srv_n_rows_read_old = 0;53 static ulint srv_n_rows_read_old = 0;
54 54
@@ -56,7 +56,7 @@
56 UNIV_INTERN ulint srv_n_lock_wait_count = 0;56 UNIV_INTERN ulint srv_n_lock_wait_count = 0;
57 UNIV_INTERN ulint srv_n_lock_wait_current_count = 0;57 UNIV_INTERN ulint srv_n_lock_wait_current_count = 0;
58 UNIV_INTERN ib_int64_t srv_n_lock_wait_time = 0;58 UNIV_INTERN ib_int64_t srv_n_lock_wait_time = 0;
59@@ -2290,6 +2291,7 @@59@@ -2293,6 +2294,7 @@
60 export_vars.innodb_buffer_pool_pages_data = LRU_len;60 export_vars.innodb_buffer_pool_pages_data = LRU_len;
61 export_vars.innodb_buffer_pool_pages_dirty = flush_list_len;61 export_vars.innodb_buffer_pool_pages_dirty = flush_list_len;
62 export_vars.innodb_buffer_pool_pages_free = free_len;62 export_vars.innodb_buffer_pool_pages_free = free_len;
6363
=== modified file 'patches/innodb_dict_size_limit.patch'
--- patches/innodb_dict_size_limit.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_dict_size_limit.patch 2012-02-06 05:02:26 +0000
@@ -289,7 +289,7 @@
289 mutex_exit(&(dict_sys->mutex));289 mutex_exit(&(dict_sys->mutex));
290 290
291 if (table != NULL) {291 if (table != NULL) {
292@@ -1259,6 +1263,64 @@292@@ -1264,6 +1268,64 @@
293 dict_mem_table_free(table);293 dict_mem_table_free(table);
294 }294 }
295 295
@@ -354,7 +354,7 @@
354 /****************************************************************//**354 /****************************************************************//**
355 If the given column name is reserved for InnoDB system columns, return355 If the given column name is reserved for InnoDB system columns, return
356 TRUE.356 TRUE.
357@@ -1763,6 +1825,11 @@357@@ -1768,6 +1830,11 @@
358 ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);358 ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
359 ut_ad(mutex_own(&(dict_sys->mutex)));359 ut_ad(mutex_own(&(dict_sys->mutex)));
360 360
@@ -377,9 +377,9 @@
377 {"have_atomic_builtins",377 {"have_atomic_builtins",
378 (char*) &export_vars.innodb_have_atomic_builtins, SHOW_BOOL},378 (char*) &export_vars.innodb_have_atomic_builtins, SHOW_BOOL},
379 {"log_waits",379 {"log_waits",
380@@ -11774,6 +11776,11 @@380@@ -11813,6 +11815,11 @@
381 "Choose method of innodb_adaptive_flushing. (native, [estimate], keep_average)",381 NULL, NULL, 0, 0, 1, 0);
382 NULL, innodb_adaptive_flushing_method_update, 1, &adaptive_flushing_method_typelib);382 #endif
383 383
384+static MYSQL_SYSVAR_ULONG(dict_size_limit, srv_dict_size_limit,384+static MYSQL_SYSVAR_ULONG(dict_size_limit, srv_dict_size_limit,
385+ PLUGIN_VAR_RQCMDARG,385+ PLUGIN_VAR_RQCMDARG,
@@ -389,7 +389,7 @@
389 static struct st_mysql_sys_var* innobase_system_variables[]= {389 static struct st_mysql_sys_var* innobase_system_variables[]= {
390 MYSQL_SYSVAR(additional_mem_pool_size),390 MYSQL_SYSVAR(additional_mem_pool_size),
391 MYSQL_SYSVAR(autoextend_increment),391 MYSQL_SYSVAR(autoextend_increment),
392@@ -11843,6 +11850,7 @@392@@ -11882,6 +11889,7 @@
393 MYSQL_SYSVAR(flush_neighbor_pages),393 MYSQL_SYSVAR(flush_neighbor_pages),
394 MYSQL_SYSVAR(read_ahead),394 MYSQL_SYSVAR(read_ahead),
395 MYSQL_SYSVAR(adaptive_flushing_method),395 MYSQL_SYSVAR(adaptive_flushing_method),
@@ -425,7 +425,7 @@
425 or freed in a file segment. */425 or freed in a file segment. */
426--- a/storage/innobase/include/buf0buf.h426--- a/storage/innobase/include/buf0buf.h
427+++ b/storage/innobase/include/buf0buf.h427+++ b/storage/innobase/include/buf0buf.h
428@@ -1575,6 +1575,15 @@428@@ -1595,6 +1595,15 @@
429 #define BUF_POOL_ZIP_FOLD_BPAGE(b) BUF_POOL_ZIP_FOLD((buf_block_t*) (b))429 #define BUF_POOL_ZIP_FOLD_BPAGE(b) BUF_POOL_ZIP_FOLD((buf_block_t*) (b))
430 /* @} */430 /* @} */
431 431
@@ -495,7 +495,7 @@
495 /*-------------------------------------------*/495 /*-------------------------------------------*/
496 496
497 extern ulint srv_n_rows_inserted;497 extern ulint srv_n_rows_inserted;
498@@ -714,6 +715,7 @@498@@ -717,6 +718,7 @@
499 ulint innodb_data_writes; /*!< I/O write requests */499 ulint innodb_data_writes; /*!< I/O write requests */
500 ulint innodb_data_written; /*!< Data bytes written */500 ulint innodb_data_written; /*!< Data bytes written */
501 ulint innodb_data_reads; /*!< I/O read requests */501 ulint innodb_data_reads; /*!< I/O read requests */
@@ -514,7 +514,7 @@
514 /*-------------------------------------------*/514 /*-------------------------------------------*/
515 UNIV_INTERN ulong srv_n_spin_wait_rounds = 30;515 UNIV_INTERN ulong srv_n_spin_wait_rounds = 30;
516 UNIV_INTERN ulong srv_n_free_tickets_to_enter = 500;516 UNIV_INTERN ulong srv_n_free_tickets_to_enter = 500;
517@@ -2222,6 +2224,7 @@517@@ -2225,6 +2227,7 @@
518 export_vars.innodb_data_reads = os_n_file_reads;518 export_vars.innodb_data_reads = os_n_file_reads;
519 export_vars.innodb_data_writes = os_n_file_writes;519 export_vars.innodb_data_writes = os_n_file_writes;
520 export_vars.innodb_data_written = srv_data_written;520 export_vars.innodb_data_written = srv_data_written;
521521
=== modified file 'patches/innodb_expand_fast_index_creation.patch'
--- patches/innodb_expand_fast_index_creation.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_expand_fast_index_creation.patch 2012-02-06 05:02:26 +0000
@@ -884,7 +884,7 @@
884 884
885--- a/sql/sql_lex.h885--- a/sql/sql_lex.h
886+++ b/sql/sql_lex.h886+++ b/sql/sql_lex.h
887@@ -1013,6 +1013,9 @@887@@ -1014,6 +1014,9 @@
888 List<Alter_column> alter_list;888 List<Alter_column> alter_list;
889 List<Key> key_list;889 List<Key> key_list;
890 List<Create_field> create_list;890 List<Create_field> create_list;
@@ -894,7 +894,7 @@
894 uint flags;894 uint flags;
895 enum enum_enable_or_disable keys_onoff;895 enum enum_enable_or_disable keys_onoff;
896 enum tablespace_op_type tablespace_op;896 enum tablespace_op_type tablespace_op;
897@@ -1024,6 +1027,8 @@897@@ -1025,6 +1028,8 @@
898 898
899 899
900 Alter_info() :900 Alter_info() :
@@ -903,7 +903,7 @@
903 flags(0),903 flags(0),
904 keys_onoff(LEAVE_AS_IS),904 keys_onoff(LEAVE_AS_IS),
905 tablespace_op(NO_TABLESPACE_OP),905 tablespace_op(NO_TABLESPACE_OP),
906@@ -1039,6 +1044,9 @@906@@ -1040,6 +1045,9 @@
907 alter_list.empty();907 alter_list.empty();
908 key_list.empty();908 key_list.empty();
909 create_list.empty();909 create_list.empty();
@@ -1322,7 +1322,7 @@
1322 1322
1323--- a/sql/sys_vars.cc1323--- a/sql/sys_vars.cc
1324+++ b/sql/sys_vars.cc1324+++ b/sql/sys_vars.cc
1325@@ -710,6 +710,14 @@1325@@ -783,6 +783,14 @@
1326 ON_CHECK(event_scheduler_check), ON_UPDATE(event_scheduler_update));1326 ON_CHECK(event_scheduler_check), ON_UPDATE(event_scheduler_update));
1327 #endif1327 #endif
1328 1328
@@ -1425,7 +1425,7 @@
1425 --expire-logs-days=# 1425 --expire-logs-days=#
1426 If non-zero, binary logs will be purged after1426 If non-zero, binary logs will be purged after
1427 expire_logs_days days; possible purges happen at startup1427 expire_logs_days days; possible purges happen at startup
1428@@ -777,6 +781,7 @@1428@@ -781,6 +785,7 @@
1429 div-precision-increment 41429 div-precision-increment 4
1430 engine-condition-pushdown TRUE1430 engine-condition-pushdown TRUE
1431 event-scheduler OFF1431 event-scheduler OFF
14321432
=== modified file 'patches/innodb_expand_import.patch'
--- patches/innodb_expand_import.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_expand_import.patch 2012-02-06 05:02:26 +0000
@@ -51,7 +51,7 @@
51 #ifndef UNIV_HOTBACKUP51 #ifndef UNIV_HOTBACKUP
52 # include "buf0lru.h"52 # include "buf0lru.h"
53 # include "ibuf0ibuf.h"53 # include "ibuf0ibuf.h"
54@@ -3033,6 +3041,84 @@54@@ -3041,6 +3049,84 @@
55 }55 }
56 56
57 /********************************************************************//**57 /********************************************************************//**
@@ -136,7 +136,7 @@
136 Tries to open a single-table tablespace and optionally checks the space id is136 Tries to open a single-table tablespace and optionally checks the space id is
137 right in it. If does not succeed, prints an error message to the .err log. This137 right in it. If does not succeed, prints an error message to the .err log. This
138 function is used to open a tablespace when we start up mysqld, and also in138 function is used to open a tablespace when we start up mysqld, and also in
139@@ -3055,8 +3141,11 @@139@@ -3063,8 +3149,11 @@
140 accessing the first page of the file */140 accessing the first page of the file */
141 ulint id, /*!< in: space id */141 ulint id, /*!< in: space id */
142 ulint flags, /*!< in: tablespace flags */142 ulint flags, /*!< in: tablespace flags */
@@ -149,7 +149,7 @@
149 {149 {
150 os_file_t file;150 os_file_t file;
151 char* filepath;151 char* filepath;
152@@ -3079,7 +3168,7 @@152@@ -3087,7 +3176,7 @@
153 153
154 file = os_file_create_simple_no_error_handling(154 file = os_file_create_simple_no_error_handling(
155 innodb_file_data_key, filepath, OS_FILE_OPEN,155 innodb_file_data_key, filepath, OS_FILE_OPEN,
@@ -158,7 +158,7 @@
158 if (!success) {158 if (!success) {
159 /* The following call prints an error message */159 /* The following call prints an error message */
160 os_file_get_last_error(TRUE);160 os_file_get_last_error(TRUE);
161@@ -3126,6 +3215,453 @@161@@ -3134,6 +3223,453 @@
162 space_id = fsp_header_get_space_id(page);162 space_id = fsp_header_get_space_id(page);
163 space_flags = fsp_header_get_flags(page);163 space_flags = fsp_header_get_flags(page);
164 164
@@ -612,7 +612,7 @@
612 ut_free(buf2);612 ut_free(buf2);
613 613
614 if (UNIV_UNLIKELY(space_id != id614 if (UNIV_UNLIKELY(space_id != id
615@@ -3167,6 +3703,269 @@615@@ -3175,6 +3711,269 @@
616 os_file_close(file);616 os_file_close(file);
617 mem_free(filepath);617 mem_free(filepath);
618 618
@@ -884,7 +884,7 @@
884 #endif /* !UNIV_HOTBACKUP */884 #endif /* !UNIV_HOTBACKUP */
885--- a/storage/innobase/handler/ha_innodb.cc885--- a/storage/innobase/handler/ha_innodb.cc
886+++ b/storage/innobase/handler/ha_innodb.cc886+++ b/storage/innobase/handler/ha_innodb.cc
887@@ -7422,6 +7422,14 @@887@@ -7421,6 +7421,14 @@
888 err = row_discard_tablespace_for_mysql(dict_table->name, trx);888 err = row_discard_tablespace_for_mysql(dict_table->name, trx);
889 } else {889 } else {
890 err = row_import_tablespace_for_mysql(dict_table->name, trx);890 err = row_import_tablespace_for_mysql(dict_table->name, trx);
@@ -899,9 +899,9 @@
899 }899 }
900 900
901 err = convert_error_code_to_mysql(err, dict_table->flags, NULL);901 err = convert_error_code_to_mysql(err, dict_table->flags, NULL);
902@@ -11781,6 +11789,11 @@902@@ -11820,6 +11828,11 @@
903 "Choose method of innodb_adaptive_flushing. (native, [estimate], keep_average)",903 NULL, NULL, 0, 0, 1, 0);
904 NULL, innodb_adaptive_flushing_method_update, 1, &adaptive_flushing_method_typelib);904 #endif
905 905
906+static MYSQL_SYSVAR_ULONG(import_table_from_xtrabackup, srv_expand_import,906+static MYSQL_SYSVAR_ULONG(import_table_from_xtrabackup, srv_expand_import,
907+ PLUGIN_VAR_RQCMDARG,907+ PLUGIN_VAR_RQCMDARG,
@@ -911,7 +911,7 @@
911 static MYSQL_SYSVAR_ULONG(dict_size_limit, srv_dict_size_limit,911 static MYSQL_SYSVAR_ULONG(dict_size_limit, srv_dict_size_limit,
912 PLUGIN_VAR_RQCMDARG,912 PLUGIN_VAR_RQCMDARG,
913 "Limit the allocated memory for dictionary cache. (0: unlimited)",913 "Limit the allocated memory for dictionary cache. (0: unlimited)",
914@@ -11855,6 +11868,7 @@914@@ -11894,6 +11907,7 @@
915 MYSQL_SYSVAR(flush_neighbor_pages),915 MYSQL_SYSVAR(flush_neighbor_pages),
916 MYSQL_SYSVAR(read_ahead),916 MYSQL_SYSVAR(read_ahead),
917 MYSQL_SYSVAR(adaptive_flushing_method),917 MYSQL_SYSVAR(adaptive_flushing_method),
@@ -1120,7 +1120,7 @@
1120 1120
1121 /** When mysqld is run, the default directory "." is the mysqld datadir,1121 /** When mysqld is run, the default directory "." is the mysqld datadir,
1122 but in the MySQL Embedded Server Library and ibbackup it is not the default1122 but in the MySQL Embedded Server Library and ibbackup it is not the default
1123@@ -473,8 +474,11 @@1123@@ -478,8 +479,11 @@
1124 accessing the first page of the file */1124 accessing the first page of the file */
1125 ulint id, /*!< in: space id */1125 ulint id, /*!< in: space id */
1126 ulint flags, /*!< in: tablespace flags */1126 ulint flags, /*!< in: tablespace flags */
11271127
=== modified file 'patches/innodb_extend_slow.patch'
--- patches/innodb_extend_slow.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_extend_slow.patch 2012-02-06 05:02:26 +0000
@@ -48,7 +48,7 @@
48 48
49 /*49 /*
50 IMPLEMENTATION OF THE BUFFER POOL50 IMPLEMENTATION OF THE BUFFER POOL
51@@ -1869,8 +1903,16 @@51@@ -1871,8 +1905,16 @@
52 mutex_t* block_mutex;52 mutex_t* block_mutex;
53 ibool must_read;53 ibool must_read;
54 unsigned access_time;54 unsigned access_time;
@@ -65,7 +65,7 @@
65 buf_pool->stat.n_page_gets++;65 buf_pool->stat.n_page_gets++;
66 66
67 for (;;) {67 for (;;) {
68@@ -1888,7 +1930,7 @@68@@ -1890,7 +1932,7 @@
69 //buf_pool_mutex_exit(buf_pool);69 //buf_pool_mutex_exit(buf_pool);
70 rw_lock_s_unlock(&buf_pool->page_hash_latch);70 rw_lock_s_unlock(&buf_pool->page_hash_latch);
71 71
@@ -74,7 +74,7 @@
74 74
75 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG75 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
76 ut_a(++buf_dbg_counter % 37 || buf_validate());76 ut_a(++buf_dbg_counter % 37 || buf_validate());
77@@ -1984,6 +2026,13 @@77@@ -1986,6 +2028,13 @@
78 /* Let us wait until the read operation78 /* Let us wait until the read operation
79 completes */79 completes */
80 80
@@ -88,7 +88,7 @@
88 for (;;) {88 for (;;) {
89 enum buf_io_fix io_fix;89 enum buf_io_fix io_fix;
90 90
91@@ -1998,6 +2047,12 @@91@@ -2000,6 +2049,12 @@
92 break;92 break;
93 }93 }
94 }94 }
@@ -101,7 +101,7 @@
101 }101 }
102 102
103 #ifdef UNIV_IBUF_COUNT_DEBUG103 #ifdef UNIV_IBUF_COUNT_DEBUG
104@@ -2312,6 +2367,11 @@104@@ -2314,6 +2369,11 @@
105 ibool must_read;105 ibool must_read;
106 ulint retries = 0;106 ulint retries = 0;
107 mutex_t* block_mutex = NULL;107 mutex_t* block_mutex = NULL;
@@ -113,7 +113,7 @@
113 buf_pool_t* buf_pool = buf_pool_get(space, offset);113 buf_pool_t* buf_pool = buf_pool_get(space, offset);
114 114
115 ut_ad(mtr);115 ut_ad(mtr);
116@@ -2341,6 +2401,9 @@116@@ -2343,6 +2403,9 @@
117 || ibuf_page_low(space, zip_size, offset,117 || ibuf_page_low(space, zip_size, offset,
118 FALSE, file, line, NULL));118 FALSE, file, line, NULL));
119 #endif119 #endif
@@ -123,7 +123,7 @@
123 buf_pool->stat.n_page_gets++;123 buf_pool->stat.n_page_gets++;
124 fold = buf_page_address_fold(space, offset);124 fold = buf_page_address_fold(space, offset);
125 loop:125 loop:
126@@ -2411,9 +2474,9 @@126@@ -2413,9 +2476,9 @@
127 return(NULL);127 return(NULL);
128 }128 }
129 129
@@ -135,7 +135,7 @@
135 135
136 retries = 0;136 retries = 0;
137 } else if (retries < BUF_PAGE_READ_MAX_RETRIES) {137 } else if (retries < BUF_PAGE_READ_MAX_RETRIES) {
138@@ -2723,6 +2786,13 @@138@@ -2725,6 +2788,13 @@
139 /* Let us wait until the read operation139 /* Let us wait until the read operation
140 completes */140 completes */
141 141
@@ -149,7 +149,7 @@
149 for (;;) {149 for (;;) {
150 enum buf_io_fix io_fix;150 enum buf_io_fix io_fix;
151 151
152@@ -2737,6 +2807,12 @@152@@ -2739,6 +2809,12 @@
153 break;153 break;
154 }154 }
155 }155 }
@@ -162,7 +162,7 @@
162 }162 }
163 163
164 fix_type = MTR_MEMO_BUF_FIX;164 fix_type = MTR_MEMO_BUF_FIX;
165@@ -2763,13 +2839,17 @@165@@ -2765,13 +2841,17 @@
166 read-ahead */166 read-ahead */
167 167
168 buf_read_ahead_linear(space, zip_size, offset,168 buf_read_ahead_linear(space, zip_size, offset,
@@ -181,7 +181,7 @@
181 return(block);181 return(block);
182 }182 }
183 183
184@@ -2793,6 +2873,7 @@184@@ -2795,6 +2875,7 @@
185 unsigned access_time;185 unsigned access_time;
186 ibool success;186 ibool success;
187 ulint fix_type;187 ulint fix_type;
@@ -189,7 +189,7 @@
189 189
190 ut_ad(block);190 ut_ad(block);
191 ut_ad(mtr);191 ut_ad(mtr);
192@@ -2870,6 +2951,10 @@192@@ -2872,6 +2953,10 @@
193 #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG193 #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG
194 ut_a(block->page.file_page_was_freed == FALSE);194 ut_a(block->page.file_page_was_freed == FALSE);
195 #endif195 #endif
@@ -200,7 +200,7 @@
200 if (UNIV_UNLIKELY(!access_time)) {200 if (UNIV_UNLIKELY(!access_time)) {
201 /* In the case of a first access, try to apply linear201 /* In the case of a first access, try to apply linear
202 read-ahead */202 read-ahead */
203@@ -2877,7 +2962,7 @@203@@ -2879,7 +2964,7 @@
204 buf_read_ahead_linear(buf_block_get_space(block),204 buf_read_ahead_linear(buf_block_get_space(block),
205 buf_block_get_zip_size(block),205 buf_block_get_zip_size(block),
206 buf_block_get_page_no(block),206 buf_block_get_page_no(block),
@@ -209,7 +209,7 @@
209 }209 }
210 210
211 #ifdef UNIV_IBUF_COUNT_DEBUG211 #ifdef UNIV_IBUF_COUNT_DEBUG
212@@ -2887,6 +2972,9 @@212@@ -2889,6 +2974,9 @@
213 buf_pool = buf_pool_from_block(block);213 buf_pool = buf_pool_from_block(block);
214 buf_pool->stat.n_page_gets++;214 buf_pool->stat.n_page_gets++;
215 215
@@ -219,7 +219,7 @@
219 return(TRUE);219 return(TRUE);
220 }220 }
221 221
222@@ -2909,6 +2997,7 @@222@@ -2911,6 +2999,7 @@
223 buf_pool_t* buf_pool;223 buf_pool_t* buf_pool;
224 ibool success;224 ibool success;
225 ulint fix_type;225 ulint fix_type;
@@ -227,7 +227,7 @@
227 227
228 ut_ad(mtr);228 ut_ad(mtr);
229 ut_ad(mtr->state == MTR_ACTIVE);229 ut_ad(mtr->state == MTR_ACTIVE);
230@@ -2995,6 +3084,11 @@230@@ -2997,6 +3086,11 @@
231 #endif231 #endif
232 buf_pool->stat.n_page_gets++;232 buf_pool->stat.n_page_gets++;
233 233
@@ -355,7 +355,7 @@
355 355
356--- a/storage/innobase/fil/fil0fil.c356--- a/storage/innobase/fil/fil0fil.c
357+++ b/storage/innobase/fil/fil0fil.c357+++ b/storage/innobase/fil/fil0fil.c
358@@ -4757,7 +4757,7 @@358@@ -4765,7 +4765,7 @@
359 node->name, node->handle, buf,359 node->name, node->handle, buf,
360 offset_low, offset_high,360 offset_low, offset_high,
361 page_size * n_pages,361 page_size * n_pages,
@@ -364,7 +364,7 @@
364 #endif364 #endif
365 if (success) {365 if (success) {
366 node->size += n_pages;366 node->size += n_pages;
367@@ -5084,7 +5084,7 @@367@@ -5092,7 +5092,7 @@
368 i/o on a tablespace which does not exist */368 i/o on a tablespace which does not exist */
369 UNIV_INTERN369 UNIV_INTERN
370 ulint370 ulint
@@ -373,7 +373,7 @@
373 /*===*/373 /*===*/
374 ulint type, /*!< in: OS_FILE_READ or OS_FILE_WRITE,374 ulint type, /*!< in: OS_FILE_READ or OS_FILE_WRITE,
375 ORed to OS_FILE_LOG, if a log i/o375 ORed to OS_FILE_LOG, if a log i/o
376@@ -5109,8 +5109,9 @@376@@ -5117,8 +5117,9 @@
377 void* buf, /*!< in/out: buffer where to store read data377 void* buf, /*!< in/out: buffer where to store read data
378 or from where to write; in aio this must be378 or from where to write; in aio this must be
379 appropriately aligned */379 appropriately aligned */
@@ -384,7 +384,7 @@
384 {384 {
385 ulint mode;385 ulint mode;
386 fil_space_t* space;386 fil_space_t* space;
387@@ -5278,7 +5279,7 @@387@@ -5286,7 +5287,7 @@
388 #else388 #else
389 /* Queue the aio request */389 /* Queue the aio request */
390 ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,390 ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,
@@ -445,7 +445,7 @@
445 /*********************************************************************//**445 /*********************************************************************//**
446 Note that a transaction has been registered with MySQL.446 Note that a transaction has been registered with MySQL.
447 @return true if transaction is registered with MySQL 2PC coordinator */447 @return true if transaction is registered with MySQL 2PC coordinator */
448@@ -9418,6 +9454,25 @@448@@ -9417,6 +9453,25 @@
449 statement has ended */449 statement has ended */
450 450
451 if (trx->n_mysql_tables_in_use == 0) {451 if (trx->n_mysql_tables_in_use == 0) {
@@ -514,7 +514,7 @@
514 order to contract the insert buffer tree. Technically, this function is like514 order to contract the insert buffer tree. Technically, this function is like
515--- a/storage/innobase/include/fil0fil.h515--- a/storage/innobase/include/fil0fil.h
516+++ b/storage/innobase/include/fil0fil.h516+++ b/storage/innobase/include/fil0fil.h
517@@ -615,9 +615,12 @@517@@ -620,9 +620,12 @@
518 Reads or writes data. This operation is asynchronous (aio).518 Reads or writes data. This operation is asynchronous (aio).
519 @return DB_SUCCESS, or DB_TABLESPACE_DELETED if we are trying to do519 @return DB_SUCCESS, or DB_TABLESPACE_DELETED if we are trying to do
520 i/o on a tablespace which does not exist */520 i/o on a tablespace which does not exist */
@@ -528,7 +528,7 @@
528 /*===*/528 /*===*/
529 ulint type, /*!< in: OS_FILE_READ or OS_FILE_WRITE,529 ulint type, /*!< in: OS_FILE_READ or OS_FILE_WRITE,
530 ORed to OS_FILE_LOG, if a log i/o530 ORed to OS_FILE_LOG, if a log i/o
531@@ -642,8 +645,9 @@531@@ -647,8 +650,9 @@
532 void* buf, /*!< in/out: buffer where to store read data532 void* buf, /*!< in/out: buffer where to store read data
533 or from where to write; in aio this must be533 or from where to write; in aio this must be
534 appropriately aligned */534 appropriately aligned */
@@ -887,7 +887,7 @@
887 /* The following counter is incremented whenever there is some user activity887 /* The following counter is incremented whenever there is some user activity
888 in the server */888 in the server */
889 UNIV_INTERN ulint srv_activity_count = 0;889 UNIV_INTERN ulint srv_activity_count = 0;
890@@ -1234,6 +1237,10 @@890@@ -1237,6 +1240,10 @@
891 ibool has_slept = FALSE;891 ibool has_slept = FALSE;
892 srv_conc_slot_t* slot = NULL;892 srv_conc_slot_t* slot = NULL;
893 ulint i;893 ulint i;
@@ -898,7 +898,7 @@
898 898
899 #ifdef UNIV_SYNC_DEBUG899 #ifdef UNIV_SYNC_DEBUG
900 ut_ad(!sync_thread_levels_nonempty_trx(trx->has_search_latch));900 ut_ad(!sync_thread_levels_nonempty_trx(trx->has_search_latch));
901@@ -1314,6 +1321,7 @@901@@ -1317,6 +1324,7 @@
902 switches. */902 switches. */
903 if (SRV_THREAD_SLEEP_DELAY > 0) {903 if (SRV_THREAD_SLEEP_DELAY > 0) {
904 os_thread_sleep(SRV_THREAD_SLEEP_DELAY);904 os_thread_sleep(SRV_THREAD_SLEEP_DELAY);
@@ -906,7 +906,7 @@
906 }906 }
907 907
908 trx->op_info = "";908 trx->op_info = "";
909@@ -1373,6 +1381,14 @@909@@ -1376,6 +1384,14 @@
910 #ifdef UNIV_SYNC_DEBUG910 #ifdef UNIV_SYNC_DEBUG
911 ut_ad(!sync_thread_levels_nonempty_trx(trx->has_search_latch));911 ut_ad(!sync_thread_levels_nonempty_trx(trx->has_search_latch));
912 #endif /* UNIV_SYNC_DEBUG */912 #endif /* UNIV_SYNC_DEBUG */
@@ -921,7 +921,7 @@
921 trx->op_info = "waiting in InnoDB queue";921 trx->op_info = "waiting in InnoDB queue";
922 922
923 thd_wait_begin(trx->mysql_thd, THD_WAIT_USER_LOCK);923 thd_wait_begin(trx->mysql_thd, THD_WAIT_USER_LOCK);
924@@ -1381,6 +1397,12 @@924@@ -1384,6 +1400,12 @@
925 925
926 trx->op_info = "";926 trx->op_info = "";
927 927
928928
=== modified file 'patches/innodb_extra_rseg.patch'
--- patches/innodb_extra_rseg.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_extra_rseg.patch 2012-02-06 05:02:26 +0000
@@ -7,7 +7,7 @@
7# should be done or reviewed by the maintainer!7# should be done or reviewed by the maintainer!
8--- a/storage/innobase/handler/ha_innodb.cc8--- a/storage/innobase/handler/ha_innodb.cc
9+++ b/storage/innobase/handler/ha_innodb.cc9+++ b/storage/innobase/handler/ha_innodb.cc
10@@ -11664,6 +11664,7 @@10@@ -11706,6 +11706,7 @@
11 NULL, /* reserved */11 NULL, /* reserved */
12 0, /* flags */12 0, /* flags */
13 },13 },
1414
=== modified file 'patches/innodb_fake_changes.patch'
--- patches/innodb_fake_changes.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_fake_changes.patch 2012-02-06 05:02:26 +0000
@@ -214,7 +214,7 @@
214 /* Transaction is deregistered only in a commit or a rollback. If214 /* Transaction is deregistered only in a commit or a rollback. If
215 it is deregistered we know there cannot be resources to be freed215 it is deregistered we know there cannot be resources to be freed
216 and we could return immediately. For the time being, we play safe216 and we could return immediately. For the time being, we play safe
217@@ -7544,6 +7557,12 @@217@@ -7543,6 +7556,12 @@
218 218
219 trx = innobase_trx_allocate(thd);219 trx = innobase_trx_allocate(thd);
220 220
@@ -227,7 +227,7 @@
227 /* Latch the InnoDB data dictionary exclusively so that no deadlocks227 /* Latch the InnoDB data dictionary exclusively so that no deadlocks
228 or lock waits can happen in it during a table create operation.228 or lock waits can happen in it during a table create operation.
229 Drop table etc. do this latching in row0mysql.c. */229 Drop table etc. do this latching in row0mysql.c. */
230@@ -7764,6 +7783,10 @@230@@ -7763,6 +7782,10 @@
231 DBUG_RETURN(HA_ERR_CRASHED);231 DBUG_RETURN(HA_ERR_CRASHED);
232 }232 }
233 233
@@ -238,7 +238,7 @@
238 /* Truncate the table in InnoDB */238 /* Truncate the table in InnoDB */
239 239
240 error = row_truncate_table_for_mysql(prebuilt->table, prebuilt->trx);240 error = row_truncate_table_for_mysql(prebuilt->table, prebuilt->trx);
241@@ -7820,6 +7843,12 @@241@@ -7819,6 +7842,12 @@
242 242
243 trx = innobase_trx_allocate(thd);243 trx = innobase_trx_allocate(thd);
244 244
@@ -251,7 +251,7 @@
251 name_len = strlen(name);251 name_len = strlen(name);
252 252
253 ut_a(name_len < 1000);253 ut_a(name_len < 1000);
254@@ -7906,6 +7935,12 @@254@@ -7905,6 +7934,12 @@
255 trx->mysql_thd = NULL;255 trx->mysql_thd = NULL;
256 #else256 #else
257 trx = innobase_trx_allocate(thd);257 trx = innobase_trx_allocate(thd);
@@ -264,7 +264,7 @@
264 #endif264 #endif
265 row_drop_database_for_mysql(namebuf, trx);265 row_drop_database_for_mysql(namebuf, trx);
266 my_free(namebuf);266 my_free(namebuf);
267@@ -8011,6 +8046,11 @@267@@ -8010,6 +8045,11 @@
268 trx_search_latch_release_if_reserved(parent_trx);268 trx_search_latch_release_if_reserved(parent_trx);
269 269
270 trx = innobase_trx_allocate(thd);270 trx = innobase_trx_allocate(thd);
@@ -276,7 +276,7 @@
276 276
277 error = innobase_rename_table(trx, from, to, TRUE);277 error = innobase_rename_table(trx, from, to, TRUE);
278 278
279@@ -10881,6 +10921,10 @@279@@ -10880,6 +10920,10 @@
280 return(0);280 return(0);
281 }281 }
282 282
@@ -287,8 +287,8 @@
287 thd_get_xid(thd, (MYSQL_XID*) &trx->xid);287 thd_get_xid(thd, (MYSQL_XID*) &trx->xid);
288 288
289 /* Release a possible FIFO ticket and search latch. Since we will289 /* Release a possible FIFO ticket and search latch. Since we will
290@@ -12438,6 +12482,7 @@290@@ -12480,6 +12524,7 @@
291 MYSQL_SYSVAR(rollback_segments),291 #endif
292 MYSQL_SYSVAR(corrupt_table_action),292 MYSQL_SYSVAR(corrupt_table_action),
293 MYSQL_SYSVAR(lazy_drop_table),293 MYSQL_SYSVAR(lazy_drop_table),
294+ MYSQL_SYSVAR(fake_changes),294+ MYSQL_SYSVAR(fake_changes),
295295
=== modified file 'patches/innodb_fast_checksum.patch'
--- patches/innodb_fast_checksum.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_fast_checksum.patch 2012-02-06 05:02:26 +0000
@@ -106,7 +106,7 @@
106 /* We overwrite the first 4 bytes of the end lsn field to store106 /* We overwrite the first 4 bytes of the end lsn field to store
107--- a/storage/innobase/fil/fil0fil.c107--- a/storage/innobase/fil/fil0fil.c
108+++ b/storage/innobase/fil/fil0fil.c108+++ b/storage/innobase/fil/fil0fil.c
109@@ -3095,13 +3095,24 @@109@@ -3103,13 +3103,24 @@
110 return(TRUE);110 return(TRUE);
111 }111 }
112 112
@@ -132,7 +132,7 @@
132 return(FALSE);132 return(FALSE);
133 }133 }
134 134
135@@ -3117,7 +3128,9 @@135@@ -3125,7 +3136,9 @@
136 if (!zip_size) {136 if (!zip_size) {
137 mach_write_to_4(page + FIL_PAGE_SPACE_OR_CHKSUM,137 mach_write_to_4(page + FIL_PAGE_SPACE_OR_CHKSUM,
138 srv_use_checksums138 srv_use_checksums
@@ -161,7 +161,7 @@
161 161
162 srv_blocking_lru_restore = (ibool) innobase_blocking_lru_restore;162 srv_blocking_lru_restore = (ibool) innobase_blocking_lru_restore;
163 163
164@@ -11542,6 +11544,15 @@164@@ -11541,6 +11543,15 @@
165 "Disable with --skip-innodb-checksums.",165 "Disable with --skip-innodb-checksums.",
166 NULL, NULL, TRUE);166 NULL, NULL, TRUE);
167 167
@@ -177,7 +177,7 @@
177 static MYSQL_SYSVAR_STR(data_home_dir, innobase_data_home_dir,177 static MYSQL_SYSVAR_STR(data_home_dir, innobase_data_home_dir,
178 PLUGIN_VAR_READONLY,178 PLUGIN_VAR_READONLY,
179 "The common part for InnoDB table spaces.",179 "The common part for InnoDB table spaces.",
180@@ -12073,6 +12084,7 @@180@@ -12112,6 +12123,7 @@
181 MYSQL_SYSVAR(buffer_pool_size),181 MYSQL_SYSVAR(buffer_pool_size),
182 MYSQL_SYSVAR(buffer_pool_instances),182 MYSQL_SYSVAR(buffer_pool_instances),
183 MYSQL_SYSVAR(checksums),183 MYSQL_SYSVAR(checksums),
184184
=== modified file 'patches/innodb_files_extend.patch'
--- patches/innodb_files_extend.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_files_extend.patch 2012-02-06 05:02:26 +0000
@@ -16,7 +16,7 @@
16 fprintf(stderr,16 fprintf(stderr,
17 "InnoDB: Error: the size of single-table"17 "InnoDB: Error: the size of single-table"
18 " tablespace file %s\n"18 " tablespace file %s\n"
19@@ -4161,7 +4161,7 @@19@@ -4169,7 +4169,7 @@
20 20
21 size = (((ib_int64_t)size_high) << 32) + (ib_int64_t)size_low;21 size = (((ib_int64_t)size_high) << 32) + (ib_int64_t)size_low;
22 #ifndef UNIV_HOTBACKUP22 #ifndef UNIV_HOTBACKUP
@@ -25,7 +25,7 @@
25 fprintf(stderr,25 fprintf(stderr,
26 "InnoDB: Error: the size of single-table tablespace"26 "InnoDB: Error: the size of single-table tablespace"
27 " file %s\n"27 " file %s\n"
28@@ -4181,7 +4181,7 @@28@@ -4189,7 +4189,7 @@
29 /* Align the memory for file i/o if we might have O_DIRECT set */29 /* Align the memory for file i/o if we might have O_DIRECT set */
30 page = ut_align(buf2, UNIV_PAGE_SIZE);30 page = ut_align(buf2, UNIV_PAGE_SIZE);
31 31
@@ -34,7 +34,7 @@
34 success = os_file_read(file, page, 0, 0, UNIV_PAGE_SIZE);34 success = os_file_read(file, page, 0, 0, UNIV_PAGE_SIZE);
35 35
36 /* We have to read the tablespace id from the file */36 /* We have to read the tablespace id from the file */
37@@ -5159,9 +5159,9 @@37@@ -5167,9 +5167,9 @@
38 ut_ad(ut_is_2pow(zip_size));38 ut_ad(ut_is_2pow(zip_size));
39 ut_ad(buf);39 ut_ad(buf);
40 ut_ad(len > 0);40 ut_ad(len > 0);
@@ -49,7 +49,7 @@
49 # ifndef UNIV_LOG_DEBUG49 # ifndef UNIV_LOG_DEBUG
50--- a/storage/innobase/fsp/fsp0fsp.c50--- a/storage/innobase/fsp/fsp0fsp.c
51+++ b/storage/innobase/fsp/fsp0fsp.c51+++ b/storage/innobase/fsp/fsp0fsp.c
52@@ -656,16 +656,18 @@52@@ -595,16 +595,18 @@
53 0 for uncompressed pages */53 0 for uncompressed pages */
54 ulint offset) /*!< in: page offset */54 ulint offset) /*!< in: page offset */
55 {55 {
@@ -78,7 +78,7 @@
78 ut_ad(ut_is_2pow(zip_size));78 ut_ad(ut_is_2pow(zip_size));
79 79
80 if (!zip_size) {80 if (!zip_size) {
81@@ -1464,12 +1466,12 @@81@@ -1403,12 +1405,12 @@
82 mtr);82 mtr);
83 xdes_init(descr, mtr);83 xdes_init(descr, mtr);
84 84
@@ -175,7 +175,7 @@
175 #ifndef MYSQL_SERVER175 #ifndef MYSQL_SERVER
176 innodb_overwrite_relay_log_info = FALSE;176 innodb_overwrite_relay_log_info = FALSE;
177 #endif177 #endif
178@@ -7290,9 +7352,9 @@178@@ -7289,9 +7351,9 @@
179 | DICT_TF_COMPACT179 | DICT_TF_COMPACT
180 | DICT_TF_FORMAT_ZIP180 | DICT_TF_FORMAT_ZIP
181 << DICT_TF_FORMAT_SHIFT;181 << DICT_TF_FORMAT_SHIFT;
@@ -188,7 +188,7 @@
188 }188 }
189 }189 }
190 190
191@@ -11553,6 +11615,16 @@191@@ -11552,6 +11614,16 @@
192 "#### Attention: The checksum is not compatible for normal or disabled version! ####",192 "#### Attention: The checksum is not compatible for normal or disabled version! ####",
193 NULL, NULL, FALSE);193 NULL, NULL, FALSE);
194 194
@@ -205,7 +205,7 @@
205 static MYSQL_SYSVAR_STR(data_home_dir, innobase_data_home_dir,205 static MYSQL_SYSVAR_STR(data_home_dir, innobase_data_home_dir,
206 PLUGIN_VAR_READONLY,206 PLUGIN_VAR_READONLY,
207 "The common part for InnoDB table spaces.",207 "The common part for InnoDB table spaces.",
208@@ -12079,6 +12151,8 @@208@@ -12118,6 +12190,8 @@
209 NULL, NULL, 0, &corrupt_table_action_typelib);209 NULL, NULL, 0, &corrupt_table_action_typelib);
210 210
211 static struct st_mysql_sys_var* innobase_system_variables[]= {211 static struct st_mysql_sys_var* innobase_system_variables[]= {
@@ -216,7 +216,7 @@
216 MYSQL_SYSVAR(buffer_pool_size),216 MYSQL_SYSVAR(buffer_pool_size),
217--- a/storage/innobase/include/buf0buf.h217--- a/storage/innobase/include/buf0buf.h
218+++ b/storage/innobase/include/buf0buf.h218+++ b/storage/innobase/include/buf0buf.h
219@@ -1705,7 +1705,7 @@219@@ -1725,7 +1725,7 @@
220 time_t last_printout_time;220 time_t last_printout_time;
221 /*!< when buf_print_io was last time221 /*!< when buf_print_io was last time
222 called */222 called */
@@ -225,7 +225,7 @@
225 /*!< Statistics of buddy system,225 /*!< Statistics of buddy system,
226 indexed by block size */226 indexed by block size */
227 buf_pool_stat_t stat; /*!< current statistics */227 buf_pool_stat_t stat; /*!< current statistics */
228@@ -1803,7 +1803,7 @@228@@ -1823,7 +1823,7 @@
229 UT_LIST_BASE_NODE_T(buf_page_t) zip_clean;229 UT_LIST_BASE_NODE_T(buf_page_t) zip_clean;
230 /*!< unmodified compressed pages */230 /*!< unmodified compressed pages */
231 #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */231 #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
@@ -234,7 +234,7 @@
234 /*!< buddy free lists */234 /*!< buddy free lists */
235 235
236 buf_page_t watch[BUF_POOL_WATCH_SIZE];236 buf_page_t watch[BUF_POOL_WATCH_SIZE];
237@@ -1811,9 +1811,9 @@237@@ -1831,9 +1831,9 @@
238 pool watches. Protected by238 pool watches. Protected by
239 buf_pool->mutex. */239 buf_pool->mutex. */
240 240
@@ -249,7 +249,7 @@
249 #endif249 #endif
250--- a/storage/innobase/include/buf0types.h250--- a/storage/innobase/include/buf0types.h
251+++ b/storage/innobase/include/buf0types.h251+++ b/storage/innobase/include/buf0types.h
252@@ -67,12 +67,13 @@252@@ -70,12 +70,13 @@
253 #define BUF_BUDDY_LOW (1 << BUF_BUDDY_LOW_SHIFT)253 #define BUF_BUDDY_LOW (1 << BUF_BUDDY_LOW_SHIFT)
254 254
255 #define BUF_BUDDY_SIZES (UNIV_PAGE_SIZE_SHIFT - BUF_BUDDY_LOW_SHIFT)255 #define BUF_BUDDY_SIZES (UNIV_PAGE_SIZE_SHIFT - BUF_BUDDY_LOW_SHIFT)
@@ -412,7 +412,7 @@
412 dest_offset = nth_file * group->file_size;412 dest_offset = nth_file * group->file_size;
413 413
414 #ifdef UNIV_DEBUG414 #ifdef UNIV_DEBUG
415@@ -1794,9 +1799,7 @@415@@ -1797,9 +1802,7 @@
416 ulint i;416 ulint i;
417 417
418 ut_ad(mutex_own(&(log_sys->mutex)));418 ut_ad(mutex_own(&(log_sys->mutex)));
@@ -423,7 +423,7 @@
423 423
424 buf = group->checkpoint_buf;424 buf = group->checkpoint_buf;
425 425
426@@ -1810,6 +1813,7 @@426@@ -1813,6 +1816,7 @@
427 mach_write_to_4(buf + LOG_CHECKPOINT_LOG_BUF_SIZE, log_sys->buf_size);427 mach_write_to_4(buf + LOG_CHECKPOINT_LOG_BUF_SIZE, log_sys->buf_size);
428 428
429 #ifdef UNIV_LOG_ARCHIVE429 #ifdef UNIV_LOG_ARCHIVE
@@ -431,7 +431,7 @@
431 if (log_sys->archiving_state == LOG_ARCH_OFF) {431 if (log_sys->archiving_state == LOG_ARCH_OFF) {
432 archived_lsn = IB_ULONGLONG_MAX;432 archived_lsn = IB_ULONGLONG_MAX;
433 } else {433 } else {
434@@ -1823,7 +1827,9 @@434@@ -1826,7 +1830,9 @@
435 435
436 mach_write_to_8(buf + LOG_CHECKPOINT_ARCHIVED_LSN, archived_lsn);436 mach_write_to_8(buf + LOG_CHECKPOINT_ARCHIVED_LSN, archived_lsn);
437 #else /* UNIV_LOG_ARCHIVE */437 #else /* UNIV_LOG_ARCHIVE */
@@ -538,7 +538,7 @@
538 readahead request. */538 readahead request. */
539--- a/storage/innobase/srv/srv0start.c539--- a/storage/innobase/srv/srv0start.c
540+++ b/storage/innobase/srv/srv0start.c540+++ b/storage/innobase/srv/srv0start.c
541@@ -1562,11 +1562,13 @@541@@ -1582,11 +1582,13 @@
542 }542 }
543 #endif /* UNIV_LOG_ARCHIVE */543 #endif /* UNIV_LOG_ARCHIVE */
544 544
@@ -554,7 +554,7 @@
554 554
555 return(DB_ERROR);555 return(DB_ERROR);
556 }556 }
557@@ -1575,7 +1577,7 @@557@@ -1595,7 +1597,7 @@
558 558
559 for (i = 0; i < srv_n_data_files; i++) {559 for (i = 0; i < srv_n_data_files; i++) {
560 #ifndef __WIN__560 #ifndef __WIN__
561561
=== modified file 'patches/innodb_fix_misc.patch'
--- patches/innodb_fix_misc.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_fix_misc.patch 2012-02-06 05:02:26 +0000
@@ -12,7 +12,7 @@
12# should be done or reviewed by the maintainer!12# should be done or reviewed by the maintainer!
13--- a/storage/innobase/buf/buf0buf.c13--- a/storage/innobase/buf/buf0buf.c
14+++ b/storage/innobase/buf/buf0buf.c14+++ b/storage/innobase/buf/buf0buf.c
15@@ -1979,6 +1979,27 @@15@@ -1981,6 +1981,27 @@
16 #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */16 #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
17 }17 }
18 18
@@ -40,7 +40,7 @@
40 if (UNIV_UNLIKELY(!bpage->zip.data)) {40 if (UNIV_UNLIKELY(!bpage->zip.data)) {
41 /* There is no compressed page. */41 /* There is no compressed page. */
42 err_exit:42 err_exit:
43@@ -2487,6 +2508,27 @@43@@ -2489,6 +2510,27 @@
44 block = (buf_block_t*) buf_page_hash_get_low(44 block = (buf_block_t*) buf_page_hash_get_low(
45 buf_pool, space, offset, fold);45 buf_pool, space, offset, fold);
46 if (block) {46 if (block) {
@@ -68,7 +68,7 @@
68 block_mutex = buf_page_get_mutex_enter((buf_page_t*)block);68 block_mutex = buf_page_get_mutex_enter((buf_page_t*)block);
69 ut_a(block_mutex);69 ut_a(block_mutex);
70 }70 }
71@@ -3409,11 +3451,28 @@71@@ -3411,11 +3453,28 @@
72 72
73 fold = buf_page_address_fold(space, offset);73 fold = buf_page_address_fold(space, offset);
74 74
@@ -97,7 +97,7 @@
97 if (watch_page && !buf_pool_watch_is_sentinel(buf_pool, watch_page)) {97 if (watch_page && !buf_pool_watch_is_sentinel(buf_pool, watch_page)) {
98 /* The page is already in the buffer pool. */98 /* The page is already in the buffer pool. */
99 watch_page = NULL;99 watch_page = NULL;
100@@ -3544,6 +3603,7 @@100@@ -3546,6 +3605,7 @@
101 bpage->state = BUF_BLOCK_ZIP_PAGE;101 bpage->state = BUF_BLOCK_ZIP_PAGE;
102 bpage->space = space;102 bpage->space = space;
103 bpage->offset = offset;103 bpage->offset = offset;
@@ -105,7 +105,7 @@
105 105
106 #ifdef UNIV_DEBUG106 #ifdef UNIV_DEBUG
107 bpage->in_page_hash = FALSE;107 bpage->in_page_hash = FALSE;
108@@ -3628,6 +3688,7 @@108@@ -3630,6 +3690,7 @@
109 109
110 fold = buf_page_address_fold(space, offset);110 fold = buf_page_address_fold(space, offset);
111 111
@@ -113,7 +113,7 @@
113 //buf_pool_mutex_enter(buf_pool);113 //buf_pool_mutex_enter(buf_pool);
114 mutex_enter(&buf_pool->LRU_list_mutex);114 mutex_enter(&buf_pool->LRU_list_mutex);
115 rw_lock_x_lock(&buf_pool->page_hash_latch);115 rw_lock_x_lock(&buf_pool->page_hash_latch);
116@@ -3635,6 +3696,21 @@116@@ -3637,6 +3698,21 @@
117 block = (buf_block_t*) buf_page_hash_get_low(117 block = (buf_block_t*) buf_page_hash_get_low(
118 buf_pool, space, offset, fold);118 buf_pool, space, offset, fold);
119 119
@@ -135,7 +135,7 @@
135 if (block135 if (block
136 && buf_page_in_file(&block->page)136 && buf_page_in_file(&block->page)
137 && !buf_pool_watch_is_sentinel(buf_pool, &block->page)) {137 && !buf_pool_watch_is_sentinel(buf_pool, &block->page)) {
138@@ -3988,8 +4064,11 @@138@@ -3990,8 +4066,11 @@
139 }139 }
140 140
141 if (io_type == BUF_IO_WRITE141 if (io_type == BUF_IO_WRITE
@@ -176,7 +176,7 @@
176 return(TRUE);176 return(TRUE);
177--- a/storage/innobase/buf/buf0lru.c177--- a/storage/innobase/buf/buf0lru.c
178+++ b/storage/innobase/buf/buf0lru.c178+++ b/storage/innobase/buf/buf0lru.c
179@@ -529,6 +529,62 @@179@@ -545,6 +545,62 @@
180 }180 }
181 }181 }
182 182
@@ -239,7 +239,7 @@
239 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG239 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
240 /********************************************************************//**240 /********************************************************************//**
241 Insert a compressed block into buf_pool->zip_clean in the LRU order. */241 Insert a compressed block into buf_pool->zip_clean in the LRU order. */
242@@ -1483,6 +1539,10 @@242@@ -1499,6 +1555,10 @@
243 return(FALSE);243 return(FALSE);
244 }244 }
245 245
@@ -296,7 +296,7 @@
296 296
297 fil_system->spaces = hash_create(hash_size);297 fil_system->spaces = hash_create(hash_size);
298 fil_system->name_hash = hash_create(hash_size);298 fil_system->name_hash = hash_create(hash_size);
299@@ -2344,7 +2347,11 @@299@@ -2352,7 +2355,11 @@
300 completely and permanently. The flag is_being_deleted also prevents300 completely and permanently. The flag is_being_deleted also prevents
301 fil_flush() from being applied to this tablespace. */301 fil_flush() from being applied to this tablespace. */
302 302
@@ -308,7 +308,7 @@
308 #endif308 #endif
309 /* printf("Deleting tablespace %s id %lu\n", space->name, id); */309 /* printf("Deleting tablespace %s id %lu\n", space->name, id); */
310 310
311@@ -4731,6 +4738,10 @@311@@ -4739,6 +4746,10 @@
312 ulint page_size;312 ulint page_size;
313 ibool success = TRUE;313 ibool success = TRUE;
314 314
@@ -319,7 +319,7 @@
319 fil_mutex_enter_and_prepare_for_io(space_id);319 fil_mutex_enter_and_prepare_for_io(space_id);
320 320
321 space = fil_space_get_by_id(space_id);321 space = fil_space_get_by_id(space_id);
322@@ -4742,6 +4753,7 @@322@@ -4750,6 +4761,7 @@
323 *actual_size = space->size;323 *actual_size = space->size;
324 324
325 mutex_exit(&fil_system->mutex);325 mutex_exit(&fil_system->mutex);
@@ -327,7 +327,7 @@
327 327
328 return(TRUE);328 return(TRUE);
329 }329 }
330@@ -4774,6 +4786,8 @@330@@ -4782,6 +4794,8 @@
331 offset_low = ((start_page_no - file_start_page_no)331 offset_low = ((start_page_no - file_start_page_no)
332 % (4096 * ((1024 * 1024) / page_size)))332 % (4096 * ((1024 * 1024) / page_size)))
333 * page_size;333 * page_size;
@@ -336,7 +336,7 @@
336 #ifdef UNIV_HOTBACKUP336 #ifdef UNIV_HOTBACKUP
337 success = os_file_write(node->name, node->handle, buf,337 success = os_file_write(node->name, node->handle, buf,
338 offset_low, offset_high,338 offset_low, offset_high,
339@@ -4783,8 +4797,10 @@339@@ -4791,8 +4805,10 @@
340 node->name, node->handle, buf,340 node->name, node->handle, buf,
341 offset_low, offset_high,341 offset_low, offset_high,
342 page_size * n_pages,342 page_size * n_pages,
@@ -348,7 +348,7 @@
348 if (success) {348 if (success) {
349 node->size += n_pages;349 node->size += n_pages;
350 space->size += n_pages;350 space->size += n_pages;
351@@ -4830,6 +4846,7 @@351@@ -4838,6 +4854,7 @@
352 printf("Extended %s to %lu, actual size %lu pages\n", space->name,352 printf("Extended %s to %lu, actual size %lu pages\n", space->name,
353 size_after_extend, *actual_size); */353 size_after_extend, *actual_size); */
354 mutex_exit(&fil_system->mutex);354 mutex_exit(&fil_system->mutex);
@@ -356,7 +356,7 @@
356 356
357 fil_flush(space_id, TRUE);357 fil_flush(space_id, TRUE);
358 358
359@@ -5192,6 +5209,22 @@359@@ -5200,6 +5217,22 @@
360 srv_data_written+= len;360 srv_data_written+= len;
361 }361 }
362 362
@@ -379,7 +379,7 @@
379 /* Reserve the fil_system mutex and make sure that we can open at379 /* Reserve the fil_system mutex and make sure that we can open at
380 least one file while holding it, if the file is not already open */380 least one file while holding it, if the file is not already open */
381 381
382@@ -5333,10 +5366,24 @@382@@ -5341,10 +5374,24 @@
383 #else383 #else
384 /* Queue the aio request */384 /* Queue the aio request */
385 ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,385 ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,
@@ -405,7 +405,7 @@
405 ut_a(ret);405 ut_a(ret);
406 406
407 if (mode == OS_AIO_SYNC) {407 if (mode == OS_AIO_SYNC) {
408@@ -5436,6 +5483,7 @@408@@ -5444,6 +5491,7 @@
409 fil_node_t* fil_node;409 fil_node_t* fil_node;
410 void* message;410 void* message;
411 ulint type;411 ulint type;
@@ -413,7 +413,7 @@
413 413
414 ut_ad(fil_validate_skip());414 ut_ad(fil_validate_skip());
415 415
416@@ -5443,10 +5491,10 @@416@@ -5451,10 +5499,10 @@
417 srv_set_io_thread_op_info(segment, "native aio handle");417 srv_set_io_thread_op_info(segment, "native aio handle");
418 #ifdef WIN_ASYNC_IO418 #ifdef WIN_ASYNC_IO
419 ret = os_aio_windows_handle(segment, 0, &fil_node,419 ret = os_aio_windows_handle(segment, 0, &fil_node,
@@ -426,7 +426,7 @@
426 #else426 #else
427 ut_error;427 ut_error;
428 ret = 0; /* Eliminate compiler warning */428 ret = 0; /* Eliminate compiler warning */
429@@ -5455,7 +5503,22 @@429@@ -5463,7 +5511,22 @@
430 srv_set_io_thread_op_info(segment, "simulated aio handle");430 srv_set_io_thread_op_info(segment, "simulated aio handle");
431 431
432 ret = os_aio_simulated_handle(segment, &fil_node,432 ret = os_aio_simulated_handle(segment, &fil_node,
@@ -452,7 +452,7 @@
452 ut_a(ret);452 ut_a(ret);
453--- a/storage/innobase/handler/ha_innodb.cc453--- a/storage/innobase/handler/ha_innodb.cc
454+++ b/storage/innobase/handler/ha_innodb.cc454+++ b/storage/innobase/handler/ha_innodb.cc
455@@ -12150,6 +12150,12 @@455@@ -12189,6 +12189,12 @@
456 "except for the deletion.",456 "except for the deletion.",
457 NULL, NULL, 0, &corrupt_table_action_typelib);457 NULL, NULL, 0, &corrupt_table_action_typelib);
458 458
@@ -465,15 +465,15 @@
465 static struct st_mysql_sys_var* innobase_system_variables[]= {465 static struct st_mysql_sys_var* innobase_system_variables[]= {
466 MYSQL_SYSVAR(page_size),466 MYSQL_SYSVAR(page_size),
467 MYSQL_SYSVAR(log_block_size),467 MYSQL_SYSVAR(log_block_size),
468@@ -12244,6 +12250,7 @@468@@ -12286,6 +12292,7 @@
469 MYSQL_SYSVAR(purge_batch_size),469 MYSQL_SYSVAR(flush_checkpoint_debug),
470 MYSQL_SYSVAR(rollback_segments),470 #endif
471 MYSQL_SYSVAR(corrupt_table_action),471 MYSQL_SYSVAR(corrupt_table_action),
472+ MYSQL_SYSVAR(lazy_drop_table),472+ MYSQL_SYSVAR(lazy_drop_table),
473 NULL473 NULL
474 };474 };
475 475
476@@ -12253,7 +12260,7 @@476@@ -12295,7 +12302,7 @@
477 &innobase_storage_engine,477 &innobase_storage_engine,
478 innobase_hton_name,478 innobase_hton_name,
479 plugin_author,479 plugin_author,
@@ -484,7 +484,7 @@
484 NULL, /* Plugin Deinit */484 NULL, /* Plugin Deinit */
485--- a/storage/innobase/include/buf0buf.h485--- a/storage/innobase/include/buf0buf.h
486+++ b/storage/innobase/include/buf0buf.h486+++ b/storage/innobase/include/buf0buf.h
487@@ -1455,6 +1455,7 @@487@@ -1475,6 +1475,7 @@
488 0 if the block was never accessed488 0 if the block was never accessed
489 in the buffer pool */489 in the buffer pool */
490 /* @} */490 /* @} */
@@ -888,7 +888,7 @@
888 UNIV_INTERN ulong srv_n_free_tickets_to_enter = 500;888 UNIV_INTERN ulong srv_n_free_tickets_to_enter = 500;
889--- a/storage/innobase/srv/srv0start.c889--- a/storage/innobase/srv/srv0start.c
890+++ b/storage/innobase/srv/srv0start.c890+++ b/storage/innobase/srv/srv0start.c
891@@ -2167,7 +2167,7 @@891@@ -2187,7 +2187,7 @@
892 if (srv_print_verbose_log) {892 if (srv_print_verbose_log) {
893 ut_print_timestamp(stderr);893 ut_print_timestamp(stderr);
894 fprintf(stderr,894 fprintf(stderr,
895895
=== modified file 'patches/innodb_io_patches.patch'
--- patches/innodb_io_patches.patch 2012-01-10 11:30:16 +0000
+++ patches/innodb_io_patches.patch 2012-02-06 05:02:26 +0000
@@ -155,7 +155,7 @@
155 return(0);155 return(0);
156--- a/storage/innobase/fil/fil0fil.c156--- a/storage/innobase/fil/fil0fil.c
157+++ b/storage/innobase/fil/fil0fil.c157+++ b/storage/innobase/fil/fil0fil.c
158@@ -2601,7 +2601,7 @@158@@ -2609,7 +2609,7 @@
159 159
160 os_thread_sleep(20000);160 os_thread_sleep(20000);
161 161
@@ -164,7 +164,7 @@
164 164
165 goto retry;165 goto retry;
166 166
167@@ -2815,7 +2815,7 @@167@@ -2823,7 +2823,7 @@
168 goto error_exit;168 goto error_exit;
169 }169 }
170 170
@@ -173,7 +173,7 @@
173 173
174 if (!ret) {174 if (!ret) {
175 fputs("InnoDB: Error: file flush of tablespace ", stderr);175 fputs("InnoDB: Error: file flush of tablespace ", stderr);
176@@ -3001,7 +3001,7 @@176@@ -3009,7 +3009,7 @@
177 }177 }
178 }178 }
179 179
@@ -182,7 +182,7 @@
182 if (!success) {182 if (!success) {
183 183
184 goto func_exit;184 goto func_exit;
185@@ -3023,7 +3023,7 @@185@@ -3031,7 +3031,7 @@
186 186
187 goto func_exit;187 goto func_exit;
188 }188 }
@@ -191,7 +191,7 @@
191 func_exit:191 func_exit:
192 os_file_close(file);192 os_file_close(file);
193 ut_free(buf2);193 ut_free(buf2);
194@@ -4006,7 +4006,7 @@194@@ -4014,7 +4014,7 @@
195 size_after_extend, *actual_size); */195 size_after_extend, *actual_size); */
196 mutex_exit(&fil_system->mutex);196 mutex_exit(&fil_system->mutex);
197 197
@@ -200,7 +200,7 @@
200 200
201 return(success);201 return(success);
202 }202 }
203@@ -4577,8 +4577,9 @@203@@ -4585,8 +4585,9 @@
204 void204 void
205 fil_flush(205 fil_flush(
206 /*======*/206 /*======*/
@@ -211,7 +211,7 @@
211 {211 {
212 fil_space_t* space;212 fil_space_t* space;
213 fil_node_t* node;213 fil_node_t* node;
214@@ -4649,7 +4650,7 @@214@@ -4657,7 +4658,7 @@
215 /* fprintf(stderr, "Flushing to file %s\n",215 /* fprintf(stderr, "Flushing to file %s\n",
216 node->name); */216 node->name); */
217 217
@@ -220,7 +220,7 @@
220 220
221 mutex_enter(&fil_system->mutex);221 mutex_enter(&fil_system->mutex);
222 222
223@@ -4732,7 +4733,7 @@223@@ -4740,7 +4741,7 @@
224 a non-existing space id. */224 a non-existing space id. */
225 for (i = 0; i < n_space_ids; i++) {225 for (i = 0; i < n_space_ids; i++) {
226 226
@@ -272,7 +272,7 @@
272 srv_force_recovery = (ulint) innobase_force_recovery;272 srv_force_recovery = (ulint) innobase_force_recovery;
273 273
274 srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite;274 srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite;
275@@ -11142,7 +11162,7 @@275@@ -11141,7 +11161,7 @@
276 PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_READONLY,276 PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_READONLY,
277 "Purge threads can be either 0 or 1.",277 "Purge threads can be either 0 or 1.",
278 NULL, NULL,278 NULL, NULL,
@@ -281,7 +281,7 @@
281 0, /* Minimum value */281 0, /* Minimum value */
282 1, 0); /* Maximum value */282 1, 0); /* Maximum value */
283 283
284@@ -11184,12 +11204,18 @@284@@ -11183,12 +11203,18 @@
285 innodb_file_format_max_validate,285 innodb_file_format_max_validate,
286 innodb_file_format_max_update, "Antelope");286 innodb_file_format_max_update, "Antelope");
287 287
@@ -306,7 +306,7 @@
306 306
307 static MYSQL_SYSVAR_STR(flush_method, innobase_file_flush_method,307 static MYSQL_SYSVAR_STR(flush_method, innobase_file_flush_method,
308 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,308 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
309@@ -11294,7 +11320,7 @@309@@ -11293,7 +11319,7 @@
310 static MYSQL_SYSVAR_LONGLONG(buffer_pool_size, innobase_buffer_pool_size,310 static MYSQL_SYSVAR_LONGLONG(buffer_pool_size, innobase_buffer_pool_size,
311 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,311 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
312 "The size of the memory buffer InnoDB uses to cache data and indexes of its tables.",312 "The size of the memory buffer InnoDB uses to cache data and indexes of its tables.",
@@ -315,7 +315,7 @@
315 315
316 static MYSQL_SYSVAR_LONG(buffer_pool_instances, innobase_buffer_pool_instances,316 static MYSQL_SYSVAR_LONG(buffer_pool_instances, innobase_buffer_pool_instances,
317 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,317 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
318@@ -11451,6 +11477,135 @@318@@ -11450,6 +11476,135 @@
319 "trigger a readahead.",319 "trigger a readahead.",
320 NULL, NULL, 56, 0, 64, 0);320 NULL, NULL, 56, 0, 64, 0);
321 321
@@ -451,7 +451,7 @@
451 static struct st_mysql_sys_var* innobase_system_variables[]= {451 static struct st_mysql_sys_var* innobase_system_variables[]= {
452 MYSQL_SYSVAR(additional_mem_pool_size),452 MYSQL_SYSVAR(additional_mem_pool_size),
453 MYSQL_SYSVAR(autoextend_increment),453 MYSQL_SYSVAR(autoextend_increment),
454@@ -11471,6 +11626,7 @@454@@ -11470,6 +11625,7 @@
455 MYSQL_SYSVAR(file_format_check),455 MYSQL_SYSVAR(file_format_check),
456 MYSQL_SYSVAR(file_format_max),456 MYSQL_SYSVAR(file_format_max),
457 MYSQL_SYSVAR(flush_log_at_trx_commit),457 MYSQL_SYSVAR(flush_log_at_trx_commit),
@@ -459,7 +459,7 @@
459 MYSQL_SYSVAR(flush_method),459 MYSQL_SYSVAR(flush_method),
460 MYSQL_SYSVAR(force_recovery),460 MYSQL_SYSVAR(force_recovery),
461 MYSQL_SYSVAR(large_prefix),461 MYSQL_SYSVAR(large_prefix),
462@@ -11510,6 +11666,13 @@462@@ -11509,6 +11665,13 @@
463 MYSQL_SYSVAR(show_verbose_locks),463 MYSQL_SYSVAR(show_verbose_locks),
464 MYSQL_SYSVAR(show_locks_held),464 MYSQL_SYSVAR(show_locks_held),
465 MYSQL_SYSVAR(version),465 MYSQL_SYSVAR(version),
@@ -473,7 +473,7 @@
473 MYSQL_SYSVAR(use_sys_malloc),473 MYSQL_SYSVAR(use_sys_malloc),
474 MYSQL_SYSVAR(use_native_aio),474 MYSQL_SYSVAR(use_native_aio),
475 MYSQL_SYSVAR(change_buffering),475 MYSQL_SYSVAR(change_buffering),
476@@ -11522,6 +11685,9 @@476@@ -11521,6 +11684,9 @@
477 MYSQL_SYSVAR(purge_threads),477 MYSQL_SYSVAR(purge_threads),
478 MYSQL_SYSVAR(purge_batch_size),478 MYSQL_SYSVAR(purge_batch_size),
479 MYSQL_SYSVAR(rollback_segments),479 MYSQL_SYSVAR(rollback_segments),
@@ -524,7 +524,7 @@
524 /** read only pages belonging to the insert buffer tree */524 /** read only pages belonging to the insert buffer tree */
525--- a/storage/innobase/include/fil0fil.h525--- a/storage/innobase/include/fil0fil.h
526+++ b/storage/innobase/include/fil0fil.h526+++ b/storage/innobase/include/fil0fil.h
527@@ -658,8 +658,9 @@527@@ -663,8 +663,9 @@
528 void528 void
529 fil_flush(529 fil_flush(
530 /*======*/530 /*======*/
@@ -1600,7 +1600,7 @@
1600 mutex_enter(&kernel_mutex);1600 mutex_enter(&kernel_mutex);
1601--- a/storage/innobase/srv/srv0start.c1601--- a/storage/innobase/srv/srv0start.c
1602+++ b/storage/innobase/srv/srv0start.c1602+++ b/storage/innobase/srv/srv0start.c
1603@@ -1217,6 +1217,9 @@1603@@ -1237,6 +1237,9 @@
1604 } else if (0 == ut_strcmp(srv_file_flush_method_str, "O_DIRECT")) {1604 } else if (0 == ut_strcmp(srv_file_flush_method_str, "O_DIRECT")) {
1605 srv_unix_file_flush_method = SRV_UNIX_O_DIRECT;1605 srv_unix_file_flush_method = SRV_UNIX_O_DIRECT;
1606 1606
@@ -1926,3 +1926,27 @@
1926 1926
1927 # Performance schema variables are too long for files named1927 # Performance schema variables are too long for files named
1928 # 'mysql-test/suite/sys_vars/t/' ...1928 # 'mysql-test/suite/sys_vars/t/' ...
1929--- a/mysql-test/suite/innodb/t/innodb_cmp_drop_table-master.opt
1930+++ b/mysql-test/suite/innodb/t/innodb_cmp_drop_table-master.opt
1931@@ -1 +1 @@
1932---innodb-buffer-pool-size=8M
1933+--innodb-buffer-pool-size=32M
1934--- a/mysql-test/suite/innodb/t/innodb_cmp_drop_table.test
1935+++ b/mysql-test/suite/innodb/t/innodb_cmp_drop_table.test
1936@@ -36,13 +36,14 @@
1937
1938 -- disable_query_log
1939
1940--- let $i = 400
1941+-- let $i = 4000
1942+begin;
1943 while ($i)
1944 {
1945 insert into t2 values(repeat('abcdefghijklmnopqrstuvwxyz',1000));
1946 dec $i;
1947 }
1948-
1949+commit;
1950 -- enable_query_log
1951
1952 # now there should be no 8K pages in the buffer pool
19291953
=== modified file 'patches/innodb_kill_idle_transaction.patch'
--- patches/innodb_kill_idle_transaction.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_kill_idle_transaction.patch 2012-02-06 05:02:26 +0000
@@ -114,7 +114,7 @@
114 #ifdef HAVE_PSI_INTERFACE114 #ifdef HAVE_PSI_INTERFACE
115 /* Register keys with MySQL performance schema */115 /* Register keys with MySQL performance schema */
116 if (PSI_server) {116 if (PSI_server) {
117@@ -11695,6 +11699,57 @@117@@ -11694,6 +11698,57 @@
118 return(false);118 return(false);
119 }119 }
120 120
@@ -172,7 +172,7 @@
172 static SHOW_VAR innodb_status_variables_export[]= {172 static SHOW_VAR innodb_status_variables_export[]= {
173 {"Innodb", (char*) &show_innodb_vars, SHOW_FUNC},173 {"Innodb", (char*) &show_innodb_vars, SHOW_FUNC},
174 {NullS, NullS, SHOW_LONG}174 {NullS, NullS, SHOW_LONG}
175@@ -11986,6 +12041,15 @@175@@ -11985,6 +12040,15 @@
176 "Number of times a thread is allowed to enter InnoDB within the same SQL query after it has once got the ticket",176 "Number of times a thread is allowed to enter InnoDB within the same SQL query after it has once got the ticket",
177 NULL, NULL, 500L, 1L, ~0L, 0);177 NULL, NULL, 500L, 1L, ~0L, 0);
178 178
@@ -188,7 +188,7 @@
188 static MYSQL_SYSVAR_LONG(file_io_threads, innobase_file_io_threads,188 static MYSQL_SYSVAR_LONG(file_io_threads, innobase_file_io_threads,
189 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY | PLUGIN_VAR_NOSYSVAR,189 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY | PLUGIN_VAR_NOSYSVAR,
190 "Number of file I/O threads in InnoDB.",190 "Number of file I/O threads in InnoDB.",
191@@ -12288,6 +12352,7 @@191@@ -12327,6 +12391,7 @@
192 MYSQL_SYSVAR(fast_checksum),192 MYSQL_SYSVAR(fast_checksum),
193 MYSQL_SYSVAR(commit_concurrency),193 MYSQL_SYSVAR(commit_concurrency),
194 MYSQL_SYSVAR(concurrency_tickets),194 MYSQL_SYSVAR(concurrency_tickets),
@@ -198,7 +198,7 @@
198 MYSQL_SYSVAR(data_home_dir),198 MYSQL_SYSVAR(data_home_dir),
199--- a/storage/innobase/include/srv0srv.h199--- a/storage/innobase/include/srv0srv.h
200+++ b/storage/innobase/include/srv0srv.h200+++ b/storage/innobase/include/srv0srv.h
201@@ -296,6 +296,7 @@201@@ -299,6 +299,7 @@
202 extern ulint srv_activity_count;202 extern ulint srv_activity_count;
203 extern ulint srv_fatal_semaphore_wait_threshold;203 extern ulint srv_fatal_semaphore_wait_threshold;
204 extern ulint srv_dml_needed_delay;204 extern ulint srv_dml_needed_delay;
@@ -242,7 +242,7 @@
242 /* How much data manipulation language (DML) statements need to be delayed,242 /* How much data manipulation language (DML) statements need to be delayed,
243 in microseconds, in order to reduce the lagging of the purge thread. */243 in microseconds, in order to reduce the lagging of the purge thread. */
244 UNIV_INTERN ulint srv_dml_needed_delay = 0;244 UNIV_INTERN ulint srv_dml_needed_delay = 0;
245@@ -2834,6 +2843,36 @@245@@ -2837,6 +2846,36 @@
246 old_sema = sema;246 old_sema = sema;
247 }247 }
248 248
249249
=== modified file 'patches/innodb_lru_dump_restore.patch'
--- patches/innodb_lru_dump_restore.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_lru_dump_restore.patch 2012-02-06 05:02:26 +0000
@@ -7,7 +7,7 @@
7# should be done or reviewed by the maintainer!7# should be done or reviewed by the maintainer!
8--- a/storage/innobase/buf/buf0lru.c8--- a/storage/innobase/buf/buf0lru.c
9+++ b/storage/innobase/buf/buf0lru.c9+++ b/storage/innobase/buf/buf0lru.c
10@@ -2183,6 +2183,289 @@10@@ -2197,6 +2197,289 @@
11 memset(&buf_LRU_stat_cur, 0, sizeof buf_LRU_stat_cur);11 memset(&buf_LRU_stat_cur, 0, sizeof buf_LRU_stat_cur);
12 }12 }
13 13
@@ -310,7 +310,7 @@
310 /*==============*/310 /*==============*/
311--- a/storage/innobase/fil/fil0fil.c311--- a/storage/innobase/fil/fil0fil.c
312+++ b/storage/innobase/fil/fil0fil.c312+++ b/storage/innobase/fil/fil0fil.c
313@@ -5299,6 +5299,70 @@313@@ -5307,6 +5307,70 @@
314 return(DB_SUCCESS);314 return(DB_SUCCESS);
315 }315 }
316 316
@@ -401,7 +401,7 @@
401 #ifdef HAVE_LARGE_PAGES401 #ifdef HAVE_LARGE_PAGES
402 if ((os_use_large_pages = (ibool) my_use_large_pages))402 if ((os_use_large_pages = (ibool) my_use_large_pages))
403 os_large_page_size = (ulint) opt_large_page_size;403 os_large_page_size = (ulint) opt_large_page_size;
404@@ -11925,6 +11929,19 @@404@@ -11964,6 +11968,19 @@
405 "Limit the allocated memory for dictionary cache. (0: unlimited)",405 "Limit the allocated memory for dictionary cache. (0: unlimited)",
406 NULL, NULL, 0, 0, LONG_MAX, 0);406 NULL, NULL, 0, 0, LONG_MAX, 0);
407 407
@@ -421,7 +421,7 @@
421 static struct st_mysql_sys_var* innobase_system_variables[]= {421 static struct st_mysql_sys_var* innobase_system_variables[]= {
422 MYSQL_SYSVAR(additional_mem_pool_size),422 MYSQL_SYSVAR(additional_mem_pool_size),
423 MYSQL_SYSVAR(autoextend_increment),423 MYSQL_SYSVAR(autoextend_increment),
424@@ -12009,6 +12026,8 @@424@@ -12048,6 +12065,8 @@
425 MYSQL_SYSVAR(random_read_ahead),425 MYSQL_SYSVAR(random_read_ahead),
426 MYSQL_SYSVAR(read_ahead_threshold),426 MYSQL_SYSVAR(read_ahead_threshold),
427 MYSQL_SYSVAR(io_capacity),427 MYSQL_SYSVAR(io_capacity),
@@ -540,7 +540,7 @@
540 an exclusive lock on the buffer frame. The flag is cleared and the x-lock540 an exclusive lock on the buffer frame. The flag is cleared and the x-lock
541--- a/storage/innobase/include/fil0fil.h541--- a/storage/innobase/include/fil0fil.h
542+++ b/storage/innobase/include/fil0fil.h542+++ b/storage/innobase/include/fil0fil.h
543@@ -648,6 +648,14 @@543@@ -653,6 +653,14 @@
544 void* message, /*!< in: message for aio handler if non-sync544 void* message, /*!< in: message for aio handler if non-sync
545 aio used, else ignored */545 aio used, else ignored */
546 trx_t* trx);546 trx_t* trx);
@@ -557,7 +557,7 @@
557 handler for completed requests. The aio array of pending requests is divided557 handler for completed requests. The aio array of pending requests is divided
558--- a/storage/innobase/include/srv0srv.h558--- a/storage/innobase/include/srv0srv.h
559+++ b/storage/innobase/include/srv0srv.h559+++ b/storage/innobase/include/srv0srv.h
560@@ -361,6 +361,12 @@560@@ -364,6 +364,12 @@
561 reading of a disk page */561 reading of a disk page */
562 extern ulint srv_buf_pool_reads;562 extern ulint srv_buf_pool_reads;
563 563
@@ -570,7 +570,7 @@
570 /** Status variables to be passed to MySQL */570 /** Status variables to be passed to MySQL */
571 typedef struct export_var_struct export_struc;571 typedef struct export_var_struct export_struc;
572 572
573@@ -666,6 +672,16 @@573@@ -669,6 +675,16 @@
574 /*=====================*/574 /*=====================*/
575 void* arg); /*!< in: a dummy parameter required by575 void* arg); /*!< in: a dummy parameter required by
576 os_thread_create */576 os_thread_create */
@@ -602,10 +602,15 @@
602 /* structure to pass status variables to MySQL */602 /* structure to pass status variables to MySQL */
603 UNIV_INTERN export_struc export_vars;603 UNIV_INTERN export_struc export_vars;
604 604
605@@ -2710,6 +2716,58 @@605@@ -2708,6 +2714,58 @@
606 OS_THREAD_DUMMY_RETURN;606 /* We count the number of threads in os_thread_exit(). A created
607 }607 thread should always use that to exit and not use return() to exit. */
608 608
609+ os_thread_exit(NULL);
610+
611+ OS_THREAD_DUMMY_RETURN;
612+}
613+
609+/*********************************************************************//**614+/*********************************************************************//**
610+A thread which restores the buffer pool from a dump file on startup and does615+A thread which restores the buffer pool from a dump file on startup and does
611+periodic buffer pool dumps.616+periodic buffer pool dumps.
@@ -653,14 +658,9 @@
653+ /* We count the number of threads in os_thread_exit(). A created658+ /* We count the number of threads in os_thread_exit(). A created
654+ thread should always use that to exit and not use return() to exit. */659+ thread should always use that to exit and not use return() to exit. */
655+660+
656+ os_thread_exit(NULL);661 os_thread_exit(NULL);
657+662
658+ OS_THREAD_DUMMY_RETURN;663 OS_THREAD_DUMMY_RETURN;
659+}
660+
661 /**********************************************************************//**
662 Check whether any background thread is active.
663 @return FALSE if all are are suspended or have exited. */
664--- a/storage/innobase/srv/srv0start.c664--- a/storage/innobase/srv/srv0start.c
665+++ b/storage/innobase/srv/srv0start.c665+++ b/storage/innobase/srv/srv0start.c
666@@ -87,6 +87,7 @@666@@ -87,6 +87,7 @@
@@ -683,7 +683,7 @@
683 683
684 /** We use this mutex to test the return value of pthread_mutex_trylock684 /** We use this mutex to test the return value of pthread_mutex_trylock
685 on successful locking. HP-UX does NOT return 0, though Linux et al do. */685 on successful locking. HP-UX does NOT return 0, though Linux et al do. */
686@@ -1821,6 +1822,15 @@686@@ -1841,6 +1842,15 @@
687 os_thread_create(&srv_monitor_thread, NULL,687 os_thread_create(&srv_monitor_thread, NULL,
688 thread_ids + 4 + SRV_MAX_N_IO_THREADS);688 thread_ids + 4 + SRV_MAX_N_IO_THREADS);
689 689
690690
=== modified file 'patches/innodb_opt_lru_count.patch'
--- patches/innodb_opt_lru_count.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_opt_lru_count.patch 2012-02-06 05:02:26 +0000
@@ -29,7 +29,7 @@
29 #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG29 #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
30 block->n_pointers = 0;30 block->n_pointers = 0;
31 #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */31 #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
32@@ -1401,7 +1401,7 @@32@@ -1403,7 +1403,7 @@
33 33
34 memcpy(dpage, bpage, sizeof *dpage);34 memcpy(dpage, bpage, sizeof *dpage);
35 35
@@ -38,7 +38,7 @@
38 ut_d(bpage->in_page_hash = FALSE);38 ut_d(bpage->in_page_hash = FALSE);
39 39
40 /* relocate buf_pool->LRU */40 /* relocate buf_pool->LRU */
41@@ -3223,8 +3223,8 @@41@@ -3225,8 +3225,8 @@
42 bpage->in_zip_hash = FALSE;42 bpage->in_zip_hash = FALSE;
43 bpage->in_flush_list = FALSE;43 bpage->in_flush_list = FALSE;
44 bpage->in_free_list = FALSE;44 bpage->in_free_list = FALSE;
@@ -48,7 +48,7 @@
48 48
49 ut_d(bpage->in_page_hash = TRUE);49 ut_d(bpage->in_page_hash = TRUE);
50 50
51@@ -3389,7 +3389,7 @@51@@ -3391,7 +3391,7 @@
52 ibuf_merge_or_delete_for_page(NULL, space, offset, zip_size, TRUE);52 ibuf_merge_or_delete_for_page(NULL, space, offset, zip_size, TRUE);
53 53
54 /* Flush pages from the end of the LRU list if necessary */54 /* Flush pages from the end of the LRU list if necessary */
@@ -94,7 +94,7 @@
94 94
95 return(FALSE);95 return(FALSE);
96 }96 }
97@@ -1985,8 +1988,14 @@97@@ -2049,8 +2052,14 @@
98 buf_page_t* bpage;98 buf_page_t* bpage;
99 ulint n_replaceable;99 ulint n_replaceable;
100 ulint distance = 0;100 ulint distance = 0;
@@ -110,7 +110,7 @@
110 110
111 n_replaceable = UT_LIST_GET_LEN(buf_pool->free);111 n_replaceable = UT_LIST_GET_LEN(buf_pool->free);
112 112
113@@ -1997,7 +2006,13 @@113@@ -2061,7 +2070,13 @@
114 + BUF_FLUSH_EXTRA_MARGIN(buf_pool))114 + BUF_FLUSH_EXTRA_MARGIN(buf_pool))
115 && (distance < BUF_LRU_FREE_SEARCH_LEN(buf_pool))) {115 && (distance < BUF_LRU_FREE_SEARCH_LEN(buf_pool))) {
116 116
@@ -125,7 +125,7 @@
125 125
126 mutex_enter(block_mutex);126 mutex_enter(block_mutex);
127 127
128@@ -2012,11 +2027,18 @@128@@ -2076,11 +2091,18 @@
129 bpage = UT_LIST_GET_PREV(LRU, bpage);129 bpage = UT_LIST_GET_PREV(LRU, bpage);
130 }130 }
131 131
@@ -145,7 +145,7 @@
145 }145 }
146 146
147 return(BUF_FLUSH_FREE_BLOCK_MARGIN(buf_pool)147 return(BUF_FLUSH_FREE_BLOCK_MARGIN(buf_pool)
148@@ -2034,7 +2056,8 @@148@@ -2098,7 +2120,8 @@
149 void149 void
150 buf_flush_free_margin(150 buf_flush_free_margin(
151 /*==================*/151 /*==================*/
@@ -155,7 +155,7 @@
155 {155 {
156 ulint n_to_flush;156 ulint n_to_flush;
157 157
158@@ -2045,7 +2068,7 @@158@@ -2109,7 +2132,7 @@
159 159
160 n_flushed = buf_flush_LRU(buf_pool, n_to_flush);160 n_flushed = buf_flush_LRU(buf_pool, n_to_flush);
161 161
@@ -164,7 +164,7 @@
164 /* There was an LRU type flush batch already running;164 /* There was an LRU type flush batch already running;
165 let us wait for it to end */165 let us wait for it to end */
166 166
167@@ -2058,8 +2081,9 @@167@@ -2122,8 +2145,9 @@
168 Flushes pages from the end of all the LRU lists. */168 Flushes pages from the end of all the LRU lists. */
169 UNIV_INTERN169 UNIV_INTERN
170 void170 void
@@ -175,7 +175,7 @@
175 {175 {
176 ulint i;176 ulint i;
177 177
178@@ -2068,7 +2092,7 @@178@@ -2132,7 +2156,7 @@
179 179
180 buf_pool = buf_pool_from_array(i);180 buf_pool = buf_pool_from_array(i);
181 181
@@ -186,7 +186,7 @@
186 186
187--- a/storage/innobase/buf/buf0lru.c187--- a/storage/innobase/buf/buf0lru.c
188+++ b/storage/innobase/buf/buf0lru.c188+++ b/storage/innobase/buf/buf0lru.c
189@@ -923,7 +923,7 @@189@@ -934,7 +934,7 @@
190 190
191 /* No free block was found: try to flush the LRU list */191 /* No free block was found: try to flush the LRU list */
192 192
@@ -195,7 +195,7 @@
195 ++srv_buf_pool_wait_free;195 ++srv_buf_pool_wait_free;
196 196
197 os_aio_simulated_wake_handler_threads();197 os_aio_simulated_wake_handler_threads();
198@@ -1120,7 +1120,7 @@198@@ -1131,7 +1131,7 @@
199 199
200 /* Remove the block from the LRU list */200 /* Remove the block from the LRU list */
201 UT_LIST_REMOVE(LRU, buf_pool->LRU, bpage);201 UT_LIST_REMOVE(LRU, buf_pool->LRU, bpage);
@@ -204,7 +204,7 @@
204 204
205 buf_unzip_LRU_remove_block_if_needed(bpage);205 buf_unzip_LRU_remove_block_if_needed(bpage);
206 206
207@@ -1199,7 +1199,7 @@207@@ -1210,7 +1210,7 @@
208 208
209 ut_ad(!bpage->in_LRU_list);209 ut_ad(!bpage->in_LRU_list);
210 UT_LIST_ADD_LAST(LRU, buf_pool->LRU, bpage);210 UT_LIST_ADD_LAST(LRU, buf_pool->LRU, bpage);
@@ -213,7 +213,7 @@
213 213
214 if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {214 if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
215 215
216@@ -1269,7 +1269,7 @@216@@ -1280,7 +1280,7 @@
217 buf_pool->LRU_old_len++;217 buf_pool->LRU_old_len++;
218 }218 }
219 219
@@ -222,7 +222,7 @@
222 222
223 if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {223 if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
224 224
225@@ -1513,7 +1513,7 @@225@@ -1524,7 +1524,7 @@
226 buf_page_set_old(b, buf_page_is_old(b));226 buf_page_set_old(b, buf_page_is_old(b));
227 #endif /* UNIV_LRU_DEBUG */227 #endif /* UNIV_LRU_DEBUG */
228 } else {228 } else {
@@ -271,7 +271,7 @@
271 if (buf_debug_prints) {271 if (buf_debug_prints) {
272--- a/storage/innobase/include/buf0buf.h272--- a/storage/innobase/include/buf0buf.h
273+++ b/storage/innobase/include/buf0buf.h273+++ b/storage/innobase/include/buf0buf.h
274@@ -1404,11 +1404,11 @@274@@ -1424,11 +1424,11 @@
275 275
276 UT_LIST_NODE_T(buf_page_t) LRU;276 UT_LIST_NODE_T(buf_page_t) LRU;
277 /*!< node of the LRU list */277 /*!< node of the LRU list */
278278
=== modified file 'patches/innodb_overwrite_relay_log_info.patch'
--- patches/innodb_overwrite_relay_log_info.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_overwrite_relay_log_info.patch 2012-02-06 05:02:26 +0000
@@ -248,7 +248,7 @@
248 248
249 trx_commit_for_mysql(trx);249 trx_commit_for_mysql(trx);
250 }250 }
251@@ -11131,6 +11323,12 @@251@@ -11130,6 +11322,12 @@
252 "The common part for InnoDB table spaces.",252 "The common part for InnoDB table spaces.",
253 NULL, NULL, NULL);253 NULL, NULL, NULL);
254 254
@@ -261,7 +261,7 @@
261 static MYSQL_SYSVAR_BOOL(doublewrite, innobase_use_doublewrite,261 static MYSQL_SYSVAR_BOOL(doublewrite, innobase_use_doublewrite,
262 PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,262 PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
263 "Enable InnoDB doublewrite buffer (enabled by default). "263 "Enable InnoDB doublewrite buffer (enabled by default). "
264@@ -11608,6 +11806,7 @@264@@ -11647,6 +11845,7 @@
265 MYSQL_SYSVAR(old_blocks_pct),265 MYSQL_SYSVAR(old_blocks_pct),
266 MYSQL_SYSVAR(old_blocks_time),266 MYSQL_SYSVAR(old_blocks_time),
267 MYSQL_SYSVAR(open_files),267 MYSQL_SYSVAR(open_files),
268268
=== modified file 'patches/innodb_pass_corrupt_table.patch'
--- patches/innodb_pass_corrupt_table.patch 2012-01-10 11:28:15 +0000
+++ patches/innodb_pass_corrupt_table.patch 2012-02-06 05:02:26 +0000
@@ -338,7 +338,7 @@
338 if (!ready) {338 if (!ready) {
339 339
340 return(block);340 return(block);
341@@ -1945,6 +1951,13 @@341@@ -1947,6 +1953,13 @@
342 return(NULL);342 return(NULL);
343 }343 }
344 344
@@ -352,7 +352,7 @@
352 block_mutex = buf_page_get_mutex_enter(bpage);352 block_mutex = buf_page_get_mutex_enter(bpage);
353 353
354 rw_lock_s_unlock(&buf_pool->page_hash_latch);354 rw_lock_s_unlock(&buf_pool->page_hash_latch);
355@@ -2524,6 +2537,13 @@355@@ -2526,6 +2539,13 @@
356 return(NULL);356 return(NULL);
357 }357 }
358 358
@@ -366,7 +366,7 @@
366 switch (buf_block_get_state(block)) {366 switch (buf_block_get_state(block)) {
367 buf_page_t* bpage;367 buf_page_t* bpage;
368 ibool success;368 ibool success;
369@@ -3198,6 +3218,7 @@369@@ -3200,6 +3220,7 @@
370 bpage->newest_modification = 0;370 bpage->newest_modification = 0;
371 bpage->oldest_modification = 0;371 bpage->oldest_modification = 0;
372 HASH_INVALIDATE(bpage, hash);372 HASH_INVALIDATE(bpage, hash);
@@ -374,7 +374,7 @@
374 #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG374 #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG
375 bpage->file_page_was_freed = FALSE;375 bpage->file_page_was_freed = FALSE;
376 #endif /* UNIV_DEBUG_FILE_ACCESSES || UNIV_DEBUG */376 #endif /* UNIV_DEBUG_FILE_ACCESSES || UNIV_DEBUG */
377@@ -3836,6 +3857,7 @@377@@ -3838,6 +3859,7 @@
378 (ulong) bpage->offset);378 (ulong) bpage->offset);
379 }379 }
380 380
@@ -382,7 +382,7 @@
382 /* From version 3.23.38 up we store the page checksum382 /* From version 3.23.38 up we store the page checksum
383 to the 4 first bytes of the page end lsn field */383 to the 4 first bytes of the page end lsn field */
384 384
385@@ -3877,6 +3899,23 @@385@@ -3879,6 +3901,23 @@
386 REFMAN "forcing-innodb-recovery.html\n"386 REFMAN "forcing-innodb-recovery.html\n"
387 "InnoDB: about forcing recovery.\n", stderr);387 "InnoDB: about forcing recovery.\n", stderr);
388 388
@@ -406,7 +406,7 @@
406 if (srv_force_recovery < SRV_FORCE_IGNORE_CORRUPT) {406 if (srv_force_recovery < SRV_FORCE_IGNORE_CORRUPT) {
407 /* If page space id is larger than TRX_SYS_SPACE407 /* If page space id is larger than TRX_SYS_SPACE
408 (0), we will attempt to mark the corresponding408 (0), we will attempt to mark the corresponding
409@@ -3893,6 +3932,7 @@409@@ -3895,6 +3934,7 @@
410 }410 }
411 }411 }
412 }412 }
@@ -414,7 +414,7 @@
414 414
415 if (recv_recovery_is_on()) {415 if (recv_recovery_is_on()) {
416 /* Pages must be uncompressed for crash recovery. */416 /* Pages must be uncompressed for crash recovery. */
417@@ -3902,8 +3942,11 @@417@@ -3904,8 +3944,11 @@
418 418
419 if (uncompressed && !recv_no_ibuf_operations) {419 if (uncompressed && !recv_no_ibuf_operations) {
420 ibuf_merge_or_delete_for_page(420 ibuf_merge_or_delete_for_page(
@@ -462,7 +462,7 @@
462 /* If table->ibd_file_missing == TRUE, this will462 /* If table->ibd_file_missing == TRUE, this will
463 print an error message and return without doing463 print an error message and return without doing
464 anything. */464 anything. */
465@@ -1293,7 +1294,7 @@465@@ -1298,7 +1299,7 @@
466 + dict_sys->size) > srv_dict_size_limit ) {466 + dict_sys->size) > srv_dict_size_limit ) {
467 prev_table = UT_LIST_GET_PREV(table_LRU, table);467 prev_table = UT_LIST_GET_PREV(table_LRU, table);
468 468
@@ -471,7 +471,7 @@
471 goto next_loop;471 goto next_loop;
472 472
473 cached_foreign_tables = 0;473 cached_foreign_tables = 0;
474@@ -4367,6 +4368,12 @@474@@ -4377,6 +4378,12 @@
475 heap = mem_heap_create(1000);475 heap = mem_heap_create(1000);
476 476
477 while (index) {477 while (index) {
@@ -484,7 +484,7 @@
484 size = btr_get_size(index, BTR_TOTAL_SIZE);484 size = btr_get_size(index, BTR_TOTAL_SIZE);
485 485
486 index->stat_index_size = size;486 index->stat_index_size = size;
487@@ -4514,6 +4521,12 @@487@@ -4524,6 +4531,12 @@
488 heap = mem_heap_create(1000);488 heap = mem_heap_create(1000);
489 489
490 while (index) {490 while (index) {
@@ -497,7 +497,7 @@
497 /*===========================================*/497 /*===========================================*/
498 {498 {
499 dict_table_t* sys_stats;499 dict_table_t* sys_stats;
500@@ -4706,6 +4719,13 @@500@@ -4716,6 +4729,13 @@
501 || (srv_force_recovery < SRV_FORCE_NO_LOG_REDO501 || (srv_force_recovery < SRV_FORCE_NO_LOG_REDO
502 && dict_index_is_clust(index)))) {502 && dict_index_is_clust(index)))) {
503 ulint size;503 ulint size;
@@ -511,7 +511,7 @@
511 size = btr_get_size(index, BTR_TOTAL_SIZE);511 size = btr_get_size(index, BTR_TOTAL_SIZE);
512 512
513 index->stat_index_size = size;513 index->stat_index_size = size;
514@@ -5685,4 +5705,42 @@514@@ -5695,4 +5715,42 @@
515 515
516 index->type |= DICT_CORRUPT;516 index->type |= DICT_CORRUPT;
517 }517 }
@@ -584,7 +584,7 @@
584 UT_LIST_ADD_LAST(space_list, fil_system->space_list, space);584 UT_LIST_ADD_LAST(space_list, fil_system->space_list, space);
585 585
586 mutex_exit(&fil_system->mutex);586 mutex_exit(&fil_system->mutex);
587@@ -5277,6 +5280,34 @@587@@ -5285,6 +5288,34 @@
588 ut_a(byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0);588 ut_a(byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0);
589 ut_a((len % OS_FILE_LOG_BLOCK_SIZE) == 0);589 ut_a((len % OS_FILE_LOG_BLOCK_SIZE) == 0);
590 590
@@ -619,7 +619,7 @@
619 #ifdef UNIV_HOTBACKUP619 #ifdef UNIV_HOTBACKUP
620 /* In ibbackup do normal i/o, not aio */620 /* In ibbackup do normal i/o, not aio */
621 if (type == OS_FILE_READ) {621 if (type == OS_FILE_READ) {
622@@ -5291,6 +5322,8 @@622@@ -5299,6 +5330,8 @@
623 ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,623 ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,
624 offset_low, offset_high, len, node, message, trx);624 offset_low, offset_high, len, node, message, trx);
625 #endif625 #endif
@@ -628,7 +628,7 @@
628 ut_a(ret);628 ut_a(ret);
629 629
630 if (mode == OS_AIO_SYNC) {630 if (mode == OS_AIO_SYNC) {
631@@ -5791,3 +5824,46 @@631@@ -5799,3 +5832,46 @@
632 return 0;632 return 0;
633 }633 }
634 }634 }
@@ -677,7 +677,7 @@
677+677+
678--- a/storage/innobase/fsp/fsp0fsp.c678--- a/storage/innobase/fsp/fsp0fsp.c
679+++ b/storage/innobase/fsp/fsp0fsp.c679+++ b/storage/innobase/fsp/fsp0fsp.c
680@@ -369,6 +369,12 @@680@@ -308,6 +308,12 @@
681 ut_ad(id || !zip_size);681 ut_ad(id || !zip_size);
682 682
683 block = buf_page_get(id, zip_size, 0, RW_X_LATCH, mtr);683 block = buf_page_get(id, zip_size, 0, RW_X_LATCH, mtr);
@@ -690,7 +690,7 @@
690 header = FSP_HEADER_OFFSET + buf_block_get_frame(block);690 header = FSP_HEADER_OFFSET + buf_block_get_frame(block);
691 buf_block_dbg_add_level(block, SYNC_FSP_PAGE);691 buf_block_dbg_add_level(block, SYNC_FSP_PAGE);
692 692
693@@ -787,6 +793,12 @@693@@ -726,6 +732,12 @@
694 fsp_header_t* sp_header;694 fsp_header_t* sp_header;
695 695
696 block = buf_page_get(space, zip_size, 0, RW_X_LATCH, mtr);696 block = buf_page_get(space, zip_size, 0, RW_X_LATCH, mtr);
@@ -703,7 +703,7 @@
703 buf_block_dbg_add_level(block, SYNC_FSP_PAGE);703 buf_block_dbg_add_level(block, SYNC_FSP_PAGE);
704 704
705 sp_header = FSP_HEADER_OFFSET + buf_block_get_frame(block);705 sp_header = FSP_HEADER_OFFSET + buf_block_get_frame(block);
706@@ -1866,6 +1878,11 @@706@@ -1805,6 +1817,11 @@
707 {707 {
708 fseg_inode_t* inode;708 fseg_inode_t* inode;
709 709
@@ -715,7 +715,7 @@
715 for (; i < FSP_SEG_INODES_PER_PAGE(zip_size); i++) {715 for (; i < FSP_SEG_INODES_PER_PAGE(zip_size); i++) {
716 716
717 inode = fsp_seg_inode_page_get_nth_inode(717 inode = fsp_seg_inode_page_get_nth_inode(
718@@ -1979,6 +1996,11 @@718@@ -1918,6 +1935,11 @@
719 719
720 page = buf_block_get_frame(block);720 page = buf_block_get_frame(block);
721 721
@@ -727,7 +727,7 @@
727 n = fsp_seg_inode_page_find_free(page, 0, zip_size, mtr);727 n = fsp_seg_inode_page_find_free(page, 0, zip_size, mtr);
728 728
729 ut_a(n != ULINT_UNDEFINED);729 ut_a(n != ULINT_UNDEFINED);
730@@ -2072,6 +2094,11 @@730@@ -2011,6 +2033,11 @@
731 731
732 inode = fut_get_ptr(space, zip_size, inode_addr, RW_X_LATCH, mtr);732 inode = fut_get_ptr(space, zip_size, inode_addr, RW_X_LATCH, mtr);
733 733
@@ -739,7 +739,7 @@
739 if (UNIV_UNLIKELY(!mach_read_from_8(inode + FSEG_ID))) {739 if (UNIV_UNLIKELY(!mach_read_from_8(inode + FSEG_ID))) {
740 740
741 inode = NULL;741 inode = NULL;
742@@ -2098,7 +2125,7 @@742@@ -2037,7 +2064,7 @@
743 {743 {
744 fseg_inode_t* inode744 fseg_inode_t* inode
745 = fseg_inode_try_get(header, space, zip_size, mtr);745 = fseg_inode_try_get(header, space, zip_size, mtr);
@@ -748,7 +748,7 @@
748 return(inode);748 return(inode);
749 }749 }
750 750
751@@ -3304,6 +3331,11 @@751@@ -3243,6 +3270,11 @@
752 752
753 descr = xdes_get_descriptor(space, zip_size, page, mtr);753 descr = xdes_get_descriptor(space, zip_size, page, mtr);
754 754
@@ -760,7 +760,7 @@
760 ut_a(descr);760 ut_a(descr);
761 if (xdes_get_bit(descr, XDES_FREE_BIT, page % FSP_EXTENT_SIZE, mtr)) {761 if (xdes_get_bit(descr, XDES_FREE_BIT, page % FSP_EXTENT_SIZE, mtr)) {
762 fputs("InnoDB: Dump of the tablespace extent descriptor: ",762 fputs("InnoDB: Dump of the tablespace extent descriptor: ",
763@@ -3551,6 +3583,11 @@763@@ -3490,6 +3522,11 @@
764 764
765 descr = xdes_get_descriptor(space, zip_size, header_page, mtr);765 descr = xdes_get_descriptor(space, zip_size, header_page, mtr);
766 766
@@ -772,7 +772,7 @@
772 /* Check that the header resides on a page which has not been772 /* Check that the header resides on a page which has not been
773 freed yet */773 freed yet */
774 774
775@@ -3635,6 +3672,12 @@775@@ -3574,6 +3611,12 @@
776 776
777 inode = fseg_inode_get(header, space, zip_size, mtr);777 inode = fseg_inode_get(header, space, zip_size, mtr);
778 778
@@ -908,7 +908,7 @@
908 switch (ret) {908 switch (ret) {
909 case DB_SUCCESS:909 case DB_SUCCESS:
910 error = 0;910 error = 0;
911@@ -6137,6 +6188,10 @@911@@ -6136,6 +6187,10 @@
912 {912 {
913 DBUG_ENTER("change_active_index");913 DBUG_ENTER("change_active_index");
914 914
@@ -919,7 +919,7 @@
919 ut_ad(user_thd == ha_thd());919 ut_ad(user_thd == ha_thd());
920 ut_a(prebuilt->trx == thd_to_trx(user_thd));920 ut_a(prebuilt->trx == thd_to_trx(user_thd));
921 921
922@@ -6250,6 +6305,10 @@922@@ -6249,6 +6304,10 @@
923 923
924 DBUG_ENTER("general_fetch");924 DBUG_ENTER("general_fetch");
925 925
@@ -930,7 +930,7 @@
930 ut_a(prebuilt->trx == thd_to_trx(user_thd));930 ut_a(prebuilt->trx == thd_to_trx(user_thd));
931 931
932 innodb_srv_conc_enter_innodb(prebuilt->trx);932 innodb_srv_conc_enter_innodb(prebuilt->trx);
933@@ -6259,6 +6318,10 @@933@@ -6258,6 +6317,10 @@
934 934
935 innodb_srv_conc_exit_innodb(prebuilt->trx);935 innodb_srv_conc_exit_innodb(prebuilt->trx);
936 936
@@ -941,7 +941,7 @@
941 switch (ret) {941 switch (ret) {
942 case DB_SUCCESS:942 case DB_SUCCESS:
943 error = 0;943 error = 0;
944@@ -7525,10 +7588,18 @@944@@ -7524,10 +7587,18 @@
945 945
946 update_thd(ha_thd());946 update_thd(ha_thd());
947 947
@@ -960,7 +960,7 @@
960 error = convert_error_code_to_mysql(error, prebuilt->table->flags,960 error = convert_error_code_to_mysql(error, prebuilt->table->flags,
961 NULL);961 NULL);
962 962
963@@ -8040,6 +8111,16 @@963@@ -8039,6 +8110,16 @@
964 return(ranges + (double) rows / (double) total_rows * time_for_scan);964 return(ranges + (double) rows / (double) total_rows * time_for_scan);
965 }965 }
966 966
@@ -977,7 +977,7 @@
977 /*********************************************************************//**977 /*********************************************************************//**
978 Calculates the key number used inside MySQL for an Innobase index. We will978 Calculates the key number used inside MySQL for an Innobase index. We will
979 first check the "index translation table" for a match of the index to get979 first check the "index translation table" for a match of the index to get
980@@ -8217,7 +8298,7 @@980@@ -8216,7 +8297,7 @@
981 ib_table = prebuilt->table;981 ib_table = prebuilt->table;
982 982
983 if (flag & HA_STATUS_TIME) {983 if (flag & HA_STATUS_TIME) {
@@ -986,7 +986,7 @@
986 /* In sql_show we call with this flag: update986 /* In sql_show we call with this flag: update
987 then statistics so that they are up-to-date */987 then statistics so that they are up-to-date */
988 988
989@@ -8517,10 +8598,18 @@989@@ -8516,10 +8597,18 @@
990 THD* thd, /*!< in: connection thread handle */990 THD* thd, /*!< in: connection thread handle */
991 HA_CHECK_OPT* check_opt) /*!< in: currently ignored */991 HA_CHECK_OPT* check_opt) /*!< in: currently ignored */
992 {992 {
@@ -1005,7 +1005,7 @@
1005 return(0);1005 return(0);
1006 }1006 }
1007 1007
1008@@ -8756,6 +8845,10 @@1008@@ -8755,6 +8844,10 @@
1009 my_error(ER_QUERY_INTERRUPTED, MYF(0));1009 my_error(ER_QUERY_INTERRUPTED, MYF(0));
1010 }1010 }
1011 1011
@@ -1016,7 +1016,7 @@
1016 DBUG_RETURN(is_ok ? HA_ADMIN_OK : HA_ADMIN_CORRUPT);1016 DBUG_RETURN(is_ok ? HA_ADMIN_OK : HA_ADMIN_CORRUPT);
1017 }1017 }
1018 1018
1019@@ -9526,6 +9619,10 @@1019@@ -9525,6 +9618,10 @@
1020 1020
1021 update_thd(thd);1021 update_thd(thd);
1022 1022
@@ -1027,7 +1027,7 @@
1027 if (prebuilt->table->ibd_file_missing && !thd_tablespace_op(thd)) {1027 if (prebuilt->table->ibd_file_missing && !thd_tablespace_op(thd)) {
1028 ut_print_timestamp(stderr);1028 ut_print_timestamp(stderr);
1029 fprintf(stderr,1029 fprintf(stderr,
1030@@ -11990,6 +12087,26 @@1030@@ -11989,6 +12086,26 @@
1031 "dump file (if present). Disabled by default.",1031 "dump file (if present). Disabled by default.",
1032 NULL, NULL, FALSE);1032 NULL, NULL, FALSE);
1033 1033
@@ -1054,7 +1054,7 @@
1054 static struct st_mysql_sys_var* innobase_system_variables[]= {1054 static struct st_mysql_sys_var* innobase_system_variables[]= {
1055 MYSQL_SYSVAR(additional_mem_pool_size),1055 MYSQL_SYSVAR(additional_mem_pool_size),
1056 MYSQL_SYSVAR(autoextend_increment),1056 MYSQL_SYSVAR(autoextend_increment),
1057@@ -12083,6 +12200,7 @@1057@@ -12082,6 +12199,7 @@
1058 #ifdef UNIV_DEBUG1058 #ifdef UNIV_DEBUG
1059 MYSQL_SYSVAR(flush_checkpoint_debug),1059 MYSQL_SYSVAR(flush_checkpoint_debug),
1060 #endif1060 #endif
@@ -1104,7 +1104,7 @@
1104 block, index != NULL && dict_index_is_ibuf(index)1104 block, index != NULL && dict_index_is_ibuf(index)
1105--- a/storage/innobase/include/buf0buf.h1105--- a/storage/innobase/include/buf0buf.h
1106+++ b/storage/innobase/include/buf0buf.h1106+++ b/storage/innobase/include/buf0buf.h
1107@@ -1003,7 +1003,7 @@1107@@ -1023,7 +1023,7 @@
1108 const buf_block_t* block) /*!< in: pointer to the control block */1108 const buf_block_t* block) /*!< in: pointer to the control block */
1109 __attribute__((pure));1109 __attribute__((pure));
1110 #else /* UNIV_DEBUG */1110 #else /* UNIV_DEBUG */
@@ -1113,7 +1113,7 @@
1113 #endif /* UNIV_DEBUG */1113 #endif /* UNIV_DEBUG */
1114 /*********************************************************************//**1114 /*********************************************************************//**
1115 Gets the space id of a block.1115 Gets the space id of a block.
1116@@ -1450,6 +1450,7 @@1116@@ -1470,6 +1470,7 @@
1117 0 if the block was never accessed1117 0 if the block was never accessed
1118 in the buffer pool */1118 in the buffer pool */
1119 /* @} */1119 /* @} */
@@ -1132,7 +1132,7 @@
1132 /*********************************************************************//**1132 /*********************************************************************//**
1133 Gets the current size of buffer buf_pool in bytes.1133 Gets the current size of buffer buf_pool in bytes.
1134 @return size in bytes */1134 @return size in bytes */
1135@@ -637,6 +637,12 @@1135@@ -681,6 +681,12 @@
1136 /*================*/1136 /*================*/
1137 const buf_block_t* block) /*!< in: pointer to the control block */1137 const buf_block_t* block) /*!< in: pointer to the control block */
1138 {1138 {
@@ -1175,7 +1175,7 @@
1175 #ifdef UNIV_DEBUG1175 #ifdef UNIV_DEBUG
1176--- a/storage/innobase/include/fil0fil.h1176--- a/storage/innobase/include/fil0fil.h
1177+++ b/storage/innobase/include/fil0fil.h1177+++ b/storage/innobase/include/fil0fil.h
1178@@ -754,6 +754,19 @@1178@@ -759,6 +759,19 @@
1179 fil_system_hash_nodes(void);1179 fil_system_hash_nodes(void);
1180 /*========================*/1180 /*========================*/
1181 1181
@@ -1359,7 +1359,7 @@
1359 /*-------------------------------------------*/1359 /*-------------------------------------------*/
1360--- a/storage/innobase/srv/srv0start.c1360--- a/storage/innobase/srv/srv0start.c
1361+++ b/storage/innobase/srv/srv0start.c1361+++ b/storage/innobase/srv/srv0start.c
1362@@ -2155,6 +2155,13 @@1362@@ -2175,6 +2175,13 @@
1363 1363
1364 os_fast_mutex_free(&srv_os_test_mutex);1364 os_fast_mutex_free(&srv_os_test_mutex);
1365 1365
13661366
=== modified file 'patches/innodb_recovery_patches.patch'
--- patches/innodb_recovery_patches.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_recovery_patches.patch 2012-02-06 05:02:26 +0000
@@ -124,7 +124,7 @@
124 srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite;124 srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite;
125 srv_use_checksums = (ibool) innobase_use_checksums;125 srv_use_checksums = (ibool) innobase_use_checksums;
126 126
127@@ -11391,6 +11394,11 @@127@@ -11390,6 +11393,11 @@
128 "The common part for InnoDB table spaces.",128 "The common part for InnoDB table spaces.",
129 NULL, NULL, NULL);129 NULL, NULL, NULL);
130 130
@@ -136,7 +136,7 @@
136 static MYSQL_SYSVAR_BOOL(recovery_update_relay_log, innobase_overwrite_relay_log_info,136 static MYSQL_SYSVAR_BOOL(recovery_update_relay_log, innobase_overwrite_relay_log_info,
137 PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,137 PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
138 "During InnoDB crash recovery on slave overwrite relay-log.info "138 "During InnoDB crash recovery on slave overwrite relay-log.info "
139@@ -11879,6 +11887,7 @@139@@ -11918,6 +11926,7 @@
140 MYSQL_SYSVAR(data_file_path),140 MYSQL_SYSVAR(data_file_path),
141 MYSQL_SYSVAR(data_home_dir),141 MYSQL_SYSVAR(data_home_dir),
142 MYSQL_SYSVAR(doublewrite),142 MYSQL_SYSVAR(doublewrite),
143143
=== modified file 'patches/innodb_separate_doublewrite.patch'
--- patches/innodb_separate_doublewrite.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_separate_doublewrite.patch 2012-02-06 05:02:26 +0000
@@ -7,7 +7,7 @@
7# should be done or reviewed by the maintainer!7# should be done or reviewed by the maintainer!
8--- a/storage/innobase/buf/buf0buf.c8--- a/storage/innobase/buf/buf0buf.c
9+++ b/storage/innobase/buf/buf0buf.c9+++ b/storage/innobase/buf/buf0buf.c
10@@ -3805,7 +3805,8 @@10@@ -3807,7 +3807,8 @@
11 read_space_id = mach_read_from_4(11 read_space_id = mach_read_from_4(
12 frame + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);12 frame + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);
13 13
@@ -262,7 +262,7 @@
262 if (err != DB_SUCCESS) {262 if (err != DB_SUCCESS) {
263 263
264 return(err);264 return(err);
265@@ -4168,7 +4178,7 @@265@@ -4176,7 +4186,7 @@
266 }266 }
267 267
268 #ifndef UNIV_HOTBACKUP268 #ifndef UNIV_HOTBACKUP
@@ -271,7 +271,7 @@
271 fprintf(stderr,271 fprintf(stderr,
272 "InnoDB: Error: tablespace id %lu in file %s"272 "InnoDB: Error: tablespace id %lu in file %s"
273 " is not sensible\n",273 " is not sensible\n",
274@@ -4177,7 +4187,7 @@274@@ -4185,7 +4195,7 @@
275 goto func_exit;275 goto func_exit;
276 }276 }
277 #else277 #else
@@ -280,7 +280,7 @@
280 char* new_path;280 char* new_path;
281 281
282 fprintf(stderr,282 fprintf(stderr,
283@@ -4998,7 +5008,7 @@283@@ -5006,7 +5016,7 @@
284 }284 }
285 285
286 if (node->n_pending == 0 && space->purpose == FIL_TABLESPACE286 if (node->n_pending == 0 && space->purpose == FIL_TABLESPACE
@@ -289,7 +289,7 @@
289 /* The node is in the LRU list, remove it */289 /* The node is in the LRU list, remove it */
290 290
291 ut_a(UT_LIST_GET_LEN(system->LRU) > 0);291 ut_a(UT_LIST_GET_LEN(system->LRU) > 0);
292@@ -5044,7 +5054,7 @@292@@ -5052,7 +5062,7 @@
293 }293 }
294 294
295 if (node->n_pending == 0 && node->space->purpose == FIL_TABLESPACE295 if (node->n_pending == 0 && node->space->purpose == FIL_TABLESPACE
@@ -298,7 +298,7 @@
298 /* The node must be put back to the LRU list */298 /* The node must be put back to the LRU list */
299 UT_LIST_ADD_FIRST(LRU, system->LRU, node);299 UT_LIST_ADD_FIRST(LRU, system->LRU, node);
300 }300 }
301@@ -5655,7 +5665,7 @@301@@ -5663,7 +5673,7 @@
302 ut_a(fil_node->n_pending == 0);302 ut_a(fil_node->n_pending == 0);
303 ut_a(fil_node->open);303 ut_a(fil_node->open);
304 ut_a(fil_node->space->purpose == FIL_TABLESPACE);304 ut_a(fil_node->space->purpose == FIL_TABLESPACE);
@@ -316,9 +316,9 @@
316-316-
317+#include "trx0sys.h"317+#include "trx0sys.h"
318 318
319 #define FSP_HEADER_OFFSET FIL_PAGE_DATA /* Offset of the space header319 /* FILE SEGMENT INODE
320 within a file page */320 ==================
321@@ -999,10 +999,10 @@321@@ -938,10 +938,10 @@
322 flst_init(header + FSP_SEG_INODES_FREE, mtr);322 flst_init(header + FSP_SEG_INODES_FREE, mtr);
323 323
324 mlog_write_ull(header + FSP_SEG_ID, 1, mtr);324 mlog_write_ull(header + FSP_SEG_ID, 1, mtr);
@@ -350,7 +350,7 @@
350 srv_use_sys_stats_table = (ibool) innobase_use_sys_stats_table;350 srv_use_sys_stats_table = (ibool) innobase_use_sys_stats_table;
351 351
352 /* -------------- Log files ---------------------------*/352 /* -------------- Log files ---------------------------*/
353@@ -11772,6 +11775,11 @@353@@ -11771,6 +11774,11 @@
354 "Path to individual files and their sizes.",354 "Path to individual files and their sizes.",
355 NULL, NULL, NULL);355 NULL, NULL, NULL);
356 356
@@ -362,7 +362,7 @@
362 static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode,362 static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode,
363 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,363 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
364 "The AUTOINC lock modes supported by InnoDB: "364 "The AUTOINC lock modes supported by InnoDB: "
365@@ -11951,6 +11959,7 @@365@@ -11990,6 +11998,7 @@
366 MYSQL_SYSVAR(commit_concurrency),366 MYSQL_SYSVAR(commit_concurrency),
367 MYSQL_SYSVAR(concurrency_tickets),367 MYSQL_SYSVAR(concurrency_tickets),
368 MYSQL_SYSVAR(data_file_path),368 MYSQL_SYSVAR(data_file_path),
@@ -536,7 +536,7 @@
536 #ifdef UNIV_LOG_ARCHIVE536 #ifdef UNIV_LOG_ARCHIVE
537 ulint* min_arch_log_no,/*!< out: min of archived log537 ulint* min_arch_log_no,/*!< out: min of archived log
538 numbers in data files */538 numbers in data files */
539@@ -747,6 +748,7 @@539@@ -748,6 +749,7 @@
540 *sum_of_new_sizes = 0;540 *sum_of_new_sizes = 0;
541 541
542 *create_new_db = FALSE;542 *create_new_db = FALSE;
@@ -544,7 +544,7 @@
544 544
545 srv_normalize_path_for_win(srv_data_home);545 srv_normalize_path_for_win(srv_data_home);
546 546
547@@ -984,6 +986,142 @@547@@ -1004,6 +1006,142 @@
548 srv_data_file_is_raw_partition[i] != 0);548 srv_data_file_is_raw_partition[i] != 0);
549 }549 }
550 550
@@ -622,8 +622,8 @@
622+ (ulong) TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9);622+ (ulong) TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9);
623+ }623+ }
624+624+
625+ fil_read_flushed_lsn_and_arch_log_no(625+ fil_read_first_page(
626+ files[i], one_opened,626+ files[i], one_opened, &flags,
627+#ifdef UNIV_LOG_ARCHIVE627+#ifdef UNIV_LOG_ARCHIVE
628+ min_arch_log_no, max_arch_log_no,628+ min_arch_log_no, max_arch_log_no,
629+#endif /* UNIV_LOG_ARCHIVE */629+#endif /* UNIV_LOG_ARCHIVE */
@@ -687,7 +687,7 @@
687 return(DB_SUCCESS);687 return(DB_SUCCESS);
688 }688 }
689 689
690@@ -997,6 +1135,7 @@690@@ -1017,6 +1155,7 @@
691 /*====================================*/691 /*====================================*/
692 {692 {
693 ibool create_new_db;693 ibool create_new_db;
@@ -695,7 +695,7 @@
695 ibool log_file_created;695 ibool log_file_created;
696 ibool log_created = FALSE;696 ibool log_created = FALSE;
697 ibool log_opened = FALSE;697 ibool log_opened = FALSE;
698@@ -1462,6 +1601,7 @@698@@ -1482,6 +1621,7 @@
699 }699 }
700 700
701 err = open_or_create_data_files(&create_new_db,701 err = open_or_create_data_files(&create_new_db,
@@ -703,7 +703,7 @@
703 #ifdef UNIV_LOG_ARCHIVE703 #ifdef UNIV_LOG_ARCHIVE
704 &min_arch_log_no, &max_arch_log_no,704 &min_arch_log_no, &max_arch_log_no,
705 #endif /* UNIV_LOG_ARCHIVE */705 #endif /* UNIV_LOG_ARCHIVE */
706@@ -1629,6 +1769,14 @@706@@ -1649,6 +1789,14 @@
707 after the double write buffer has been created. */707 after the double write buffer has been created. */
708 trx_sys_create();708 trx_sys_create();
709 709
@@ -718,7 +718,7 @@
718 dict_create();718 dict_create();
719 719
720 srv_startup_is_before_trx_rollback_phase = FALSE;720 srv_startup_is_before_trx_rollback_phase = FALSE;
721@@ -1662,6 +1810,13 @@721@@ -1682,6 +1830,13 @@
722 recv_recovery_from_archive_finish();722 recv_recovery_from_archive_finish();
723 #endif /* UNIV_LOG_ARCHIVE */723 #endif /* UNIV_LOG_ARCHIVE */
724 } else {724 } else {
@@ -732,7 +732,7 @@
732 732
733 /* Check if we support the max format that is stamped733 /* Check if we support the max format that is stamped
734 on the system tablespace. 734 on the system tablespace.
735@@ -1748,6 +1903,17 @@735@@ -1768,6 +1923,17 @@
736 we have finished the recovery process so that the736 we have finished the recovery process so that the
737 image of TRX_SYS_PAGE_NO is not stale. */737 image of TRX_SYS_PAGE_NO is not stale. */
738 trx_sys_file_format_tag_init();738 trx_sys_file_format_tag_init();
739739
=== modified file 'patches/innodb_show_lock_name.patch'
--- patches/innodb_show_lock_name.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_show_lock_name.patch 2012-02-06 05:02:26 +0000
@@ -7,7 +7,7 @@
7# should be done or reviewed by the maintainer!7# should be done or reviewed by the maintainer!
8--- a/storage/innobase/handler/ha_innodb.cc8--- a/storage/innobase/handler/ha_innodb.cc
9+++ b/storage/innobase/handler/ha_innodb.cc9+++ b/storage/innobase/handler/ha_innodb.cc
10@@ -9710,9 +9710,8 @@10@@ -9709,9 +9709,8 @@
11 rw_lock_wait_time += mutex->lspent_time;11 rw_lock_wait_time += mutex->lspent_time;
12 }12 }
13 #else /* UNIV_DEBUG */13 #else /* UNIV_DEBUG */
@@ -19,7 +19,7 @@
19 buf2len= (uint) my_snprintf(buf2, sizeof(buf2), "os_waits=%lu",19 buf2len= (uint) my_snprintf(buf2, sizeof(buf2), "os_waits=%lu",
20 (ulong) mutex->count_os_wait);20 (ulong) mutex->count_os_wait);
21 21
22@@ -9727,10 +9726,8 @@22@@ -9726,10 +9725,8 @@
23 23
24 if (block_mutex) {24 if (block_mutex) {
25 buf1len = (uint) my_snprintf(buf1, sizeof buf1,25 buf1len = (uint) my_snprintf(buf1, sizeof buf1,
@@ -32,7 +32,7 @@
32 buf2len = (uint) my_snprintf(buf2, sizeof buf2,32 buf2len = (uint) my_snprintf(buf2, sizeof buf2,
33 "os_waits=%lu",33 "os_waits=%lu",
34 (ulong) block_mutex_oswait_count);34 (ulong) block_mutex_oswait_count);
35@@ -9759,9 +9756,8 @@35@@ -9758,9 +9755,8 @@
36 continue;36 continue;
37 }37 }
38 38
@@ -44,7 +44,7 @@
44 buf2len = my_snprintf(buf2, sizeof buf2, "os_waits=%lu",44 buf2len = my_snprintf(buf2, sizeof buf2, "os_waits=%lu",
45 (ulong) lock->count_os_wait);45 (ulong) lock->count_os_wait);
46 46
47@@ -9775,10 +9771,8 @@47@@ -9774,10 +9770,8 @@
48 48
49 if (block_lock) {49 if (block_lock) {
50 buf1len = (uint) my_snprintf(buf1, sizeof buf1,50 buf1len = (uint) my_snprintf(buf1, sizeof buf1,
5151
=== modified file 'patches/innodb_show_status.patch'
--- patches/innodb_show_status.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_show_status.patch 2012-02-06 05:02:26 +0000
@@ -7,7 +7,7 @@
7# should be done or reviewed by the maintainer!7# should be done or reviewed by the maintainer!
8--- a/storage/innobase/buf/buf0buf.c8--- a/storage/innobase/buf/buf0buf.c
9+++ b/storage/innobase/buf/buf0buf.c9+++ b/storage/innobase/buf/buf0buf.c
10@@ -4365,6 +4365,7 @@10@@ -4372,6 +4372,7 @@
11 }11 }
12 12
13 total_info->pool_size += pool_info->pool_size;13 total_info->pool_size += pool_info->pool_size;
@@ -15,7 +15,7 @@
15 total_info->lru_len += pool_info->lru_len;15 total_info->lru_len += pool_info->lru_len;
16 total_info->old_lru_len += pool_info->old_lru_len;16 total_info->old_lru_len += pool_info->old_lru_len;
17 total_info->free_list_len += pool_info->free_list_len;17 total_info->free_list_len += pool_info->free_list_len;
18@@ -4430,6 +4431,8 @@18@@ -4437,6 +4438,8 @@
19 19
20 pool_info->pool_size = buf_pool->curr_size;20 pool_info->pool_size = buf_pool->curr_size;
21 21
@@ -24,7 +24,7 @@
24 pool_info->lru_len = UT_LIST_GET_LEN(buf_pool->LRU);24 pool_info->lru_len = UT_LIST_GET_LEN(buf_pool->LRU);
25 25
26 pool_info->old_lru_len = buf_pool->LRU_old_len;26 pool_info->old_lru_len = buf_pool->LRU_old_len;
27@@ -4551,14 +4554,16 @@27@@ -4558,14 +4561,16 @@
28 ut_ad(pool_info);28 ut_ad(pool_info);
29 29
30 fprintf(file,30 fprintf(file,
@@ -59,7 +59,7 @@
59 59
60--- a/storage/innobase/fil/fil0fil.c60--- a/storage/innobase/fil/fil0fil.c
61+++ b/storage/innobase/fil/fil0fil.c61+++ b/storage/innobase/fil/fil0fil.c
62@@ -4889,3 +4889,30 @@62@@ -4897,3 +4897,30 @@
63 63
64 fil_system = NULL;64 fil_system = NULL;
65 }65 }
@@ -101,7 +101,7 @@
101 {"buffer_pool_pages_free",101 {"buffer_pool_pages_free",
102 (char*) &export_vars.innodb_buffer_pool_pages_free, SHOW_LONG},102 (char*) &export_vars.innodb_buffer_pool_pages_free, SHOW_LONG},
103 #ifdef UNIV_DEBUG103 #ifdef UNIV_DEBUG
104@@ -11208,6 +11210,16 @@104@@ -11207,6 +11209,16 @@
105 "Force InnoDB to not use next-key locking, to use only row-level locking.",105 "Force InnoDB to not use next-key locking, to use only row-level locking.",
106 NULL, NULL, FALSE);106 NULL, NULL, FALSE);
107 107
@@ -118,7 +118,7 @@
118 #ifdef UNIV_LOG_ARCHIVE118 #ifdef UNIV_LOG_ARCHIVE
119 static MYSQL_SYSVAR_STR(log_arch_dir, innobase_log_arch_dir,119 static MYSQL_SYSVAR_STR(log_arch_dir, innobase_log_arch_dir,
120 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,120 PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
121@@ -11395,7 +11407,7 @@121@@ -11394,7 +11406,7 @@
122 122
123 static MYSQL_SYSVAR_STR(version, innodb_version_str,123 static MYSQL_SYSVAR_STR(version, innodb_version_str,
124 PLUGIN_VAR_NOCMDOPT | PLUGIN_VAR_READONLY,124 PLUGIN_VAR_NOCMDOPT | PLUGIN_VAR_READONLY,
@@ -127,7 +127,7 @@
127 127
128 static MYSQL_SYSVAR_BOOL(use_sys_malloc, srv_use_sys_malloc,128 static MYSQL_SYSVAR_BOOL(use_sys_malloc, srv_use_sys_malloc,
129 PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,129 PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
130@@ -11495,6 +11507,8 @@130@@ -11494,6 +11506,8 @@
131 MYSQL_SYSVAR(thread_concurrency),131 MYSQL_SYSVAR(thread_concurrency),
132 MYSQL_SYSVAR(thread_sleep_delay),132 MYSQL_SYSVAR(thread_sleep_delay),
133 MYSQL_SYSVAR(autoinc_lock_mode),133 MYSQL_SYSVAR(autoinc_lock_mode),
@@ -148,7 +148,7 @@
148 ulint free_list_len; /*!< Length of buf_pool->free list */148 ulint free_list_len; /*!< Length of buf_pool->free list */
149--- a/storage/innobase/include/fil0fil.h149--- a/storage/innobase/include/fil0fil.h
150+++ b/storage/innobase/include/fil0fil.h150+++ b/storage/innobase/include/fil0fil.h
151@@ -726,6 +726,17 @@151@@ -731,6 +731,17 @@
152 /*============================*/152 /*============================*/
153 ulint id); /*!< in: space id */153 ulint id); /*!< in: space id */
154 154
155155
=== modified file 'patches/innodb_show_status_extend.patch'
--- patches/innodb_show_status_extend.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_show_status_extend.patch 2012-02-06 05:02:26 +0000
@@ -240,7 +240,7 @@
240 /** The lock system */240 /** The lock system */
241--- a/storage/innobase/include/srv0srv.h241--- a/storage/innobase/include/srv0srv.h
242+++ b/storage/innobase/include/srv0srv.h242+++ b/storage/innobase/include/srv0srv.h
243@@ -739,6 +739,11 @@243@@ -742,6 +742,11 @@
244 244
245 /** Status variables to be passed to MySQL */245 /** Status variables to be passed to MySQL */
246 struct export_var_struct{246 struct export_var_struct{
@@ -252,7 +252,7 @@
252 ulint innodb_data_pending_reads; /*!< Pending reads */252 ulint innodb_data_pending_reads; /*!< Pending reads */
253 ulint innodb_data_pending_writes; /*!< Pending writes */253 ulint innodb_data_pending_writes; /*!< Pending writes */
254 ulint innodb_data_pending_fsyncs; /*!< Pending fsyncs */254 ulint innodb_data_pending_fsyncs; /*!< Pending fsyncs */
255@@ -756,6 +761,9 @@255@@ -759,6 +764,9 @@
256 #ifdef UNIV_DEBUG256 #ifdef UNIV_DEBUG
257 ulint innodb_buffer_pool_pages_latched; /*!< Latched pages */257 ulint innodb_buffer_pool_pages_latched; /*!< Latched pages */
258 #endif /* UNIV_DEBUG */258 #endif /* UNIV_DEBUG */
@@ -262,7 +262,7 @@
262 ulint innodb_buffer_pool_read_requests; /*!< buf_pool->stat.n_page_gets */262 ulint innodb_buffer_pool_read_requests; /*!< buf_pool->stat.n_page_gets */
263 ulint innodb_buffer_pool_reads; /*!< srv_buf_pool_reads */263 ulint innodb_buffer_pool_reads; /*!< srv_buf_pool_reads */
264 ulint innodb_buffer_pool_wait_free; /*!< srv_buf_pool_wait_free */264 ulint innodb_buffer_pool_wait_free; /*!< srv_buf_pool_wait_free */
265@@ -765,13 +773,43 @@265@@ -768,13 +776,43 @@
266 ulint innodb_buffer_pool_read_ahead_rnd;/*!< srv_read_ahead_rnd */266 ulint innodb_buffer_pool_read_ahead_rnd;/*!< srv_read_ahead_rnd */
267 ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */267 ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */
268 ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/268 ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/
@@ -306,7 +306,7 @@
306 ulint innodb_os_log_written; /*!< srv_os_log_written */306 ulint innodb_os_log_written; /*!< srv_os_log_written */
307 ulint innodb_os_log_fsyncs; /*!< fil_n_log_flushes */307 ulint innodb_os_log_fsyncs; /*!< fil_n_log_flushes */
308 ulint innodb_os_log_pending_writes; /*!< srv_os_log_pending_writes */308 ulint innodb_os_log_pending_writes; /*!< srv_os_log_pending_writes */
309@@ -780,6 +818,8 @@309@@ -783,6 +821,8 @@
310 ulint innodb_pages_created; /*!< buf_pool->stat.n_pages_created */310 ulint innodb_pages_created; /*!< buf_pool->stat.n_pages_created */
311 ulint innodb_pages_read; /*!< buf_pool->stat.n_pages_read */311 ulint innodb_pages_read; /*!< buf_pool->stat.n_pages_read */
312 ulint innodb_pages_written; /*!< buf_pool->stat.n_pages_written */312 ulint innodb_pages_written; /*!< buf_pool->stat.n_pages_written */
@@ -315,7 +315,7 @@
315 ulint innodb_row_lock_waits; /*!< srv_n_lock_wait_count */315 ulint innodb_row_lock_waits; /*!< srv_n_lock_wait_count */
316 ulint innodb_row_lock_current_waits; /*!< srv_n_lock_wait_current_count */316 ulint innodb_row_lock_current_waits; /*!< srv_n_lock_wait_current_count */
317 ib_int64_t innodb_row_lock_time; /*!< srv_n_lock_wait_time317 ib_int64_t innodb_row_lock_time; /*!< srv_n_lock_wait_time
318@@ -789,11 +829,18 @@318@@ -792,11 +832,18 @@
319 / srv_n_lock_wait_count */319 / srv_n_lock_wait_count */
320 ulint innodb_row_lock_time_max; /*!< srv_n_lock_max_wait_time320 ulint innodb_row_lock_time_max; /*!< srv_n_lock_max_wait_time
321 / 1000 */321 / 1000 */
@@ -383,7 +383,7 @@
383 }383 }
384--- a/storage/innobase/srv/srv0srv.c384--- a/storage/innobase/srv/srv0srv.c
385+++ b/storage/innobase/srv/srv0srv.c385+++ b/storage/innobase/srv/srv0srv.c
386@@ -2259,12 +2259,49 @@386@@ -2262,12 +2262,49 @@
387 ulint LRU_len;387 ulint LRU_len;
388 ulint free_len;388 ulint free_len;
389 ulint flush_list_len;389 ulint flush_list_len;
@@ -433,7 +433,7 @@
433 export_vars.innodb_data_pending_reads433 export_vars.innodb_data_pending_reads
434 = os_n_pending_reads;434 = os_n_pending_reads;
435 export_vars.innodb_data_pending_writes435 export_vars.innodb_data_pending_writes
436@@ -2303,6 +2340,92 @@436@@ -2306,6 +2343,92 @@
437 437
438 export_vars.innodb_buffer_pool_pages_misc438 export_vars.innodb_buffer_pool_pages_misc
439 = buf_pool_get_n_pages() - LRU_len - free_len;439 = buf_pool_get_n_pages() - LRU_len - free_len;
440440
=== modified file 'patches/innodb_show_sys_tables.patch'
--- patches/innodb_show_sys_tables.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_show_sys_tables.patch 2012-02-06 05:02:26 +0000
@@ -39,7 +39,7 @@
39 Determine the flags of a table described in SYS_TABLES.39 Determine the flags of a table described in SYS_TABLES.
40--- a/storage/innobase/handler/ha_innodb.cc40--- a/storage/innobase/handler/ha_innodb.cc
41+++ b/storage/innobase/handler/ha_innodb.cc41+++ b/storage/innobase/handler/ha_innodb.cc
42@@ -11908,7 +11908,14 @@42@@ -11950,7 +11950,14 @@
43 i_s_innodb_cmp,43 i_s_innodb_cmp,
44 i_s_innodb_cmp_reset,44 i_s_innodb_cmp_reset,
45 i_s_innodb_cmpmem,45 i_s_innodb_cmpmem,
4646
=== modified file 'patches/innodb_split_buf_pool_mutex.patch'
--- patches/innodb_split_buf_pool_mutex.patch 2012-01-11 15:14:15 +0000
+++ patches/innodb_split_buf_pool_mutex.patch 2012-02-06 05:02:26 +0000
@@ -527,7 +527,7 @@
527 buf_pool_mutex_exit(buf_pool);527 buf_pool_mutex_exit(buf_pool);
528 528
529 return(DB_SUCCESS);529 return(DB_SUCCESS);
530@@ -1374,7 +1402,11 @@530@@ -1376,7 +1404,11 @@
531 ulint fold;531 ulint fold;
532 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);532 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
533 533
@@ -540,7 +540,7 @@
540 ut_ad(mutex_own(buf_page_get_mutex(bpage)));540 ut_ad(mutex_own(buf_page_get_mutex(bpage)));
541 ut_a(buf_page_get_io_fix(bpage) == BUF_IO_NONE);541 ut_a(buf_page_get_io_fix(bpage) == BUF_IO_NONE);
542 ut_a(bpage->buf_fix_count == 0);542 ut_a(bpage->buf_fix_count == 0);
543@@ -1485,21 +1517,32 @@543@@ -1487,21 +1519,32 @@
544 buf_page_t* bpage;544 buf_page_t* bpage;
545 ulint i;545 ulint i;
546 buf_pool_t* buf_pool = buf_pool_get(space, offset);546 buf_pool_t* buf_pool = buf_pool_get(space, offset);
@@ -574,7 +574,7 @@
574 for (i = 0; i < BUF_POOL_WATCH_SIZE; i++) {574 for (i = 0; i < BUF_POOL_WATCH_SIZE; i++) {
575 bpage = &buf_pool->watch[i];575 bpage = &buf_pool->watch[i];
576 576
577@@ -1523,10 +1566,12 @@577@@ -1525,10 +1568,12 @@
578 bpage->space = space;578 bpage->space = space;
579 bpage->offset = offset;579 bpage->offset = offset;
580 bpage->buf_fix_count = 1;580 bpage->buf_fix_count = 1;
@@ -588,7 +588,7 @@
588 return(NULL);588 return(NULL);
589 case BUF_BLOCK_ZIP_PAGE:589 case BUF_BLOCK_ZIP_PAGE:
590 ut_ad(bpage->in_page_hash);590 ut_ad(bpage->in_page_hash);
591@@ -1544,6 +1589,8 @@591@@ -1546,6 +1591,8 @@
592 ut_error;592 ut_error;
593 593
594 /* Fix compiler warning */594 /* Fix compiler warning */
@@ -597,7 +597,7 @@
597 return(NULL);597 return(NULL);
598 }598 }
599 599
600@@ -1561,7 +1608,11 @@600@@ -1563,7 +1610,11 @@
601 space, offset) */601 space, offset) */
602 buf_page_t* watch) /*!< in/out: sentinel for watch */602 buf_page_t* watch) /*!< in/out: sentinel for watch */
603 {603 {
@@ -610,7 +610,7 @@
610 610
611 HASH_DELETE(buf_page_t, hash, buf_pool->page_hash, fold, watch);611 HASH_DELETE(buf_page_t, hash, buf_pool->page_hash, fold, watch);
612 ut_d(watch->in_page_hash = FALSE);612 ut_d(watch->in_page_hash = FALSE);
613@@ -1583,28 +1634,31 @@613@@ -1585,28 +1636,31 @@
614 buf_pool_t* buf_pool = buf_pool_get(space, offset);614 buf_pool_t* buf_pool = buf_pool_get(space, offset);
615 ulint fold = buf_page_address_fold(space, offset);615 ulint fold = buf_page_address_fold(space, offset);
616 616
@@ -646,7 +646,7 @@
646 }646 }
647 647
648 /****************************************************************//**648 /****************************************************************//**
649@@ -1624,14 +1678,16 @@649@@ -1626,14 +1680,16 @@
650 buf_pool_t* buf_pool = buf_pool_get(space, offset);650 buf_pool_t* buf_pool = buf_pool_get(space, offset);
651 ulint fold = buf_page_address_fold(space, offset);651 ulint fold = buf_page_address_fold(space, offset);
652 652
@@ -665,7 +665,7 @@
665 665
666 return(ret);666 return(ret);
667 }667 }
668@@ -1648,13 +1704,15 @@668@@ -1650,13 +1706,15 @@
669 {669 {
670 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);670 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
671 671
@@ -683,7 +683,7 @@
683 }683 }
684 684
685 /********************************************************************//**685 /********************************************************************//**
686@@ -1678,14 +1736,20 @@686@@ -1680,14 +1738,20 @@
687 ut_a(buf_page_in_file(bpage));687 ut_a(buf_page_in_file(bpage));
688 688
689 if (buf_page_peek_if_too_old(bpage)) {689 if (buf_page_peek_if_too_old(bpage)) {
@@ -708,7 +708,7 @@
708 }708 }
709 }709 }
710 710
711@@ -1702,7 +1766,8 @@711@@ -1704,7 +1768,8 @@
712 buf_block_t* block;712 buf_block_t* block;
713 buf_pool_t* buf_pool = buf_pool_get(space, offset);713 buf_pool_t* buf_pool = buf_pool_get(space, offset);
714 714
@@ -718,7 +718,7 @@
718 718
719 block = (buf_block_t*) buf_page_hash_get(buf_pool, space, offset);719 block = (buf_block_t*) buf_page_hash_get(buf_pool, space, offset);
720 720
721@@ -1711,7 +1776,8 @@721@@ -1713,7 +1778,8 @@
722 block->check_index_page_at_flush = FALSE;722 block->check_index_page_at_flush = FALSE;
723 }723 }
724 724
@@ -728,7 +728,7 @@
728 }728 }
729 729
730 #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG730 #if defined UNIV_DEBUG_FILE_ACCESSES || defined UNIV_DEBUG
731@@ -1731,7 +1797,8 @@731@@ -1733,7 +1799,8 @@
732 buf_page_t* bpage;732 buf_page_t* bpage;
733 buf_pool_t* buf_pool = buf_pool_get(space, offset);733 buf_pool_t* buf_pool = buf_pool_get(space, offset);
734 734
@@ -738,7 +738,7 @@
738 738
739 bpage = buf_page_hash_get(buf_pool, space, offset);739 bpage = buf_page_hash_get(buf_pool, space, offset);
740 740
741@@ -1742,7 +1809,8 @@741@@ -1744,7 +1811,8 @@
742 bpage->file_page_was_freed = TRUE;742 bpage->file_page_was_freed = TRUE;
743 }743 }
744 744
@@ -748,7 +748,7 @@
748 748
749 return(bpage);749 return(bpage);
750 }750 }
751@@ -1763,7 +1831,8 @@751@@ -1765,7 +1833,8 @@
752 buf_page_t* bpage;752 buf_page_t* bpage;
753 buf_pool_t* buf_pool = buf_pool_get(space, offset);753 buf_pool_t* buf_pool = buf_pool_get(space, offset);
754 754
@@ -758,7 +758,7 @@
758 758
759 bpage = buf_page_hash_get(buf_pool, space, offset);759 bpage = buf_page_hash_get(buf_pool, space, offset);
760 760
761@@ -1772,7 +1841,8 @@761@@ -1774,7 +1843,8 @@
762 bpage->file_page_was_freed = FALSE;762 bpage->file_page_was_freed = FALSE;
763 }763 }
764 764
@@ -768,7 +768,7 @@
768 768
769 return(bpage);769 return(bpage);
770 }770 }
771@@ -1804,8 +1874,9 @@771@@ -1806,8 +1876,9 @@
772 buf_pool->stat.n_page_gets++;772 buf_pool->stat.n_page_gets++;
773 773
774 for (;;) {774 for (;;) {
@@ -779,7 +779,7 @@
779 bpage = buf_page_hash_get(buf_pool, space, offset);779 bpage = buf_page_hash_get(buf_pool, space, offset);
780 if (bpage) {780 if (bpage) {
781 ut_ad(!buf_pool_watch_is_sentinel(buf_pool, bpage));781 ut_ad(!buf_pool_watch_is_sentinel(buf_pool, bpage));
782@@ -1814,7 +1885,8 @@782@@ -1816,7 +1887,8 @@
783 783
784 /* Page not in buf_pool: needs to be read from file */784 /* Page not in buf_pool: needs to be read from file */
785 785
@@ -789,7 +789,7 @@
789 789
790 buf_read_page(space, zip_size, offset);790 buf_read_page(space, zip_size, offset);
791 791
792@@ -1826,10 +1898,15 @@792@@ -1828,10 +1900,15 @@
793 if (UNIV_UNLIKELY(!bpage->zip.data)) {793 if (UNIV_UNLIKELY(!bpage->zip.data)) {
794 /* There is no compressed page. */794 /* There is no compressed page. */
795 err_exit:795 err_exit:
@@ -806,7 +806,7 @@
806 ut_ad(!buf_pool_watch_is_sentinel(buf_pool, bpage));806 ut_ad(!buf_pool_watch_is_sentinel(buf_pool, bpage));
807 807
808 switch (buf_page_get_state(bpage)) {808 switch (buf_page_get_state(bpage)) {
809@@ -1838,24 +1915,43 @@809@@ -1840,24 +1917,43 @@
810 case BUF_BLOCK_MEMORY:810 case BUF_BLOCK_MEMORY:
811 case BUF_BLOCK_REMOVE_HASH:811 case BUF_BLOCK_REMOVE_HASH:
812 case BUF_BLOCK_ZIP_FREE:812 case BUF_BLOCK_ZIP_FREE:
@@ -855,7 +855,7 @@
855 buf_block_buf_fix_inc((buf_block_t*) bpage,855 buf_block_buf_fix_inc((buf_block_t*) bpage,
856 __FILE__, __LINE__);856 __FILE__, __LINE__);
857 goto got_block;857 goto got_block;
858@@ -1868,7 +1964,7 @@858@@ -1870,7 +1966,7 @@
859 must_read = buf_page_get_io_fix(bpage) == BUF_IO_READ;859 must_read = buf_page_get_io_fix(bpage) == BUF_IO_READ;
860 access_time = buf_page_is_accessed(bpage);860 access_time = buf_page_is_accessed(bpage);
861 861
@@ -864,7 +864,7 @@
864 864
865 mutex_exit(block_mutex);865 mutex_exit(block_mutex);
866 866
867@@ -2179,7 +2275,7 @@867@@ -2181,7 +2277,7 @@
868 const buf_block_t* block) /*!< in: pointer to block,868 const buf_block_t* block) /*!< in: pointer to block,
869 not dereferenced */869 not dereferenced */
870 {870 {
@@ -873,7 +873,7 @@
873 873
874 if (UNIV_UNLIKELY((((ulint) block) % sizeof *block) != 0)) {874 if (UNIV_UNLIKELY((((ulint) block) % sizeof *block) != 0)) {
875 /* The pointer should be aligned. */875 /* The pointer should be aligned. */
876@@ -2215,6 +2311,7 @@876@@ -2217,6 +2313,7 @@
877 ulint fix_type;877 ulint fix_type;
878 ibool must_read;878 ibool must_read;
879 ulint retries = 0;879 ulint retries = 0;
@@ -881,7 +881,7 @@
881 buf_pool_t* buf_pool = buf_pool_get(space, offset);881 buf_pool_t* buf_pool = buf_pool_get(space, offset);
882 882
883 ut_ad(mtr);883 ut_ad(mtr);
884@@ -2248,18 +2345,24 @@884@@ -2250,18 +2347,24 @@
885 fold = buf_page_address_fold(space, offset);885 fold = buf_page_address_fold(space, offset);
886 loop:886 loop:
887 block = guess;887 block = guess;
@@ -908,7 +908,7 @@
908 block = guess = NULL;908 block = guess = NULL;
909 } else {909 } else {
910 ut_ad(!block->page.in_zip_hash);910 ut_ad(!block->page.in_zip_hash);
911@@ -2268,12 +2371,19 @@911@@ -2270,12 +2373,19 @@
912 }912 }
913 913
914 if (block == NULL) {914 if (block == NULL) {
@@ -928,7 +928,7 @@
928 block = NULL;928 block = NULL;
929 }929 }
930 930
931@@ -2285,12 +2395,14 @@931@@ -2287,12 +2397,14 @@
932 space, offset, fold);932 space, offset, fold);
933 933
934 if (UNIV_LIKELY_NULL(block)) {934 if (UNIV_LIKELY_NULL(block)) {
@@ -945,7 +945,7 @@
945 945
946 if (mode == BUF_GET_IF_IN_POOL946 if (mode == BUF_GET_IF_IN_POOL
947 || mode == BUF_PEEK_IF_IN_POOL947 || mode == BUF_PEEK_IF_IN_POOL
948@@ -2343,7 +2455,8 @@948@@ -2345,7 +2457,8 @@
949 /* The page is being read to buffer pool,949 /* The page is being read to buffer pool,
950 but we cannot wait around for the read to950 but we cannot wait around for the read to
951 complete. */951 complete. */
@@ -955,7 +955,7 @@
955 955
956 return(NULL);956 return(NULL);
957 }957 }
958@@ -2353,38 +2466,49 @@958@@ -2355,38 +2468,49 @@
959 ibool success;959 ibool success;
960 960
961 case BUF_BLOCK_FILE_PAGE:961 case BUF_BLOCK_FILE_PAGE:
@@ -1012,7 +1012,7 @@
1012 1012
1013 {1013 {
1014 buf_page_t* hash_bpage;1014 buf_page_t* hash_bpage;
1015@@ -2397,35 +2521,47 @@1015@@ -2399,35 +2523,47 @@
1016 while buf_pool->mutex was released.1016 while buf_pool->mutex was released.
1017 Free the block that was allocated. */1017 Free the block that was allocated. */
1018 1018
@@ -1066,7 +1066,7 @@
1066 buf_block_init_low(block);1066 buf_block_init_low(block);
1067 block->lock_hash_val = lock_rec_hash(space, offset);1067 block->lock_hash_val = lock_rec_hash(space, offset);
1068 1068
1069@@ -2435,7 +2571,7 @@1069@@ -2437,7 +2573,7 @@
1070 if (buf_page_get_state(&block->page)1070 if (buf_page_get_state(&block->page)
1071 == BUF_BLOCK_ZIP_PAGE) {1071 == BUF_BLOCK_ZIP_PAGE) {
1072 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG1072 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
@@ -1075,7 +1075,7 @@
1075 &block->page);1075 &block->page);
1076 #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */1076 #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
1077 ut_ad(!block->page.in_flush_list);1077 ut_ad(!block->page.in_flush_list);
1078@@ -2453,18 +2589,23 @@1078@@ -2455,18 +2591,23 @@
1079 /* Insert at the front of unzip_LRU list */1079 /* Insert at the front of unzip_LRU list */
1080 buf_unzip_LRU_add_block(block, FALSE);1080 buf_unzip_LRU_add_block(block, FALSE);
1081 1081
@@ -1101,7 +1101,7 @@
1101 buf_page_free_descriptor(bpage);1101 buf_page_free_descriptor(bpage);
1102 1102
1103 /* Decompress the page and apply buffered operations1103 /* Decompress the page and apply buffered operations
1104@@ -2478,12 +2619,15 @@1104@@ -2480,12 +2621,15 @@
1105 }1105 }
1106 1106
1107 /* Unfix and unlatch the block. */1107 /* Unfix and unlatch the block. */
@@ -1120,7 +1120,7 @@
1120 rw_lock_x_unlock(&block->lock);1120 rw_lock_x_unlock(&block->lock);
1121 1121
1122 break;1122 break;
1123@@ -2499,7 +2643,7 @@1123@@ -2501,7 +2645,7 @@
1124 1124
1125 ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);1125 ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);
1126 1126
@@ -1129,7 +1129,7 @@
1129 #if UNIV_WORD_SIZE == 41129 #if UNIV_WORD_SIZE == 4
1130 /* On 32-bit systems, there is no padding in buf_page_t. On1130 /* On 32-bit systems, there is no padding in buf_page_t. On
1131 other systems, Valgrind could complain about uninitialized pad1131 other systems, Valgrind could complain about uninitialized pad
1132@@ -2512,8 +2656,8 @@1132@@ -2514,8 +2658,8 @@
1133 /* Try to evict the block from the buffer pool, to use the1133 /* Try to evict the block from the buffer pool, to use the
1134 insert buffer (change buffer) as much as possible. */1134 insert buffer (change buffer) as much as possible. */
1135 1135
@@ -1140,7 +1140,7 @@
1140 if (mode == BUF_GET_IF_IN_POOL_OR_WATCH) {1140 if (mode == BUF_GET_IF_IN_POOL_OR_WATCH) {
1141 /* Set the watch, as it would have1141 /* Set the watch, as it would have
1142 been set if the page were not in the1142 been set if the page were not in the
1143@@ -2522,6 +2666,9 @@1143@@ -2524,6 +2668,9 @@
1144 space, offset, fold);1144 space, offset, fold);
1145 1145
1146 if (UNIV_LIKELY_NULL(block)) {1146 if (UNIV_LIKELY_NULL(block)) {
@@ -1150,7 +1150,7 @@
1150 1150
1151 /* The page entered the buffer1151 /* The page entered the buffer
1152 pool for some reason. Try to1152 pool for some reason. Try to
1153@@ -2529,7 +2676,7 @@1153@@ -2531,7 +2678,7 @@
1154 goto got_block;1154 goto got_block;
1155 }1155 }
1156 }1156 }
@@ -1159,7 +1159,7 @@
1159 fprintf(stderr,1159 fprintf(stderr,
1160 "innodb_change_buffering_debug evict %u %u\n",1160 "innodb_change_buffering_debug evict %u %u\n",
1161 (unsigned) space, (unsigned) offset);1161 (unsigned) space, (unsigned) offset);
1162@@ -2551,13 +2698,14 @@1162@@ -2553,13 +2700,14 @@
1163 ut_a(mode == BUF_GET_POSSIBLY_FREED1163 ut_a(mode == BUF_GET_POSSIBLY_FREED
1164 || !block->page.file_page_was_freed);1164 || !block->page.file_page_was_freed);
1165 #endif1165 #endif
@@ -1176,7 +1176,7 @@
1176 1176
1177 if (UNIV_LIKELY(mode != BUF_PEEK_IF_IN_POOL)) {1177 if (UNIV_LIKELY(mode != BUF_PEEK_IF_IN_POOL)) {
1178 buf_page_set_accessed_make_young(&block->page, access_time);1178 buf_page_set_accessed_make_young(&block->page, access_time);
1179@@ -2790,9 +2938,11 @@1179@@ -2792,9 +2940,11 @@
1180 buf_pool = buf_pool_from_block(block);1180 buf_pool = buf_pool_from_block(block);
1181 1181
1182 if (mode == BUF_MAKE_YOUNG && buf_page_peek_if_too_old(&block->page)) {1182 if (mode == BUF_MAKE_YOUNG && buf_page_peek_if_too_old(&block->page)) {
@@ -1190,7 +1190,7 @@
1190 } else if (!buf_page_is_accessed(&block->page)) {1190 } else if (!buf_page_is_accessed(&block->page)) {
1191 /* Above, we do a dirty read on purpose, to avoid1191 /* Above, we do a dirty read on purpose, to avoid
1192 mutex contention. The field buf_page_t::access_time1192 mutex contention. The field buf_page_t::access_time
1193@@ -2800,9 +2950,11 @@1193@@ -2802,9 +2952,11 @@
1194 field must be protected by mutex, however. */1194 field must be protected by mutex, however. */
1195 ulint time_ms = ut_time_ms();1195 ulint time_ms = ut_time_ms();
1196 1196
@@ -1204,7 +1204,7 @@
1204 }1204 }
1205 1205
1206 ut_ad(!ibuf_inside(mtr) || mode == BUF_KEEP_OLD);1206 ut_ad(!ibuf_inside(mtr) || mode == BUF_KEEP_OLD);
1207@@ -2869,18 +3021,21 @@1207@@ -2871,18 +3023,21 @@
1208 ut_ad(mtr);1208 ut_ad(mtr);
1209 ut_ad(mtr->state == MTR_ACTIVE);1209 ut_ad(mtr->state == MTR_ACTIVE);
1210 1210
@@ -1229,7 +1229,7 @@
1229 1229
1230 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG1230 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
1231 ut_a(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);1231 ut_a(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);
1232@@ -2970,7 +3125,10 @@1232@@ -2972,7 +3127,10 @@
1233 buf_page_t* hash_page;1233 buf_page_t* hash_page;
1234 1234
1235 ut_ad(buf_pool == buf_pool_get(space, offset));1235 ut_ad(buf_pool == buf_pool_get(space, offset));
@@ -1241,7 +1241,7 @@
1241 ut_ad(mutex_own(&(block->mutex)));1241 ut_ad(mutex_own(&(block->mutex)));
1242 ut_a(buf_block_get_state(block) != BUF_BLOCK_FILE_PAGE);1242 ut_a(buf_block_get_state(block) != BUF_BLOCK_FILE_PAGE);
1243 1243
1244@@ -2999,11 +3157,14 @@1244@@ -3001,11 +3159,14 @@
1245 if (UNIV_LIKELY(!hash_page)) {1245 if (UNIV_LIKELY(!hash_page)) {
1246 } else if (buf_pool_watch_is_sentinel(buf_pool, hash_page)) {1246 } else if (buf_pool_watch_is_sentinel(buf_pool, hash_page)) {
1247 /* Preserve the reference count. */1247 /* Preserve the reference count. */
@@ -1257,7 +1257,7 @@
1257 } else {1257 } else {
1258 fprintf(stderr,1258 fprintf(stderr,
1259 "InnoDB: Error: page %lu %lu already found"1259 "InnoDB: Error: page %lu %lu already found"
1260@@ -3013,7 +3174,8 @@1260@@ -3015,7 +3176,8 @@
1261 (const void*) hash_page, (const void*) block);1261 (const void*) hash_page, (const void*) block);
1262 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG1262 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
1263 mutex_exit(&block->mutex);1263 mutex_exit(&block->mutex);
@@ -1267,7 +1267,7 @@
1267 buf_print();1267 buf_print();
1268 buf_LRU_print();1268 buf_LRU_print();
1269 buf_validate();1269 buf_validate();
1270@@ -3096,7 +3258,9 @@1270@@ -3098,7 +3260,9 @@
1271 1271
1272 fold = buf_page_address_fold(space, offset);1272 fold = buf_page_address_fold(space, offset);
1273 1273
@@ -1278,7 +1278,7 @@
1278 1278
1279 watch_page = buf_page_hash_get_low(buf_pool, space, offset, fold);1279 watch_page = buf_page_hash_get_low(buf_pool, space, offset, fold);
1280 if (watch_page && !buf_pool_watch_is_sentinel(buf_pool, watch_page)) {1280 if (watch_page && !buf_pool_watch_is_sentinel(buf_pool, watch_page)) {
1281@@ -3105,9 +3269,15 @@1281@@ -3107,9 +3271,15 @@
1282 err_exit:1282 err_exit:
1283 if (block) {1283 if (block) {
1284 mutex_enter(&block->mutex);1284 mutex_enter(&block->mutex);
@@ -1295,7 +1295,7 @@
1295 1295
1296 bpage = NULL;1296 bpage = NULL;
1297 goto func_exit;1297 goto func_exit;
1298@@ -3130,6 +3300,8 @@1298@@ -3132,6 +3302,8 @@
1299 1299
1300 buf_page_init(buf_pool, space, offset, fold, block);1300 buf_page_init(buf_pool, space, offset, fold, block);
1301 1301
@@ -1304,7 +1304,7 @@
1304 /* The block must be put to the LRU list, to the old blocks */1304 /* The block must be put to the LRU list, to the old blocks */
1305 buf_LRU_add_block(bpage, TRUE/* to old blocks */);1305 buf_LRU_add_block(bpage, TRUE/* to old blocks */);
1306 1306
1307@@ -3157,7 +3329,7 @@1307@@ -3159,7 +3331,7 @@
1308 been added to buf_pool->LRU and1308 been added to buf_pool->LRU and
1309 buf_pool->page_hash. */1309 buf_pool->page_hash. */
1310 mutex_exit(&block->mutex);1310 mutex_exit(&block->mutex);
@@ -1313,7 +1313,7 @@
1313 mutex_enter(&block->mutex);1313 mutex_enter(&block->mutex);
1314 block->page.zip.data = data;1314 block->page.zip.data = data;
1315 1315
1316@@ -3170,13 +3342,14 @@1316@@ -3172,13 +3344,14 @@
1317 buf_unzip_LRU_add_block(block, TRUE);1317 buf_unzip_LRU_add_block(block, TRUE);
1318 }1318 }
1319 1319
@@ -1329,7 +1329,7 @@
1329 1329
1330 /* If buf_buddy_alloc() allocated storage from the LRU list,1330 /* If buf_buddy_alloc() allocated storage from the LRU list,
1331 it released and reacquired buf_pool->mutex. Thus, we must1331 it released and reacquired buf_pool->mutex. Thus, we must
1332@@ -3192,7 +3365,10 @@1332@@ -3194,7 +3367,10 @@
1333 1333
1334 /* The block was added by some other thread. */1334 /* The block was added by some other thread. */
1335 watch_page = NULL;1335 watch_page = NULL;
@@ -1341,7 +1341,7 @@
1341 1341
1342 bpage = NULL;1342 bpage = NULL;
1343 goto func_exit;1343 goto func_exit;
1344@@ -3240,20 +3416,26 @@1344@@ -3242,20 +3418,26 @@
1345 HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold,1345 HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold,
1346 bpage);1346 bpage);
1347 1347
@@ -1369,7 +1369,7 @@
1369 1369
1370 if (mode == BUF_READ_IBUF_PAGES_ONLY) {1370 if (mode == BUF_READ_IBUF_PAGES_ONLY) {
1371 1371
1372@@ -3295,7 +3477,9 @@1372@@ -3297,7 +3479,9 @@
1373 1373
1374 fold = buf_page_address_fold(space, offset);1374 fold = buf_page_address_fold(space, offset);
1375 1375
@@ -1380,7 +1380,7 @@
1380 1380
1381 block = (buf_block_t*) buf_page_hash_get_low(1381 block = (buf_block_t*) buf_page_hash_get_low(
1382 buf_pool, space, offset, fold);1382 buf_pool, space, offset, fold);
1383@@ -3311,7 +3495,9 @@1383@@ -3313,7 +3497,9 @@
1384 #endif /* UNIV_DEBUG_FILE_ACCESSES || UNIV_DEBUG */1384 #endif /* UNIV_DEBUG_FILE_ACCESSES || UNIV_DEBUG */
1385 1385
1386 /* Page can be found in buf_pool */1386 /* Page can be found in buf_pool */
@@ -1391,7 +1391,7 @@
1391 1391
1392 buf_block_free(free_block);1392 buf_block_free(free_block);
1393 1393
1394@@ -3333,6 +3519,7 @@1394@@ -3335,6 +3521,7 @@
1395 mutex_enter(&block->mutex);1395 mutex_enter(&block->mutex);
1396 1396
1397 buf_page_init(buf_pool, space, offset, fold, block);1397 buf_page_init(buf_pool, space, offset, fold, block);
@@ -1399,7 +1399,7 @@
1399 1399
1400 /* The block must be put to the LRU list */1400 /* The block must be put to the LRU list */
1401 buf_LRU_add_block(&block->page, FALSE);1401 buf_LRU_add_block(&block->page, FALSE);
1402@@ -3359,7 +3546,7 @@1402@@ -3361,7 +3548,7 @@
1403 the reacquisition of buf_pool->mutex. We also must1403 the reacquisition of buf_pool->mutex. We also must
1404 defer this operation until after the block descriptor1404 defer this operation until after the block descriptor
1405 has been added to buf_pool->LRU and buf_pool->page_hash. */1405 has been added to buf_pool->LRU and buf_pool->page_hash. */
@@ -1408,7 +1408,7 @@
1408 mutex_enter(&block->mutex);1408 mutex_enter(&block->mutex);
1409 block->page.zip.data = data;1409 block->page.zip.data = data;
1410 1410
1411@@ -3377,7 +3564,8 @@1411@@ -3379,7 +3566,8 @@
1412 1412
1413 buf_page_set_accessed(&block->page, time_ms);1413 buf_page_set_accessed(&block->page, time_ms);
1414 1414
@@ -1418,7 +1418,7 @@
1418 1418
1419 mtr_memo_push(mtr, block, MTR_MEMO_BUF_FIX);1419 mtr_memo_push(mtr, block, MTR_MEMO_BUF_FIX);
1420 1420
1421@@ -3432,7 +3620,9 @@1421@@ -3434,7 +3622,9 @@
1422 ibool ret = TRUE;1422 ibool ret = TRUE;
1423 1423
1424 /* First unfix and release lock on the bpage */1424 /* First unfix and release lock on the bpage */
@@ -1429,7 +1429,7 @@
1429 mutex_enter(buf_page_get_mutex(bpage));1429 mutex_enter(buf_page_get_mutex(bpage));
1430 ut_ad(buf_page_get_io_fix(bpage) == BUF_IO_READ);1430 ut_ad(buf_page_get_io_fix(bpage) == BUF_IO_READ);
1431 ut_ad(bpage->buf_fix_count == 0);1431 ut_ad(bpage->buf_fix_count == 0);
1432@@ -3453,11 +3643,15 @@1432@@ -3455,11 +3645,15 @@
1433 ret = FALSE;1433 ret = FALSE;
1434 }1434 }
1435 1435
@@ -1446,7 +1446,7 @@
1446 1446
1447 return(ret);1447 return(ret);
1448 }1448 }
1449@@ -3475,6 +3669,8 @@1449@@ -3477,6 +3671,8 @@
1450 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);1450 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
1451 const ibool uncompressed = (buf_page_get_state(bpage)1451 const ibool uncompressed = (buf_page_get_state(bpage)
1452 == BUF_BLOCK_FILE_PAGE);1452 == BUF_BLOCK_FILE_PAGE);
@@ -1455,7 +1455,7 @@
1455 1455
1456 ut_a(buf_page_in_file(bpage));1456 ut_a(buf_page_in_file(bpage));
1457 1457
1458@@ -3617,8 +3813,26 @@1458@@ -3619,8 +3815,26 @@
1459 }1459 }
1460 }1460 }
1461 1461
@@ -1483,7 +1483,7 @@
1483 1483
1484 #ifdef UNIV_IBUF_COUNT_DEBUG1484 #ifdef UNIV_IBUF_COUNT_DEBUG
1485 if (io_type == BUF_IO_WRITE || uncompressed) {1485 if (io_type == BUF_IO_WRITE || uncompressed) {
1486@@ -3641,6 +3855,7 @@1486@@ -3643,6 +3857,7 @@
1487 the x-latch to this OS thread: do not let this confuse you in1487 the x-latch to this OS thread: do not let this confuse you in
1488 debugging! */1488 debugging! */
1489 1489
@@ -1491,7 +1491,7 @@
1491 ut_ad(buf_pool->n_pend_reads > 0);1491 ut_ad(buf_pool->n_pend_reads > 0);
1492 buf_pool->n_pend_reads--;1492 buf_pool->n_pend_reads--;
1493 buf_pool->stat.n_pages_read++;1493 buf_pool->stat.n_pages_read++;
1494@@ -3658,6 +3873,9 @@1494@@ -3660,6 +3875,9 @@
1495 1495
1496 buf_flush_write_complete(bpage);1496 buf_flush_write_complete(bpage);
1497 1497
@@ -1501,7 +1501,7 @@
1501 if (uncompressed) {1501 if (uncompressed) {
1502 rw_lock_s_unlock_gen(&((buf_block_t*) bpage)->lock,1502 rw_lock_s_unlock_gen(&((buf_block_t*) bpage)->lock,
1503 BUF_IO_WRITE);1503 BUF_IO_WRITE);
1504@@ -3680,8 +3898,8 @@1504@@ -3682,8 +3900,8 @@
1505 }1505 }
1506 #endif /* UNIV_DEBUG */1506 #endif /* UNIV_DEBUG */
1507 1507
@@ -1511,7 +1511,7 @@
1511 }1511 }
1512 1512
1513 /*********************************************************************//**1513 /*********************************************************************//**
1514@@ -3698,7 +3916,9 @@1514@@ -3700,7 +3918,9 @@
1515 1515
1516 ut_ad(buf_pool);1516 ut_ad(buf_pool);
1517 1517
@@ -1522,7 +1522,7 @@
1522 1522
1523 chunk = buf_pool->chunks;1523 chunk = buf_pool->chunks;
1524 1524
1525@@ -3715,7 +3935,9 @@1525@@ -3717,7 +3937,9 @@
1526 }1526 }
1527 }1527 }
1528 1528
@@ -1533,7 +1533,7 @@
1533 1533
1534 return(TRUE);1534 return(TRUE);
1535 }1535 }
1536@@ -3763,7 +3985,8 @@1536@@ -3765,7 +3987,8 @@
1537 freed = buf_LRU_search_and_free_block(buf_pool, 100);1537 freed = buf_LRU_search_and_free_block(buf_pool, 100);
1538 }1538 }
1539 1539
@@ -1543,7 +1543,7 @@
1543 1543
1544 ut_ad(UT_LIST_GET_LEN(buf_pool->LRU) == 0);1544 ut_ad(UT_LIST_GET_LEN(buf_pool->LRU) == 0);
1545 ut_ad(UT_LIST_GET_LEN(buf_pool->unzip_LRU) == 0);1545 ut_ad(UT_LIST_GET_LEN(buf_pool->unzip_LRU) == 0);
1546@@ -3776,7 +3999,8 @@1546@@ -3778,7 +4001,8 @@
1547 memset(&buf_pool->stat, 0x00, sizeof(buf_pool->stat));1547 memset(&buf_pool->stat, 0x00, sizeof(buf_pool->stat));
1548 buf_refresh_io_stats(buf_pool);1548 buf_refresh_io_stats(buf_pool);
1549 1549
@@ -1553,7 +1553,7 @@
1553 }1553 }
1554 1554
1555 /*********************************************************************//**1555 /*********************************************************************//**
1556@@ -3818,7 +4042,10 @@1556@@ -3820,7 +4044,10 @@
1557 1557
1558 ut_ad(buf_pool);1558 ut_ad(buf_pool);
1559 1559
@@ -1565,7 +1565,7 @@
1565 1565
1566 chunk = buf_pool->chunks;1566 chunk = buf_pool->chunks;
1567 1567
1568@@ -3913,7 +4140,7 @@1568@@ -3918,7 +4145,7 @@
1569 /* Check clean compressed-only blocks. */1569 /* Check clean compressed-only blocks. */
1570 1570
1571 for (b = UT_LIST_GET_FIRST(buf_pool->zip_clean); b;1571 for (b = UT_LIST_GET_FIRST(buf_pool->zip_clean); b;
@@ -1574,7 +1574,7 @@
1574 ut_a(buf_page_get_state(b) == BUF_BLOCK_ZIP_PAGE);1574 ut_a(buf_page_get_state(b) == BUF_BLOCK_ZIP_PAGE);
1575 switch (buf_page_get_io_fix(b)) {1575 switch (buf_page_get_io_fix(b)) {
1576 case BUF_IO_NONE:1576 case BUF_IO_NONE:
1577@@ -3944,7 +4171,7 @@1577@@ -3950,7 +4177,7 @@
1578 1578
1579 buf_flush_list_mutex_enter(buf_pool);1579 buf_flush_list_mutex_enter(buf_pool);
1580 for (b = UT_LIST_GET_FIRST(buf_pool->flush_list); b;1580 for (b = UT_LIST_GET_FIRST(buf_pool->flush_list); b;
@@ -1583,7 +1583,7 @@
1583 ut_ad(b->in_flush_list);1583 ut_ad(b->in_flush_list);
1584 ut_a(b->oldest_modification);1584 ut_a(b->oldest_modification);
1585 n_flush++;1585 n_flush++;
1586@@ -4003,6 +4230,8 @@1586@@ -4010,6 +4237,8 @@
1587 }1587 }
1588 1588
1589 ut_a(UT_LIST_GET_LEN(buf_pool->LRU) == n_lru);1589 ut_a(UT_LIST_GET_LEN(buf_pool->LRU) == n_lru);
@@ -1592,7 +1592,7 @@
1592 if (UT_LIST_GET_LEN(buf_pool->free) != n_free) {1592 if (UT_LIST_GET_LEN(buf_pool->free) != n_free) {
1593 fprintf(stderr, "Free list len %lu, free blocks %lu\n",1593 fprintf(stderr, "Free list len %lu, free blocks %lu\n",
1594 (ulong) UT_LIST_GET_LEN(buf_pool->free),1594 (ulong) UT_LIST_GET_LEN(buf_pool->free),
1595@@ -4013,8 +4242,11 @@1595@@ -4020,8 +4249,11 @@
1596 ut_a(buf_pool->n_flush[BUF_FLUSH_SINGLE_PAGE] == n_single_flush);1596 ut_a(buf_pool->n_flush[BUF_FLUSH_SINGLE_PAGE] == n_single_flush);
1597 ut_a(buf_pool->n_flush[BUF_FLUSH_LIST] == n_list_flush);1597 ut_a(buf_pool->n_flush[BUF_FLUSH_LIST] == n_list_flush);
1598 ut_a(buf_pool->n_flush[BUF_FLUSH_LRU] == n_lru_flush);1598 ut_a(buf_pool->n_flush[BUF_FLUSH_LRU] == n_lru_flush);
@@ -1605,7 +1605,7 @@
1605 1605
1606 ut_a(buf_LRU_validate());1606 ut_a(buf_LRU_validate());
1607 ut_a(buf_flush_validate(buf_pool));1607 ut_a(buf_flush_validate(buf_pool));
1608@@ -4070,7 +4302,9 @@1608@@ -4077,7 +4309,9 @@
1609 index_ids = mem_alloc(size * sizeof *index_ids);1609 index_ids = mem_alloc(size * sizeof *index_ids);
1610 counts = mem_alloc(sizeof(ulint) * size);1610 counts = mem_alloc(sizeof(ulint) * size);
1611 1611
@@ -1616,7 +1616,7 @@
1616 buf_flush_list_mutex_enter(buf_pool);1616 buf_flush_list_mutex_enter(buf_pool);
1617 1617
1618 fprintf(stderr,1618 fprintf(stderr,
1619@@ -4139,7 +4373,9 @@1619@@ -4146,7 +4380,9 @@
1620 }1620 }
1621 }1621 }
1622 1622
@@ -1627,7 +1627,7 @@
1627 1627
1628 for (i = 0; i < n_found; i++) {1628 for (i = 0; i < n_found; i++) {
1629 index = dict_index_get_if_in_cache(index_ids[i]);1629 index = dict_index_get_if_in_cache(index_ids[i]);
1630@@ -4196,7 +4432,7 @@1630@@ -4203,7 +4439,7 @@
1631 buf_chunk_t* chunk;1631 buf_chunk_t* chunk;
1632 ulint fixed_pages_number = 0;1632 ulint fixed_pages_number = 0;
1633 1633
@@ -1636,7 +1636,7 @@
1636 1636
1637 chunk = buf_pool->chunks;1637 chunk = buf_pool->chunks;
1638 1638
1639@@ -4230,7 +4466,7 @@1639@@ -4237,7 +4473,7 @@
1640 /* Traverse the lists of clean and dirty compressed-only blocks. */1640 /* Traverse the lists of clean and dirty compressed-only blocks. */
1641 1641
1642 for (b = UT_LIST_GET_FIRST(buf_pool->zip_clean); b;1642 for (b = UT_LIST_GET_FIRST(buf_pool->zip_clean); b;
@@ -1645,7 +1645,7 @@
1645 ut_a(buf_page_get_state(b) == BUF_BLOCK_ZIP_PAGE);1645 ut_a(buf_page_get_state(b) == BUF_BLOCK_ZIP_PAGE);
1646 ut_a(buf_page_get_io_fix(b) != BUF_IO_WRITE);1646 ut_a(buf_page_get_io_fix(b) != BUF_IO_WRITE);
1647 1647
1648@@ -4242,7 +4478,7 @@1648@@ -4249,7 +4485,7 @@
1649 1649
1650 buf_flush_list_mutex_enter(buf_pool);1650 buf_flush_list_mutex_enter(buf_pool);
1651 for (b = UT_LIST_GET_FIRST(buf_pool->flush_list); b;1651 for (b = UT_LIST_GET_FIRST(buf_pool->flush_list); b;
@@ -1654,7 +1654,7 @@
1654 ut_ad(b->in_flush_list);1654 ut_ad(b->in_flush_list);
1655 1655
1656 switch (buf_page_get_state(b)) {1656 switch (buf_page_get_state(b)) {
1657@@ -4268,7 +4504,7 @@1657@@ -4275,7 +4511,7 @@
1658 1658
1659 buf_flush_list_mutex_exit(buf_pool);1659 buf_flush_list_mutex_exit(buf_pool);
1660 mutex_exit(&buf_pool->zip_mutex);1660 mutex_exit(&buf_pool->zip_mutex);
@@ -1663,7 +1663,7 @@
1663 1663
1664 return(fixed_pages_number);1664 return(fixed_pages_number);
1665 }1665 }
1666@@ -4426,6 +4662,8 @@1666@@ -4433,6 +4669,8 @@
1667 /* Find appropriate pool_info to store stats for this buffer pool */1667 /* Find appropriate pool_info to store stats for this buffer pool */
1668 pool_info = &all_pool_info[pool_id];1668 pool_info = &all_pool_info[pool_id];
1669 1669
@@ -1672,7 +1672,7 @@
1672 buf_pool_mutex_enter(buf_pool);1672 buf_pool_mutex_enter(buf_pool);
1673 buf_flush_list_mutex_enter(buf_pool);1673 buf_flush_list_mutex_enter(buf_pool);
1674 1674
1675@@ -4541,6 +4779,8 @@1675@@ -4548,6 +4786,8 @@
1676 pool_info->unzip_cur = buf_LRU_stat_cur.unzip;1676 pool_info->unzip_cur = buf_LRU_stat_cur.unzip;
1677 1677
1678 buf_refresh_io_stats(buf_pool);1678 buf_refresh_io_stats(buf_pool);
@@ -1681,7 +1681,7 @@
1681 buf_pool_mutex_exit(buf_pool);1681 buf_pool_mutex_exit(buf_pool);
1682 }1682 }
1683 1683
1684@@ -4785,11 +5025,13 @@1684@@ -4792,11 +5032,13 @@
1685 {1685 {
1686 ulint len;1686 ulint len;
1687 1687
@@ -2127,7 +2127,7 @@
2127 }2127 }
2128--- a/storage/innobase/buf/buf0lru.c2128--- a/storage/innobase/buf/buf0lru.c
2129+++ b/storage/innobase/buf/buf0lru.c2129+++ b/storage/innobase/buf/buf0lru.c
2130@@ -143,8 +143,9 @@2130@@ -147,8 +147,9 @@
2131 void2131 void
2132 buf_LRU_block_free_hashed_page(2132 buf_LRU_block_free_hashed_page(
2133 /*===========================*/2133 /*===========================*/
@@ -2138,7 +2138,7 @@
2138 2138
2139 /******************************************************************//**2139 /******************************************************************//**
2140 Determines if the unzip_LRU list should be used for evicting a victim2140 Determines if the unzip_LRU list should be used for evicting a victim
2141@@ -154,15 +155,20 @@2141@@ -158,15 +159,20 @@
2142 ibool2142 ibool
2143 buf_LRU_evict_from_unzip_LRU(2143 buf_LRU_evict_from_unzip_LRU(
2144 /*=========================*/2144 /*=========================*/
@@ -2161,7 +2161,7 @@
2161 return(FALSE);2161 return(FALSE);
2162 }2162 }
2163 2163
2164@@ -171,14 +177,20 @@2164@@ -175,14 +181,20 @@
2165 decompressed pages in the buffer pool. */2165 decompressed pages in the buffer pool. */
2166 if (UT_LIST_GET_LEN(buf_pool->unzip_LRU)2166 if (UT_LIST_GET_LEN(buf_pool->unzip_LRU)
2167 <= UT_LIST_GET_LEN(buf_pool->LRU) / 10) {2167 <= UT_LIST_GET_LEN(buf_pool->LRU) / 10) {
@@ -2182,9 +2182,9 @@
2182 2182
2183 /* Calculate the average over past intervals, and add the values2183 /* Calculate the average over past intervals, and add the values
2184 of the current interval. */2184 of the current interval. */
2185@@ -246,18 +258,25 @@2185@@ -250,18 +262,25 @@
2186 page_arr = ut_malloc(2186 page_arr = ut_malloc(
2187 sizeof(ulint) * BUF_LRU_DROP_SEARCH_HASH_SIZE);2187 sizeof(ulint) * BUF_LRU_DROP_SEARCH_SIZE);
2188 2188
2189- buf_pool_mutex_enter(buf_pool);2189- buf_pool_mutex_enter(buf_pool);
2190+ //buf_pool_mutex_enter(buf_pool);2190+ //buf_pool_mutex_enter(buf_pool);
@@ -2209,7 +2209,7 @@
2209 ut_a(buf_page_in_file(bpage));2209 ut_a(buf_page_in_file(bpage));
2210 2210
2211 if (buf_page_get_state(bpage) != BUF_BLOCK_FILE_PAGE2211 if (buf_page_get_state(bpage) != BUF_BLOCK_FILE_PAGE
2212@@ -266,23 +285,27 @@2212@@ -270,24 +289,30 @@
2213 /* Compressed pages are never hashed.2213 /* Compressed pages are never hashed.
2214 Skip blocks of other tablespaces.2214 Skip blocks of other tablespaces.
2215 Skip I/O-fixed blocks (to be dealt with later). */2215 Skip I/O-fixed blocks (to be dealt with later). */
@@ -2234,12 +2234,15 @@
2234 /* Store the page number so that we can drop the hash2234 /* Store the page number so that we can drop the hash
2235 index in a batch later. */2235 index in a batch later. */
2236 page_arr[num_entries] = bpage->offset;2236 page_arr[num_entries] = bpage->offset;
2237+
2237+ mutex_exit(block_mutex);2238+ mutex_exit(block_mutex);
2238+2239+
2239 ut_a(num_entries < BUF_LRU_DROP_SEARCH_HASH_SIZE);2240 ut_a(num_entries < BUF_LRU_DROP_SEARCH_SIZE);
2241+
2240 ++num_entries;2242 ++num_entries;
2241 2243
2242@@ -292,14 +315,16 @@2244 if (num_entries < BUF_LRU_DROP_SEARCH_SIZE) {
2245@@ -296,14 +321,16 @@
2243 2246
2244 /* Array full. We release the buf_pool->mutex to obey2247 /* Array full. We release the buf_pool->mutex to obey
2245 the latching order. */2248 the latching order. */
@@ -2258,7 +2261,7 @@
2258 2261
2259 /* Note that we released the buf_pool mutex above2262 /* Note that we released the buf_pool mutex above
2260 after reading the prev_bpage during processing of a2263 after reading the prev_bpage during processing of a
2261@@ -317,13 +342,23 @@2264@@ -321,13 +348,23 @@
2262 /* If, however, bpage has been removed from LRU list2265 /* If, however, bpage has been removed from LRU list
2263 to the free list then we should restart the scan.2266 to the free list then we should restart the scan.
2264 bpage->state is protected by buf_pool mutex. */2267 bpage->state is protected by buf_pool mutex. */
@@ -2283,67 +2286,73 @@
2283 2286
2284 /* Drop any remaining batch of search hashed pages. */2287 /* Drop any remaining batch of search hashed pages. */
2285 buf_LRU_drop_page_hash_batch(id, zip_size, page_arr, num_entries);2288 buf_LRU_drop_page_hash_batch(id, zip_size, page_arr, num_entries);
2286@@ -345,7 +380,9 @@2289@@ -351,7 +388,9 @@
2287 ibool all_freed;2290 ulint i;
2288 2291
2289 scan_again:2292 scan_again:
2290- buf_pool_mutex_enter(buf_pool);2293- buf_pool_mutex_enter(buf_pool);
2291+ //buf_pool_mutex_enter(buf_pool);2294+ //buf_pool_mutex_enter(buf_pool);
2292+ mutex_enter(&buf_pool->LRU_list_mutex);2295+ mutex_enter(&buf_pool->LRU_list_mutex);
2293+ rw_lock_x_lock(&buf_pool->page_hash_latch);2296+ rw_lock_x_lock(&buf_pool->page_hash_latch);
2297 buf_flush_list_mutex_enter(buf_pool);
2294 2298
2295 all_freed = TRUE;2299 all_freed = TRUE;
2296 2300@@ -364,7 +403,7 @@
2297@@ -375,8 +412,15 @@2301
2298 all_freed = FALSE;2302 ut_a(buf_page_in_file(bpage));
2299 goto next_page;2303
2300 } else {2304- prev_bpage = UT_LIST_GET_PREV(list, bpage);
2301- block_mutex = buf_page_get_mutex(bpage);2305+ prev_bpage = UT_LIST_GET_PREV(flush_list, bpage);
2302- mutex_enter(block_mutex);2306
2303+ block_mutex = buf_page_get_mutex_enter(bpage);2307 /* bpage->space and bpage->io_fix are protected by
2304+2308 buf_pool->mutex and block_mutex. It is safe to check
2305+ if (!block_mutex) {2309@@ -388,8 +427,14 @@
2306+ /* It may be impossible case...2310 will stay in the flush_list because buf_flush_remove()
2307+ Something wrong, so will be scan_again */2311 needs buf_pool->mutex as well. */
2308+2312 buf_flush_list_mutex_exit(buf_pool);
2309+ all_freed = FALSE;2313- block_mutex = buf_page_get_mutex(bpage);
2310+ goto next_page;2314- mutex_enter(block_mutex);
2311+ }2315+ block_mutex = buf_page_get_mutex_enter(bpage);
2312 2316+
2313 if (bpage->buf_fix_count > 0) {2317+ if (!block_mutex) {
2314 2318+ /* It may be impossible case...
2315@@ -409,7 +453,9 @@2319+ Something wrong, so will be scan_again */
2316 ulint page_no;2320+ all_freed = FALSE;
2317 ulint zip_size;2321+ goto next_page;
2318 2322+ }
2319- buf_pool_mutex_exit(buf_pool);2323
2320+ //buf_pool_mutex_exit(buf_pool);2324 if (bpage->buf_fix_count > 0) {
2321+ mutex_exit(&buf_pool->LRU_list_mutex);
2322+ rw_lock_x_unlock(&buf_pool->page_hash_latch);
2323
2324 zip_size = buf_page_get_zip_size(bpage);
2325 page_no = buf_page_get_page_no(bpage);
2326@@ -433,7 +479,7 @@
2327
2328 if (buf_LRU_block_remove_hashed_page(bpage, TRUE)
2329 != BUF_BLOCK_ZIP_FREE) {
2330- buf_LRU_block_free_hashed_page((buf_block_t*) bpage);
2331+ buf_LRU_block_free_hashed_page((buf_block_t*) bpage, TRUE);
2332 mutex_exit(block_mutex);2325 mutex_exit(block_mutex);
2333 } else {2326@@ -440,9 +485,15 @@
2334 /* The block_mutex should have been released2327 mutex_exit(block_mutex);
2335@@ -446,7 +492,9 @@2328
2336 bpage = prev_bpage;2329 /* Now it is safe to release the buf_pool->mutex. */
2330- buf_pool_mutex_exit(buf_pool);
2331+ //buf_pool_mutex_exit(buf_pool);
2332+ mutex_exit(&buf_pool->LRU_list_mutex);
2333+ rw_lock_x_unlock(&buf_pool->page_hash_latch);
2334+
2335 os_thread_yield();
2336- buf_pool_mutex_enter(buf_pool);
2337+ //buf_pool_mutex_enter(buf_pool);
2338+ mutex_enter(&buf_pool->LRU_list_mutex);
2339+ rw_lock_x_lock(&buf_pool->page_hash_latch);
2340+
2341
2342 mutex_enter(block_mutex);
2343 buf_page_unset_sticky(bpage);
2344@@ -454,7 +505,9 @@
2345 i = 0;
2337 }2346 }
2338 2347
2339- buf_pool_mutex_exit(buf_pool);2348- buf_pool_mutex_exit(buf_pool);
2340+ //buf_pool_mutex_exit(buf_pool);2349+// buf_pool_mutex_exit(buf_pool);
2341+ mutex_exit(&buf_pool->LRU_list_mutex);2350+ mutex_exit(&buf_pool->LRU_list_mutex);
2342+ rw_lock_x_unlock(&buf_pool->page_hash_latch);2351+ rw_lock_x_unlock(&buf_pool->page_hash_latch);
2352 buf_flush_list_mutex_exit(buf_pool);
2343 2353
2344 if (!all_freed) {2354 ut_ad(buf_flush_validate(buf_pool));
2345 os_thread_sleep(20000);2355@@ -504,7 +557,9 @@
2346@@ -493,7 +541,9 @@
2347 buf_page_t* b;2356 buf_page_t* b;
2348 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);2357 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
2349 2358
@@ -2354,7 +2363,7 @@
2354 ut_ad(buf_page_get_state(bpage) == BUF_BLOCK_ZIP_PAGE);2363 ut_ad(buf_page_get_state(bpage) == BUF_BLOCK_ZIP_PAGE);
2355 2364
2356 /* Find the first successor of bpage in the LRU list2365 /* Find the first successor of bpage in the LRU list
2357@@ -501,17 +551,17 @@2366@@ -512,17 +567,17 @@
2358 b = bpage;2367 b = bpage;
2359 do {2368 do {
2360 b = UT_LIST_GET_NEXT(LRU, b);2369 b = UT_LIST_GET_NEXT(LRU, b);
@@ -2376,7 +2385,7 @@
2376 }2385 }
2377 }2386 }
2378 #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */2387 #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
2379@@ -525,18 +575,19 @@2388@@ -536,18 +591,19 @@
2380 buf_LRU_free_from_unzip_LRU_list(2389 buf_LRU_free_from_unzip_LRU_list(
2381 /*=============================*/2390 /*=============================*/
2382 buf_pool_t* buf_pool, /*!< in: buffer pool instance */2391 buf_pool_t* buf_pool, /*!< in: buffer pool instance */
@@ -2398,7 +2407,7 @@
2398 2407
2399 /* Theoratically it should be much easier to find a victim2408 /* Theoratically it should be much easier to find a victim
2400 from unzip_LRU as we can choose even a dirty block (as we'll2409 from unzip_LRU as we can choose even a dirty block (as we'll
2401@@ -546,7 +597,7 @@2410@@ -557,7 +613,7 @@
2402 if we have done five iterations so far. */2411 if we have done five iterations so far. */
2403 2412
2404 if (UNIV_UNLIKELY(n_iterations >= 5)2413 if (UNIV_UNLIKELY(n_iterations >= 5)
@@ -2407,7 +2416,7 @@
2407 2416
2408 return(FALSE);2417 return(FALSE);
2409 }2418 }
2410@@ -554,18 +605,25 @@2419@@ -565,18 +621,25 @@
2411 distance = 100 + (n_iterations2420 distance = 100 + (n_iterations
2412 * UT_LIST_GET_LEN(buf_pool->unzip_LRU)) / 5;2421 * UT_LIST_GET_LEN(buf_pool->unzip_LRU)) / 5;
2413 2422
@@ -2435,7 +2444,7 @@
2435 mutex_exit(&block->mutex);2444 mutex_exit(&block->mutex);
2436 2445
2437 if (freed) {2446 if (freed) {
2438@@ -584,35 +642,46 @@2447@@ -595,35 +658,46 @@
2439 buf_LRU_free_from_common_LRU_list(2448 buf_LRU_free_from_common_LRU_list(
2440 /*==============================*/2449 /*==============================*/
2441 buf_pool_t* buf_pool,2450 buf_pool_t* buf_pool,
@@ -2487,7 +2496,7 @@
2487 mutex_exit(block_mutex);2496 mutex_exit(block_mutex);
2488 2497
2489 if (freed) {2498 if (freed) {
2490@@ -649,16 +718,23 @@2499@@ -660,16 +734,23 @@
2491 n_iterations / 5 of the unzip_LRU list. */2500 n_iterations / 5 of the unzip_LRU list. */
2492 {2501 {
2493 ibool freed = FALSE;2502 ibool freed = FALSE;
@@ -2496,12 +2505,12 @@
2496- buf_pool_mutex_enter(buf_pool);2505- buf_pool_mutex_enter(buf_pool);
2497+ if (UT_LIST_GET_LEN(buf_pool->unzip_LRU))2506+ if (UT_LIST_GET_LEN(buf_pool->unzip_LRU))
2498+ have_LRU_mutex = TRUE;2507+ have_LRU_mutex = TRUE;
2508+
2509+ //buf_pool_mutex_enter(buf_pool);
2510+ if (have_LRU_mutex)
2511+ mutex_enter(&buf_pool->LRU_list_mutex);
2499 2512
2500- freed = buf_LRU_free_from_unzip_LRU_list(buf_pool, n_iterations);2513- freed = buf_LRU_free_from_unzip_LRU_list(buf_pool, n_iterations);
2501+ //buf_pool_mutex_enter(buf_pool);
2502+ if (have_LRU_mutex)
2503+ mutex_enter(&buf_pool->LRU_list_mutex);
2504+
2505+ freed = buf_LRU_free_from_unzip_LRU_list(buf_pool, n_iterations, have_LRU_mutex);2514+ freed = buf_LRU_free_from_unzip_LRU_list(buf_pool, n_iterations, have_LRU_mutex);
2506 2515
2507 if (!freed) {2516 if (!freed) {
@@ -2514,7 +2523,7 @@
2514 if (!freed) {2523 if (!freed) {
2515 buf_pool->LRU_flush_ended = 0;2524 buf_pool->LRU_flush_ended = 0;
2516 } else if (buf_pool->LRU_flush_ended > 0) {2525 } else if (buf_pool->LRU_flush_ended > 0) {
2517@@ -666,6 +742,8 @@2526@@ -677,6 +758,8 @@
2518 }2527 }
2519 2528
2520 buf_pool_mutex_exit(buf_pool);2529 buf_pool_mutex_exit(buf_pool);
@@ -2523,7 +2532,7 @@
2523 2532
2524 return(freed);2533 return(freed);
2525 }2534 }
2526@@ -726,7 +804,9 @@2535@@ -737,7 +820,9 @@
2527 2536
2528 buf_pool = buf_pool_from_array(i);2537 buf_pool = buf_pool_from_array(i);
2529 2538
@@ -2534,7 +2543,7 @@
2534 2543
2535 if (!recv_recovery_on2544 if (!recv_recovery_on
2536 && UT_LIST_GET_LEN(buf_pool->free)2545 && UT_LIST_GET_LEN(buf_pool->free)
2537@@ -736,7 +816,9 @@2546@@ -747,7 +832,9 @@
2538 ret = TRUE;2547 ret = TRUE;
2539 }2548 }
2540 2549
@@ -2545,7 +2554,7 @@
2545 }2554 }
2546 2555
2547 return(ret);2556 return(ret);
2548@@ -754,9 +836,10 @@2557@@ -765,9 +852,10 @@
2549 {2558 {
2550 buf_block_t* block;2559 buf_block_t* block;
2551 2560
@@ -2558,7 +2567,7 @@
2558 2567
2559 if (block) {2568 if (block) {
2560 2569
2561@@ -765,7 +848,9 @@2570@@ -776,7 +864,9 @@
2562 ut_ad(!block->page.in_flush_list);2571 ut_ad(!block->page.in_flush_list);
2563 ut_ad(!block->page.in_LRU_list);2572 ut_ad(!block->page.in_LRU_list);
2564 ut_a(!buf_page_in_file(&block->page));2573 ut_a(!buf_page_in_file(&block->page));
@@ -2569,7 +2578,7 @@
2569 2578
2570 mutex_enter(&block->mutex);2579 mutex_enter(&block->mutex);
2571 2580
2572@@ -775,6 +860,8 @@2581@@ -786,6 +876,8 @@
2573 ut_ad(buf_pool_from_block(block) == buf_pool);2582 ut_ad(buf_pool_from_block(block) == buf_pool);
2574 2583
2575 mutex_exit(&block->mutex);2584 mutex_exit(&block->mutex);
@@ -2578,7 +2587,7 @@
2578 }2587 }
2579 2588
2580 return(block);2589 return(block);
2581@@ -797,7 +884,7 @@2590@@ -808,7 +900,7 @@
2582 ibool mon_value_was = FALSE;2591 ibool mon_value_was = FALSE;
2583 ibool started_monitor = FALSE;2592 ibool started_monitor = FALSE;
2584 loop:2593 loop:
@@ -2587,7 +2596,7 @@
2587 2596
2588 if (!recv_recovery_on && UT_LIST_GET_LEN(buf_pool->free)2597 if (!recv_recovery_on && UT_LIST_GET_LEN(buf_pool->free)
2589 + UT_LIST_GET_LEN(buf_pool->LRU) < buf_pool->curr_size / 20) {2598 + UT_LIST_GET_LEN(buf_pool->LRU) < buf_pool->curr_size / 20) {
2590@@ -865,7 +952,7 @@2599@@ -876,7 +968,7 @@
2591 2600
2592 /* If there is a block in the free list, take it */2601 /* If there is a block in the free list, take it */
2593 block = buf_LRU_get_free_only(buf_pool);2602 block = buf_LRU_get_free_only(buf_pool);
@@ -2596,7 +2605,7 @@
2596 2605
2597 if (block) {2606 if (block) {
2598 ut_ad(buf_pool_from_block(block) == buf_pool);2607 ut_ad(buf_pool_from_block(block) == buf_pool);
2599@@ -965,7 +1052,8 @@2608@@ -976,7 +1068,8 @@
2600 ulint new_len;2609 ulint new_len;
2601 2610
2602 ut_a(buf_pool->LRU_old);2611 ut_a(buf_pool->LRU_old);
@@ -2606,7 +2615,7 @@
2606 ut_ad(buf_pool->LRU_old_ratio >= BUF_LRU_OLD_RATIO_MIN);2615 ut_ad(buf_pool->LRU_old_ratio >= BUF_LRU_OLD_RATIO_MIN);
2607 ut_ad(buf_pool->LRU_old_ratio <= BUF_LRU_OLD_RATIO_MAX);2616 ut_ad(buf_pool->LRU_old_ratio <= BUF_LRU_OLD_RATIO_MAX);
2608 #if BUF_LRU_OLD_RATIO_MIN * BUF_LRU_OLD_MIN_LEN <= BUF_LRU_OLD_RATIO_DIV * (BUF_LRU_OLD_TOLERANCE + 5)2617 #if BUF_LRU_OLD_RATIO_MIN * BUF_LRU_OLD_MIN_LEN <= BUF_LRU_OLD_RATIO_DIV * (BUF_LRU_OLD_TOLERANCE + 5)
2609@@ -1031,7 +1119,8 @@2618@@ -1042,7 +1135,8 @@
2610 {2619 {
2611 buf_page_t* bpage;2620 buf_page_t* bpage;
2612 2621
@@ -2616,7 +2625,7 @@
2616 ut_a(UT_LIST_GET_LEN(buf_pool->LRU) == BUF_LRU_OLD_MIN_LEN);2625 ut_a(UT_LIST_GET_LEN(buf_pool->LRU) == BUF_LRU_OLD_MIN_LEN);
2617 2626
2618 /* We first initialize all blocks in the LRU list as old and then use2627 /* We first initialize all blocks in the LRU list as old and then use
2619@@ -1066,13 +1155,14 @@2628@@ -1077,13 +1171,14 @@
2620 ut_ad(buf_pool);2629 ut_ad(buf_pool);
2621 ut_ad(bpage);2630 ut_ad(bpage);
2622 ut_ad(buf_page_in_file(bpage));2631 ut_ad(buf_page_in_file(bpage));
@@ -2633,7 +2642,7 @@
2633 2642
2634 UT_LIST_REMOVE(unzip_LRU, buf_pool->unzip_LRU, block);2643 UT_LIST_REMOVE(unzip_LRU, buf_pool->unzip_LRU, block);
2635 }2644 }
2636@@ -1090,7 +1180,8 @@2645@@ -1101,7 +1196,8 @@
2637 2646
2638 ut_ad(buf_pool);2647 ut_ad(buf_pool);
2639 ut_ad(bpage);2648 ut_ad(bpage);
@@ -2643,7 +2652,7 @@
2643 2652
2644 ut_a(buf_page_in_file(bpage));2653 ut_a(buf_page_in_file(bpage));
2645 2654
2646@@ -1167,12 +1258,13 @@2655@@ -1178,12 +1274,13 @@
2647 2656
2648 ut_ad(buf_pool);2657 ut_ad(buf_pool);
2649 ut_ad(block);2658 ut_ad(block);
@@ -2659,7 +2668,7 @@
2659 2668
2660 if (old) {2669 if (old) {
2661 UT_LIST_ADD_LAST(unzip_LRU, buf_pool->unzip_LRU, block);2670 UT_LIST_ADD_LAST(unzip_LRU, buf_pool->unzip_LRU, block);
2662@@ -1193,7 +1285,8 @@2671@@ -1204,7 +1301,8 @@
2663 2672
2664 ut_ad(buf_pool);2673 ut_ad(buf_pool);
2665 ut_ad(bpage);2674 ut_ad(bpage);
@@ -2669,7 +2678,7 @@
2669 2678
2670 ut_a(buf_page_in_file(bpage));2679 ut_a(buf_page_in_file(bpage));
2671 2680
2672@@ -1244,7 +1337,8 @@2681@@ -1255,7 +1353,8 @@
2673 2682
2674 ut_ad(buf_pool);2683 ut_ad(buf_pool);
2675 ut_ad(bpage);2684 ut_ad(bpage);
@@ -2679,7 +2688,7 @@
2679 2688
2680 ut_a(buf_page_in_file(bpage));2689 ut_a(buf_page_in_file(bpage));
2681 ut_ad(!bpage->in_LRU_list);2690 ut_ad(!bpage->in_LRU_list);
2682@@ -1323,7 +1417,8 @@2691@@ -1334,7 +1433,8 @@
2683 {2692 {
2684 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);2693 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
2685 2694
@@ -2689,7 +2698,7 @@
2689 2698
2690 if (bpage->old) {2699 if (bpage->old) {
2691 buf_pool->stat.n_pages_made_young++;2700 buf_pool->stat.n_pages_made_young++;
2692@@ -1362,17 +1457,18 @@2701@@ -1373,17 +1473,18 @@
2693 buf_LRU_free_block(2702 buf_LRU_free_block(
2694 /*===============*/2703 /*===============*/
2695 buf_page_t* bpage, /*!< in: block to be freed */2704 buf_page_t* bpage, /*!< in: block to be freed */
@@ -2711,7 +2720,7 @@
2711 ut_ad(!bpage->in_flush_list == !bpage->oldest_modification);2720 ut_ad(!bpage->in_flush_list == !bpage->oldest_modification);
2712 #if UNIV_WORD_SIZE == 42721 #if UNIV_WORD_SIZE == 4
2713 /* On 32-bit systems, there is no padding in buf_page_t. On2722 /* On 32-bit systems, there is no padding in buf_page_t. On
2714@@ -1381,7 +1477,7 @@2723@@ -1392,7 +1493,7 @@
2715 UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage);2724 UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage);
2716 #endif2725 #endif
2717 2726
@@ -2720,7 +2729,7 @@
2720 2729
2721 /* Do not free buffer-fixed or I/O-fixed blocks. */2730 /* Do not free buffer-fixed or I/O-fixed blocks. */
2722 return(FALSE);2731 return(FALSE);
2723@@ -1415,7 +1511,7 @@2732@@ -1426,7 +1527,7 @@
2724 alloc:2733 alloc:
2725 b = buf_page_alloc_descriptor();2734 b = buf_page_alloc_descriptor();
2726 ut_a(b);2735 ut_a(b);
@@ -2729,7 +2738,7 @@
2729 }2738 }
2730 2739
2731 #ifdef UNIV_DEBUG2740 #ifdef UNIV_DEBUG
2732@@ -1426,6 +1522,39 @@2741@@ -1437,6 +1538,39 @@
2733 }2742 }
2734 #endif /* UNIV_DEBUG */2743 #endif /* UNIV_DEBUG */
2735 2744
@@ -2769,7 +2778,7 @@
2769 if (buf_LRU_block_remove_hashed_page(bpage, zip)2778 if (buf_LRU_block_remove_hashed_page(bpage, zip)
2770 != BUF_BLOCK_ZIP_FREE) {2779 != BUF_BLOCK_ZIP_FREE) {
2771 ut_a(bpage->buf_fix_count == 0);2780 ut_a(bpage->buf_fix_count == 0);
2772@@ -1442,6 +1571,10 @@2781@@ -1453,6 +1587,10 @@
2773 2782
2774 ut_a(!hash_b);2783 ut_a(!hash_b);
2775 2784
@@ -2780,7 +2789,7 @@
2780 b->state = b->oldest_modification2789 b->state = b->oldest_modification
2781 ? BUF_BLOCK_ZIP_DIRTY2790 ? BUF_BLOCK_ZIP_DIRTY
2782 : BUF_BLOCK_ZIP_PAGE;2791 : BUF_BLOCK_ZIP_PAGE;
2783@@ -1517,6 +1650,7 @@2792@@ -1528,6 +1666,7 @@
2784 buf_LRU_add_block_low(b, buf_page_is_old(b));2793 buf_LRU_add_block_low(b, buf_page_is_old(b));
2785 }2794 }
2786 2795
@@ -2788,11 +2797,13 @@
2788 if (b->state == BUF_BLOCK_ZIP_PAGE) {2797 if (b->state == BUF_BLOCK_ZIP_PAGE) {
2789 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG2798 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
2790 buf_LRU_insert_zip_clean(b);2799 buf_LRU_insert_zip_clean(b);
2791@@ -1534,9 +1668,12 @@2800@@ -1543,12 +1682,13 @@
2801 /* Prevent buf_page_get_gen() from
2802 decompressing the block while we release
2792 buf_pool->mutex and block_mutex. */2803 buf_pool->mutex and block_mutex. */
2793 b->buf_fix_count++;2804- mutex_enter(&buf_pool->zip_mutex);
2794 b->io_fix = BUF_IO_READ;2805 buf_page_set_sticky(b);
2795+ mutex_exit(&buf_pool->zip_mutex);2806 mutex_exit(&buf_pool->zip_mutex);
2796 }2807 }
2797 2808
2798- buf_pool_mutex_exit(buf_pool);2809- buf_pool_mutex_exit(buf_pool);
@@ -2802,7 +2813,7 @@
2802 mutex_exit(block_mutex);2813 mutex_exit(block_mutex);
2803 2814
2804 /* Remove possible adaptive hash index on the page.2815 /* Remove possible adaptive hash index on the page.
2805@@ -1568,7 +1705,9 @@2816@@ -1580,7 +1720,9 @@
2806 : BUF_NO_CHECKSUM_MAGIC);2817 : BUF_NO_CHECKSUM_MAGIC);
2807 }2818 }
2808 2819
@@ -2813,7 +2824,7 @@
2813 mutex_enter(block_mutex);2824 mutex_enter(block_mutex);
2814 2825
2815 if (b) {2826 if (b) {
2816@@ -1578,13 +1717,17 @@2827@@ -1589,13 +1731,17 @@
2817 mutex_exit(&buf_pool->zip_mutex);2828 mutex_exit(&buf_pool->zip_mutex);
2818 }2829 }
2819 2830
@@ -2832,7 +2843,7 @@
2832 }2843 }
2833 2844
2834 return(TRUE);2845 return(TRUE);
2835@@ -1596,13 +1739,14 @@2846@@ -1607,13 +1753,14 @@
2836 void2847 void
2837 buf_LRU_block_free_non_file_page(2848 buf_LRU_block_free_non_file_page(
2838 /*=============================*/2849 /*=============================*/
@@ -2849,7 +2860,7 @@
2849 ut_ad(mutex_own(&block->mutex));2860 ut_ad(mutex_own(&block->mutex));
2850 2861
2851 switch (buf_block_get_state(block)) {2862 switch (buf_block_get_state(block)) {
2852@@ -1636,18 +1780,21 @@2863@@ -1647,18 +1794,21 @@
2853 if (data) {2864 if (data) {
2854 block->page.zip.data = NULL;2865 block->page.zip.data = NULL;
2855 mutex_exit(&block->mutex);2866 mutex_exit(&block->mutex);
@@ -2875,7 +2886,7 @@
2875 2886
2876 UNIV_MEM_ASSERT_AND_FREE(block->frame, UNIV_PAGE_SIZE);2887 UNIV_MEM_ASSERT_AND_FREE(block->frame, UNIV_PAGE_SIZE);
2877 }2888 }
2878@@ -1677,7 +1824,11 @@2889@@ -1688,7 +1838,11 @@
2879 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);2890 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
2880 2891
2881 ut_ad(bpage);2892 ut_ad(bpage);
@@ -2888,7 +2899,7 @@
2888 ut_ad(mutex_own(buf_page_get_mutex(bpage)));2899 ut_ad(mutex_own(buf_page_get_mutex(bpage)));
2889 2900
2890 ut_a(buf_page_get_io_fix(bpage) == BUF_IO_NONE);2901 ut_a(buf_page_get_io_fix(bpage) == BUF_IO_NONE);
2891@@ -1785,7 +1936,9 @@2902@@ -1796,7 +1950,9 @@
2892 2903
2893 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG2904 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
2894 mutex_exit(buf_page_get_mutex(bpage));2905 mutex_exit(buf_page_get_mutex(bpage));
@@ -2899,7 +2910,7 @@
2899 buf_print();2910 buf_print();
2900 buf_LRU_print();2911 buf_LRU_print();
2901 buf_validate();2912 buf_validate();
2902@@ -1807,17 +1960,17 @@2913@@ -1818,17 +1974,17 @@
2903 ut_a(buf_page_get_zip_size(bpage));2914 ut_a(buf_page_get_zip_size(bpage));
2904 2915
2905 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG2916 #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
@@ -2921,7 +2932,7 @@
2921 buf_page_free_descriptor(bpage);2932 buf_page_free_descriptor(bpage);
2922 return(BUF_BLOCK_ZIP_FREE);2933 return(BUF_BLOCK_ZIP_FREE);
2923 2934
2924@@ -1839,13 +1992,13 @@2935@@ -1850,13 +2006,13 @@
2925 ut_ad(!bpage->in_flush_list);2936 ut_ad(!bpage->in_flush_list);
2926 ut_ad(!bpage->in_LRU_list);2937 ut_ad(!bpage->in_LRU_list);
2927 mutex_exit(&((buf_block_t*) bpage)->mutex);2938 mutex_exit(&((buf_block_t*) bpage)->mutex);
@@ -2938,7 +2949,7 @@
2938 mutex_enter(&((buf_block_t*) bpage)->mutex);2949 mutex_enter(&((buf_block_t*) bpage)->mutex);
2939 page_zip_set_size(&bpage->zip, 0);2950 page_zip_set_size(&bpage->zip, 0);
2940 }2951 }
2941@@ -1871,18 +2024,19 @@2952@@ -1882,18 +2038,19 @@
2942 void2953 void
2943 buf_LRU_block_free_hashed_page(2954 buf_LRU_block_free_hashed_page(
2944 /*===========================*/2955 /*===========================*/
@@ -2962,7 +2973,7 @@
2962 }2973 }
2963 2974
2964 /******************************************************************//**2975 /******************************************************************//**
2965@@ -1897,7 +2051,7 @@2976@@ -1908,7 +2065,7 @@
2966 {2977 {
2967 if (buf_LRU_block_remove_hashed_page(bpage, TRUE)2978 if (buf_LRU_block_remove_hashed_page(bpage, TRUE)
2968 != BUF_BLOCK_ZIP_FREE) {2979 != BUF_BLOCK_ZIP_FREE) {
@@ -2971,7 +2982,7 @@
2971 }2982 }
2972 }2983 }
2973 2984
2974@@ -1925,7 +2079,8 @@2985@@ -1936,7 +2093,8 @@
2975 }2986 }
2976 2987
2977 if (adjust) {2988 if (adjust) {
@@ -2981,7 +2992,7 @@
2981 2992
2982 if (ratio != buf_pool->LRU_old_ratio) {2993 if (ratio != buf_pool->LRU_old_ratio) {
2983 buf_pool->LRU_old_ratio = ratio;2994 buf_pool->LRU_old_ratio = ratio;
2984@@ -1937,7 +2092,8 @@2995@@ -1948,7 +2106,8 @@
2985 }2996 }
2986 }2997 }
2987 2998
@@ -2991,7 +3002,7 @@
2991 } else {3002 } else {
2992 buf_pool->LRU_old_ratio = ratio;3003 buf_pool->LRU_old_ratio = ratio;
2993 }3004 }
2994@@ -2042,7 +2198,8 @@3005@@ -2053,7 +2212,8 @@
2995 ulint new_len;3006 ulint new_len;
2996 3007
2997 ut_ad(buf_pool);3008 ut_ad(buf_pool);
@@ -3001,7 +3012,7 @@
3001 3012
3002 if (UT_LIST_GET_LEN(buf_pool->LRU) >= BUF_LRU_OLD_MIN_LEN) {3013 if (UT_LIST_GET_LEN(buf_pool->LRU) >= BUF_LRU_OLD_MIN_LEN) {
3003 3014
3004@@ -2103,16 +2260,22 @@3015@@ -2114,16 +2274,22 @@
3005 3016
3006 ut_a(buf_pool->LRU_old_len == old_len);3017 ut_a(buf_pool->LRU_old_len == old_len);
3007 3018
@@ -3026,7 +3037,7 @@
3026 UT_LIST_VALIDATE(unzip_LRU, buf_block_t, buf_pool->unzip_LRU,3037 UT_LIST_VALIDATE(unzip_LRU, buf_block_t, buf_pool->unzip_LRU,
3027 ut_ad(ut_list_node_313->in_unzip_LRU_list3038 ut_ad(ut_list_node_313->in_unzip_LRU_list
3028 && ut_list_node_313->page.in_LRU_list));3039 && ut_list_node_313->page.in_LRU_list));
3029@@ -2126,7 +2289,8 @@3040@@ -2137,7 +2303,8 @@
3030 ut_a(buf_page_belongs_to_unzip_LRU(&block->page));3041 ut_a(buf_page_belongs_to_unzip_LRU(&block->page));
3031 }3042 }
3032 3043
@@ -3036,7 +3047,7 @@
3036 }3047 }
3037 3048
3038 /**********************************************************************//**3049 /**********************************************************************//**
3039@@ -2162,7 +2326,8 @@3050@@ -2173,7 +2340,8 @@
3040 const buf_page_t* bpage;3051 const buf_page_t* bpage;
3041 3052
3042 ut_ad(buf_pool);3053 ut_ad(buf_pool);
@@ -3046,7 +3057,7 @@
3046 3057
3047 bpage = UT_LIST_GET_FIRST(buf_pool->LRU);3058 bpage = UT_LIST_GET_FIRST(buf_pool->LRU);
3048 3059
3049@@ -2219,7 +2384,8 @@3060@@ -2230,7 +2398,8 @@
3050 bpage = UT_LIST_GET_NEXT(LRU, bpage);3061 bpage = UT_LIST_GET_NEXT(LRU, bpage);
3051 }3062 }
3052 3063
@@ -3312,7 +3323,7 @@
3312 /*********************************************************************//**3323 /*********************************************************************//**
3313 Get the flush type of a page.3324 Get the flush type of a page.
3314 @return flush type */3325 @return flush type */
3315@@ -1332,7 +1355,7 @@3326@@ -1352,7 +1375,7 @@
3316 All these are protected by buf_pool->mutex. */3327 All these are protected by buf_pool->mutex. */
3317 /* @{ */3328 /* @{ */
3318 3329
@@ -3321,7 +3332,7 @@
3321 /*!< based on state, this is a3332 /*!< based on state, this is a
3322 list node, protected either by3333 list node, protected either by
3323 buf_pool->mutex or by3334 buf_pool->mutex or by
3324@@ -1360,6 +1383,10 @@3335@@ -1380,6 +1403,10 @@
3325 BUF_BLOCK_REMOVE_HASH or3336 BUF_BLOCK_REMOVE_HASH or
3326 BUF_BLOCK_READY_IN_USE. */3337 BUF_BLOCK_READY_IN_USE. */
3327 3338
@@ -3332,7 +3343,7 @@
3332 #ifdef UNIV_DEBUG3343 #ifdef UNIV_DEBUG
3333 ibool in_flush_list; /*!< TRUE if in buf_pool->flush_list;3344 ibool in_flush_list; /*!< TRUE if in buf_pool->flush_list;
3334 when buf_pool->flush_list_mutex is3345 when buf_pool->flush_list_mutex is
3335@@ -1452,11 +1479,11 @@3346@@ -1472,11 +1499,11 @@
3336 a block is in the unzip_LRU list3347 a block is in the unzip_LRU list
3337 if page.state == BUF_BLOCK_FILE_PAGE3348 if page.state == BUF_BLOCK_FILE_PAGE
3338 and page.zip.data != NULL */3349 and page.zip.data != NULL */
@@ -3346,7 +3357,7 @@
3346 mutex_t mutex; /*!< mutex protecting this block:3357 mutex_t mutex; /*!< mutex protecting this block:
3347 state (also protected by the buffer3358 state (also protected by the buffer
3348 pool mutex), io_fix, buf_fix_count,3359 pool mutex), io_fix, buf_fix_count,
3349@@ -1636,6 +1663,11 @@3360@@ -1656,6 +1683,11 @@
3350 pool instance, protects compressed3361 pool instance, protects compressed
3351 only pages (of type buf_page_t, not3362 only pages (of type buf_page_t, not
3352 buf_block_t */3363 buf_block_t */
@@ -3358,7 +3369,7 @@
3358 ulint instance_no; /*!< Array index of this buffer3369 ulint instance_no; /*!< Array index of this buffer
3359 pool instance */3370 pool instance */
3360 ulint old_pool_size; /*!< Old pool size in bytes */3371 ulint old_pool_size; /*!< Old pool size in bytes */
3361@@ -1789,8 +1821,8 @@3372@@ -1809,8 +1841,8 @@
3362 /** Test if a buffer pool mutex is owned. */3373 /** Test if a buffer pool mutex is owned. */
3363 #define buf_pool_mutex_own(b) mutex_own(&b->mutex)3374 #define buf_pool_mutex_own(b) mutex_own(&b->mutex)
3364 /** Acquire a buffer pool mutex. */3375 /** Acquire a buffer pool mutex. */
@@ -3426,7 +3437,7 @@
3426 /*********************************************************************//**3437 /*********************************************************************//**
3427 Get the flush type of a page.3438 Get the flush type of a page.
3428 @return flush type */3439 @return flush type */
3429@@ -443,8 +472,8 @@3440@@ -444,8 +473,8 @@
3430 enum buf_io_fix io_fix) /*!< in: io_fix state */3441 enum buf_io_fix io_fix) /*!< in: io_fix state */
3431 {3442 {
3432 #ifdef UNIV_DEBUG3443 #ifdef UNIV_DEBUG
@@ -3437,7 +3448,25 @@
3437 #endif3448 #endif
3438 ut_ad(mutex_own(buf_page_get_mutex(bpage)));3449 ut_ad(mutex_own(buf_page_get_mutex(bpage)));
3439 3450
3440@@ -474,14 +503,14 @@3451@@ -482,7 +511,7 @@
3452 {
3453 #ifdef UNIV_DEBUG
3454 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
3455- ut_ad(buf_pool_mutex_own(buf_pool));
3456+ ut_ad(mutex_own(&buf_pool->LRU_list_mutex));
3457 #endif
3458 ut_ad(mutex_own(buf_page_get_mutex(bpage)));
3459 ut_ad(buf_page_get_io_fix(bpage) == BUF_IO_NONE);
3460@@ -500,7 +529,7 @@
3461 {
3462 #ifdef UNIV_DEBUG
3463 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
3464- ut_ad(buf_pool_mutex_own(buf_pool));
3465+ ut_ad(mutex_own(&buf_pool->LRU_list_mutex));
3466 #endif
3467 ut_ad(mutex_own(buf_page_get_mutex(bpage)));
3468 ut_ad(buf_page_get_io_fix(bpage) == BUF_IO_PIN);
3469@@ -518,14 +547,14 @@
3441 const buf_page_t* bpage) /*!< control block being relocated */3470 const buf_page_t* bpage) /*!< control block being relocated */
3442 {3471 {
3443 #ifdef UNIV_DEBUG3472 #ifdef UNIV_DEBUG
@@ -3456,7 +3485,7 @@
3456 && bpage->buf_fix_count == 0);3485 && bpage->buf_fix_count == 0);
3457 }3486 }
3458 3487
3459@@ -495,8 +524,8 @@3488@@ -539,8 +568,8 @@
3460 const buf_page_t* bpage) /*!< in: control block */3489 const buf_page_t* bpage) /*!< in: control block */
3461 {3490 {
3462 #ifdef UNIV_DEBUG3491 #ifdef UNIV_DEBUG
@@ -3467,7 +3496,7 @@
3467 #endif3496 #endif
3468 ut_ad(buf_page_in_file(bpage));3497 ut_ad(buf_page_in_file(bpage));
3469 3498
3470@@ -516,7 +545,8 @@3499@@ -560,7 +589,8 @@
3471 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);3500 buf_pool_t* buf_pool = buf_pool_from_bpage(bpage);
3472 #endif /* UNIV_DEBUG */3501 #endif /* UNIV_DEBUG */
3473 ut_a(buf_page_in_file(bpage));3502 ut_a(buf_page_in_file(bpage));
@@ -3477,7 +3506,7 @@
3477 ut_ad(bpage->in_LRU_list);3506 ut_ad(bpage->in_LRU_list);
3478 3507
3479 #ifdef UNIV_LRU_DEBUG3508 #ifdef UNIV_LRU_DEBUG
3480@@ -563,9 +593,10 @@3509@@ -607,9 +637,10 @@
3481 ulint time_ms) /*!< in: ut_time_ms() */3510 ulint time_ms) /*!< in: ut_time_ms() */
3482 {3511 {
3483 #ifdef UNIV_DEBUG3512 #ifdef UNIV_DEBUG
@@ -3490,7 +3519,7 @@
3490 ut_a(buf_page_in_file(bpage));3519 ut_a(buf_page_in_file(bpage));
3491 3520
3492 if (!bpage->access_time) {3521 if (!bpage->access_time) {
3493@@ -808,19 +839,19 @@3522@@ -852,19 +883,19 @@
3494 /*===========*/3523 /*===========*/
3495 buf_block_t* block) /*!< in, own: block to be freed */3524 buf_block_t* block) /*!< in, own: block to be freed */
3496 {3525 {
@@ -3514,7 +3543,7 @@
3514 }3543 }
3515 #endif /* !UNIV_HOTBACKUP */3544 #endif /* !UNIV_HOTBACKUP */
3516 3545
3517@@ -868,17 +899,17 @@3546@@ -912,17 +943,17 @@
3518 page frame */3547 page frame */
3519 {3548 {
3520 ib_uint64_t lsn;3549 ib_uint64_t lsn;
@@ -3537,7 +3566,7 @@
3537 3566
3538 return(lsn);3567 return(lsn);
3539 }3568 }
3540@@ -896,7 +927,7 @@3569@@ -940,7 +971,7 @@
3541 #ifdef UNIV_SYNC_DEBUG3570 #ifdef UNIV_SYNC_DEBUG
3542 buf_pool_t* buf_pool = buf_pool_from_bpage((buf_page_t*)block);3571 buf_pool_t* buf_pool = buf_pool_from_bpage((buf_page_t*)block);
3543 3572
@@ -3546,7 +3575,7 @@
3546 && (block->page.buf_fix_count == 0))3575 && (block->page.buf_fix_count == 0))
3547 || rw_lock_own(&(block->lock), RW_LOCK_EXCLUSIVE));3576 || rw_lock_own(&(block->lock), RW_LOCK_EXCLUSIVE));
3548 #endif /* UNIV_SYNC_DEBUG */3577 #endif /* UNIV_SYNC_DEBUG */
3549@@ -1026,7 +1057,11 @@3578@@ -1070,7 +1101,11 @@
3550 buf_page_t* bpage;3579 buf_page_t* bpage;
3551 3580
3552 ut_ad(buf_pool);3581 ut_ad(buf_pool);
@@ -3559,7 +3588,7 @@
3559 ut_ad(fold == buf_page_address_fold(space, offset));3588 ut_ad(fold == buf_page_address_fold(space, offset));
3560 3589
3561 /* Look for the page in the hash table */3590 /* Look for the page in the hash table */
3562@@ -1111,11 +1146,13 @@3591@@ -1155,11 +1190,13 @@
3563 const buf_page_t* bpage;3592 const buf_page_t* bpage;
3564 buf_pool_t* buf_pool = buf_pool_get(space, offset);3593 buf_pool_t* buf_pool = buf_pool_get(space, offset);
3565 3594
@@ -3575,7 +3604,7 @@
3575 3604
3576 return(bpage != NULL);3605 return(bpage != NULL);
3577 }3606 }
3578@@ -1243,4 +1280,38 @@3607@@ -1287,4 +1324,38 @@
3579 buf_pool_mutex_exit(buf_pool);3608 buf_pool_mutex_exit(buf_pool);
3580 }3609 }
3581 }3610 }
35823611
=== modified file 'patches/innodb_stats.patch'
--- patches/innodb_stats.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_stats.patch 2012-02-06 05:02:26 +0000
@@ -278,10 +278,16 @@
278 }278 }
279 279
280 if (node->state == INDEX_CREATE_INDEX_TREE) {280 if (node->state == INDEX_CREATE_INDEX_TREE) {
281@@ -1183,6 +1322,66 @@281@@ -1177,6 +1316,66 @@
282 }282 return(NULL);
283 }
283 284
284 /****************************************************************//**285+ thr->run_node = que_node_get_parent(node);
286+
287+ return(thr);
288+}
289+
290+/****************************************************************//**
285+*/291+*/
286+UNIV_INTERN292+UNIV_INTERN
287+que_thr_t*293+que_thr_t*
@@ -336,15 +342,9 @@
336+ return(NULL);342+ return(NULL);
337+ }343+ }
338+344+
339+ thr->run_node = que_node_get_parent(node);345 thr->run_node = que_node_get_parent(node);
340+346
341+ return(thr);347 return(thr);
342+}
343+
344+/****************************************************************//**
345 Creates the foreign key constraints system tables inside InnoDB
346 at database creation or database start if they are not found or are
347 not of the right form.
348--- a/storage/innobase/dict/dict0dict.c348--- a/storage/innobase/dict/dict0dict.c
349+++ b/storage/innobase/dict/dict0dict.c349+++ b/storage/innobase/dict/dict0dict.c
350@@ -755,7 +755,7 @@350@@ -755,7 +755,7 @@
@@ -356,7 +356,7 @@
356 }356 }
357 357
358 return(table);358 return(table);
359@@ -4344,6 +4344,295 @@359@@ -4354,6 +4354,295 @@
360 }360 }
361 361
362 /*********************************************************************//**362 /*********************************************************************//**
@@ -652,7 +652,7 @@
652 Calculates new estimates for table and index statistics. The statistics652 Calculates new estimates for table and index statistics. The statistics
653 are used in query optimization. */653 are used in query optimization. */
654 UNIV_INTERN654 UNIV_INTERN
655@@ -4351,10 +4640,11 @@655@@ -4361,10 +4650,11 @@
656 dict_update_statistics(656 dict_update_statistics(
657 /*===================*/657 /*===================*/
658 dict_table_t* table, /*!< in/out: table */658 dict_table_t* table, /*!< in/out: table */
@@ -665,7 +665,7 @@
665 {665 {
666 dict_index_t* index;666 dict_index_t* index;
667 ulint sum_of_index_sizes = 0;667 ulint sum_of_index_sizes = 0;
668@@ -4371,6 +4661,27 @@668@@ -4381,6 +4671,27 @@
669 return;669 return;
670 }670 }
671 671
@@ -693,7 +693,7 @@
693 /* Find out the sizes of the indexes and how many different values693 /* Find out the sizes of the indexes and how many different values
694 for the key they approximately have */694 for the key they approximately have */
695 695
696@@ -4435,6 +4746,11 @@696@@ -4445,6 +4756,11 @@
697 index = dict_table_get_next_index(index);697 index = dict_table_get_next_index(index);
698 } while (index);698 } while (index);
699 699
@@ -705,7 +705,7 @@
705 index = dict_table_get_first_index(table);705 index = dict_table_get_first_index(table);
706 706
707 table->stat_n_rows = index->stat_n_diff_key_vals[707 table->stat_n_rows = index->stat_n_diff_key_vals[
708@@ -4452,6 +4768,78 @@708@@ -4462,6 +4778,78 @@
709 dict_table_stats_unlock(table, RW_X_LATCH);709 dict_table_stats_unlock(table, RW_X_LATCH);
710 }710 }
711 711
@@ -784,7 +784,7 @@
784 /**********************************************************************//**784 /**********************************************************************//**
785 Prints info of a foreign key constraint. */785 Prints info of a foreign key constraint. */
786 static786 static
787@@ -4529,7 +4917,8 @@787@@ -4539,7 +4927,8 @@
788 788
789 ut_ad(mutex_own(&(dict_sys->mutex)));789 ut_ad(mutex_own(&(dict_sys->mutex)));
790 790
@@ -961,7 +961,7 @@
961 break;961 break;
962 case DB_RECORD_NOT_FOUND:962 case DB_RECORD_NOT_FOUND:
963 error = HA_ERR_KEY_NOT_FOUND;963 error = HA_ERR_KEY_NOT_FOUND;
964@@ -6197,6 +6217,11 @@964@@ -6196,6 +6216,11 @@
965 case DB_SUCCESS:965 case DB_SUCCESS:
966 error = 0;966 error = 0;
967 table->status = 0;967 table->status = 0;
@@ -973,7 +973,7 @@
973 break;973 break;
974 case DB_RECORD_NOT_FOUND:974 case DB_RECORD_NOT_FOUND:
975 error = HA_ERR_END_OF_FILE;975 error = HA_ERR_END_OF_FILE;
976@@ -8150,11 +8175,35 @@976@@ -8149,11 +8174,35 @@
977 /* In sql_show we call with this flag: update977 /* In sql_show we call with this flag: update
978 then statistics so that they are up-to-date */978 then statistics so that they are up-to-date */
979 979
@@ -1010,7 +1010,7 @@
1010 1010
1011 prebuilt->trx->op_info = "returning various info to MySQL";1011 prebuilt->trx->op_info = "returning various info to MySQL";
1012 }1012 }
1013@@ -8239,7 +8288,7 @@1013@@ -8238,7 +8287,7 @@
1014 are asked by MySQL to avoid locking. Another reason to1014 are asked by MySQL to avoid locking. Another reason to
1015 avoid the call is that it uses quite a lot of CPU.1015 avoid the call is that it uses quite a lot of CPU.
1016 See Bug#38185. */1016 See Bug#38185. */
@@ -1019,7 +1019,7 @@
1019 || !(flag & HA_STATUS_VARIABLE_EXTRA)) {1019 || !(flag & HA_STATUS_VARIABLE_EXTRA)) {
1020 /* We do not update delete_length if no1020 /* We do not update delete_length if no
1021 locking is requested so the "old" value can1021 locking is requested so the "old" value can
1022@@ -11512,6 +11561,26 @@1022@@ -11511,6 +11560,26 @@
1023 "The number of index pages to sample when calculating statistics (default 8)",1023 "The number of index pages to sample when calculating statistics (default 8)",
1024 NULL, NULL, 8, 1, ~0ULL, 0);1024 NULL, NULL, 8, 1, ~0ULL, 0);
1025 1025
@@ -1046,7 +1046,7 @@
1046 static MYSQL_SYSVAR_BOOL(adaptive_hash_index, btr_search_enabled,1046 static MYSQL_SYSVAR_BOOL(adaptive_hash_index, btr_search_enabled,
1047 PLUGIN_VAR_OPCMDARG,1047 PLUGIN_VAR_OPCMDARG,
1048 "Enable InnoDB adaptive hash index (enabled by default). "1048 "Enable InnoDB adaptive hash index (enabled by default). "
1049@@ -11844,6 +11913,9 @@1049@@ -11883,6 +11952,9 @@
1050 MYSQL_SYSVAR(recovery_update_relay_log),1050 MYSQL_SYSVAR(recovery_update_relay_log),
1051 MYSQL_SYSVAR(rollback_on_timeout),1051 MYSQL_SYSVAR(rollback_on_timeout),
1052 MYSQL_SYSVAR(stats_on_metadata),1052 MYSQL_SYSVAR(stats_on_metadata),
@@ -1056,7 +1056,7 @@
1056 MYSQL_SYSVAR(stats_sample_pages),1056 MYSQL_SYSVAR(stats_sample_pages),
1057 MYSQL_SYSVAR(adaptive_hash_index),1057 MYSQL_SYSVAR(adaptive_hash_index),
1058 MYSQL_SYSVAR(stats_method),1058 MYSQL_SYSVAR(stats_method),
1059@@ -11915,7 +11987,10 @@1059@@ -11957,7 +12029,10 @@
1060 i_s_innodb_sys_columns,1060 i_s_innodb_sys_columns,
1061 i_s_innodb_sys_fields,1061 i_s_innodb_sys_fields,
1062 i_s_innodb_sys_foreign,1062 i_s_innodb_sys_foreign,
10631063
=== modified file 'patches/innodb_thread_concurrency_timer_based.patch'
--- patches/innodb_thread_concurrency_timer_based.patch 2011-12-27 15:32:16 +0000
+++ patches/innodb_thread_concurrency_timer_based.patch 2012-02-06 05:02:26 +0000
@@ -25,7 +25,7 @@
25 #ifdef UNIV_LOG_ARCHIVE25 #ifdef UNIV_LOG_ARCHIVE
26 srv_log_archive_on = (ulint) innobase_log_archive;26 srv_log_archive_on = (ulint) innobase_log_archive;
27 #endif /* UNIV_LOG_ARCHIVE */27 #endif /* UNIV_LOG_ARCHIVE */
28@@ -11602,6 +11606,12 @@28@@ -11601,6 +11605,12 @@
29 "Maximum delay between polling for a spin lock (6 by default)",29 "Maximum delay between polling for a spin lock (6 by default)",
30 NULL, NULL, 6L, 0L, ~0L, 0);30 NULL, NULL, 6L, 0L, ~0L, 0);
31 31
@@ -38,7 +38,7 @@
38 static MYSQL_SYSVAR_ULONG(thread_concurrency, srv_thread_concurrency,38 static MYSQL_SYSVAR_ULONG(thread_concurrency, srv_thread_concurrency,
39 PLUGIN_VAR_RQCMDARG,39 PLUGIN_VAR_RQCMDARG,
40 "Helps in performance tuning in heavily concurrent environments. Sets the maximum number of threads allowed inside InnoDB. Value 0 will disable the thread throttling.",40 "Helps in performance tuning in heavily concurrent environments. Sets the maximum number of threads allowed inside InnoDB. Value 0 will disable the thread throttling.",
41@@ -11820,6 +11830,7 @@41@@ -11859,6 +11869,7 @@
42 MYSQL_SYSVAR(spin_wait_delay),42 MYSQL_SYSVAR(spin_wait_delay),
43 MYSQL_SYSVAR(table_locks),43 MYSQL_SYSVAR(table_locks),
44 MYSQL_SYSVAR(thread_concurrency),44 MYSQL_SYSVAR(thread_concurrency),
@@ -67,7 +67,7 @@
67 UNIV_INTERN ulong srv_thread_concurrency = 0;67 UNIV_INTERN ulong srv_thread_concurrency = 0;
68 68
69 /* this mutex protects srv_conc data structures */69 /* this mutex protects srv_conc data structures */
70@@ -1145,6 +1146,75 @@70@@ -1148,6 +1149,75 @@
71 /*********************************************************************//**71 /*********************************************************************//**
72 Puts an OS thread to wait if there are too many concurrent threads72 Puts an OS thread to wait if there are too many concurrent threads
73 (>= srv_thread_concurrency) inside InnoDB. The threads wait in a FIFO queue. */73 (>= srv_thread_concurrency) inside InnoDB. The threads wait in a FIFO queue. */
@@ -143,7 +143,7 @@
143 UNIV_INTERN143 UNIV_INTERN
144 void144 void
145 srv_conc_enter_innodb(145 srv_conc_enter_innodb(
146@@ -1179,6 +1249,13 @@146@@ -1182,6 +1252,13 @@
147 return;147 return;
148 }148 }
149 149
@@ -157,7 +157,7 @@
157 os_fast_mutex_lock(&srv_conc_mutex);157 os_fast_mutex_lock(&srv_conc_mutex);
158 retry:158 retry:
159 if (trx->declared_to_be_inside_innodb) {159 if (trx->declared_to_be_inside_innodb) {
160@@ -1332,6 +1409,14 @@160@@ -1335,6 +1412,14 @@
161 }161 }
162 162
163 ut_ad(srv_conc_n_threads >= 0);163 ut_ad(srv_conc_n_threads >= 0);
@@ -172,7 +172,7 @@
172 172
173 os_fast_mutex_lock(&srv_conc_mutex);173 os_fast_mutex_lock(&srv_conc_mutex);
174 174
175@@ -1365,6 +1450,13 @@175@@ -1368,6 +1453,13 @@
176 return;176 return;
177 }177 }
178 178
179179
=== modified file 'patches/log_connection_error.patch'
--- patches/log_connection_error.patch 2011-09-07 14:00:24 +0000
+++ patches/log_connection_error.patch 2012-02-06 05:02:26 +0000
@@ -16,7 +16,7 @@
16+Comment=16+Comment=
17--- a/sql/mysqld.cc17--- a/sql/mysqld.cc
18+++ b/sql/mysqld.cc18+++ b/sql/mysqld.cc
19@@ -5098,6 +5098,10 @@19@@ -4959,6 +4959,10 @@
20 20
21 DBUG_PRINT("error",("Too many connections"));21 DBUG_PRINT("error",("Too many connections"));
22 close_connection(thd, ER_CON_COUNT_ERROR);22 close_connection(thd, ER_CON_COUNT_ERROR);
@@ -27,7 +27,7 @@
27 delete thd;27 delete thd;
28 DBUG_VOID_RETURN;28 DBUG_VOID_RETURN;
29 }29 }
30@@ -5481,6 +5485,10 @@30@@ -5342,6 +5346,10 @@
31 if (!(thd->net.vio= vio_new_win32pipe(hConnectedPipe)) ||31 if (!(thd->net.vio= vio_new_win32pipe(hConnectedPipe)) ||
32 my_net_init(&thd->net, thd->net.vio))32 my_net_init(&thd->net, thd->net.vio))
33 {33 {
@@ -38,7 +38,7 @@
38 close_connection(thd, ER_OUT_OF_RESOURCES);38 close_connection(thd, ER_OUT_OF_RESOURCES);
39 delete thd;39 delete thd;
40 continue;40 continue;
41@@ -5676,6 +5684,10 @@41@@ -5537,6 +5545,10 @@
42 event_conn_closed)) ||42 event_conn_closed)) ||
43 my_net_init(&thd->net, thd->net.vio))43 my_net_init(&thd->net, thd->net.vio))
44 {44 {
4545
=== modified file 'patches/log_warnings_suppress.patch'
--- patches/log_warnings_suppress.patch 2011-12-27 15:32:16 +0000
+++ patches/log_warnings_suppress.patch 2012-02-06 05:02:26 +0000
@@ -19,7 +19,7 @@
19+2011-02-21 rename patch log_warning_silence.patch to log_warnings_suppress.patch. Also rename variable "log_warning_silence" to "log_warning_suppress".19+2011-02-21 rename patch log_warning_silence.patch to log_warnings_suppress.patch. Also rename variable "log_warning_silence" to "log_warning_suppress".
20--- a/sql/mysqld.cc20--- a/sql/mysqld.cc
21+++ b/sql/mysqld.cc21+++ b/sql/mysqld.cc
22@@ -628,6 +628,8 @@22@@ -632,6 +632,8 @@
23 SHOW_COMP_OPTION have_crypt, have_compress;23 SHOW_COMP_OPTION have_crypt, have_compress;
24 SHOW_COMP_OPTION have_profiling;24 SHOW_COMP_OPTION have_profiling;
25 25
@@ -30,7 +30,7 @@
30 pthread_key(MEM_ROOT**,THR_MALLOC);30 pthread_key(MEM_ROOT**,THR_MALLOC);
31--- a/sql/mysqld.h31--- a/sql/mysqld.h
32+++ b/sql/mysqld.h32+++ b/sql/mysqld.h
33@@ -228,6 +228,8 @@33@@ -229,6 +229,8 @@
34 extern TYPELIB thread_handling_typelib;34 extern TYPELIB thread_handling_typelib;
35 extern my_decimal decimal_zero;35 extern my_decimal decimal_zero;
36 36
@@ -41,7 +41,7 @@
41 using my_pthread_setspecific_ptr()/my_thread_getspecific_ptr().41 using my_pthread_setspecific_ptr()/my_thread_getspecific_ptr().
42--- a/sql/sql_class.cc42--- a/sql/sql_class.cc
43+++ b/sql/sql_class.cc43+++ b/sql/sql_class.cc
44@@ -5024,7 +5024,7 @@44@@ -5029,7 +5029,7 @@
45 ER_BINLOG_UNSAFE_STATEMENT,45 ER_BINLOG_UNSAFE_STATEMENT,
46 ER(ER_BINLOG_UNSAFE_STATEMENT),46 ER(ER_BINLOG_UNSAFE_STATEMENT),
47 ER(LEX::binlog_stmt_unsafe_errcode[unsafe_type]));47 ER(LEX::binlog_stmt_unsafe_errcode[unsafe_type]));
@@ -62,7 +62,7 @@
62 SLAVE_EXEC_MODE_LAST_BIT};62 SLAVE_EXEC_MODE_LAST_BIT};
63--- a/sql/sys_vars.cc63--- a/sql/sys_vars.cc
64+++ b/sql/sys_vars.cc64+++ b/sql/sys_vars.cc
65@@ -1499,6 +1499,15 @@65@@ -1572,6 +1572,15 @@
66 READ_ONLY GLOBAL_VAR(mysqld_port), CMD_LINE(REQUIRED_ARG, 'P'),66 READ_ONLY GLOBAL_VAR(mysqld_port), CMD_LINE(REQUIRED_ARG, 'P'),
67 VALID_RANGE(0, UINT_MAX32), DEFAULT(0), BLOCK_SIZE(1));67 VALID_RANGE(0, UINT_MAX32), DEFAULT(0), BLOCK_SIZE(1));
68 68
6969
=== modified file 'patches/mysql-test.diff'
--- patches/mysql-test.diff 2012-01-10 11:28:15 +0000
+++ patches/mysql-test.diff 2012-02-06 05:02:26 +0000
@@ -1823,7 +1823,3 @@
1823@@ -0,0 +1,2 @@1823@@ -0,0 +1,2 @@
1824+--source include/have_nodebug.inc1824+--source include/have_nodebug.inc
1825+--source include/percona_server_variables.inc1825+--source include/percona_server_variables.inc
1826--- a/mysql-test/suite/innodb/t/innodb_cmp_drop_table-master.opt
1827+++ /dev/null
1828@@ -1 +0,0 @@
1829---innodb-buffer-pool-size=8M
18301826
=== modified file 'patches/optimizer_fix.patch'
--- patches/optimizer_fix.patch 2011-12-27 15:32:16 +0000
+++ patches/optimizer_fix.patch 2012-02-06 05:02:26 +0000
@@ -18,7 +18,7 @@
18+Ported to 5.1.4218+Ported to 5.1.42
19--- a/sql/mysqld.cc19--- a/sql/mysqld.cc
20+++ b/sql/mysqld.cc20+++ b/sql/mysqld.cc
21@@ -430,6 +430,7 @@21@@ -434,6 +434,7 @@
22 MYSQL_PLUGIN_IMPORT uint opt_debug_sync_timeout= 0;22 MYSQL_PLUGIN_IMPORT uint opt_debug_sync_timeout= 0;
23 #endif /* defined(ENABLED_DEBUG_SYNC) */23 #endif /* defined(ENABLED_DEBUG_SYNC) */
24 my_bool opt_old_style_user_limits= 0, trust_function_creators= 0;24 my_bool opt_old_style_user_limits= 0, trust_function_creators= 0;
@@ -138,7 +138,7 @@
138 DBUG_RETURN(HA_POS_ERROR); /* This shouldn't happend */138 DBUG_RETURN(HA_POS_ERROR); /* This shouldn't happend */
139--- a/sql/sys_vars.cc139--- a/sql/sys_vars.cc
140+++ b/sql/sys_vars.cc140+++ b/sql/sys_vars.cc
141@@ -2186,6 +2186,12 @@141@@ -2259,6 +2259,12 @@
142 VALID_RANGE(1, IF_WIN(INT_MAX32/1000, LONG_TIMEOUT)),142 VALID_RANGE(1, IF_WIN(INT_MAX32/1000, LONG_TIMEOUT)),
143 DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));143 DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));
144 144
145145
=== modified file 'patches/processlist_row_stats.patch'
--- patches/processlist_row_stats.patch 2011-12-27 15:32:16 +0000
+++ patches/processlist_row_stats.patch 2012-02-06 05:02:26 +0000
@@ -7,7 +7,7 @@
7# should be done or reviewed by the maintainer!7# should be done or reviewed by the maintainer!
8--- a/sql/sql_class.cc8--- a/sql/sql_class.cc
9+++ b/sql/sql_class.cc9+++ b/sql/sql_class.cc
10@@ -2419,6 +2419,7 @@10@@ -2424,6 +2424,7 @@
11 11
12 thd->sent_row_count++;12 thd->sent_row_count++;
13 thd->sent_row_count_2++;13 thd->sent_row_count_2++;
1414
=== modified file 'patches/query_cache_enhance.patch'
--- patches/query_cache_enhance.patch 2011-12-27 15:32:16 +0000
+++ patches/query_cache_enhance.patch 2012-02-06 05:02:26 +0000
@@ -25,7 +25,7 @@
25+2010-11 - Ported to 5.525+2010-11 - Ported to 5.5
26--- a/sql/mysqld.cc26--- a/sql/mysqld.cc
27+++ b/sql/mysqld.cc27+++ b/sql/mysqld.cc
28@@ -904,6 +904,7 @@28@@ -909,6 +909,7 @@
29 #endif29 #endif
30 #ifdef HAVE_QUERY_CACHE30 #ifdef HAVE_QUERY_CACHE
31 ulong query_cache_min_res_unit= QUERY_CACHE_MIN_RESULT_DATA_SIZE;31 ulong query_cache_min_res_unit= QUERY_CACHE_MIN_RESULT_DATA_SIZE;
@@ -719,7 +719,7 @@
719 NET net; // client connection descriptor719 NET net; // client connection descriptor
720--- a/sql/sys_vars.cc720--- a/sql/sys_vars.cc
721+++ b/sql/sys_vars.cc721+++ b/sql/sys_vars.cc
722@@ -1815,6 +1815,11 @@722@@ -1888,6 +1888,11 @@
723 NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),723 NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
724 ON_UPDATE(fix_query_cache_size));724 ON_UPDATE(fix_query_cache_size));
725 725
726726
=== modified file 'patches/response_time_distribution.patch'
--- patches/response_time_distribution.patch 2011-12-27 15:32:16 +0000
+++ patches/response_time_distribution.patch 2012-02-06 05:02:26 +0000
@@ -2886,7 +2886,7 @@
2886+2010-09-15 add column 'total'2886+2010-09-15 add column 'total'
2887--- a/sql/CMakeLists.txt2887--- a/sql/CMakeLists.txt
2888+++ b/sql/CMakeLists.txt2888+++ b/sql/CMakeLists.txt
2889@@ -51,7 +51,7 @@2889@@ -52,7 +52,7 @@
2890 message.h mf_iocache.cc my_decimal.cc ../sql-common/my_time.c2890 message.h mf_iocache.cc my_decimal.cc ../sql-common/my_time.c
2891 mysqld.cc net_serv.cc keycaches.cc2891 mysqld.cc net_serv.cc keycaches.cc
2892 ../sql-common/client_plugin.c2892 ../sql-common/client_plugin.c
@@ -2895,7 +2895,7 @@
2895 ../sql-common/pack.c parse_file.cc password.c procedure.cc 2895 ../sql-common/pack.c parse_file.cc password.c procedure.cc
2896 protocol.cc records.cc repl_failsafe.cc rpl_filter.cc set_var.cc 2896 protocol.cc records.cc repl_failsafe.cc rpl_filter.cc set_var.cc
2897 slave.cc sp.cc sp_cache.cc sp_head.cc sp_pcontext.cc 2897 slave.cc sp.cc sp_cache.cc sp_head.cc sp_pcontext.cc
2898@@ -59,7 +59,7 @@2898@@ -60,7 +60,7 @@
2899 sql_cache.cc sql_class.cc sql_client.cc sql_crypt.cc sql_crypt.h 2899 sql_cache.cc sql_class.cc sql_client.cc sql_crypt.cc sql_crypt.h
2900 sql_cursor.cc sql_db.cc sql_delete.cc sql_derived.cc sql_do.cc 2900 sql_cursor.cc sql_db.cc sql_delete.cc sql_derived.cc sql_do.cc
2901 sql_error.cc sql_handler.cc sql_help.cc sql_insert.cc sql_lex.cc 2901 sql_error.cc sql_handler.cc sql_help.cc sql_insert.cc sql_lex.cc
@@ -2935,7 +2935,7 @@
2935 #ifdef WITH_PERFSCHEMA_STORAGE_ENGINE2935 #ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
2936 #include "../storage/perfschema/pfs_server.h"2936 #include "../storage/perfschema/pfs_server.h"
2937 #endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */2937 #endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */
2938@@ -611,7 +613,7 @@2938@@ -615,7 +617,7 @@
2939 MY_LOCALE *my_default_lc_messages;2939 MY_LOCALE *my_default_lc_messages;
2940 MY_LOCALE *my_default_lc_time_names;2940 MY_LOCALE *my_default_lc_time_names;
2941 2941
@@ -2944,7 +2944,7 @@
2944 SHOW_COMP_OPTION have_geometry, have_rtree_keys;2944 SHOW_COMP_OPTION have_geometry, have_rtree_keys;
2945 SHOW_COMP_OPTION have_crypt, have_compress;2945 SHOW_COMP_OPTION have_crypt, have_compress;
2946 SHOW_COMP_OPTION have_profiling;2946 SHOW_COMP_OPTION have_profiling;
2947@@ -912,6 +914,10 @@2947@@ -917,6 +919,10 @@
2948 my_bool opt_enable_shared_memory;2948 my_bool opt_enable_shared_memory;
2949 HANDLE smem_event_connect_request= 0;2949 HANDLE smem_event_connect_request= 0;
2950 #endif2950 #endif
@@ -2955,7 +2955,7 @@
2955 2955
2956 my_bool opt_use_ssl = 0;2956 my_bool opt_use_ssl = 0;
2957 char *opt_ssl_ca= NULL, *opt_ssl_capath= NULL, *opt_ssl_cert= NULL,2957 char *opt_ssl_ca= NULL, *opt_ssl_capath= NULL, *opt_ssl_cert= NULL,
2958@@ -1483,6 +1489,9 @@2958@@ -1488,6 +1494,9 @@
2959 my_free(opt_bin_logname);2959 my_free(opt_bin_logname);
2960 bitmap_free(&temp_pool);2960 bitmap_free(&temp_pool);
2961 free_max_user_conn();2961 free_max_user_conn();
@@ -2965,7 +2965,7 @@
2965 #ifdef HAVE_REPLICATION2965 #ifdef HAVE_REPLICATION
2966 end_slave_list();2966 end_slave_list();
2967 #endif2967 #endif
2968@@ -4010,6 +4019,9 @@2968@@ -3860,6 +3869,9 @@
2969 if (!DEFAULT_ERRMSGS[0][0])2969 if (!DEFAULT_ERRMSGS[0][0])
2970 unireg_abort(1); 2970 unireg_abort(1);
2971 2971
@@ -2975,7 +2975,7 @@
2975 /* We have to initialize the storage engines before CSV logging */2975 /* We have to initialize the storage engines before CSV logging */
2976 if (ha_init())2976 if (ha_init())
2977 {2977 {
2978@@ -6905,6 +6917,11 @@2978@@ -6773,6 +6785,11 @@
2979 #else2979 #else
2980 have_query_cache=SHOW_OPTION_NO;2980 have_query_cache=SHOW_OPTION_NO;
2981 #endif2981 #endif
@@ -3374,7 +3374,7 @@
3374+#endif // QUERY_RESPONSE_TIME_H3374+#endif // QUERY_RESPONSE_TIME_H
3375--- a/sql/set_var.h3375--- a/sql/set_var.h
3376+++ b/sql/set_var.h3376+++ b/sql/set_var.h
3377@@ -293,6 +293,7 @@3377@@ -294,6 +294,7 @@
3378 3378
3379 extern SHOW_COMP_OPTION have_ssl, have_symlink, have_dlopen;3379 extern SHOW_COMP_OPTION have_ssl, have_symlink, have_dlopen;
3380 extern SHOW_COMP_OPTION have_query_cache;3380 extern SHOW_COMP_OPTION have_query_cache;
@@ -3486,7 +3486,7 @@
3486 %token QUICK3486 %token QUICK
3487 %token RANGE_SYM /* SQL-2003-R */3487 %token RANGE_SYM /* SQL-2003-R */
3488 %token READS_SYM /* SQL-2003-R */3488 %token READS_SYM /* SQL-2003-R */
3489@@ -11100,6 +11101,15 @@3489@@ -11105,6 +11106,15 @@
3490 {3490 {
3491 Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;3491 Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
3492 }3492 }
@@ -3502,7 +3502,7 @@
3502 | CREATE PROCEDURE_SYM sp_name3502 | CREATE PROCEDURE_SYM sp_name
3503 {3503 {
3504 LEX *lex= Lex;3504 LEX *lex= Lex;
3505@@ -11339,6 +11349,12 @@3505@@ -11344,6 +11354,12 @@
3506 Lex->type|= REFRESH_SLAVE;3506 Lex->type|= REFRESH_SLAVE;
3507 Lex->reset_slave_info.all= false;3507 Lex->reset_slave_info.all= false;
3508 }3508 }
@@ -3515,7 +3515,7 @@
3515 | MASTER_SYM3515 | MASTER_SYM
3516 { Lex->type|= REFRESH_MASTER; }3516 { Lex->type|= REFRESH_MASTER; }
3517 | DES_KEY_FILE3517 | DES_KEY_FILE
3518@@ -12646,6 +12662,7 @@3518@@ -12651,6 +12667,7 @@
3519 | PROXY_SYM {}3519 | PROXY_SYM {}
3520 | QUARTER_SYM {}3520 | QUARTER_SYM {}
3521 | QUERY_SYM {}3521 | QUERY_SYM {}
@@ -3525,15 +3525,15 @@
3525 | REBUILD_SYM {}3525 | REBUILD_SYM {}
3526--- a/sql/sys_vars.cc3526--- a/sql/sys_vars.cc
3527+++ b/sql/sys_vars.cc3527+++ b/sql/sys_vars.cc
3528@@ -49,6 +49,7 @@3528@@ -51,6 +51,7 @@
3529 #include "../storage/perfschema/pfs_server.h"3529
3530 #endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */3530 TYPELIB bool_typelib={ array_elements(bool_values)-1, "", bool_values, 0 };
3531 3531
3532+#include "query_response_time.h" 3532+#include "query_response_time.h"
3533 /*3533 /*
3534 This forward declaration is needed because including sql_base.h3534 This forward declaration is needed because including sql_base.h
3535 causes further includes. [TODO] Eliminate this forward declaration3535 causes further includes. [TODO] Eliminate this forward declaration
3536@@ -1866,6 +1867,26 @@3536@@ -1939,6 +1940,26 @@
3537 DEFAULT(FALSE));3537 DEFAULT(FALSE));
3538 #endif /* HAVE_QUERY_CACHE */3538 #endif /* HAVE_QUERY_CACHE */
3539 3539
35403540
=== modified file 'patches/show_slave_status_nolock.patch'
--- patches/show_slave_status_nolock.patch 2011-12-13 13:49:04 +0000
+++ patches/show_slave_status_nolock.patch 2012-02-06 05:02:26 +0000
@@ -26,7 +26,7 @@
26 { "NVARCHAR", SYM(NVARCHAR_SYM)},26 { "NVARCHAR", SYM(NVARCHAR_SYM)},
27--- a/sql/mysqld.cc27--- a/sql/mysqld.cc
28+++ b/sql/mysqld.cc28+++ b/sql/mysqld.cc
29@@ -3121,6 +3121,7 @@29@@ -2971,6 +2971,7 @@
30 {"show_relaylog_events", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_RELAYLOG_EVENTS]), SHOW_LONG_STATUS},30 {"show_relaylog_events", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_RELAYLOG_EVENTS]), SHOW_LONG_STATUS},
31 {"show_slave_hosts", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_SLAVE_HOSTS]), SHOW_LONG_STATUS},31 {"show_slave_hosts", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_SLAVE_HOSTS]), SHOW_LONG_STATUS},
32 {"show_slave_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_SLAVE_STAT]), SHOW_LONG_STATUS},32 {"show_slave_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_SLAVE_STAT]), SHOW_LONG_STATUS},
@@ -105,7 +105,7 @@
105 %token STDDEV_SAMP_SYM /* SQL-2003-N */105 %token STDDEV_SAMP_SYM /* SQL-2003-N */
106 %token STD_SYM106 %token STD_SYM
107 %token STOP_SYM107 %token STOP_SYM
108@@ -11106,6 +11107,11 @@108@@ -11111,6 +11112,11 @@
109 {109 {
110 Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;110 Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
111 }111 }
112112
=== modified file 'patches/show_temp.patch'
--- patches/show_temp.patch 2011-12-27 15:32:16 +0000
+++ patches/show_temp.patch 2012-02-06 05:02:26 +0000
@@ -25,7 +25,7 @@
25 SCH_VARIABLES,25 SCH_VARIABLES,
26--- a/sql/mysqld.cc26--- a/sql/mysqld.cc
27+++ b/sql/mysqld.cc27+++ b/sql/mysqld.cc
28@@ -3101,6 +3101,7 @@28@@ -2951,6 +2951,7 @@
29 {"show_storage_engines", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_STORAGE_ENGINES]), SHOW_LONG_STATUS},29 {"show_storage_engines", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_STORAGE_ENGINES]), SHOW_LONG_STATUS},
30 {"show_table_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TABLE_STATUS]), SHOW_LONG_STATUS},30 {"show_table_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TABLE_STATUS]), SHOW_LONG_STATUS},
31 {"show_tables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TABLES]), SHOW_LONG_STATUS},31 {"show_tables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TABLES]), SHOW_LONG_STATUS},
@@ -33,7 +33,7 @@
33 {"show_triggers", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TRIGGERS]), SHOW_LONG_STATUS},33 {"show_triggers", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TRIGGERS]), SHOW_LONG_STATUS},
34 {"show_variables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_VARIABLES]), SHOW_LONG_STATUS},34 {"show_variables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_VARIABLES]), SHOW_LONG_STATUS},
35 {"show_warnings", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_WARNS]), SHOW_LONG_STATUS},35 {"show_warnings", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_WARNS]), SHOW_LONG_STATUS},
36@@ -7802,6 +7803,7 @@36@@ -7670,6 +7671,7 @@
37 PSI_mutex_key key_LOCK_des_key_file;37 PSI_mutex_key key_LOCK_des_key_file;
38 #endif /* HAVE_OPENSSL */38 #endif /* HAVE_OPENSSL */
39 39
@@ -41,7 +41,7 @@
41 PSI_mutex_key key_BINLOG_LOCK_index, key_BINLOG_LOCK_prep_xids,41 PSI_mutex_key key_BINLOG_LOCK_index, key_BINLOG_LOCK_prep_xids,
42 key_delayed_insert_mutex, key_hash_filo_lock, key_LOCK_active_mi,42 key_delayed_insert_mutex, key_hash_filo_lock, key_LOCK_active_mi,
43 key_LOCK_connection_count, key_LOCK_crypt, key_LOCK_delayed_create,43 key_LOCK_connection_count, key_LOCK_crypt, key_LOCK_delayed_create,
44@@ -7855,6 +7857,7 @@44@@ -7723,6 +7725,7 @@
45 { &key_LOCK_system_variables_hash, "LOCK_system_variables_hash", PSI_FLAG_GLOBAL},45 { &key_LOCK_system_variables_hash, "LOCK_system_variables_hash", PSI_FLAG_GLOBAL},
46 { &key_LOCK_table_share, "LOCK_table_share", PSI_FLAG_GLOBAL},46 { &key_LOCK_table_share, "LOCK_table_share", PSI_FLAG_GLOBAL},
47 { &key_LOCK_thd_data, "THD::LOCK_thd_data", 0},47 { &key_LOCK_thd_data, "THD::LOCK_thd_data", 0},
@@ -387,7 +387,7 @@
387 OPEN_TRIGGER_ONLY|OPTIMIZE_I_S_TABLE},387 OPEN_TRIGGER_ONLY|OPTIMIZE_I_S_TABLE},
388--- a/sql/sql_yacc.yy388--- a/sql/sql_yacc.yy
389+++ b/sql/sql_yacc.yy389+++ b/sql/sql_yacc.yy
390@@ -10893,6 +10893,15 @@390@@ -10898,6 +10898,15 @@
391 if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES))391 if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES))
392 MYSQL_YYABORT;392 MYSQL_YYABORT;
393 }393 }
@@ -405,7 +405,7 @@
405 LEX *lex= Lex;405 LEX *lex= Lex;
406--- a/sql/mysqld.h406--- a/sql/mysqld.h
407+++ b/sql/mysqld.h407+++ b/sql/mysqld.h
408@@ -233,6 +233,7 @@408@@ -234,6 +234,7 @@
409 extern PSI_mutex_key key_LOCK_des_key_file;409 extern PSI_mutex_key key_LOCK_des_key_file;
410 #endif410 #endif
411 411
412412
=== modified file 'patches/slow_extended.patch'
--- patches/slow_extended.patch 2011-12-27 15:32:16 +0000
+++ patches/slow_extended.patch 2012-02-06 05:02:26 +0000
@@ -411,7 +411,7 @@
411 ulonglong lock_utime, bool is_command,411 ulonglong lock_utime, bool is_command,
412--- a/sql/mysqld.cc412--- a/sql/mysqld.cc
413+++ b/sql/mysqld.cc413+++ b/sql/mysqld.cc
414@@ -421,6 +421,10 @@414@@ -425,6 +425,10 @@
415 char* opt_secure_file_priv;415 char* opt_secure_file_priv;
416 my_bool opt_log_slow_admin_statements= 0;416 my_bool opt_log_slow_admin_statements= 0;
417 my_bool opt_log_slow_slave_statements= 0;417 my_bool opt_log_slow_slave_statements= 0;
@@ -422,7 +422,7 @@
422 my_bool lower_case_file_system= 0;422 my_bool lower_case_file_system= 0;
423 my_bool opt_large_pages= 0;423 my_bool opt_large_pages= 0;
424 my_bool opt_super_large_pages= 0;424 my_bool opt_super_large_pages= 0;
425@@ -5892,14 +5896,10 @@425@@ -5753,14 +5757,10 @@
426 "Don't log extra information to update and slow-query logs.",426 "Don't log extra information to update and slow-query logs.",
427 &opt_short_log_format, &opt_short_log_format,427 &opt_short_log_format, &opt_short_log_format,
428 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},428 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -439,7 +439,7 @@
439 {"log-slow-queries", OPT_SLOW_QUERY_LOG,439 {"log-slow-queries", OPT_SLOW_QUERY_LOG,
440 "Log slow queries to a table or log file. Defaults logging to table "440 "Log slow queries to a table or log file. Defaults logging to table "
441 "mysql.slow_log or hostname-slow.log if --log-output=file is used. "441 "mysql.slow_log or hostname-slow.log if --log-output=file is used. "
442@@ -7288,6 +7288,10 @@442@@ -7156,6 +7156,10 @@
443 443
444 C_MODE_END444 C_MODE_END
445 445
@@ -450,7 +450,7 @@
450 /**450 /**
451 Get server options from the command line,451 Get server options from the command line,
452 and perform related server initializations.452 and perform related server initializations.
453@@ -7437,6 +7441,8 @@453@@ -7305,6 +7309,8 @@
454 global_system_variables.long_query_time= (ulonglong)454 global_system_variables.long_query_time= (ulonglong)
455 (global_system_variables.long_query_time_double * 1e6);455 (global_system_variables.long_query_time_double * 1e6);
456 456
@@ -569,7 +569,7 @@
569 }569 }
570 570
571 571
572@@ -3682,8 +3717,6 @@572@@ -3687,8 +3722,6 @@
573 backup->in_sub_stmt= in_sub_stmt;573 backup->in_sub_stmt= in_sub_stmt;
574 backup->enable_slow_log= enable_slow_log;574 backup->enable_slow_log= enable_slow_log;
575 backup->limit_found_rows= limit_found_rows;575 backup->limit_found_rows= limit_found_rows;
@@ -578,7 +578,7 @@
578 backup->cuted_fields= cuted_fields;578 backup->cuted_fields= cuted_fields;
579 backup->client_capabilities= client_capabilities;579 backup->client_capabilities= client_capabilities;
580 backup->savepoints= transaction.savepoints;580 backup->savepoints= transaction.savepoints;
581@@ -3691,6 +3724,7 @@581@@ -3696,6 +3729,7 @@
582 first_successful_insert_id_in_prev_stmt;582 first_successful_insert_id_in_prev_stmt;
583 backup->first_successful_insert_id_in_cur_stmt= 583 backup->first_successful_insert_id_in_cur_stmt=
584 first_successful_insert_id_in_cur_stmt;584 first_successful_insert_id_in_cur_stmt;
@@ -586,7 +586,7 @@
586 586
587 if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) &&587 if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) &&
588 !is_current_stmt_binlog_format_row())588 !is_current_stmt_binlog_format_row())
589@@ -3706,13 +3740,74 @@589@@ -3711,13 +3745,74 @@
590 /* Disable result sets */590 /* Disable result sets */
591 client_capabilities &= ~CLIENT_MULTI_RESULTS;591 client_capabilities &= ~CLIENT_MULTI_RESULTS;
592 in_sub_stmt|= new_state;592 in_sub_stmt|= new_state;
@@ -663,7 +663,7 @@
663 663
664 void THD::restore_sub_statement_state(Sub_statement_state *backup)664 void THD::restore_sub_statement_state(Sub_statement_state *backup)
665 {665 {
666@@ -3753,7 +3848,6 @@666@@ -3758,7 +3853,6 @@
667 first_successful_insert_id_in_cur_stmt= 667 first_successful_insert_id_in_cur_stmt=
668 backup->first_successful_insert_id_in_cur_stmt;668 backup->first_successful_insert_id_in_cur_stmt;
669 limit_found_rows= backup->limit_found_rows;669 limit_found_rows= backup->limit_found_rows;
@@ -671,7 +671,7 @@
671 client_capabilities= backup->client_capabilities;671 client_capabilities= backup->client_capabilities;
672 /*672 /*
673 If we've left sub-statement mode, reset the fatal error flag.673 If we've left sub-statement mode, reset the fatal error flag.
674@@ -3771,8 +3865,8 @@674@@ -3776,8 +3870,8 @@
675 The following is added to the old values as we are interested in the675 The following is added to the old values as we are interested in the
676 total complexity of the query676 total complexity of the query
677 */677 */
@@ -1072,7 +1072,7 @@
1072 {1072 {
1073--- a/sql/sys_vars.cc1073--- a/sql/sys_vars.cc
1074+++ b/sql/sys_vars.cc1074+++ b/sql/sys_vars.cc
1075@@ -972,6 +972,29 @@1075@@ -1045,6 +1045,29 @@
1076 NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),1076 NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
1077 ON_UPDATE(update_cached_long_query_time));1077 ON_UPDATE(update_cached_long_query_time));
1078 1078
@@ -1102,7 +1102,7 @@
1102 static bool fix_low_prio_updates(sys_var *self, THD *thd, enum_var_type type)1102 static bool fix_low_prio_updates(sys_var *self, THD *thd, enum_var_type type)
1103 {1103 {
1104 if (type == OPT_SESSION)1104 if (type == OPT_SESSION)
1105@@ -2904,6 +2927,123 @@1105@@ -2977,6 +3000,123 @@
1106 DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),1106 DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
1107 ON_UPDATE(fix_log_state));1107 ON_UPDATE(fix_log_state));
1108 1108
11091109
=== modified file 'patches/sql_no_fcache.patch'
--- patches/sql_no_fcache.patch 2011-12-13 13:49:04 +0000
+++ patches/sql_no_fcache.patch 2012-02-06 05:02:26 +0000
@@ -139,7 +139,7 @@
139 { "SQL_TSI_SECOND", SYM(SECOND_SYM)},139 { "SQL_TSI_SECOND", SYM(SECOND_SYM)},
140--- a/sql/mysqld.h140--- a/sql/mysqld.h
141+++ b/sql/mysqld.h141+++ b/sql/mysqld.h
142@@ -194,6 +194,8 @@142@@ -195,6 +195,8 @@
143 extern char language[FN_REFLEN];143 extern char language[FN_REFLEN];
144 extern "C" MYSQL_PLUGIN_IMPORT ulong server_id;144 extern "C" MYSQL_PLUGIN_IMPORT ulong server_id;
145 extern ulong concurrency;145 extern ulong concurrency;
@@ -162,7 +162,7 @@
162 162
163 #include <thr_alarm.h>163 #include <thr_alarm.h>
164 #include <ft_global.h>164 #include <ft_global.h>
165@@ -487,6 +492,11 @@165@@ -491,6 +496,11 @@
166 ulong binlog_cache_use= 0, binlog_cache_disk_use= 0;166 ulong binlog_cache_use= 0, binlog_cache_disk_use= 0;
167 ulong binlog_stmt_cache_use= 0, binlog_stmt_cache_disk_use= 0;167 ulong binlog_stmt_cache_use= 0, binlog_stmt_cache_disk_use= 0;
168 ulong max_connections, max_connect_errors;168 ulong max_connections, max_connect_errors;
@@ -174,7 +174,7 @@
174 /*174 /*
175 Maximum length of parameter value which can be set through175 Maximum length of parameter value which can be set through
176 mysql_send_long_data() call.176 mysql_send_long_data() call.
177@@ -4252,6 +4262,97 @@177@@ -4102,6 +4112,97 @@
178 #define decrement_handler_count()178 #define decrement_handler_count()
179 #endif /* defined(_WIN32) || defined(HAVE_SMEM) */179 #endif /* defined(_WIN32) || defined(HAVE_SMEM) */
180 180
@@ -272,7 +272,7 @@
272 272
273 #ifndef EMBEDDED_LIBRARY273 #ifndef EMBEDDED_LIBRARY
274 #ifndef DBUG_OFF274 #ifndef DBUG_OFF
275@@ -4510,6 +4611,10 @@275@@ -4363,6 +4464,10 @@
276 test_lc_time_sz();276 test_lc_time_sz();
277 #endif277 #endif
278 278
@@ -283,7 +283,7 @@
283 /*283 /*
284 We have enough space for fiddling with the argv, continue284 We have enough space for fiddling with the argv, continue
285 */285 */
286@@ -4713,6 +4818,10 @@286@@ -4574,6 +4679,10 @@
287 }287 }
288 #endif288 #endif
289 clean_up(1);289 clean_up(1);
@@ -294,7 +294,7 @@
294 mysqld_exit(0);294 mysqld_exit(0);
295 }295 }
296 296
297@@ -6553,6 +6662,7 @@297@@ -6421,6 +6530,7 @@
298 {"Delayed_errors", (char*) &delayed_insert_errors, SHOW_LONG},298 {"Delayed_errors", (char*) &delayed_insert_errors, SHOW_LONG},
299 {"Delayed_insert_threads", (char*) &delayed_insert_threads, SHOW_LONG_NOFLUSH},299 {"Delayed_insert_threads", (char*) &delayed_insert_threads, SHOW_LONG_NOFLUSH},
300 {"Delayed_writes", (char*) &delayed_insert_writes, SHOW_LONG},300 {"Delayed_writes", (char*) &delayed_insert_writes, SHOW_LONG},
@@ -314,7 +314,7 @@
314 lex->leaf_tables_insert= 0;314 lex->leaf_tables_insert= 0;
315--- a/sql/sql_lex.h315--- a/sql/sql_lex.h
316+++ b/sql/sql_lex.h316+++ b/sql/sql_lex.h
317@@ -2345,6 +2345,7 @@317@@ -2346,6 +2346,7 @@
318 318
319 enum enum_yes_no_unknown tx_chain, tx_release;319 enum enum_yes_no_unknown tx_chain, tx_release;
320 bool safe_to_cache_query;320 bool safe_to_cache_query;
@@ -378,7 +378,7 @@
378 %token SQL_SMALL_RESULT378 %token SQL_SMALL_RESULT
379 %token SQL_SYM /* SQL-2003-R */379 %token SQL_SYM /* SQL-2003-R */
380 %token SQL_THREAD380 %token SQL_THREAD
381@@ -7357,6 +7358,10 @@381@@ -7362,6 +7363,10 @@
382 Lex->select_lex.sql_cache= SELECT_LEX::SQL_NO_CACHE;382 Lex->select_lex.sql_cache= SELECT_LEX::SQL_NO_CACHE;
383 }383 }
384 }384 }
385385
=== modified file 'patches/subunit.patch'
--- patches/subunit.patch 2012-01-10 07:01:07 +0000
+++ patches/subunit.patch 2012-02-06 05:02:26 +0000
@@ -189,7 +189,7 @@
189 189
190 require "lib/mtr_process.pl";190 require "lib/mtr_process.pl";
191 require "lib/mtr_io.pl";191 require "lib/mtr_io.pl";
192@@ -291,6 +292,7 @@192@@ -292,6 +293,7 @@
193 my $opt_valgrind_path;193 my $opt_valgrind_path;
194 my $valgrind_reports= 0;194 my $valgrind_reports= 0;
195 my $opt_callgrind;195 my $opt_callgrind;
@@ -197,7 +197,7 @@
197 my %mysqld_logs;197 my %mysqld_logs;
198 my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions.198 my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions.
199 199
200@@ -630,6 +632,7 @@200@@ -631,6 +633,7 @@
201 201
202 # Report test status202 # Report test status
203 mtr_report_test($result);203 mtr_report_test($result);
@@ -205,7 +205,7 @@
205 205
206 if ( $result->is_failed() ) {206 if ( $result->is_failed() ) {
207 207
208@@ -1142,6 +1145,7 @@208@@ -1144,6 +1147,7 @@
209 'valgrind-option=s' => \@valgrind_args,209 'valgrind-option=s' => \@valgrind_args,
210 'valgrind-path=s' => \$opt_valgrind_path,210 'valgrind-path=s' => \$opt_valgrind_path,
211 'callgrind' => \$opt_callgrind,211 'callgrind' => \$opt_callgrind,
@@ -213,7 +213,7 @@
213 'debug-sync-timeout=i' => \$opt_debug_sync_timeout,213 'debug-sync-timeout=i' => \$opt_debug_sync_timeout,
214 214
215 # Directories215 # Directories
216@@ -1703,11 +1707,18 @@216@@ -1705,11 +1709,18 @@
217 unless @valgrind_args;217 unless @valgrind_args;
218 }218 }
219 219
@@ -233,7 +233,7 @@
233 233
234 # Don't add --quiet; you will loose the summary reports.234 # Don't add --quiet; you will loose the summary reports.
235 235
236@@ -5796,6 +5807,10 @@236@@ -5831,6 +5842,10 @@
237 mtr_add_arg($args, "--tool=callgrind");237 mtr_add_arg($args, "--tool=callgrind");
238 mtr_add_arg($args, "--base=$opt_vardir/log");238 mtr_add_arg($args, "--base=$opt_vardir/log");
239 }239 }
240240
=== modified file 'patches/userstat.patch'
--- patches/userstat.patch 2011-12-27 15:32:16 +0000
+++ patches/userstat.patch 2012-02-06 05:02:26 +0000
@@ -363,7 +363,7 @@
363 /*363 /*
364 Log error with all enabled log event handlers364 Log error with all enabled log event handlers
365 365
366@@ -5026,6 +5033,8 @@366@@ -5062,6 +5069,8 @@
367 thd->first_successful_insert_id_in_prev_stmt_for_binlog);367 thd->first_successful_insert_id_in_prev_stmt_for_binlog);
368 if (e.write(file))368 if (e.write(file))
369 goto err;369 goto err;
@@ -372,7 +372,7 @@
372 }372 }
373 if (thd->auto_inc_intervals_in_cur_stmt_for_binlog.nb_elements() > 0)373 if (thd->auto_inc_intervals_in_cur_stmt_for_binlog.nb_elements() > 0)
374 {374 {
375@@ -5037,12 +5046,16 @@375@@ -5073,12 +5082,16 @@
376 minimum());376 minimum());
377 if (e.write(file))377 if (e.write(file))
378 goto err;378 goto err;
@@ -389,7 +389,7 @@
389 }389 }
390 if (thd->user_var_events.elements)390 if (thd->user_var_events.elements)
391 {391 {
392@@ -5065,6 +5078,8 @@392@@ -5101,6 +5114,8 @@
393 flags);393 flags);
394 if (e.write(file))394 if (e.write(file))
395 goto err;395 goto err;
@@ -398,7 +398,7 @@
398 }398 }
399 }399 }
400 }400 }
401@@ -5076,6 +5091,8 @@401@@ -5112,6 +5127,8 @@
402 if (event_info->write(file) ||402 if (event_info->write(file) ||
403 DBUG_EVALUATE_IF("injecting_fault_writing", 1, 0))403 DBUG_EVALUATE_IF("injecting_fault_writing", 1, 0))
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches