3286 Marc Alff 2011-07-21 [merge]
Local merge
modified:
client/mysqltest.cc
config.h.cmake
configure.cmake
dbug/dbug_analyze.c
dbug/my_main.c
dbug/tests.c
mysql-test/r/func_if.result
mysql-test/suite/innodb/r/innodb_bug54044.result
mysql-test/suite/innodb/t/innodb_bug54044.test
mysql-test/t/func_if.test
mysys/my_init.c
sql/field.cc
sql/item_cmpfunc.cc
sql/item_cmpfunc.h
=== modified file 'include/my_sys.h'
--- a/include/my_sys.h 2011-07-19 15:11:15 +0000
+++ b/include/my_sys.h 2011-07-21 16:27:14 +0000
@@ -228,8 +228,8 @@ extern void (*fatal_error_handler_hook)(
extern uint my_file_limit;
extern ulong my_thread_stack_size;
-extern const char *(*proc_info_hook)(void *, const char *, const char *,
- const char *, const unsigned int);
+extern void (*proc_info_hook)(void *, const PSI_stage_info *, PSI_stage_info *,
+ const char *, const char *, const unsigned int);
#ifdef HAVE_LARGE_PAGES
extern my_bool my_use_large_pages;
=== added file 'mysql-test/suite/perfschema/include/stage_cleanup.inc'
--- a/mysql-test/suite/perfschema/include/stage_cleanup.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/include/stage_cleanup.inc 2011-07-21 16:27:14 +0000
@@ -0,0 +1,46 @@
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Tests for the performance schema
+
+# ================================
+# HELPER include/stage_cleanup.inc
+# ================================
+
+--disable_query_log
+revoke all privileges, grant option from user1@localhost;
+revoke all privileges, grant option from user2@localhost;
+revoke all privileges, grant option from user3@localhost;
+revoke all privileges, grant option from user4@localhost;
+drop user user1@localhost;
+drop user user2@localhost;
+drop user user3@localhost;
+drop user user4@localhost;
+flush privileges;
+
+drop procedure dump_thread;
+drop procedure dump_one_thread;
+
+truncate table performance_schema.setup_actors;
+insert into performance_schema.setup_actors
+ select * from test.setup_actors;
+drop table test.setup_actors;
+drop table test.t1;
+
+update performance_schema.threads set instrumented='YES';
+update performance_schema.setup_instruments set enabled='YES', timed='YES';
+
+--enable_query_log
+
=== added file 'mysql-test/suite/perfschema/include/stage_setup.inc'
--- a/mysql-test/suite/perfschema/include/stage_setup.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/include/stage_setup.inc 2011-07-21 16:27:14 +0000
@@ -0,0 +1,156 @@
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# Tests for the performance schema
+
+# =============
+# DOCUMENTATION
+# =============
+
+# Verify critical stages of a statement
+#
+# The tests are written with the following helpers:
+# - include/stage_setup.inc
+# - include/stage_cleanup.inc
+#
+# Helpers are intended to be used as follows.
+#
+# A Typical test t/stage_xxx.test will consist of:
+# --source ../include/stage_setup.inc
+# ... test specific payload ...
+# --source ../include/stage_cleanup.inc
+# and a t/stage_xxx-master.opt file
+#
+# ==============================
+# HELPER include/stage_setup.inc
+# ==============================
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# The file with expected results fits only to a run without
+# ps-protocol/sp-protocol/cursor-protocol/view-protocol.
+if (`SELECT $PS_PROTOCOL + $SP_PROTOCOL + $CURSOR_PROTOCOL
+ + $VIEW_PROTOCOL > 0`)
+{
+ --skip Test requires: ps-protocol/sp-protocol/cursor-protocol/view-protocol disabled
+}
+
+--disable_query_log
+
+grant ALL on *.* to user1@localhost;
+grant ALL on *.* to user2@localhost;
+grant ALL on *.* to user3@localhost;
+grant ALL on *.* to user4@localhost;
+
+flush privileges;
+
+# Save the setup
+
+--disable_warnings
+drop table if exists test.setup_actors;
+drop table if exists test.t1;
+--enable_warnings
+
+create table test.t1(a varchar(64));
+
+create table test.setup_actors as
+ select * from performance_schema.setup_actors;
+
+# Only instrument the user connections
+truncate table performance_schema.setup_actors;
+insert into performance_schema.setup_actors
+ set host= 'localhost', user= 'user1', role= '%';
+insert into performance_schema.setup_actors
+ set host= 'localhost', user= 'user2', role= '%';
+insert into performance_schema.setup_actors
+ set host= 'localhost', user= 'user3', role= '%';
+insert into performance_schema.setup_actors
+ set host= 'localhost', user= 'user4', role= '%';
+
+update performance_schema.threads set instrumented='NO';
+
+# Only instrument a few events of each kind
+update performance_schema.setup_instruments set enabled='YES', timed='YES';
+
+# Start from a known clean state, to avoid noise from previous tests
+flush tables;
+flush status;
+truncate performance_schema.events_stages_summary_by_thread_by_event_name;
+truncate performance_schema.events_stages_summary_global_by_event_name;
+truncate performance_schema.events_stages_history;
+truncate performance_schema.events_stages_history_long;
+truncate performance_schema.events_statements_summary_by_thread_by_event_name;
+truncate performance_schema.events_statements_summary_global_by_event_name;
+truncate performance_schema.events_statements_history;
+truncate performance_schema.events_statements_history_long;
+
+--disable_warnings
+drop procedure if exists dump_thread;
+drop procedure if exists dump_one_thread;
+--enable_warnings
+
+delimiter $$;
+
+create procedure dump_thread()
+begin
+ call dump_one_thread('user1');
+ call dump_one_thread('user2');
+ call dump_one_thread('user3');
+ call dump_one_thread('user4');
+end
+$$
+
+create procedure dump_one_thread(in username varchar(64))
+begin
+ declare my_thread_id int;
+ declare my_statement_id int;
+
+ set my_thread_id = (select thread_id from performance_schema.threads
+ where processlist_user=username);
+
+ if (my_thread_id is not null) then
+ begin
+ # Dump the current statement for this thread
+ select username, event_name, sql_text
+ from performance_schema.events_statements_current
+ where thread_id = my_thread_id;
+
+ # Get the current statement
+ set my_statement_id = (select event_id from
+ performance_schema.events_statements_current
+ where thread_id = my_thread_id);
+
+ # Dump the stages for this statement
+ select username, event_name, nesting_event_type
+ from performance_schema.events_stages_current
+ where thread_id = my_thread_id
+ and nesting_event_id = my_statement_id
+ order by event_id asc;
+ select username, event_name, nesting_event_type
+ from performance_schema.events_stages_history
+ where thread_id = my_thread_id
+ and nesting_event_id = my_statement_id
+ order by event_id asc;
+ end;
+ else
+ select username, "not found" as status;
+ end if;
+end
+$$
+
+delimiter ;$$
+
+--enable_query_log
=== modified file 'mysql-test/suite/perfschema/r/ortho_iter.result'
--- a/mysql-test/suite/perfschema/r/ortho_iter.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/ortho_iter.result 2011-07-21 16:27:14 +0000
@@ -109,7 +109,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/privilege_table_io.result'
--- a/mysql-test/suite/perfschema/r/privilege_table_io.result 2011-05-05 06:11:49 +0000
+++ b/mysql-test/suite/perfschema/r/privilege_table_io.result 2011-07-21 16:27:14 +0000
@@ -33,7 +33,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/query_cache.result'
--- a/mysql-test/suite/perfschema/r/query_cache.result 2011-02-15 17:14:15 +0000
+++ b/mysql-test/suite/perfschema/r/query_cache.result 2011-07-21 16:27:14 +0000
@@ -38,7 +38,7 @@ spins
NULL
select name from performance_schema.setup_instruments order by name limit 1;
name
-stage/sql/After create
+stage/mysys/Waiting for table level lock
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
@@ -53,7 +53,7 @@ spins
NULL
select name from performance_schema.setup_instruments order by name limit 1;
name
-stage/sql/After create
+stage/mysys/Waiting for table level lock
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 1
=== added file 'mysql-test/suite/perfschema/r/stage_mdl_function.result'
--- a/mysql-test/suite/perfschema/r/stage_mdl_function.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/r/stage_mdl_function.result 2011-07-21 16:27:14 +0000
@@ -0,0 +1,34 @@
+drop function if exists test.f1;
+create function test.f1() returns int
+return 1;
+begin;
+select test.f1();
+test.f1()
+1
+drop function test.f1;
+call dump_one_thread('user1');
+username event_name sql_text
+user1 statement/sql/select select test.f1()
+username event_name nesting_event_type
+username event_name nesting_event_type
+user1 stage/sql/System lock STATEMENT
+user1 stage/sql/init STATEMENT
+user1 stage/sql/optimizing STATEMENT
+user1 stage/sql/executing STATEMENT
+user1 stage/sql/Opening tables STATEMENT
+user1 stage/sql/end STATEMENT
+user1 stage/sql/query end STATEMENT
+user1 stage/sql/closing tables STATEMENT
+user1 stage/sql/freeing items STATEMENT
+user1 stage/sql/cleaning up STATEMENT
+call dump_one_thread('user2');
+username event_name sql_text
+user2 statement/sql/drop_function drop function test.f1
+username event_name nesting_event_type
+user2 stage/sql/Waiting for stored function metadata lock STATEMENT
+username event_name nesting_event_type
+user2 stage/sql/init STATEMENT
+select f1();
+f1()
+1
+commit;
=== added file 'mysql-test/suite/perfschema/r/stage_mdl_global.result'
--- a/mysql-test/suite/perfschema/r/stage_mdl_global.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/r/stage_mdl_global.result 2011-07-21 16:27:14 +0000
@@ -0,0 +1,24 @@
+flush tables with read lock;
+insert into test.t1 values (1), (2), (3);
+call dump_one_thread('user1');
+username event_name sql_text
+user1 statement/sql/flush flush tables with read lock
+username event_name nesting_event_type
+username event_name nesting_event_type
+user1 stage/sql/init STATEMENT
+user1 stage/sql/Waiting for query cache lock STATEMENT
+user1 stage/sql/init STATEMENT
+user1 stage/sql/query end STATEMENT
+user1 stage/sql/closing tables STATEMENT
+user1 stage/sql/freeing items STATEMENT
+user1 stage/sql/cleaning up STATEMENT
+call dump_one_thread('user2');
+username event_name sql_text
+user2 statement/sql/insert insert into test.t1 values (1), (2), (3)
+username event_name nesting_event_type
+user2 stage/sql/Waiting for global read lock STATEMENT
+username event_name nesting_event_type
+user2 stage/sql/init STATEMENT
+user2 stage/sql/checking permissions STATEMENT
+user2 stage/sql/Opening tables STATEMENT
+unlock tables;
=== added file 'mysql-test/suite/perfschema/r/stage_mdl_procedure.result'
--- a/mysql-test/suite/perfschema/r/stage_mdl_procedure.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/r/stage_mdl_procedure.result 2011-07-21 16:27:14 +0000
@@ -0,0 +1,42 @@
+drop function if exists test.f1;
+drop procedure if exists test.p1;
+create function test.f1() returns int
+begin
+call test.p1();
+return 1;
+end
+$$
+create procedure test.p1()
+begin end;
+begin;
+select test.f1();
+test.f1()
+1
+drop procedure test.p1;
+call dump_one_thread('user1');
+username event_name sql_text
+user1 statement/sql/select select test.f1()
+username event_name nesting_event_type
+username event_name nesting_event_type
+user1 stage/sql/executing STATEMENT
+user1 stage/sql/Opening tables STATEMENT
+user1 stage/sql/query end STATEMENT
+user1 stage/sql/closing tables STATEMENT
+user1 stage/sql/Opening tables STATEMENT
+user1 stage/sql/end STATEMENT
+user1 stage/sql/query end STATEMENT
+user1 stage/sql/closing tables STATEMENT
+user1 stage/sql/freeing items STATEMENT
+user1 stage/sql/cleaning up STATEMENT
+call dump_one_thread('user2');
+username event_name sql_text
+user2 statement/sql/drop_procedure drop procedure test.p1
+username event_name nesting_event_type
+user2 stage/sql/Waiting for stored procedure metadata lock STATEMENT
+username event_name nesting_event_type
+user2 stage/sql/init STATEMENT
+select test.f1();
+test.f1()
+1
+commit;
+drop function test.f1;
=== added file 'mysql-test/suite/perfschema/r/stage_mdl_table.result'
--- a/mysql-test/suite/perfschema/r/stage_mdl_table.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/r/stage_mdl_table.result 2011-07-21 16:27:14 +0000
@@ -0,0 +1,37 @@
+begin;
+insert into test.t1 values (1), (2), (3);
+commit;
+begin;
+select * from test.t1 for update;
+a
+1
+2
+3
+alter table test.t1 add column (b int);
+call dump_one_thread('user1');
+username event_name sql_text
+user1 statement/sql/select select * from test.t1 for update
+username event_name nesting_event_type
+username event_name nesting_event_type
+user1 stage/sql/optimizing STATEMENT
+user1 stage/sql/statistics STATEMENT
+user1 stage/sql/preparing STATEMENT
+user1 stage/sql/executing STATEMENT
+user1 stage/sql/Sending data STATEMENT
+user1 stage/sql/end STATEMENT
+user1 stage/sql/query end STATEMENT
+user1 stage/sql/closing tables STATEMENT
+user1 stage/sql/freeing items STATEMENT
+user1 stage/sql/cleaning up STATEMENT
+call dump_one_thread('user2');
+username event_name sql_text
+user2 statement/sql/alter_table alter table test.t1 add column (b int)
+username event_name nesting_event_type
+user2 stage/sql/Waiting for table metadata lock STATEMENT
+username event_name nesting_event_type
+user2 stage/sql/init STATEMENT
+user2 stage/sql/checking permissions STATEMENT
+user2 stage/sql/checking permissions STATEMENT
+user2 stage/sql/init STATEMENT
+user2 stage/sql/Opening tables STATEMENT
+commit;
=== modified file 'mysql-test/suite/perfschema/r/start_server_innodb.result'
--- a/mysql-test/suite/perfschema/r/start_server_innodb.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_innodb.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_cond_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_cond_class.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_cond_class.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_cond_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_file_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_file_class.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_file_class.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_file_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_file_inst.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_file_inst.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_mutex_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 0
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 0
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 0
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 0
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_setup_actors.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_setup_actors.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_setup_actors.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_setup_objects.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_setup_objects.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_setup_objects.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_stages_history.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_stages_history.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_stages_history.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_statement_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_statement_class.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_statement_class.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 0
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_statements_history.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_statements_history.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_statements_history.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_table_hdl.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_table_hdl.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_table_hdl.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 0
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_table_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_table_inst.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_table_inst.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 0
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_thread_class.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_thread_class.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_thread_class.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_no_thread_inst.result'
--- a/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_off.result'
--- a/mysql-test/suite/perfschema/r/start_server_off.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_off.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/start_server_on.result'
--- a/mysql-test/suite/perfschema/r/start_server_on.result 2011-03-23 11:49:30 +0000
+++ b/mysql-test/suite/perfschema/r/start_server_on.result 2011-07-21 16:27:14 +0000
@@ -68,7 +68,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result 2011-07-21 16:27:14 +0000
@@ -53,7 +53,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result 2011-07-21 16:27:14 +0000
@@ -52,7 +52,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result 2011-07-21 16:27:14 +0000
@@ -53,7 +53,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result 2011-07-21 16:27:14 +0000
@@ -52,7 +52,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result 2011-07-21 16:27:14 +0000
@@ -51,7 +51,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result 2011-07-21 16:27:14 +0000
@@ -50,7 +50,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result 2011-07-21 16:27:14 +0000
@@ -51,7 +51,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result 2011-07-21 16:27:14 +0000
@@ -50,7 +50,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_off.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_off.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_off.result 2011-07-21 16:27:14 +0000
@@ -52,7 +52,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result 2011-07-21 16:27:14 +0000
@@ -53,7 +53,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result 2011-07-21 16:27:14 +0000
@@ -52,7 +52,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result 2011-07-21 16:27:14 +0000
@@ -53,7 +53,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result 2011-07-21 16:27:14 +0000
@@ -52,7 +52,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result 2011-07-21 16:27:14 +0000
@@ -55,7 +55,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result 2011-07-21 16:27:14 +0000
@@ -54,7 +54,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result 2011-07-21 16:27:14 +0000
@@ -55,7 +55,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result 2011-07-21 16:27:14 +0000
@@ -54,7 +54,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result 2011-07-21 16:27:14 +0000
@@ -53,7 +53,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result 2011-07-21 16:27:14 +0000
@@ -52,7 +52,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result 2011-07-21 16:27:14 +0000
@@ -53,7 +53,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result 2011-07-21 16:27:14 +0000
@@ -52,7 +52,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result 2011-07-21 16:27:14 +0000
@@ -55,7 +55,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result 2011-07-21 16:27:14 +0000
@@ -54,7 +54,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result 2011-07-21 16:27:14 +0000
@@ -55,7 +55,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result 2011-07-21 16:27:14 +0000
@@ -54,7 +54,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result 2011-07-21 16:27:14 +0000
@@ -55,7 +55,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result 2011-07-21 16:27:14 +0000
@@ -54,7 +54,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result 2011-07-21 16:27:14 +0000
@@ -55,7 +55,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result 2011-07-21 16:27:14 +0000
@@ -54,7 +54,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result 2011-07-21 16:27:14 +0000
@@ -53,7 +53,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result 2011-07-21 16:27:14 +0000
@@ -52,7 +52,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result 2011-07-21 16:27:14 +0000
@@ -53,7 +53,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result 2011-07-21 16:27:14 +0000
@@ -52,7 +52,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result 2011-07-21 16:27:14 +0000
@@ -55,7 +55,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result 2011-07-21 16:27:14 +0000
@@ -54,7 +54,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result 2011-07-21 16:27:14 +0000
@@ -55,7 +55,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== modified file 'mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result'
--- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result 2011-07-20 14:14:27 +0000
+++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result 2011-07-21 16:27:14 +0000
@@ -54,7 +54,7 @@ performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 5000
performance_schema_max_rwlock_classes 30
performance_schema_max_rwlock_instances 5000
-performance_schema_max_stage_classes 100
+performance_schema_max_stage_classes 150
performance_schema_max_statement_classes 165
performance_schema_max_table_handles 1000
performance_schema_max_table_instances 500
=== added file 'mysql-test/suite/perfschema/t/stage_mdl_function.test'
--- a/mysql-test/suite/perfschema/t/stage_mdl_function.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/t/stage_mdl_function.test 2011-07-21 16:27:14 +0000
@@ -0,0 +1,71 @@
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Tests for the performance schema
+#
+
+--source ../include/stage_setup.inc
+
+connect (con1, localhost, user1, , );
+
+--disable_warnings
+drop function if exists test.f1;
+--enable_warnings
+
+create function test.f1() returns int
+ return 1;
+
+begin;
+select test.f1();
+
+connect (con2, localhost, user2, , );
+
+# Will wait on con1, "Waiting for stored function metadata lock"
+--send
+drop function test.f1;
+
+--connection default
+
+# Wait for the drop function to block
+let $wait_condition=
+ select count(*) = 1 from performance_schema.threads
+ where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user2'
+ and PROCESSLIST_STATE = 'Waiting for stored function metadata lock';
+--source include/wait_condition.inc
+
+call dump_one_thread('user1');
+call dump_one_thread('user2');
+
+--connection con1
+select f1();
+commit;
+
+--disconnect con1
+
+--connection con2
+--reap
+
+--disconnect con2
+
+--connection default
+
+# Wait for the disconnect to complete
+let $wait_condition=
+ select count(*) = 0 from performance_schema.threads
+ where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user%';
+--source include/wait_condition.inc
+
+--source ../include/stage_cleanup.inc
+
=== added file 'mysql-test/suite/perfschema/t/stage_mdl_global.test'
--- a/mysql-test/suite/perfschema/t/stage_mdl_global.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/t/stage_mdl_global.test 2011-07-21 16:27:14 +0000
@@ -0,0 +1,62 @@
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Tests for the performance schema
+#
+
+--source ../include/stage_setup.inc
+
+connect (con1, localhost, user1, , );
+
+flush tables with read lock;
+
+connect (con2, localhost, user2, , );
+
+# Will wait on con1, "Waiting for global read lock"
+--send
+insert into test.t1 values (1), (2), (3);
+
+--connection default
+
+# Wait for the insert to block
+let $wait_condition=
+ select count(*) = 1 from performance_schema.threads
+ where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user2'
+ and PROCESSLIST_STATE = 'Waiting for global read lock';
+--source include/wait_condition.inc
+
+call dump_one_thread('user1');
+call dump_one_thread('user2');
+
+--connection con1
+unlock tables;
+
+--disconnect con1
+
+--connection con2
+--reap
+
+--disconnect con2
+
+--connection default
+
+# Wait for the disconnects to complete
+let $wait_condition=
+ select count(*) = 0 from performance_schema.threads
+ where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user%';
+--source include/wait_condition.inc
+
+--source ../include/stage_cleanup.inc
+
=== added file 'mysql-test/suite/perfschema/t/stage_mdl_procedure.test'
--- a/mysql-test/suite/perfschema/t/stage_mdl_procedure.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/t/stage_mdl_procedure.test 2011-07-21 16:27:14 +0000
@@ -0,0 +1,87 @@
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Tests for the performance schema
+#
+
+--source ../include/stage_setup.inc
+
+connect (con1, localhost, user1, , );
+
+--disable_warnings
+drop function if exists test.f1;
+drop procedure if exists test.p1;
+--enable_warnings
+
+delimiter $$;
+
+create function test.f1() returns int
+begin
+ call test.p1();
+ return 1;
+end
+$$
+
+delimiter ;$$
+
+create procedure test.p1()
+begin end;
+
+begin;
+# The procedure is in a sub statement,
+# so that the current transaction keeps a reference to it.
+select test.f1();
+
+connect (con2, localhost, user2, , );
+
+# Will wait on con1, "Waiting for stored procedure metadata lock"
+--send
+drop procedure test.p1;
+
+--connection default
+
+# Wait for the drop procedure to block
+let $wait_condition=
+ select count(*) = 1 from performance_schema.threads
+ where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user2'
+ and PROCESSLIST_STATE = 'Waiting for stored procedure metadata lock';
+--source include/wait_condition.inc
+
+call dump_one_thread('user1');
+call dump_one_thread('user2');
+
+--connection con1
+select test.f1();
+commit;
+
+--disconnect con1
+
+--connection con2
+--reap
+
+--disconnect con2
+
+--connection default
+
+# Wait for the disconnect to complete
+let $wait_condition=
+ select count(*) = 0 from performance_schema.threads
+ where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user%';
+--source include/wait_condition.inc
+
+drop function test.f1;
+
+--source ../include/stage_cleanup.inc
+
=== added file 'mysql-test/suite/perfschema/t/stage_mdl_table.test'
--- a/mysql-test/suite/perfschema/t/stage_mdl_table.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/t/stage_mdl_table.test 2011-07-21 16:27:14 +0000
@@ -0,0 +1,67 @@
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Tests for the performance schema
+#
+
+--source ../include/stage_setup.inc
+
+connect (con1, localhost, user1, , );
+
+begin;
+insert into test.t1 values (1), (2), (3);
+commit;
+
+begin;
+select * from test.t1 for update;
+
+connect (con2, localhost, user2, , );
+
+# Will wait on con1, "Waiting for table metadata lock"
+--send
+alter table test.t1 add column (b int);
+
+--connection default
+
+# Wait for the alter to block
+let $wait_condition=
+ select count(*) = 1 from performance_schema.threads
+ where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user2'
+ and PROCESSLIST_STATE = 'Waiting for table metadata lock';
+--source include/wait_condition.inc
+
+call dump_one_thread('user1');
+call dump_one_thread('user2');
+
+--connection con1
+commit;
+
+--disconnect con1
+
+--connection con2
+--reap
+
+--disconnect con2
+
+--connection default
+
+# Wait for the disconnects to complete
+let $wait_condition=
+ select count(*) = 0 from performance_schema.threads
+ where `TYPE`='FOREGROUND' and PROCESSLIST_USER like 'user%';
+--source include/wait_condition.inc
+
+--source ../include/stage_cleanup.inc
+
=== modified file 'mysys/my_init.c'
--- a/mysys/my_init.c 2011-07-21 16:22:39 +0000
+++ b/mysys/my_init.c 2011-07-21 21:37:55 +0000
@@ -19,6 +19,7 @@
#include <m_string.h>
#include <m_ctype.h>
#include <signal.h>
+#include <mysql/psi/mysql_stage.h>
#ifdef __WIN__
#ifdef _MSC_VER
#include <locale.h>
@@ -534,6 +535,14 @@ static PSI_file_info all_mysys_files[]=
{ &key_file_cnf, "cnf", 0}
};
+PSI_stage_info stage_waiting_for_table_level_lock=
+{0, "Waiting for table level lock", 0};
+
+PSI_stage_info *all_mysys_stages[]=
+{
+ & stage_waiting_for_table_level_lock
+};
+
void my_init_mysys_psi_keys()
{
const char* category= "mysys";
@@ -552,6 +561,9 @@ void my_init_mysys_psi_keys()
count= sizeof(all_mysys_files)/sizeof(all_mysys_files[0]);
mysql_file_register(category, all_mysys_files, count);
+
+ count= array_elements(all_mysys_stages);
+ mysql_stage_register(category, all_mysys_stages, count);
}
#endif /* HAVE_PSI_INTERFACE */
=== modified file 'mysys/my_static.c'
--- a/mysys/my_static.c 2011-07-05 08:15:52 +0000
+++ b/mysys/my_static.c 2011-07-21 16:27:14 +0000
@@ -74,18 +74,19 @@ void (*error_handler_hook)(uint error, c
void (*fatal_error_handler_hook)(uint error, const char *str, myf MyFlags)=
my_message_stderr;
-static const char *proc_info_dummy(void *a __attribute__((unused)),
- const char *b __attribute__((unused)),
- const char *c __attribute__((unused)),
- const char *d __attribute__((unused)),
- const unsigned int e __attribute__((unused)))
+static void proc_info_dummy(void *a __attribute__((unused)),
+ const PSI_stage_info *b __attribute__((unused)),
+ PSI_stage_info *c __attribute__((unused)),
+ const char *d __attribute__((unused)),
+ const char *e __attribute__((unused)),
+ const unsigned int f __attribute__((unused)))
{
- return 0;
+ return;
}
/* this is to be able to call set_thd_proc_info from the C code */
-const char *(*proc_info_hook)(void *, const char *, const char *, const char *,
- const unsigned int)= proc_info_dummy;
+void (*proc_info_hook)(void *, const PSI_stage_info *, PSI_stage_info *,
+ const char *, const char *, const unsigned int)= proc_info_dummy;
#if defined(ENABLED_DEBUG_SYNC)
/**
=== modified file 'mysys/mysys_priv.h'
--- a/mysys/mysys_priv.h 2011-06-30 15:50:45 +0000
+++ b/mysys/mysys_priv.h 2011-07-21 16:27:14 +0000
@@ -52,6 +52,8 @@ extern PSI_cond_key key_COND_alarm, key_
extern PSI_thread_key key_thread_alarm;
#endif /* USE_ALARM_THREAD */
+extern PSI_stage_info stage_waiting_for_table_level_lock;
+
#endif /* HAVE_PSI_INTERFACE */
extern mysql_mutex_t THR_LOCK_malloc, THR_LOCK_open, THR_LOCK_keycache;
=== modified file 'mysys/thr_lock.c'
--- a/mysys/thr_lock.c 2011-06-30 15:50:45 +0000
+++ b/mysys/thr_lock.c 2011-07-21 16:27:14 +0000
@@ -400,7 +400,7 @@ wait_for_lock(struct st_lock_list *wait,
mysql_cond_t *cond= &thread_var->suspend;
struct timespec wait_timeout;
enum enum_thr_lock_result result= THR_LOCK_ABORTED;
- const char *old_proc_info;
+ PSI_stage_info old_stage;
DBUG_ENTER("wait_for_lock");
/*
@@ -439,8 +439,9 @@ wait_for_lock(struct st_lock_list *wait,
thread_var->current_cond= cond;
data->cond= cond;
- old_proc_info= proc_info_hook(NULL, "Waiting for table level lock",
- __func__, __FILE__, __LINE__);
+ proc_info_hook(NULL, &stage_waiting_for_table_level_lock,
+ &old_stage,
+ __func__, __FILE__, __LINE__);
/*
Since before_lock_wait potentially can create more threads to
@@ -530,7 +531,7 @@ wait_for_lock(struct st_lock_list *wait,
thread_var->current_cond= 0;
mysql_mutex_unlock(&thread_var->mutex);
- proc_info_hook(NULL, old_proc_info, __func__, __FILE__, __LINE__);
+ proc_info_hook(NULL, &old_stage, NULL, __func__, __FILE__, __LINE__);
DBUG_RETURN(result);
}
=== modified file 'plugin/semisync/semisync_master.cc'
--- a/plugin/semisync/semisync_master.cc 2011-06-30 15:46:53 +0000
+++ b/plugin/semisync/semisync_master.cc 2011-07-21 16:27:14 +0000
@@ -608,7 +608,7 @@ int ReplSemiSyncMaster::commitTrx(const
struct timespec start_ts;
struct timespec abstime;
int wait_result;
- const char *old_msg= 0;
+ PSI_stage_info old_stage;
set_timespec(start_ts, 0);
@@ -616,8 +616,9 @@ int ReplSemiSyncMaster::commitTrx(const
lock();
/* This must be called after acquired the lock */
- old_msg= thd_enter_cond(NULL, &COND_binlog_send_, &LOCK_binlog_,
- "Waiting for semi-sync ACK from slave");
+ THD_ENTER_COND(NULL, &COND_binlog_send_, &LOCK_binlog_,
+ & stage_waiting_for_semi_sync_ack_from_slave,
+ & old_stage);
/* This is the real check inside the mutex. */
if (!getMasterEnabled() || !is_on())
@@ -763,7 +764,7 @@ int ReplSemiSyncMaster::commitTrx(const
/* The lock held will be released by thd_exit_cond, so no need to
call unlock() here */
- thd_exit_cond(NULL, old_msg);
+ THD_EXIT_COND(NULL, & old_stage);
}
return function_exit(kWho, 0);
=== modified file 'plugin/semisync/semisync_master.h'
--- a/plugin/semisync/semisync_master.h 2011-06-30 15:46:53 +0000
+++ b/plugin/semisync/semisync_master.h 2011-07-21 16:27:14 +0000
@@ -26,6 +26,8 @@ extern PSI_mutex_key key_ss_mutex_LOCK_b
extern PSI_cond_key key_ss_cond_COND_binlog_send_;
#endif
+extern PSI_stage_info stage_waiting_for_semi_sync_ack_from_slave;
+
struct TranxNode {
char log_name_[FN_REFLEN];
my_off_t log_pos_;
=== modified file 'plugin/semisync/semisync_master_plugin.cc'
--- a/plugin/semisync/semisync_master_plugin.cc 2011-06-30 15:50:45 +0000
+++ b/plugin/semisync/semisync_master_plugin.cc 2011-07-21 16:27:14 +0000
@@ -354,6 +354,16 @@ static PSI_cond_info all_semisync_conds[
{
{ &key_ss_cond_COND_binlog_send_, "COND_binlog_send_", 0}
};
+#endif /* HAVE_PSI_INTERFACE */
+
+PSI_stage_info stage_waiting_for_semi_sync_ack_from_slave=
+{ 0, "Waiting for semi-sync ACK from slave", 0};
+
+#ifdef HAVE_PSI_INTERFACE
+PSI_stage_info *all_semisync_stages[]=
+{
+ & stage_waiting_for_semi_sync_ack_from_slave
+};
static void init_semisync_psi_keys(void)
{
@@ -365,6 +375,9 @@ static void init_semisync_psi_keys(void)
count= array_elements(all_semisync_conds);
mysql_cond_register(category, all_semisync_conds, count);
+
+ count= array_elements(all_semisync_stages);
+ mysql_stage_register(category, all_semisync_stages, count);
}
#endif /* HAVE_PSI_INTERFACE */
=== modified file 'sql/binlog.cc'
--- a/sql/binlog.cc 2011-06-09 08:58:41 +0000
+++ b/sql/binlog.cc 2011-07-21 16:27:14 +0000
@@ -4255,15 +4255,14 @@ err:
void MYSQL_BIN_LOG::wait_for_update_relay_log(THD* thd)
{
- const char *old_msg;
+ PSI_stage_info old_stage;
DBUG_ENTER("wait_for_update_relay_log");
- old_msg= thd->enter_cond(&update_cond, &LOCK_log,
- "Slave has read all relay log; "
- "waiting for the slave I/O "
- "thread to update it" );
+ thd->ENTER_COND(&update_cond, &LOCK_log,
+ &stage_slave_has_read_all_relay_log,
+ &old_stage);
mysql_cond_wait(&update_cond, &LOCK_log);
- thd->exit_cond(old_msg);
+ thd->EXIT_COND(&old_stage);
DBUG_VOID_RETURN;
}
=== modified file 'sql/event_queue.cc'
--- a/sql/event_queue.cc 2011-06-30 15:50:45 +0000
+++ b/sql/event_queue.cc 2011-07-21 16:27:14 +0000
@@ -544,9 +544,6 @@ Event_queue::dbug_dump_queue(time_t now)
#endif
}
-static const char *queue_empty_msg= "Waiting on empty queue";
-static const char *queue_wait_msg= "Waiting for next activation";
-
/*
Checks whether the top of the queue is elligible for execution and
returns an Event_job_data instance in case it should be executed.
@@ -593,7 +590,7 @@ Event_queue::get_top_for_execution_if_ti
mysql_audit_release(thd);
/* Wait on condition until signaled. Release LOCK_queue while waiting. */
- cond_wait(thd, NULL, queue_empty_msg, SCHED_FUNC, __LINE__);
+ cond_wait(thd, NULL, & stage_waiting_on_empty_queue, SCHED_FUNC, __FILE__, __LINE__);
continue;
}
@@ -615,7 +612,7 @@ Event_queue::get_top_for_execution_if_ti
/* Release any held audit resources before waiting */
mysql_audit_release(thd);
- cond_wait(thd, &top_time, queue_wait_msg, SCHED_FUNC, __LINE__);
+ cond_wait(thd, &top_time, &stage_waiting_for_next_activation, SCHED_FUNC, __FILE__, __LINE__);
continue;
}
@@ -746,16 +743,16 @@ Event_queue::unlock_data(const char *fun
*/
void
-Event_queue::cond_wait(THD *thd, struct timespec *abstime, const char* msg,
- const char *func, uint line)
+Event_queue::cond_wait(THD *thd, struct timespec *abstime, const PSI_stage_info *stage,
+ const char *src_func, const char *src_file, uint src_line)
{
DBUG_ENTER("Event_queue::cond_wait");
waiting_on_cond= TRUE;
- mutex_last_unlocked_at_line= line;
+ mutex_last_unlocked_at_line= src_line;
mutex_queue_data_locked= FALSE;
- mutex_last_unlocked_in_func= func;
+ mutex_last_unlocked_in_func= src_func;
- thd->enter_cond(&COND_queue_state, &LOCK_event_queue, msg);
+ thd->enter_cond(&COND_queue_state, &LOCK_event_queue, stage, NULL, src_func, src_file, src_line);
if (!thd->killed)
{
@@ -765,8 +762,8 @@ Event_queue::cond_wait(THD *thd, struct
mysql_cond_timedwait(&COND_queue_state, &LOCK_event_queue, abstime);
}
- mutex_last_locked_in_func= func;
- mutex_last_locked_at_line= line;
+ mutex_last_locked_in_func= src_func;
+ mutex_last_locked_at_line= src_line;
mutex_queue_data_locked= TRUE;
waiting_on_cond= FALSE;
@@ -774,8 +771,8 @@ Event_queue::cond_wait(THD *thd, struct
This will free the lock so we need to relock. Not the best thing to
do but we need to obey cond_wait()
*/
- thd->exit_cond("");
- lock_data(func, line);
+ thd->exit_cond(NULL, src_func, src_file, src_line);
+ lock_data(src_func, src_line);
DBUG_VOID_RETURN;
}
=== modified file 'sql/event_queue.h'
--- a/sql/event_queue.h 2011-06-30 15:50:45 +0000
+++ b/sql/event_queue.h 2011-07-21 16:27:14 +0000
@@ -94,8 +94,8 @@ private:
unlock_data(const char *func, uint line);
void
- cond_wait(THD *thd, struct timespec *abstime, const char* msg,
- const char *func, uint line);
+ cond_wait(THD *thd, struct timespec *abstime, const PSI_stage_info *stage,
+ const char *src_func, const char *src_file, uint src_line);
void
find_n_remove_event(LEX_STRING db, LEX_STRING name);
=== modified file 'sql/event_scheduler.cc'
--- a/sql/event_scheduler.cc 2011-07-03 23:56:47 +0000
+++ b/sql/event_scheduler.cc 2011-07-21 16:27:14 +0000
@@ -38,8 +38,8 @@
#define LOCK_DATA() lock_data(SCHED_FUNC, __LINE__)
#define UNLOCK_DATA() unlock_data(SCHED_FUNC, __LINE__)
-#define COND_STATE_WAIT(mythd, abstime, msg) \
- cond_wait(mythd, abstime, msg, SCHED_FUNC, __LINE__)
+#define COND_STATE_WAIT(mythd, abstime, stage) \
+ cond_wait(mythd, abstime, stage, SCHED_FUNC, __FILE__, __LINE__)
extern pthread_attr_t connection_attrib;
@@ -622,7 +622,7 @@ Event_scheduler::stop()
{
/* Synchronously wait until the scheduler stops. */
while (state != INITIALIZED)
- COND_STATE_WAIT(thd, NULL, "Waiting for the scheduler to stop");
+ COND_STATE_WAIT(thd, NULL, &stage_waiting_for_scheduler_to_stop);
goto end;
}
@@ -657,7 +657,7 @@ Event_scheduler::stop()
/* thd could be 0x0, when shutting down */
sql_print_information("Event Scheduler: "
"Waiting for the scheduler thread to reply");
- COND_STATE_WAIT(thd, NULL, "Waiting scheduler to stop");
+ COND_STATE_WAIT(thd, NULL, &stage_waiting_for_scheduler_to_stop);
} while (state == STOPPING);
DBUG_PRINT("info", ("Scheduler thread has cleaned up. Set state to INIT"));
sql_print_information("Event Scheduler: Stopped");
@@ -751,16 +751,17 @@ Event_scheduler::unlock_data(const char
*/
void
-Event_scheduler::cond_wait(THD *thd, struct timespec *abstime, const char* msg,
- const char *func, uint line)
+Event_scheduler::cond_wait(THD *thd, struct timespec *abstime, const PSI_stage_info *stage,
+ const char *src_func, const char *src_file, uint src_line)
{
DBUG_ENTER("Event_scheduler::cond_wait");
waiting_on_cond= TRUE;
- mutex_last_unlocked_at_line= line;
+ mutex_last_unlocked_at_line= src_line;
mutex_scheduler_data_locked= FALSE;
- mutex_last_unlocked_in_func= func;
+ mutex_last_unlocked_in_func= src_func;
if (thd)
- thd->enter_cond(&COND_state, &LOCK_scheduler_state, msg);
+ thd->enter_cond(&COND_state, &LOCK_scheduler_state, stage,
+ NULL, src_func, src_file, src_line);
DBUG_PRINT("info", ("mysql_cond_%swait", abstime? "timed":""));
if (!abstime)
@@ -773,11 +774,11 @@ Event_scheduler::cond_wait(THD *thd, str
This will free the lock so we need to relock. Not the best thing to
do but we need to obey cond_wait()
*/
- thd->exit_cond("");
+ thd->exit_cond(NULL, src_func, src_file, src_line);
LOCK_DATA();
}
- mutex_last_locked_in_func= func;
- mutex_last_locked_at_line= line;
+ mutex_last_locked_in_func= src_func;
+ mutex_last_locked_at_line= src_line;
mutex_scheduler_data_locked= TRUE;
waiting_on_cond= FALSE;
DBUG_VOID_RETURN;
=== modified file 'sql/event_scheduler.h'
--- a/sql/event_scheduler.h 2011-06-30 15:50:45 +0000
+++ b/sql/event_scheduler.h 2011-07-21 16:27:14 +0000
@@ -114,8 +114,8 @@ private:
unlock_data(const char *func, uint line);
void
- cond_wait(THD *thd, struct timespec *abstime, const char* msg,
- const char *func, uint line);
+ cond_wait(THD *thd, struct timespec *abstime, const PSI_stage_info *stage,
+ const char *src_func, const char *src_file, uint src_line);
mysql_mutex_t LOCK_scheduler_state;
=== modified file 'sql/events.cc'
--- a/sql/events.cc 2011-07-04 00:25:46 +0000
+++ b/sql/events.cc 2011-07-21 16:27:14 +0000
@@ -945,6 +945,19 @@ static PSI_thread_info all_events_thread
{ &key_thread_event_scheduler, "event_scheduler", PSI_FLAG_GLOBAL},
{ &key_thread_event_worker, "event_worker", 0}
};
+#endif /* HAVE_PSI_INTERFACE */
+
+PSI_stage_info stage_waiting_on_empty_queue= { 0, "Waiting on empty queue", 0};
+PSI_stage_info stage_waiting_for_next_activation= { 0, "Waiting for next activation", 0};
+PSI_stage_info stage_waiting_for_scheduler_to_stop= { 0, "Waiting for the scheduler to stop", 0};
+
+#ifdef HAVE_PSI_INTERFACE
+PSI_stage_info *all_events_stages[]=
+{
+ & stage_waiting_on_empty_queue,
+ & stage_waiting_for_next_activation,
+ & stage_waiting_for_scheduler_to_stop
+};
static void init_events_psi_keys(void)
{
@@ -959,6 +972,10 @@ static void init_events_psi_keys(void)
count= array_elements(all_events_threads);
mysql_thread_register(category, all_events_threads, count);
+
+ count= array_elements(all_events_stages);
+ mysql_stage_register(category, all_events_stages, count);
+
}
#endif /* HAVE_PSI_INTERFACE */
=== modified file 'sql/events.h'
--- a/sql/events.h 2010-11-18 16:34:56 +0000
+++ b/sql/events.h 2011-07-21 16:27:14 +0000
@@ -31,6 +31,11 @@ extern PSI_cond_key key_event_scheduler_
extern PSI_thread_key key_thread_event_scheduler, key_thread_event_worker;
#endif /* HAVE_PSI_INTERFACE */
+/* Always defined, for SHOW PROCESSLIST. */
+extern PSI_stage_info stage_waiting_on_empty_queue;
+extern PSI_stage_info stage_waiting_for_next_activation;
+extern PSI_stage_info stage_waiting_for_scheduler_to_stop;
+
#include "sql_string.h" /* LEX_STRING */
#include "my_time.h" /* interval_type */
=== modified file 'sql/mdl.cc'
--- a/sql/mdl.cc 2011-06-30 15:50:45 +0000
+++ b/sql/mdl.cc 2011-07-21 16:27:14 +0000
@@ -20,6 +20,7 @@
#include <mysqld_error.h>
#include <mysql/plugin.h>
#include <mysql/service_thd_wait.h>
+#include <mysql/psi/mysql_stage.h>
#ifdef HAVE_PSI_INTERFACE
static PSI_mutex_key key_MDL_map_mutex;
@@ -63,6 +64,8 @@ static void init_mdl_psi_keys(void)
count= array_elements(all_mdl_conds);
mysql_cond_register("sql", all_mdl_conds, count);
+
+ MDL_key::init_psi_keys();
}
#endif /* HAVE_PSI_INTERFACE */
@@ -72,18 +75,35 @@ static void init_mdl_psi_keys(void)
belonging to certain namespace.
*/
-const char *MDL_key::m_namespace_to_wait_state_name[NAMESPACE_END]=
+PSI_stage_info MDL_key::m_namespace_to_wait_state_name[NAMESPACE_END]=
{
- "Waiting for global read lock",
- "Waiting for schema metadata lock",
- "Waiting for table metadata lock",
- "Waiting for stored function metadata lock",
- "Waiting for stored procedure metadata lock",
- "Waiting for trigger metadata lock",
- "Waiting for event metadata lock",
- "Waiting for commit lock"
+ {0, "Waiting for global read lock", 0},
+ {0, "Waiting for schema metadata lock", 0},
+ {0, "Waiting for table metadata lock", 0},
+ {0, "Waiting for stored function metadata lock", 0},
+ {0, "Waiting for stored procedure metadata lock", 0},
+ {0, "Waiting for trigger metadata lock", 0},
+ {0, "Waiting for event metadata lock", 0},
+ {0, "Waiting for commit lock", 0}
};
+#ifdef HAVE_PSI_INTERFACE
+void MDL_key::init_psi_keys()
+{
+ int i;
+ int count;
+ PSI_stage_info *info;
+
+ count= array_elements(MDL_key::m_namespace_to_wait_state_name);
+ for (i= 0; i<count; i++)
+ {
+ /* mysql_stage_register wants an array of pointers, registering 1 by 1. */
+ info= & MDL_key::m_namespace_to_wait_state_name[i];
+ mysql_stage_register("sql", &info, 1);
+ }
+}
+#endif
+
static bool mdl_initialized= 0;
@@ -962,16 +982,17 @@ void MDL_wait::reset_status()
MDL_wait::enum_wait_status
MDL_wait::timed_wait(MDL_context_owner *owner, struct timespec *abs_timeout,
- bool set_status_on_timeout, const char *wait_state_name)
+ bool set_status_on_timeout,
+ const PSI_stage_info *wait_state_name)
{
- const char *old_msg;
+ PSI_stage_info old_stage;
enum_wait_status result;
int wait_result= 0;
mysql_mutex_lock(&m_LOCK_wait_status);
- old_msg= owner->enter_cond(&m_COND_wait_status, &m_LOCK_wait_status,
- wait_state_name);
+ owner->ENTER_COND(&m_COND_wait_status, &m_LOCK_wait_status,
+ wait_state_name, & old_stage);
thd_wait_begin(NULL, THD_WAIT_META_DATA_LOCK);
while (!m_wait_status && !owner->is_killed() &&
wait_result != ETIMEDOUT && wait_result != ETIME)
@@ -1002,7 +1023,7 @@ MDL_wait::timed_wait(MDL_context_owner *
}
result= m_wait_status;
- owner->exit_cond(old_msg);
+ owner->EXIT_COND(& old_stage);
return result;
}
=== modified file 'sql/mdl.h'
--- a/sql/mdl.h 2011-07-04 00:25:46 +0000
+++ b/sql/mdl.h 2011-07-21 16:27:14 +0000
@@ -35,6 +35,23 @@ class MDL_context;
class MDL_lock;
class MDL_ticket;
+/**
+ @def ENTER_COND(C, M, S, O)
+ Start a wait on a condition.
+ @param C the condition to wait on
+ @param M the associated mutex
+ @param S the new stage to enter
+ @param O the previous stage
+ @sa EXIT_COND().
+*/
+#define ENTER_COND(C, M, S, O) enter_cond(C, M, S, O, __func__, __FILE__, __LINE__)
+
+/**
+ @def EXIT_COND(S)
+ End a wait on a condition
+ @param S the new stage to enter
+*/
+#define EXIT_COND(S) exit_cond(S, __func__, __FILE__, __LINE__)
/**
An interface to separate the MDL module from the THD, and the rest of the
@@ -47,11 +64,38 @@ public:
virtual ~MDL_context_owner() {}
/**
- @see THD::enter_cond() and THD::exit_cond()
- */
- virtual const char* enter_cond(mysql_cond_t *cond, mysql_mutex_t* mutex,
- const char* msg) = 0;
- virtual void exit_cond(const char* old_msg) = 0;
+ Enter a condition wait.
+ For @c enter_cond() / @c exit_cond() to work the mutex must be held before
+ @c enter_cond(); this mutex is then released by @c exit_cond().
+ Usage must be: lock mutex; enter_cond(); your code; exit_cond().
+ @param cond the condition to wait on
+ @param mutex the associated mutex
+ @param [in] stage the stage to enter, or NULL
+ @param [out] old_stage the previous stage, or NULL
+ @param src_function function name of the caller
+ @param src_file file name of the caller
+ @param src_line line number of the caller
+ @sa ENTER_COND(), THD::enter_cond()
+ @sa EXIT_COND(), THD::exit_cond()
+ */
+ virtual void enter_cond(mysql_cond_t *cond, mysql_mutex_t *mutex,
+ const PSI_stage_info *stage, PSI_stage_info *old_stage,
+ const char *src_function, const char *src_file,
+ int src_line) = 0;
+
+ /**
+ @def EXIT_COND(S)
+ End a wait on a condition
+ @param [in] stage the new stage to enter
+ @param src_function function name of the caller
+ @param src_file file name of the caller
+ @param src_line line number of the caller
+ @sa ENTER_COND(), THD::enter_cond()
+ @sa EXIT_COND(), THD::exit_cond()
+ */
+ virtual void exit_cond(const PSI_stage_info *stage,
+ const char *src_function, const char *src_file,
+ int src_line) = 0;
/**
Has the owner thread been killed?
*/
@@ -223,6 +267,10 @@ enum enum_mdl_duration {
class MDL_key
{
public:
+#ifdef HAVE_PSI_INTERFACE
+ static void init_psi_keys();
+#endif
+
/**
Object namespaces.
Sic: when adding a new member to this enum make sure to
@@ -318,16 +366,16 @@ public:
Get thread state name to be used in case when we have to
wait on resource identified by key.
*/
- const char * get_wait_state_name() const
+ const PSI_stage_info * get_wait_state_name() const
{
- return m_namespace_to_wait_state_name[(int)mdl_namespace()];
+ return & m_namespace_to_wait_state_name[(int)mdl_namespace()];
}
private:
uint16 m_length;
uint16 m_db_name_length;
char m_ptr[MAX_MDLKEY_LENGTH];
- static const char * m_namespace_to_wait_state_name[NAMESPACE_END];
+ static PSI_stage_info m_namespace_to_wait_state_name[NAMESPACE_END];
private:
MDL_key(const MDL_key &); /* not implemented */
MDL_key &operator=(const MDL_key &); /* not implemented */
@@ -628,7 +676,8 @@ public:
void reset_status();
enum_wait_status timed_wait(MDL_context_owner *owner,
struct timespec *abs_timeout,
- bool signal_timeout, const char *wait_state_name);
+ bool signal_timeout,
+ const PSI_stage_info *wait_state_name);
private:
/**
Condvar which is used for waiting until this context's pending
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc 2011-07-19 15:11:15 +0000
+++ b/sql/mysqld.cc 2011-07-21 16:27:14 +0000
@@ -4147,7 +4147,7 @@ static int init_server_components()
}
}
- proc_info_hook= set_thd_proc_info;
+ proc_info_hook= set_thd_stage_info;
#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
/*
@@ -8481,6 +8481,7 @@ PSI_stage_info stage_logging_slow_query=
PSI_stage_info stage_making_temp_file_append_before_load_data= { 0, "Making temporary file (append) before replaying LOAD DATA INFILE.", 0};
PSI_stage_info stage_making_temp_file_create_before_load_data= { 0, "Making temporary file (create) before replaying LOAD DATA INFILE.", 0};
PSI_stage_info stage_manage_keys= { 0, "manage keys", 0};
+PSI_stage_info stage_master_has_sent_all_binlog_to_slave= { 0, "Master has sent all binlog to slave; waiting for binlog to be updated", 0};
PSI_stage_info stage_opening_tables= { 0, "Opening tables", 0};
PSI_stage_info stage_optimizing= { 0, "optimizing", 0};
PSI_stage_info stage_preparing= { 0, "preparing", 0};
@@ -8500,6 +8501,7 @@ PSI_stage_info stage_sending_binlog_even
PSI_stage_info stage_sending_cached_result_to_client= { 0, "sending cached result to client", 0};
PSI_stage_info stage_sending_data= { 0, "Sending data", 0};
PSI_stage_info stage_setup= { 0, "setup", 0};
+PSI_stage_info stage_slave_has_read_all_relay_log= { 0, "Slave has read all relay log; waiting for the slave I/O thread to update it", 0};
PSI_stage_info stage_sorting_for_group= { 0, "Sorting for group", 0};
PSI_stage_info stage_sorting_for_order= { 0, "Sorting for order", 0};
PSI_stage_info stage_sorting_result= { 0, "Sorting result", 0};
@@ -8523,8 +8525,13 @@ PSI_stage_info stage_waiting_for_handler
PSI_stage_info stage_waiting_for_insert= { 0, "Waiting for INSERT", 0};
PSI_stage_info stage_waiting_for_master_to_send_event= { 0, "Waiting for master to send event", 0};
PSI_stage_info stage_waiting_for_master_update= { 0, "Waiting for master update", 0};
+PSI_stage_info stage_waiting_for_relay_log_space= { 0, "Waiting for the slave SQL thread to free enough relay log space", 0};
PSI_stage_info stage_waiting_for_slave_mutex_on_exit= { 0, "Waiting for slave mutex on exit", 0};
+PSI_stage_info stage_waiting_for_slave_thread_to_start= { 0, "Waiting for slave thread to start", 0};
+PSI_stage_info stage_waiting_for_table_flush= { 0, "Waiting for table flush", 0};
+PSI_stage_info stage_waiting_for_query_cache_lock= { 0, "Waiting for query cache lock", 0};
PSI_stage_info stage_waiting_for_the_next_event_in_relay_log= { 0, "Waiting for the next event in relay log", 0};
+PSI_stage_info stage_waiting_for_the_slave_thread_to_advance_position= { 0, "Waiting for the slave SQL thread to advance position", 0};
PSI_stage_info stage_waiting_to_finalize_termination= { 0, "Waiting to finalize termination", 0};
PSI_stage_info stage_waiting_to_get_readlock= { 0, "Waiting to get readlock", 0};
@@ -8573,6 +8580,7 @@ PSI_stage_info *all_server_stages[]=
& stage_making_temp_file_append_before_load_data,
& stage_making_temp_file_create_before_load_data,
& stage_manage_keys,
+ & stage_master_has_sent_all_binlog_to_slave,
& stage_opening_tables,
& stage_optimizing,
& stage_preparing,
@@ -8592,6 +8600,7 @@ PSI_stage_info *all_server_stages[]=
& stage_sending_cached_result_to_client,
& stage_sending_data,
& stage_setup,
+ & stage_slave_has_read_all_relay_log,
& stage_sorting_for_group,
& stage_sorting_for_order,
& stage_sorting_result,
@@ -8616,7 +8625,11 @@ PSI_stage_info *all_server_stages[]=
& stage_waiting_for_master_to_send_event,
& stage_waiting_for_master_update,
& stage_waiting_for_slave_mutex_on_exit,
+ & stage_waiting_for_slave_thread_to_start,
+ & stage_waiting_for_table_flush,
+ & stage_waiting_for_query_cache_lock,
& stage_waiting_for_the_next_event_in_relay_log,
+ & stage_waiting_for_the_slave_thread_to_advance_position,
& stage_waiting_to_finalize_termination,
& stage_waiting_to_get_readlock
};
=== modified file 'sql/mysqld.h'
--- a/sql/mysqld.h 2011-07-19 15:11:15 +0000
+++ b/sql/mysqld.h 2011-07-21 16:27:14 +0000
@@ -354,6 +354,7 @@ extern PSI_stage_info stage_logging_slow
extern PSI_stage_info stage_making_temp_file_append_before_load_data;
extern PSI_stage_info stage_making_temp_file_create_before_load_data;
extern PSI_stage_info stage_manage_keys;
+extern PSI_stage_info stage_master_has_sent_all_binlog_to_slave;
extern PSI_stage_info stage_opening_tables;
extern PSI_stage_info stage_optimizing;
extern PSI_stage_info stage_preparing;
@@ -373,6 +374,7 @@ extern PSI_stage_info stage_sending_binl
extern PSI_stage_info stage_sending_cached_result_to_client;
extern PSI_stage_info stage_sending_data;
extern PSI_stage_info stage_setup;
+extern PSI_stage_info stage_slave_has_read_all_relay_log;
extern PSI_stage_info stage_sorting_for_group;
extern PSI_stage_info stage_sorting_for_order;
extern PSI_stage_info stage_sorting_result;
@@ -396,8 +398,13 @@ extern PSI_stage_info stage_waiting_for_
extern PSI_stage_info stage_waiting_for_insert;
extern PSI_stage_info stage_waiting_for_master_to_send_event;
extern PSI_stage_info stage_waiting_for_master_update;
+extern PSI_stage_info stage_waiting_for_relay_log_space;
extern PSI_stage_info stage_waiting_for_slave_mutex_on_exit;
+extern PSI_stage_info stage_waiting_for_slave_thread_to_start;
+extern PSI_stage_info stage_waiting_for_query_cache_lock;
+extern PSI_stage_info stage_waiting_for_table_flush;
extern PSI_stage_info stage_waiting_for_the_next_event_in_relay_log;
+extern PSI_stage_info stage_waiting_for_the_slave_thread_to_advance_position;
extern PSI_stage_info stage_waiting_to_finalize_termination;
extern PSI_stage_info stage_waiting_to_get_readlock;
=== modified file 'sql/replication.h'
--- a/sql/replication.h 2011-06-30 15:50:45 +0000
+++ b/sql/replication.h 2011-07-21 16:27:14 +0000
@@ -470,10 +470,19 @@ MYSQL *rpl_connect_master(MYSQL *mysql);
@param cond The condition the thread is going to wait for
@param mutex The mutex associated with the condition, this must be
held before call this function
- @param msg The new process message for the thread
+ @param stage The new process message for the thread
+ @param old_stage The old process message for the thread
+ @param src_function The caller source function name
+ @param src_file The caller source file name
+ @param src_line The caller source line number
*/
-const char* thd_enter_cond(MYSQL_THD thd, mysql_cond_t *cond,
- mysql_mutex_t *mutex, const char *msg);
+void thd_enter_cond(MYSQL_THD thd, mysql_cond_t *cond, mysql_mutex_t *mutex,
+ const PSI_stage_info *stage, PSI_stage_info *old_stage,
+ const char *src_function, const char *src_file,
+ int src_line);
+
+#define THD_ENTER_COND(P1, P2, P3, P4, P5) \
+ thd_enter_cond(P1, P2, P3, P4, P5, __func__, __FILE__, __LINE__)
/**
Set thread leaving a condition
@@ -482,10 +491,18 @@ const char* thd_enter_cond(MYSQL_THD thd
condition.
@param thd The thread entering the condition, NULL means current thread
- @param old_msg The process message, ususally this should be the old process
+ @param stage The process message, ususally this should be the old process
message before calling @f thd_enter_cond
+ @param src_function The caller source function name
+ @param src_file The caller source file name
+ @param src_line The caller source line number
*/
-void thd_exit_cond(MYSQL_THD thd, const char *old_msg);
+void thd_exit_cond(MYSQL_THD thd, const PSI_stage_info *stage,
+ const char *src_function, const char *src_file,
+ int src_line);
+
+#define THD_EXIT_COND(P1, P2) \
+ thd_exit_cond(P1, P2, __func__, __FILE__, __LINE__)
/**
Get the value of user variable as an integer.
=== modified file 'sql/rpl_master.cc'
--- a/sql/rpl_master.cc 2011-06-09 08:58:41 +0000
+++ b/sql/rpl_master.cc 2011-07-21 16:27:14 +0000
@@ -1100,7 +1100,7 @@ impossible position";
#ifndef DBUG_OFF
ulong hb_info_counter= 0;
#endif
- const char* old_msg= thd->proc_info;
+ PSI_stage_info old_stage;
signal_cnt= mysql_bin_log.signal_cnt;
do
{
@@ -1109,9 +1109,9 @@ impossible position";
DBUG_ASSERT(heartbeat_ts && heartbeat_period != 0);
set_timespec_nsec(*heartbeat_ts, heartbeat_period);
}
- thd->enter_cond(log_cond, log_lock,
- "Master has sent all binlog to slave; "
- "waiting for binlog to be updated");
+ thd->ENTER_COND(log_cond, log_lock,
+ &stage_master_has_sent_all_binlog_to_slave,
+ &old_stage);
ret= mysql_bin_log.wait_for_update_bin_log(thd, heartbeat_ts);
DBUG_ASSERT(ret == 0 || (heartbeat_period != 0 && coord != NULL));
if (ret == ETIMEDOUT || ret == ETIME)
@@ -1128,14 +1128,14 @@ impossible position";
/* reset transmit packet for the heartbeat event */
if (reset_transmit_packet(thd, flags, &ev_offset, &errmsg))
{
- thd->exit_cond(old_msg);
+ thd->EXIT_COND(&old_stage);
goto err;
}
if (send_heartbeat_event(net, packet, coord, current_checksum_alg))
{
errmsg = "Failed on my_net_write()";
my_errno= ER_UNKNOWN_ERROR;
- thd->exit_cond(old_msg);
+ thd->EXIT_COND(&old_stage);
goto err;
}
}
@@ -1144,7 +1144,7 @@ impossible position";
DBUG_PRINT("wait",("binary log received update or a broadcast signal caught"));
}
} while (signal_cnt == mysql_bin_log.signal_cnt && !thd->killed);
- thd->exit_cond(old_msg);
+ thd->EXIT_COND(&old_stage);
}
break;
=== modified file 'sql/rpl_rli.cc'
--- a/sql/rpl_rli.cc 2011-06-30 15:50:45 +0000
+++ b/sql/rpl_rli.cc 2011-07-21 16:27:14 +0000
@@ -410,7 +410,7 @@ int Relay_log_info::wait_for_pos(THD* th
ulong init_abort_pos_wait;
int error=0;
struct timespec abstime; // for timeout checking
- const char *msg;
+ PSI_stage_info old_stage;
DBUG_ENTER("Relay_log_info::wait_for_pos");
if (!inited)
@@ -421,9 +421,9 @@ int Relay_log_info::wait_for_pos(THD* th
set_timespec(abstime,timeout);
mysql_mutex_lock(&data_lock);
- msg= thd->enter_cond(&data_cond, &data_lock,
- "Waiting for the slave SQL thread to "
- "advance position");
+ thd->ENTER_COND(&data_cond, &data_lock,
+ &stage_waiting_for_the_slave_thread_to_advance_position,
+ &old_stage);
/*
This function will abort when it notices that some CHANGE MASTER or
RESET MASTER has changed the master info.
@@ -567,7 +567,7 @@ int Relay_log_info::wait_for_pos(THD* th
}
err:
- thd->exit_cond(msg);
+ thd->EXIT_COND(&old_stage);
DBUG_PRINT("exit",("killed: %d abort: %d slave_running: %d \
improper_arguments: %d timed_out: %d",
thd->killed_errno(),
=== modified file 'sql/rpl_slave.cc'
--- a/sql/rpl_slave.cc 2011-07-20 10:24:14 +0000
+++ b/sql/rpl_slave.cc 2011-07-21 16:27:14 +0000
@@ -852,8 +852,10 @@ int start_slave_thread(
while (start_id == *slave_run_id && thd != NULL)
{
DBUG_PRINT("sleep",("Waiting for slave thread to start"));
- const char *old_msg= thd->enter_cond(start_cond, cond_lock,
- "Waiting for slave thread to start");
+ PSI_stage_info saved_stage= {0, "", 0};
+ thd->ENTER_COND(start_cond, cond_lock,
+ & stage_waiting_for_slave_thread_to_start,
+ & saved_stage);
/*
It is not sufficient to test this at loop bottom. We must test
it after registering the mutex in enter_cond(). If the kill
@@ -863,7 +865,7 @@ int start_slave_thread(
*/
if (!thd->killed)
mysql_cond_wait(start_cond, cond_lock);
- thd->exit_cond(old_msg);
+ thd->EXIT_COND(& saved_stage);
mysql_mutex_lock(cond_lock); // re-acquire it as exit_cond() released
if (thd->killed)
{
@@ -1819,20 +1821,20 @@ static bool wait_for_relay_log_space(Rel
{
bool slave_killed=0;
Master_info* mi = rli->mi;
- const char *save_proc_info;
+ PSI_stage_info old_stage;
THD* thd = mi->info_thd;
DBUG_ENTER("wait_for_relay_log_space");
mysql_mutex_lock(&rli->log_space_lock);
- save_proc_info= thd->enter_cond(&rli->log_space_cond,
- &rli->log_space_lock,
- "\
-Waiting for the slave SQL thread to free enough relay log space");
+ thd->ENTER_COND(&rli->log_space_cond,
+ &rli->log_space_lock,
+ &stage_waiting_for_relay_log_space,
+ &old_stage);
while (rli->log_space_limit < rli->log_space_total &&
!(slave_killed=io_slave_killed(thd,mi)) &&
!rli->ignore_log_space_limit)
mysql_cond_wait(&rli->log_space_cond, &rli->log_space_lock);
- thd->exit_cond(save_proc_info);
+ thd->EXIT_COND(&old_stage);
DBUG_RETURN(slave_killed);
}
@@ -2079,11 +2081,11 @@ bool show_master_info(THD* thd, Master_i
non-volotile members like mi->info_thd, which is guarded by the mutex.
*/
mysql_mutex_lock(&mi->run_lock);
- protocol->store(mi->info_thd ? mi->info_thd->proc_info : "", &my_charset_bin);
+ protocol->store(mi->info_thd ? mi->info_thd->get_proc_info() : "", &my_charset_bin);
mysql_mutex_unlock(&mi->run_lock);
mysql_mutex_lock(&mi->rli->run_lock);
- const char *slave_sql_running_state= mi->rli->info_thd ? mi->rli->info_thd->proc_info : "";
+ const char *slave_sql_running_state= mi->rli->info_thd ? mi->rli->info_thd->get_proc_info() : "";
mysql_mutex_unlock(&mi->rli->run_lock);
mysql_mutex_lock(&mi->data_lock);
@@ -2371,7 +2373,6 @@ static inline bool slave_sleep(THD *thd,
{
bool ret;
struct timespec abstime;
- const char *old_proc_info;
mysql_mutex_t *lock= &info->sleep_lock;
mysql_cond_t *cond= &info->sleep_cond;
@@ -2379,7 +2380,7 @@ static inline bool slave_sleep(THD *thd,
set_timespec(abstime, seconds);
mysql_mutex_lock(lock);
- old_proc_info= thd->enter_cond(cond, lock, thd->proc_info);
+ thd->ENTER_COND(cond, lock, NULL, NULL);
while (! (ret= func(thd, info)))
{
@@ -2389,7 +2390,7 @@ static inline bool slave_sleep(THD *thd,
}
/* Implicitly unlocks the mutex. */
- thd->exit_cond(old_proc_info);
+ thd->EXIT_COND(NULL);
return ret;
}
=== modified file 'sql/sql_cache.cc'
--- a/sql/sql_cache.cc 2011-06-30 15:50:45 +0000
+++ b/sql/sql_cache.cc 2011-07-21 16:27:14 +0000
@@ -408,23 +408,28 @@ TODO list:
struct Query_cache_wait_state
{
THD *m_thd;
- const char *m_proc_info;
+ PSI_stage_info m_old_stage;
+ const char *m_func;
+ const char *m_file;
+ int m_line;
Query_cache_wait_state(THD *thd, const char *func,
const char *file, unsigned int line)
: m_thd(thd),
- m_proc_info(NULL)
+ m_old_stage(),
+ m_func(func), m_file(file), m_line(line)
{
if (m_thd)
- m_proc_info= set_thd_proc_info(m_thd,
- "Waiting for query cache lock",
- func, file, line);
+ set_thd_stage_info(m_thd,
+ &stage_waiting_for_query_cache_lock,
+ &m_old_stage,
+ m_func, m_file, m_line);
}
~Query_cache_wait_state()
{
if (m_thd)
- set_thd_proc_info(m_thd, m_proc_info, NULL, NULL, 0);
+ set_thd_stage_info(m_thd, &m_old_stage, NULL, m_func, m_file, m_line);
}
};
=== modified file 'sql/sql_class.cc'
--- a/sql/sql_class.cc 2011-07-20 07:19:42 +0000
+++ b/sql/sql_class.cc 2011-07-21 16:27:14 +0000
@@ -495,42 +495,83 @@ const char *set_thd_proc_info(void *thd_
const char *calling_file,
const unsigned int calling_line)
{
- THD *thd= (THD *) thd_arg;
+ PSI_stage_info old_stage;
+ PSI_stage_info new_stage;
- if (!thd)
+ old_stage.m_key= 0;
+ old_stage.m_name= info;
+
+ set_thd_stage_info(thd_arg, & old_stage, & new_stage,
+ calling_function, calling_file, calling_line);
+
+ return new_stage.m_name;
+}
+
+extern "C"
+void set_thd_stage_info(void *opaque_thd,
+ const PSI_stage_info *new_stage,
+ PSI_stage_info *old_stage,
+ const char *calling_func,
+ const char *calling_file,
+ const unsigned int calling_line)
+{
+ THD *thd= (THD*) opaque_thd;
+ if (thd == NULL)
thd= current_thd;
- const char *old_info= thd->proc_info;
- DBUG_PRINT("proc_info", ("%s:%d %s", calling_file, calling_line, info));
+ thd->enter_stage(new_stage, old_stage, calling_func, calling_file, calling_line);
+}
+
+void THD::enter_stage(const PSI_stage_info *new_stage,
+ PSI_stage_info *old_stage,
+ const char *calling_func,
+ const char *calling_file,
+ const unsigned int calling_line)
+{
+ DBUG_PRINT("THD::enter_stage", ("%s:%d", calling_file, calling_line));
+
+ if (old_stage != NULL)
+ {
+ old_stage->m_key= m_current_stage_key;
+ old_stage->m_name= proc_info;
+ }
+
+ if (new_stage != NULL)
+ {
+ const char *msg= new_stage->m_name;
#if defined(ENABLED_PROFILING)
- thd->profiling.status_change(info,
- calling_function, calling_file, calling_line);
+ profiling.status_change(msg, calling_func, calling_file, calling_line);
#endif
- thd->proc_info= info;
+
+ m_current_stage_key= new_stage->m_key;
+ proc_info= msg;
+
#ifdef HAVE_PSI_THREAD_INTERFACE
- PSI_CALL(set_thread_state)(info);
+ PSI_CALL(set_thread_state)(msg);
+ MYSQL_SET_STAGE(m_current_stage_key, calling_file, calling_line);
#endif
- return old_info;
+ }
+ return;
}
extern "C"
-const char* thd_enter_cond(MYSQL_THD thd, mysql_cond_t *cond,
- mysql_mutex_t *mutex, const char *msg)
+void thd_enter_cond(MYSQL_THD thd, mysql_cond_t *cond, mysql_mutex_t *mutex,
+ const PSI_stage_info *stage, PSI_stage_info *old_stage)
{
if (!thd)
thd= current_thd;
- return thd->enter_cond(cond, mutex, msg);
+ return thd->ENTER_COND(cond, mutex, stage, old_stage);
}
extern "C"
-void thd_exit_cond(MYSQL_THD thd, const char *old_msg)
+void thd_exit_cond(MYSQL_THD thd, const PSI_stage_info *stage)
{
if (!thd)
thd= current_thd;
- thd->exit_cond(old_msg);
+ thd->EXIT_COND(stage);
return;
}
=== modified file 'sql/sql_class.h'
--- a/sql/sql_class.h 2011-07-20 10:29:12 +0000
+++ b/sql/sql_class.h 2011-07-21 16:27:14 +0000
@@ -38,6 +38,30 @@
#include <mysql/psi/mysql_stage.h>
#include <mysql/psi/mysql_statement.h>
+/**
+ The meat of thd_proc_info(THD*, char*), a macro that packs the last
+ three calling-info parameters.
+*/
+extern "C"
+const char *set_thd_proc_info(void *thd_arg, const char *info,
+ const char *calling_func,
+ const char *calling_file,
+ const unsigned int calling_line);
+
+#define thd_proc_info(thd, msg) \
+ set_thd_proc_info(thd, msg, __func__, __FILE__, __LINE__)
+
+extern "C"
+void set_thd_stage_info(void *thd,
+ const PSI_stage_info *new_stage,
+ PSI_stage_info *old_stage,
+ const char *calling_func,
+ const char *calling_file,
+ const unsigned int calling_line);
+
+#define THD_STAGE_INFO(thd, stage) \
+ (thd)->enter_stage(& stage, NULL, __func__, __FILE__, __LINE__)
+
class Reprepare_observer;
class Relay_log_info;
@@ -1793,6 +1817,19 @@ public:
*/
const char *proc_info;
+private:
+ unsigned int m_current_stage_key;
+
+public:
+ void enter_stage(const PSI_stage_info *stage,
+ PSI_stage_info *old_stage,
+ const char *calling_func,
+ const char *calling_file,
+ const unsigned int calling_line);
+
+ const char *get_proc_info() const
+ { return proc_info; }
+
/*
Used in error messages to tell user in what part of MySQL we found an
error. E. g. when where= "having clause", if fix_fields() fails, user
@@ -2562,22 +2599,20 @@ public:
// Begin implementation of MDL_context_owner interface.
- /*
- For enter_cond() / exit_cond() to work the mutex must be got before
- enter_cond(); this mutex is then released by exit_cond().
- Usage must be: lock mutex; enter_cond(); your code; exit_cond().
- */
- inline const char* enter_cond(mysql_cond_t *cond, mysql_mutex_t* mutex,
- const char* msg)
+ inline void
+ enter_cond(mysql_cond_t *cond, mysql_mutex_t* mutex,
+ const PSI_stage_info *stage, PSI_stage_info *old_stage,
+ const char *src_function, const char *src_file,
+ int src_line)
{
- const char* old_msg = proc_info;
mysql_mutex_assert_owner(mutex);
mysys_var->current_mutex = mutex;
mysys_var->current_cond = cond;
- proc_info = msg;
- return old_msg;
+ enter_stage(stage, old_stage, src_function, src_file, src_line);
}
- inline void exit_cond(const char* old_msg)
+ inline void exit_cond(const PSI_stage_info *stage,
+ const char *src_function, const char *src_file,
+ int src_line)
{
/*
Putting the mutex unlock in thd->exit_cond() ensures that
@@ -2589,7 +2624,7 @@ public:
mysql_mutex_lock(&mysys_var->mutex);
mysys_var->current_mutex = 0;
mysys_var->current_cond = 0;
- proc_info = old_msg;
+ enter_stage(stage, NULL, src_function, src_file, src_line);
mysql_mutex_unlock(&mysys_var->mutex);
return;
}
@@ -4147,23 +4182,4 @@ inline bool add_group_to_list(THD *thd,
#endif /* MYSQL_SERVER */
-/**
- The meat of thd_proc_info(THD*, char*), a macro that packs the last
- three calling-info parameters.
-*/
-extern "C"
-const char *set_thd_proc_info(void *thd_arg, const char *info,
- const char *calling_func,
- const char *calling_file,
- const unsigned int calling_line);
-
-#define thd_proc_info(thd, msg) \
- set_thd_proc_info(thd, msg, __func__, __FILE__, __LINE__)
-
-#define THD_STAGE_INFO(thd, stage) \
- { \
- set_thd_proc_info(thd, stage.m_name, __func__, __FILE__, __LINE__); \
- MYSQL_SET_STAGE(stage.m_key, __FILE__, __LINE__); \
- }
-
#endif /* SQL_CLASS_INCLUDED */
=== modified file 'sql/table.cc'
--- a/sql/table.cc 2011-07-19 15:11:15 +0000
+++ b/sql/table.cc 2011-07-21 16:27:14 +0000
@@ -3305,7 +3305,7 @@ bool TABLE_SHARE::wait_for_old_version(T
mdl_context->find_deadlock();
wait_status= mdl_context->m_wait.timed_wait(thd, abstime, TRUE,
- "Waiting for table flush");
+ &stage_waiting_for_table_flush);
mdl_context->done_waiting_for();
=== modified file 'storage/perfschema/pfs_server.h'
--- a/storage/perfschema/pfs_server.h 2011-06-30 15:50:45 +0000
+++ b/storage/perfschema/pfs_server.h 2011-07-21 16:27:14 +0000
@@ -73,7 +73,7 @@
#define PFS_MAX_SETUP_OBJECT 100
#endif
#ifndef PFS_MAX_STAGE_CLASS
- #define PFS_MAX_STAGE_CLASS 100
+ #define PFS_MAX_STAGE_CLASS 150
#endif
#ifndef PFS_STAGES_HISTORY_SIZE
#define PFS_STAGES_HISTORY_SIZE 10
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-trunk branch (marc.alff:3286) | Marc Alff | 21 Jul |