Skip to content

Commit

Permalink
Bug#17606098: DEADLOCK INVOLVING SRV_MONITOR_THREAD AND LOCK_THD_DATA
Browse files Browse the repository at this point in the history
This deadlock involved LOCK_thd_data and InnoDB's trx_sys mutex.
It could occur if InnoDB code (e.g. the srv_monitor_thread) called 
thd_security_context() while having trx_sys locked and at the same time
the server tried to notify InnoDB about a deadlock (which involves calling
mysql_lock_abort_for_thread() while holding LOCK_thd_data).
This could lead to deadlock if mysql_lock_abort_for_thread() lead to 
trx_allocate_for_mysql() being called inside InnoDB.

This very rarely happens - the problem was found with RQG and is very
difficult to reproduce.

This patch solves the problem by splitting LOCK_thd_data so that a
separate new mutex LOCK_thd_query protects the query string
accessed by thd_security_context().

The patch also strengthens the protection of the query string by 
enforcing that it can only be set by the owner thread and that this
requires locking of LOCK_thd_query. Reading the query string can
be done by the owner thread without holding LOCK_thd_query but
other threads reading the query string have to have LOCK_thd_query
locked.

This also solves a separate problem where other threads could 
read the query string while it was being deleted by the owner thread.

Finally, the patch updates the performance schema mutex 
heuristics - including correcting an issue introduced by WL#6369.
  • Loading branch information
jhauglid committed Mar 6, 2014
1 parent 3205f54 commit 565d20b
Show file tree
Hide file tree
Showing 24 changed files with 269 additions and 195 deletions.
118 changes: 60 additions & 58 deletions mysql-test/suite/perfschema/r/nesting.result
Expand Up @@ -116,7 +116,7 @@ relative_event_id relative_end_event_id event_name comment nesting_event_type re
1 5 stage/sql/starting (stage) STATEMENT 0
2 2 wait/io/socket/sql/client_connection recv STAGE 1
3 3 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 1
4 4 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 1
4 4 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 1
5 5 wait/io/file/sql/query_log write STAGE 1
6 6 stage/sql/checking permissions (stage) STATEMENT 0
7 7 stage/sql/Opening tables (stage) STATEMENT 0
Expand All @@ -129,13 +129,13 @@ relative_event_id relative_end_event_id event_name comment nesting_event_type re
14 15 stage/sql/freeing items (stage) STATEMENT 0
15 15 wait/io/socket/sql/client_connection send STAGE 14
16 17 stage/sql/cleaning up (stage) STATEMENT 0
17 17 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 16
17 17 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 16
18 18 idle idle NULL NULL
19 36 statement/sql/select select "This is simple statement one" as payload NULL NULL
20 24 stage/sql/starting (stage) STATEMENT 19
21 21 wait/io/socket/sql/client_connection recv STAGE 20
22 22 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 20
23 23 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 20
23 23 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 20
24 24 wait/io/file/sql/query_log write STAGE 20
25 25 stage/sql/checking permissions (stage) STATEMENT 19
26 26 stage/sql/Opening tables (stage) STATEMENT 19
Expand All @@ -148,13 +148,13 @@ relative_event_id relative_end_event_id event_name comment nesting_event_type re
33 34 stage/sql/freeing items (stage) STATEMENT 19
34 34 wait/io/socket/sql/client_connection send STAGE 33
35 36 stage/sql/cleaning up (stage) STATEMENT 19
36 36 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 35
36 36 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 35
37 37 idle idle NULL NULL
38 55 statement/sql/select select "This is simple statement two" as payload NULL NULL
39 43 stage/sql/starting (stage) STATEMENT 38
40 40 wait/io/socket/sql/client_connection recv STAGE 39
41 41 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 39
42 42 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 39
42 42 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 39
43 43 wait/io/file/sql/query_log write STAGE 39
44 44 stage/sql/checking permissions (stage) STATEMENT 38
45 45 stage/sql/Opening tables (stage) STATEMENT 38
Expand All @@ -167,17 +167,17 @@ relative_event_id relative_end_event_id event_name comment nesting_event_type re
52 53 stage/sql/freeing items (stage) STATEMENT 38
53 53 wait/io/socket/sql/client_connection send STAGE 52
54 55 stage/sql/cleaning up (stage) STATEMENT 38
55 55 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 54
55 55 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 54
56 56 idle idle NULL NULL
57 73 statement/sql/select select "This is the first part of a multi query" as payload;
select "And this is the second part of a multi query" as payload;
select "With a third part to make things complete" as payload NULL NULL
58 63 stage/sql/starting (stage) STATEMENT 57
59 59 wait/io/socket/sql/client_connection recv STAGE 58
60 60 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 58
61 61 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 58
61 61 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 58
62 62 wait/io/file/sql/query_log write STAGE 58
63 63 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 58
63 63 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 58
64 64 stage/sql/checking permissions (stage) STATEMENT 57
65 65 stage/sql/Opening tables (stage) STATEMENT 57
66 66 stage/sql/init (stage) STATEMENT 57
Expand All @@ -188,54 +188,56 @@ select "With a third part to make things complete" as payload NULL NULL
71 71 stage/sql/closing tables (stage) STATEMENT 57
72 73 stage/sql/freeing items (stage) STATEMENT 57
73 73 wait/io/socket/sql/client_connection send STAGE 72
74 88 statement/sql/select select "And this is the second part of a multi query" as payload;
74 89 statement/sql/select select "And this is the second part of a multi query" as payload;
select "With a third part to make things complete" as payload NULL NULL
75 78 stage/sql/starting (stage) STATEMENT 74
76 76 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 75
77 77 wait/io/file/sql/query_log write STAGE 75
78 78 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 75
79 79 stage/sql/checking permissions (stage) STATEMENT 74
80 80 stage/sql/Opening tables (stage) STATEMENT 74
81 81 stage/sql/init (stage) STATEMENT 74
82 82 stage/sql/optimizing (stage) STATEMENT 74
83 83 stage/sql/executing (stage) STATEMENT 74
84 84 stage/sql/end (stage) STATEMENT 74
85 85 stage/sql/query end (stage) STATEMENT 74
86 86 stage/sql/closing tables (stage) STATEMENT 74
87 88 stage/sql/freeing items (stage) STATEMENT 74
88 88 wait/io/socket/sql/client_connection send STAGE 87
89 104 statement/sql/select select "With a third part to make things complete" as payload NULL NULL
90 92 stage/sql/starting (stage) STATEMENT 89
91 91 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 90
92 92 wait/io/file/sql/query_log write STAGE 90
93 93 stage/sql/checking permissions (stage) STATEMENT 89
94 94 stage/sql/Opening tables (stage) STATEMENT 89
95 95 stage/sql/init (stage) STATEMENT 89
96 96 stage/sql/optimizing (stage) STATEMENT 89
97 97 stage/sql/executing (stage) STATEMENT 89
98 98 stage/sql/end (stage) STATEMENT 89
99 99 stage/sql/query end (stage) STATEMENT 89
100 100 stage/sql/closing tables (stage) STATEMENT 89
101 102 stage/sql/freeing items (stage) STATEMENT 89
102 102 wait/io/socket/sql/client_connection send STAGE 101
103 104 stage/sql/cleaning up (stage) STATEMENT 89
104 104 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 103
105 105 idle idle NULL NULL
106 123 statement/sql/select select "MARKER_END" as marker NULL NULL
107 111 stage/sql/starting (stage) STATEMENT 106
108 108 wait/io/socket/sql/client_connection recv STAGE 107
109 109 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 107
110 110 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 107
111 111 wait/io/file/sql/query_log write STAGE 107
112 112 stage/sql/checking permissions (stage) STATEMENT 106
113 113 stage/sql/Opening tables (stage) STATEMENT 106
114 114 stage/sql/init (stage) STATEMENT 106
115 115 stage/sql/optimizing (stage) STATEMENT 106
116 116 stage/sql/executing (stage) STATEMENT 106
117 117 stage/sql/end (stage) STATEMENT 106
118 118 stage/sql/query end (stage) STATEMENT 106
119 119 stage/sql/closing tables (stage) STATEMENT 106
120 121 stage/sql/freeing items (stage) STATEMENT 106
121 121 wait/io/socket/sql/client_connection send STAGE 120
122 123 stage/sql/cleaning up (stage) STATEMENT 106
123 123 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 122
75 79 stage/sql/starting (stage) STATEMENT 74
76 76 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 75
77 77 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 75
78 78 wait/io/file/sql/query_log write STAGE 75
79 79 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 75
80 80 stage/sql/checking permissions (stage) STATEMENT 74
81 81 stage/sql/Opening tables (stage) STATEMENT 74
82 82 stage/sql/init (stage) STATEMENT 74
83 83 stage/sql/optimizing (stage) STATEMENT 74
84 84 stage/sql/executing (stage) STATEMENT 74
85 85 stage/sql/end (stage) STATEMENT 74
86 86 stage/sql/query end (stage) STATEMENT 74
87 87 stage/sql/closing tables (stage) STATEMENT 74
88 89 stage/sql/freeing items (stage) STATEMENT 74
89 89 wait/io/socket/sql/client_connection send STAGE 88
90 106 statement/sql/select select "With a third part to make things complete" as payload NULL NULL
91 94 stage/sql/starting (stage) STATEMENT 90
92 92 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 91
93 93 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 91
94 94 wait/io/file/sql/query_log write STAGE 91
95 95 stage/sql/checking permissions (stage) STATEMENT 90
96 96 stage/sql/Opening tables (stage) STATEMENT 90
97 97 stage/sql/init (stage) STATEMENT 90
98 98 stage/sql/optimizing (stage) STATEMENT 90
99 99 stage/sql/executing (stage) STATEMENT 90
100 100 stage/sql/end (stage) STATEMENT 90
101 101 stage/sql/query end (stage) STATEMENT 90
102 102 stage/sql/closing tables (stage) STATEMENT 90
103 104 stage/sql/freeing items (stage) STATEMENT 90
104 104 wait/io/socket/sql/client_connection send STAGE 103
105 106 stage/sql/cleaning up (stage) STATEMENT 90
106 106 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 105
107 107 idle idle NULL NULL
108 125 statement/sql/select select "MARKER_END" as marker NULL NULL
109 113 stage/sql/starting (stage) STATEMENT 108
110 110 wait/io/socket/sql/client_connection recv STAGE 109
111 111 wait/synch/mutex/sql/THD::LOCK_thd_data lock STAGE 109
112 112 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 109
113 113 wait/io/file/sql/query_log write STAGE 109
114 114 stage/sql/checking permissions (stage) STATEMENT 108
115 115 stage/sql/Opening tables (stage) STATEMENT 108
116 116 stage/sql/init (stage) STATEMENT 108
117 117 stage/sql/optimizing (stage) STATEMENT 108
118 118 stage/sql/executing (stage) STATEMENT 108
119 119 stage/sql/end (stage) STATEMENT 108
120 120 stage/sql/query end (stage) STATEMENT 108
121 121 stage/sql/closing tables (stage) STATEMENT 108
122 123 stage/sql/freeing items (stage) STATEMENT 108
123 123 wait/io/socket/sql/client_connection send STAGE 122
124 125 stage/sql/cleaning up (stage) STATEMENT 108
125 125 wait/synch/mutex/sql/THD::LOCK_thd_query lock STAGE 124
16 changes: 8 additions & 8 deletions mysql-test/suite/perfschema/r/sizing_default.result
Expand Up @@ -29,7 +29,7 @@ performance_schema_max_file_instances 7693
performance_schema_max_memory_classes 250
performance_schema_max_metadata_locks 10000
performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 15906
performance_schema_max_mutex_instances 16510
performance_schema_max_prepared_statements_instances 32764
performance_schema_max_program_instances 5000
performance_schema_max_rwlock_classes 40
Expand Down Expand Up @@ -103,8 +103,8 @@ performance_schema (pfs_file_class).size 320
performance_schema (pfs_file_class).count 50
performance_schema (pfs_file_class).memory 16000
performance_schema mutex_instances.size 128
performance_schema mutex_instances.count 15906
performance_schema mutex_instances.memory 2035968
performance_schema mutex_instances.count 16510
performance_schema mutex_instances.memory 2113280
performance_schema rwlock_instances.size 128
performance_schema rwlock_instances.count 11902
performance_schema rwlock_instances.memory 1523456
Expand Down Expand Up @@ -280,17 +280,17 @@ performance_schema events_transactions_summary_by_user_by_event_name.memory 8800
performance_schema events_transactions_summary_by_host_by_event_name.size 88
performance_schema events_transactions_summary_by_host_by_event_name.count 100
performance_schema events_transactions_summary_by_host_by_event_name.memory 8800
performance_schema performance_schema.memory 521145064
performance_schema performance_schema.memory 521222376
select * from performance_schema.memory_summary_global_by_event_name
where event_name='memory/performance_schema/internal_buffers';
EVENT_NAME memory/performance_schema/internal_buffers
COUNT_ALLOC 60
COUNT_FREE 0
SUM_NUMBER_OF_BYTES_ALLOC 521145064
SUM_NUMBER_OF_BYTES_ALLOC 521222376
SUM_NUMBER_OF_BYTES_FREE 0
LOW_COUNT_USED 60
CURRENT_COUNT_USED 60
HIGH_COUNT_USED 60
LOW_NUMBER_OF_BYTES_USED 521145064
CURRENT_NUMBER_OF_BYTES_USED 521145064
HIGH_NUMBER_OF_BYTES_USED 521145064
LOW_NUMBER_OF_BYTES_USED 521222376
CURRENT_NUMBER_OF_BYTES_USED 521222376
HIGH_NUMBER_OF_BYTES_USED 521222376
4 changes: 2 additions & 2 deletions mysql-test/suite/perfschema/r/sizing_growth.result
Expand Up @@ -220,7 +220,7 @@ select @file_per_share <= 3;
1
select @mutex_per_con;
@mutex_per_con
4
5
select @rwlock_per_con;
@rwlock_per_con
1
Expand All @@ -246,7 +246,7 @@ select if(
(@rwlock_per_share <= 4)
AND (@cond_per_share = 0)
AND (@file_per_share <= 3)
AND (@mutex_per_con = 4)
AND (@mutex_per_con = 5)
AND (@rwlock_per_con = 1)
AND (@cond_per_con = 2)
AND (@file_per_con = 0)
Expand Down
16 changes: 8 additions & 8 deletions mysql-test/suite/perfschema/r/sizing_high.result
Expand Up @@ -29,7 +29,7 @@ performance_schema_max_file_instances 23385
performance_schema_max_memory_classes 250
performance_schema_max_metadata_locks 10000
performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 52200
performance_schema_max_mutex_instances 53000
performance_schema_max_prepared_statements_instances 32764
performance_schema_max_program_instances 5000
performance_schema_max_rwlock_classes 40
Expand Down Expand Up @@ -103,8 +103,8 @@ performance_schema (pfs_file_class).size 320
performance_schema (pfs_file_class).count 50
performance_schema (pfs_file_class).memory 16000
performance_schema mutex_instances.size 128
performance_schema mutex_instances.count 52200
performance_schema mutex_instances.memory 6681600
performance_schema mutex_instances.count 53000
performance_schema mutex_instances.memory 6784000
performance_schema rwlock_instances.size 128
performance_schema rwlock_instances.count 40800
performance_schema rwlock_instances.memory 5222400
Expand Down Expand Up @@ -280,17 +280,17 @@ performance_schema events_transactions_summary_by_user_by_event_name.memory 8800
performance_schema events_transactions_summary_by_host_by_event_name.size 88
performance_schema events_transactions_summary_by_host_by_event_name.count 100
performance_schema events_transactions_summary_by_host_by_event_name.memory 8800
performance_schema performance_schema.memory 526076264
performance_schema performance_schema.memory 526178664
select * from performance_schema.memory_summary_global_by_event_name
where event_name='memory/performance_schema/internal_buffers';
EVENT_NAME memory/performance_schema/internal_buffers
COUNT_ALLOC 60
COUNT_FREE 0
SUM_NUMBER_OF_BYTES_ALLOC 526076264
SUM_NUMBER_OF_BYTES_ALLOC 526178664
SUM_NUMBER_OF_BYTES_FREE 0
LOW_COUNT_USED 60
CURRENT_COUNT_USED 60
HIGH_COUNT_USED 60
LOW_NUMBER_OF_BYTES_USED 526076264
CURRENT_NUMBER_OF_BYTES_USED 526076264
HIGH_NUMBER_OF_BYTES_USED 526076264
LOW_NUMBER_OF_BYTES_USED 526178664
CURRENT_NUMBER_OF_BYTES_USED 526178664
HIGH_NUMBER_OF_BYTES_USED 526178664
16 changes: 8 additions & 8 deletions mysql-test/suite/perfschema/r/sizing_low.result
Expand Up @@ -29,7 +29,7 @@ performance_schema_max_file_instances 1556
performance_schema_max_memory_classes 250
performance_schema_max_metadata_locks 10000
performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 2945
performance_schema_max_mutex_instances 3056
performance_schema_max_prepared_statements_instances 18203
performance_schema_max_program_instances 5000
performance_schema_max_rwlock_classes 40
Expand Down Expand Up @@ -103,8 +103,8 @@ performance_schema (pfs_file_class).size 320
performance_schema (pfs_file_class).count 50
performance_schema (pfs_file_class).memory 16000
performance_schema mutex_instances.size 128
performance_schema mutex_instances.count 2945
performance_schema mutex_instances.memory 376960
performance_schema mutex_instances.count 3056
performance_schema mutex_instances.memory 391168
performance_schema rwlock_instances.size 128
performance_schema rwlock_instances.count 2056
performance_schema rwlock_instances.memory 263168
Expand Down Expand Up @@ -280,17 +280,17 @@ performance_schema events_transactions_summary_by_user_by_event_name.memory 440
performance_schema events_transactions_summary_by_host_by_event_name.size 88
performance_schema events_transactions_summary_by_host_by_event_name.count 20
performance_schema events_transactions_summary_by_host_by_event_name.memory 1760
performance_schema performance_schema.memory 69629800
performance_schema performance_schema.memory 69644008
select * from performance_schema.memory_summary_global_by_event_name
where event_name='memory/performance_schema/internal_buffers';
EVENT_NAME memory/performance_schema/internal_buffers
COUNT_ALLOC 60
COUNT_FREE 0
SUM_NUMBER_OF_BYTES_ALLOC 69629800
SUM_NUMBER_OF_BYTES_ALLOC 69644008
SUM_NUMBER_OF_BYTES_FREE 0
LOW_COUNT_USED 60
CURRENT_COUNT_USED 60
HIGH_COUNT_USED 60
LOW_NUMBER_OF_BYTES_USED 69629800
CURRENT_NUMBER_OF_BYTES_USED 69629800
HIGH_NUMBER_OF_BYTES_USED 69629800
LOW_NUMBER_OF_BYTES_USED 69644008
CURRENT_NUMBER_OF_BYTES_USED 69644008
HIGH_NUMBER_OF_BYTES_USED 69644008
16 changes: 8 additions & 8 deletions mysql-test/suite/perfschema/r/sizing_med.result
Expand Up @@ -29,7 +29,7 @@ performance_schema_max_file_instances 1754
performance_schema_max_memory_classes 250
performance_schema_max_metadata_locks 10000
performance_schema_max_mutex_classes 200
performance_schema_max_mutex_instances 4230
performance_schema_max_mutex_instances 4665
performance_schema_max_prepared_statements_instances 23403
performance_schema_max_program_instances 5000
performance_schema_max_rwlock_classes 40
Expand Down Expand Up @@ -103,8 +103,8 @@ performance_schema (pfs_file_class).size 320
performance_schema (pfs_file_class).count 50
performance_schema (pfs_file_class).memory 16000
performance_schema mutex_instances.size 128
performance_schema mutex_instances.count 4230
performance_schema mutex_instances.memory 541440
performance_schema mutex_instances.count 4665
performance_schema mutex_instances.memory 597120
performance_schema rwlock_instances.size 128
performance_schema rwlock_instances.count 2795
performance_schema rwlock_instances.memory 357760
Expand Down Expand Up @@ -280,17 +280,17 @@ performance_schema events_transactions_summary_by_user_by_event_name.memory 8800
performance_schema events_transactions_summary_by_host_by_event_name.size 88
performance_schema events_transactions_summary_by_host_by_event_name.count 100
performance_schema events_transactions_summary_by_host_by_event_name.memory 8800
performance_schema performance_schema.memory 142074600
performance_schema performance_schema.memory 142130280
select * from performance_schema.memory_summary_global_by_event_name
where event_name='memory/performance_schema/internal_buffers';
EVENT_NAME memory/performance_schema/internal_buffers
COUNT_ALLOC 60
COUNT_FREE 0
SUM_NUMBER_OF_BYTES_ALLOC 142074600
SUM_NUMBER_OF_BYTES_ALLOC 142130280
SUM_NUMBER_OF_BYTES_FREE 0
LOW_COUNT_USED 60
CURRENT_COUNT_USED 60
HIGH_COUNT_USED 60
LOW_NUMBER_OF_BYTES_USED 142074600
CURRENT_NUMBER_OF_BYTES_USED 142074600
HIGH_NUMBER_OF_BYTES_USED 142074600
LOW_NUMBER_OF_BYTES_USED 142130280
CURRENT_NUMBER_OF_BYTES_USED 142130280
HIGH_NUMBER_OF_BYTES_USED 142130280
1 change: 1 addition & 0 deletions mysql-test/suite/perfschema/t/nesting.test
Expand Up @@ -41,6 +41,7 @@ update performance_schema.setup_instruments set enabled='YES', timed='YES'
'wait/io/socket/sql/client_connection',
'wait/synch/rwlock/sql/LOCK_grant',
'wait/synch/mutex/sql/THD::LOCK_thd_data',
'wait/synch/mutex/sql/THD::LOCK_thd_query',
'wait/io/file/sql/query_log');

update performance_schema.setup_instruments set enabled='YES', timed='YES'
Expand Down
3 changes: 2 additions & 1 deletion mysql-test/suite/perfschema/t/sizing_growth.test
Expand Up @@ -43,6 +43,7 @@ select count(*) from performance_schema.mutex_instances
select count(*) from performance_schema.rwlock_instances
into @v0_rwlock_instances;


select count(*) from performance_schema.cond_instances
into @v0_cond_instances;

Expand Down Expand Up @@ -478,7 +479,7 @@ select if(
(@rwlock_per_share <= 4)
AND (@cond_per_share = 0)
AND (@file_per_share <= 3)
AND (@mutex_per_con = 4)
AND (@mutex_per_con = 5)
AND (@rwlock_per_con = 1)
AND (@cond_per_con = 2)
AND (@file_per_con = 0)
Expand Down
5 changes: 3 additions & 2 deletions sql/bootstrap.cc
@@ -1,4 +1,4 @@
/* Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
/* Copyright (c) 2010, 2014, 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
Expand Down Expand Up @@ -112,7 +112,8 @@ static void handle_bootstrap_impl(THD *thd)
}
memcpy(query, buffer, length);
query[length]= '\0';
thd->set_query_and_id(query, length, next_query_id());
thd->set_query(query, length);
thd->set_query_id(next_query_id());
DBUG_PRINT("query",("%-.4096s",thd->query().str));
#if defined(ENABLED_PROFILING)
thd->profiling.start_new_query();
Expand Down

0 comments on commit 565d20b

Please sign in to comment.