mirror of
https://github.com/MariaDB/server.git
synced 2025-12-03 05:41:09 +03:00
Merge from mysql-5.5-bugfixing to mysql-5.5-runtime.
This commit is contained in:
@@ -209,6 +209,9 @@ static void add_one_option(DYNAMIC_STRING* ds,
|
|||||||
case GET_STR:
|
case GET_STR:
|
||||||
arg= argument;
|
arg= argument;
|
||||||
break;
|
break;
|
||||||
|
case GET_BOOL:
|
||||||
|
arg= (*(my_bool *)opt->value) ? "1" : "0";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
die("internal error at %s: %d",__FILE__, __LINE__);
|
die("internal error at %s: %d",__FILE__, __LINE__);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ if (`SELECT $CRC_ARG_type = 1`) {
|
|||||||
if (`SELECT $CRC_ARG_type = 2`) {
|
if (`SELECT $CRC_ARG_type = 2`) {
|
||||||
# It will be unsafe to call this procedure.
|
# It will be unsafe to call this procedure.
|
||||||
--let $CRC_name= proc_$CRC_ARG_level
|
--let $CRC_name= proc_$CRC_ARG_level
|
||||||
--let $CRC_create= CREATE PROCEDURE $CRC_name() BEGIN INSERT INTO ta$CRC_ARG_level VALUES (47); $CRC_ARG_stmt_sidef; END
|
--let $CRC_create= CREATE PROCEDURE $CRC_name() BEGIN $CRC_ARG_stmt_sidef; INSERT INTO ta$CRC_ARG_level VALUES (47); END
|
||||||
--let $CRC_RET_stmt_sidef= CALL $CRC_name()
|
--let $CRC_RET_stmt_sidef= CALL $CRC_name()
|
||||||
--let $CRC_RET_value=
|
--let $CRC_RET_value=
|
||||||
--let $CRC_RET_sel_retval=
|
--let $CRC_RET_sel_retval=
|
||||||
@@ -344,25 +344,8 @@ if (`SELECT '$CRC_RET_stmt_sidef' != ''`) {
|
|||||||
if (`SELECT '$event_type' != 'Table_map'`) {
|
if (`SELECT '$event_type' != 'Table_map'`) {
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Table_map'. ********
|
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Table_map'. ********
|
||||||
|
SHOW BINLOG EVENTS;
|
||||||
# Currently, there is a bug causing some statements to be logged
|
--die Wrong events in binlog.
|
||||||
# partially in statement format. Hence, we don't fail here, we
|
|
||||||
# just print the events (masking out nondeterministic components
|
|
||||||
# of the output) and continue. When binloggging works perfectly,
|
|
||||||
# we should instead execute:
|
|
||||||
#--enable_query_log
|
|
||||||
#SHOW BINLOG EVENTS;
|
|
||||||
#--die Wrong events in binlog.
|
|
||||||
|
|
||||||
# Here, we should really source
|
|
||||||
# include/show_binlog_events.inc. But due to BUG#41913, that
|
|
||||||
# doesn't work, and we have to inline the entire file here. Sigh
|
|
||||||
# :-(
|
|
||||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR 107 <binlog_start>
|
|
||||||
--replace_column 2 # 4 # 5 #
|
|
||||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/
|
|
||||||
--eval SHOW BINLOG EVENTS FROM 107
|
|
||||||
--disable_query_log
|
|
||||||
}
|
}
|
||||||
SET binlog_format = STATEMENT;
|
SET binlog_format = STATEMENT;
|
||||||
|
|
||||||
|
|||||||
30
mysql-test/include/mysql_upgrade_preparation.inc
Normal file
30
mysql-test/include/mysql_upgrade_preparation.inc
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Include this in any test using mysql_upgrade
|
||||||
|
|
||||||
|
# Can't run test of external client with embedded server
|
||||||
|
-- source include/not_embedded.inc
|
||||||
|
|
||||||
|
# Only run test if "mysql_upgrade" is found
|
||||||
|
--require r/have_mysql_upgrade.result
|
||||||
|
--disable_query_log
|
||||||
|
select LENGTH("$MYSQL_UPGRADE")>0 as have_mysql_upgrade;
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hack:
|
||||||
|
#
|
||||||
|
# If running with Valgrind ($VALGRIND_TEST <> 0) then the resource
|
||||||
|
# consumption (CPU) for upgrading a large log table will be intense.
|
||||||
|
# Therefore, truncate the log table in advance and issue a statement
|
||||||
|
# that should be logged.
|
||||||
|
#
|
||||||
|
if (`SELECT $VALGRIND_TEST`)
|
||||||
|
{
|
||||||
|
--disable_query_log
|
||||||
|
--disable_result_log
|
||||||
|
--disable_abort_on_error
|
||||||
|
TRUNCATE TABLE mysql.general_log;
|
||||||
|
SELECT 1;
|
||||||
|
--enable_abort_on_error
|
||||||
|
--enable_result_log
|
||||||
|
--enable_query_log
|
||||||
|
}
|
||||||
32
mysql-test/r/mysql_upgrade_ssl.result
Normal file
32
mysql-test/r/mysql_upgrade_ssl.result
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#
|
||||||
|
# Bug#55672 mysql_upgrade dies with internal error
|
||||||
|
#
|
||||||
|
mtr.global_suppressions OK
|
||||||
|
mtr.test_suppressions OK
|
||||||
|
mysql.columns_priv OK
|
||||||
|
mysql.db OK
|
||||||
|
mysql.event OK
|
||||||
|
mysql.func OK
|
||||||
|
mysql.general_log
|
||||||
|
Error : You can't use locks with log tables.
|
||||||
|
status : OK
|
||||||
|
mysql.help_category OK
|
||||||
|
mysql.help_keyword OK
|
||||||
|
mysql.help_relation OK
|
||||||
|
mysql.help_topic OK
|
||||||
|
mysql.host OK
|
||||||
|
mysql.ndb_binlog_index OK
|
||||||
|
mysql.plugin OK
|
||||||
|
mysql.proc OK
|
||||||
|
mysql.procs_priv OK
|
||||||
|
mysql.servers OK
|
||||||
|
mysql.slow_log
|
||||||
|
Error : You can't use locks with log tables.
|
||||||
|
status : OK
|
||||||
|
mysql.tables_priv OK
|
||||||
|
mysql.time_zone OK
|
||||||
|
mysql.time_zone_leap_second OK
|
||||||
|
mysql.time_zone_name OK
|
||||||
|
mysql.time_zone_transition OK
|
||||||
|
mysql.time_zone_transition_type OK
|
||||||
|
mysql.user OK
|
||||||
@@ -28,6 +28,25 @@ INSERT INTO t1 VALUES (1,2), (2,3);
|
|||||||
UPDATE t1 SET b='4' WHERE a=1 LIMIT 1;
|
UPDATE t1 SET b='4' WHERE a=1 LIMIT 1;
|
||||||
UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1;
|
UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a VARCHAR(1000));
|
||||||
|
INSERT INTO t1 VALUES (CURRENT_USER());
|
||||||
|
INSERT INTO t1 VALUES (FOUND_ROWS());
|
||||||
|
INSERT INTO t1 VALUES (GET_LOCK('tmp', 1));
|
||||||
|
INSERT INTO t1 VALUES (IS_FREE_LOCK('tmp'));
|
||||||
|
INSERT INTO t1 VALUES (IS_USED_LOCK('tmp'));
|
||||||
|
INSERT INTO t1 VALUES (LOAD_FILE('../../std_data/words2.dat'));
|
||||||
|
INSERT INTO t1 VALUES (MASTER_POS_WAIT('dummy arg', 4711, 1));
|
||||||
|
INSERT INTO t1 VALUES (RELEASE_LOCK('tmp'));
|
||||||
|
INSERT INTO t1 VALUES (ROW_COUNT());
|
||||||
|
INSERT INTO t1 VALUES (SESSION_USER());
|
||||||
|
INSERT INTO t1 VALUES (SLEEP(1));
|
||||||
|
INSERT INTO t1 VALUES (SYSDATE());
|
||||||
|
INSERT INTO t1 VALUES (SYSTEM_USER());
|
||||||
|
INSERT INTO t1 VALUES (USER());
|
||||||
|
INSERT INTO t1 VALUES (UUID());
|
||||||
|
INSERT INTO t1 VALUES (UUID_SHORT());
|
||||||
|
INSERT INTO t1 VALUES (VERSION());
|
||||||
|
INSERT INTO t1 VALUES (RAND());
|
||||||
DROP DATABASE b42851;
|
DROP DATABASE b42851;
|
||||||
USE test;
|
USE test;
|
||||||
#
|
#
|
||||||
@@ -67,8 +86,11 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
|
|||||||
SELECT sf_bug50192();
|
SELECT sf_bug50192();
|
||||||
sf_bug50192()
|
sf_bug50192()
|
||||||
1
|
1
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
SHOW WARNINGS;
|
SHOW WARNINGS;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
DROP FUNCTION sf_bug50192;
|
DROP FUNCTION sf_bug50192;
|
||||||
DROP TRIGGER tr_bug50192;
|
DROP TRIGGER tr_bug50192;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -72,6 +72,26 @@ UPDATE t1 SET b='4' WHERE a=1 LIMIT 1;
|
|||||||
UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1;
|
UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a VARCHAR(1000));
|
||||||
|
INSERT INTO t1 VALUES (CURRENT_USER()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (FOUND_ROWS()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (GET_LOCK('tmp', 1)); #marked unsafe in BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (IS_FREE_LOCK('tmp')); #marked unsafe in BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (IS_USED_LOCK('tmp')); #marked unsafe in BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (LOAD_FILE('../../std_data/words2.dat')); #marked unsafe in BUG#39701
|
||||||
|
INSERT INTO t1 VALUES (MASTER_POS_WAIT('dummy arg', 4711, 1));
|
||||||
|
INSERT INTO t1 VALUES (RELEASE_LOCK('tmp')); #marked unsafe in BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (ROW_COUNT()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (SESSION_USER()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (SLEEP(1)); #marked unsafe in BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (SYSDATE()); #marked unsafe in BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (SYSTEM_USER()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (USER()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (UUID()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (UUID_SHORT()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (VERSION()); #marked unsafe in BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (RAND()); #marked unsafe in BUG#49222
|
||||||
|
|
||||||
# clean up
|
# clean up
|
||||||
DROP DATABASE b42851;
|
DROP DATABASE b42851;
|
||||||
|
|
||||||
|
|||||||
@@ -468,6 +468,7 @@ BEGIN
|
|||||||
END|
|
END|
|
||||||
DELIMITER ;|
|
DELIMITER ;|
|
||||||
--echo "One unsafe warning should be issued in the following statement"
|
--echo "One unsafe warning should be issued in the following statement"
|
||||||
|
--error ER_STORED_FUNCTION_PREVENTS_SWITCH_SQL_LOG_BIN
|
||||||
SELECT fun_check_log_bin();
|
SELECT fun_check_log_bin();
|
||||||
--echo "SQL_LOG_BIN should be ON still"
|
--echo "SQL_LOG_BIN should be ON still"
|
||||||
SHOW VARIABLES LIKE "SQL_LOG_BIN";
|
SHOW VARIABLES LIKE "SQL_LOG_BIN";
|
||||||
|
|||||||
@@ -11,5 +11,4 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
binlog_truncate_innodb : BUG#42643 2009-02-06 mats Changes to InnoDB requires to complete fix for BUG#36763
|
binlog_truncate_innodb : BUG#42643 2009-02-06 mats Changes to InnoDB requires to complete fix for BUG#36763
|
||||||
binlog_unsafe : BUG#50312 2010-01-13 lsoares Warnings for unsafe sub-statement not returned to client
|
|
||||||
binlog_spurious_ddl_errors : BUG#54195 2010-06-03 alik binlog_spurious_ddl_errors.test fails, thus disabled
|
binlog_spurious_ddl_errors : BUG#54195 2010-06-03 alik binlog_spurious_ddl_errors.test fails, thus disabled
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ end;
|
|||||||
select * from t2 order by a;
|
select * from t2 order by a;
|
||||||
a b
|
a b
|
||||||
call test_cursor();
|
call test_cursor();
|
||||||
|
Warnings:
|
||||||
|
Error 1329 No data - zero rows fetched, selected, or processed
|
||||||
select * from t2 order by a;
|
select * from t2 order by a;
|
||||||
a b
|
a b
|
||||||
1 10
|
1 10
|
||||||
|
|||||||
@@ -25,17 +25,17 @@ update performance_schema.SETUP_CONSUMERS set enabled='YES';
|
|||||||
|
|
||||||
connect (con1, localhost, root, , );
|
connect (con1, localhost, root, , );
|
||||||
|
|
||||||
let $con1_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
|
let $con1_THREAD_ID=`select thread_id from performance_schema.THREADS
|
||||||
where ID in (select connection_id())`;
|
where ID in (select connection_id())`;
|
||||||
|
|
||||||
connect (con2, localhost, root, , );
|
connect (con2, localhost, root, , );
|
||||||
|
|
||||||
let $con2_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
|
let $con2_THREAD_ID=`select thread_id from performance_schema.THREADS
|
||||||
where ID in (select connection_id())`;
|
where ID in (select connection_id())`;
|
||||||
|
|
||||||
connect (con3, localhost, root, , );
|
connect (con3, localhost, root, , );
|
||||||
|
|
||||||
let $con3_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
|
let $con3_THREAD_ID=`select thread_id from performance_schema.THREADS
|
||||||
where ID in (select connection_id())`;
|
where ID in (select connection_id())`;
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
@@ -49,6 +49,6 @@ prepare stmt_dump_events from
|
|||||||
where thread_id=? order by event_id;";
|
where thread_id=? order by event_id;";
|
||||||
|
|
||||||
prepare stmt_dump_thread from
|
prepare stmt_dump_thread from
|
||||||
"select name from performance_schema.PROCESSLIST where thread_id=? ;";
|
"select name from performance_schema.THREADS where thread_id=? ;";
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
|
||||||
|
|||||||
@@ -29,20 +29,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
--enable_result_log
|
--enable_result_log
|
||||||
|
|
||||||
# This has a stable output, printing the result:
|
# This has a stable output, printing the result:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ update performance_schema.SETUP_INSTRUMENTS set enabled = 'NO';
|
|||||||
update performance_schema.SETUP_CONSUMERS set enabled = 'NO';
|
update performance_schema.SETUP_CONSUMERS set enabled = 'NO';
|
||||||
truncate table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
truncate table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
truncate table performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
truncate table performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
truncate table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
update performance_schema.SETUP_CONSUMERS set enabled = 'YES';
|
update performance_schema.SETUP_CONSUMERS set enabled = 'YES';
|
||||||
@@ -49,14 +49,14 @@ OR @dump_all;
|
|||||||
EVENT_NAME SUM_NUMBER_OF_BYTES_WRITE SUM(i.SUM_NUMBER_OF_BYTES_WRITE)
|
EVENT_NAME SUM_NUMBER_OF_BYTES_WRITE SUM(i.SUM_NUMBER_OF_BYTES_WRITE)
|
||||||
"Verifying waits aggregate consistency (instance)"
|
"Verifying waits aggregate consistency (instance)"
|
||||||
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(i.SUM_TIMER_WAIT)
|
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(i.SUM_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
HAVING (e.SUM_TIMER_WAIT < SUM(i.SUM_TIMER_WAIT))
|
HAVING (e.SUM_TIMER_WAIT < SUM(i.SUM_TIMER_WAIT))
|
||||||
OR @dump_all;
|
OR @dump_all;
|
||||||
EVENT_NAME SUM_TIMER_WAIT SUM(i.SUM_TIMER_WAIT)
|
EVENT_NAME SUM_TIMER_WAIT SUM(i.SUM_TIMER_WAIT)
|
||||||
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(i.MIN_TIMER_WAIT)
|
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(i.MIN_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
HAVING (e.MIN_TIMER_WAIT > MIN(i.MIN_TIMER_WAIT))
|
HAVING (e.MIN_TIMER_WAIT > MIN(i.MIN_TIMER_WAIT))
|
||||||
@@ -64,7 +64,7 @@ AND (MIN(i.MIN_TIMER_WAIT) != 0)
|
|||||||
OR @dump_all;
|
OR @dump_all;
|
||||||
EVENT_NAME MIN_TIMER_WAIT MIN(i.MIN_TIMER_WAIT)
|
EVENT_NAME MIN_TIMER_WAIT MIN(i.MIN_TIMER_WAIT)
|
||||||
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(i.MAX_TIMER_WAIT)
|
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(i.MAX_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
HAVING (e.MAX_TIMER_WAIT < MAX(i.MAX_TIMER_WAIT))
|
HAVING (e.MAX_TIMER_WAIT < MAX(i.MAX_TIMER_WAIT))
|
||||||
@@ -72,7 +72,7 @@ OR @dump_all;
|
|||||||
EVENT_NAME MAX_TIMER_WAIT MAX(i.MAX_TIMER_WAIT)
|
EVENT_NAME MAX_TIMER_WAIT MAX(i.MAX_TIMER_WAIT)
|
||||||
"Verifying waits aggregate consistency (thread)"
|
"Verifying waits aggregate consistency (thread)"
|
||||||
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(t.SUM_TIMER_WAIT)
|
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(t.SUM_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
||||||
USING (EVENT_NAME)
|
USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
@@ -80,7 +80,7 @@ HAVING (e.SUM_TIMER_WAIT < SUM(t.SUM_TIMER_WAIT))
|
|||||||
OR @dump_all;
|
OR @dump_all;
|
||||||
EVENT_NAME SUM_TIMER_WAIT SUM(t.SUM_TIMER_WAIT)
|
EVENT_NAME SUM_TIMER_WAIT SUM(t.SUM_TIMER_WAIT)
|
||||||
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(t.MIN_TIMER_WAIT)
|
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(t.MIN_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
||||||
USING (EVENT_NAME)
|
USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
@@ -89,7 +89,7 @@ AND (MIN(t.MIN_TIMER_WAIT) != 0)
|
|||||||
OR @dump_all;
|
OR @dump_all;
|
||||||
EVENT_NAME MIN_TIMER_WAIT MIN(t.MIN_TIMER_WAIT)
|
EVENT_NAME MIN_TIMER_WAIT MIN(t.MIN_TIMER_WAIT)
|
||||||
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(t.MAX_TIMER_WAIT)
|
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(t.MAX_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
||||||
USING (EVENT_NAME)
|
USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
alter table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME add column foo integer;
|
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
|
||||||
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME ADD INDEX test_index(EVENT_NAME);
|
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
|
||||||
CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME(EVENT_NAME);
|
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
alter table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
add column foo integer;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
||||||
|
truncate table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
|
ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
ADD INDEX test_index(EVENT_NAME);
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
||||||
|
CREATE UNIQUE INDEX test_index
|
||||||
|
ON performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME(EVENT_NAME);
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
alter table performance_schema.SETUP_OBJECTS add column foo integer;
|
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
|
||||||
truncate table performance_schema.SETUP_OBJECTS;
|
|
||||||
ALTER TABLE performance_schema.SETUP_OBJECTS ADD INDEX test_index(OBJECT_NAME);
|
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
|
||||||
CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_OBJECTS(OBJECT_NAME);
|
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
alter table performance_schema.PROCESSLIST add column foo integer;
|
alter table performance_schema.THREADS add column foo integer;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
||||||
truncate table performance_schema.PROCESSLIST;
|
truncate table performance_schema.THREADS;
|
||||||
ERROR HY000: Invalid performance_schema usage.
|
ERROR HY000: Invalid performance_schema usage.
|
||||||
ALTER TABLE performance_schema.PROCESSLIST ADD INDEX test_index(ID);
|
ALTER TABLE performance_schema.THREADS ADD INDEX test_index(ID);
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
||||||
CREATE UNIQUE INDEX test_index ON performance_schema.PROCESSLIST(ID);
|
CREATE UNIQUE INDEX test_index ON performance_schema.THREADS(ID);
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
|
||||||
where event_name like 'Wait/Synch/%' limit 1;
|
|
||||||
EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
|
|
||||||
# # # # # #
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
|
||||||
where event_name='FOO';
|
|
||||||
EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
|
|
||||||
insert into performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
|
||||||
set event_name='FOO', count_star=1, sum_timer_wait=2, min_timer_wait=3,
|
|
||||||
avg_timer_wait=4, max_timer_wait=5;
|
|
||||||
ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
|
||||||
update performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
|
||||||
set count_star=12;
|
|
||||||
ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
|
||||||
update performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
|
||||||
set count_star=12 where event_name like "FOO";
|
|
||||||
ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
|
||||||
delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
|
||||||
where count_star=1;
|
|
||||||
ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
|
||||||
delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
|
||||||
LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME READ;
|
|
||||||
ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
|
||||||
UNLOCK TABLES;
|
|
||||||
LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME WRITE;
|
|
||||||
ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
|
||||||
UNLOCK TABLES;
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
where event_name like 'Wait/Synch/%' limit 1;
|
||||||
|
EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
|
||||||
|
# # # # # #
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
where event_name='FOO';
|
||||||
|
EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT
|
||||||
|
insert into performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
set event_name='FOO', count_star=1, sum_timer_wait=2, min_timer_wait=3,
|
||||||
|
avg_timer_wait=4, max_timer_wait=5;
|
||||||
|
ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
|
update performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
set count_star=12;
|
||||||
|
ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
|
update performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
set count_star=12 where event_name like "FOO";
|
||||||
|
ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
|
delete from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
where count_star=1;
|
||||||
|
ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
|
delete from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
|
ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
|
LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME READ;
|
||||||
|
ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
|
UNLOCK TABLES;
|
||||||
|
LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME WRITE;
|
||||||
|
ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
|
UNLOCK TABLES;
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME ENABLED TIMED AGGREGATED
|
|
||||||
select * from performance_schema.SETUP_OBJECTS
|
|
||||||
where object_type = 'TABLE';
|
|
||||||
OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME ENABLED TIMED AGGREGATED
|
|
||||||
select * from performance_schema.SETUP_OBJECTS
|
|
||||||
where enabled='YES';
|
|
||||||
OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME ENABLED TIMED AGGREGATED
|
|
||||||
insert into performance_schema.SETUP_OBJECTS
|
|
||||||
set object_type='TABLE', object_schema='FOO', object_name='BAR',
|
|
||||||
enabled='YES', timed='YES', aggregated='YES';
|
|
||||||
ERROR HY000: Table storage engine for 'SETUP_OBJECTS' doesn't have this option
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set object_type='TABLE';
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set object_schema='ILLEGAL';
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set object_name='ILLEGAL';
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set enabled='NO';
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set timed='NO';
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set aggregated='NO';
|
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME ENABLED TIMED AGGREGATED
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set enabled='YES', timed='YES', aggregated='YES';
|
|
||||||
delete from performance_schema.SETUP_OBJECTS
|
|
||||||
where object_type = 'TABLE';
|
|
||||||
delete from performance_schema.SETUP_OBJECTS;
|
|
||||||
LOCK TABLES performance_schema.SETUP_OBJECTS READ;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
LOCK TABLES performance_schema.SETUP_OBJECTS WRITE;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
@@ -1,27 +1,27 @@
|
|||||||
select * from performance_schema.PROCESSLIST
|
select * from performance_schema.THREADS
|
||||||
where name like 'Thread/%' limit 1;
|
where name like 'Thread/%' limit 1;
|
||||||
THREAD_ID ID NAME
|
THREAD_ID ID NAME
|
||||||
# # #
|
# # #
|
||||||
select * from performance_schema.PROCESSLIST
|
select * from performance_schema.THREADS
|
||||||
where name='FOO';
|
where name='FOO';
|
||||||
THREAD_ID ID NAME
|
THREAD_ID ID NAME
|
||||||
insert into performance_schema.PROCESSLIST
|
insert into performance_schema.THREADS
|
||||||
set name='FOO', thread_id=1, id=2;
|
set name='FOO', thread_id=1, id=2;
|
||||||
ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'PROCESSLIST'
|
ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'THREADS'
|
||||||
update performance_schema.PROCESSLIST
|
update performance_schema.THREADS
|
||||||
set thread_id=12;
|
set thread_id=12;
|
||||||
ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'PROCESSLIST'
|
ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'THREADS'
|
||||||
update performance_schema.PROCESSLIST
|
update performance_schema.THREADS
|
||||||
set thread_id=12 where name like "FOO";
|
set thread_id=12 where name like "FOO";
|
||||||
ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'PROCESSLIST'
|
ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'THREADS'
|
||||||
delete from performance_schema.PROCESSLIST
|
delete from performance_schema.THREADS
|
||||||
where id=1;
|
where id=1;
|
||||||
ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'PROCESSLIST'
|
ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'THREADS'
|
||||||
delete from performance_schema.PROCESSLIST;
|
delete from performance_schema.THREADS;
|
||||||
ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'PROCESSLIST'
|
ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'THREADS'
|
||||||
LOCK TABLES performance_schema.PROCESSLIST READ;
|
LOCK TABLES performance_schema.THREADS READ;
|
||||||
ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'PROCESSLIST'
|
ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'THREADS'
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
LOCK TABLES performance_schema.PROCESSLIST WRITE;
|
LOCK TABLES performance_schema.THREADS WRITE;
|
||||||
ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'PROCESSLIST'
|
ERROR 42000: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'THREADS'
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
@@ -90,27 +90,27 @@ SUM(SUM_NUMBER_OF_BYTES_WRITE) AS sum_num_bytes_write
|
|||||||
FROM performance_schema.FILE_SUMMARY_BY_INSTANCE
|
FROM performance_schema.FILE_SUMMARY_BY_INSTANCE
|
||||||
WHERE FILE_NAME LIKE CONCAT('%', @@tmpdir, '%') ORDER BY NULL;
|
WHERE FILE_NAME LIKE CONCAT('%', @@tmpdir, '%') ORDER BY NULL;
|
||||||
SELECT EVENT_NAME, COUNT_STAR, AVG_TIMER_WAIT, SUM_TIMER_WAIT
|
SELECT EVENT_NAME, COUNT_STAR, AVG_TIMER_WAIT, SUM_TIMER_WAIT
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
WHERE COUNT_STAR > 0
|
WHERE COUNT_STAR > 0
|
||||||
ORDER BY SUM_TIMER_WAIT DESC
|
ORDER BY SUM_TIMER_WAIT DESC
|
||||||
LIMIT 10;
|
LIMIT 10;
|
||||||
SELECT i.user, SUM(TIMER_WAIT) SUM_WAIT
|
SELECT i.user, SUM(TIMER_WAIT) SUM_WAIT
|
||||||
# ((TIME_TO_SEC(TIMEDIFF(NOW(), i.startup_time)) * 1000) / SUM(TIMER_WAIT)) * 100 WAIT_PERCENTAGE
|
# ((TIME_TO_SEC(TIMEDIFF(NOW(), i.startup_time)) * 1000) / SUM(TIMER_WAIT)) * 100 WAIT_PERCENTAGE
|
||||||
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
||||||
INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
|
INNER JOIN performance_schema.THREADS p USING (THREAD_ID)
|
||||||
LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
||||||
GROUP BY i.user
|
GROUP BY i.user
|
||||||
ORDER BY SUM_WAIT DESC
|
ORDER BY SUM_WAIT DESC
|
||||||
LIMIT 20;
|
LIMIT 20;
|
||||||
SELECT h.EVENT_NAME, SUM(h.TIMER_WAIT) TOTAL_WAIT
|
SELECT h.EVENT_NAME, SUM(h.TIMER_WAIT) TOTAL_WAIT
|
||||||
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
||||||
INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
|
INNER JOIN performance_schema.THREADS p USING (THREAD_ID)
|
||||||
WHERE p.ID = 1
|
WHERE p.ID = 1
|
||||||
GROUP BY h.EVENT_NAME
|
GROUP BY h.EVENT_NAME
|
||||||
HAVING TOTAL_WAIT > 0;
|
HAVING TOTAL_WAIT > 0;
|
||||||
SELECT i.user, h.operation, SUM(NUMBER_OF_BYTES) bytes
|
SELECT i.user, h.operation, SUM(NUMBER_OF_BYTES) bytes
|
||||||
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
||||||
INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
|
INNER JOIN performance_schema.THREADS p USING (THREAD_ID)
|
||||||
LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
||||||
GROUP BY i.user, h.operation
|
GROUP BY i.user, h.operation
|
||||||
HAVING BYTES > 0
|
HAVING BYTES > 0
|
||||||
|
|||||||
@@ -6,20 +6,19 @@ performance_schema COND_INSTANCES def
|
|||||||
performance_schema EVENTS_WAITS_CURRENT def
|
performance_schema EVENTS_WAITS_CURRENT def
|
||||||
performance_schema EVENTS_WAITS_HISTORY def
|
performance_schema EVENTS_WAITS_HISTORY def
|
||||||
performance_schema EVENTS_WAITS_HISTORY_LONG def
|
performance_schema EVENTS_WAITS_HISTORY_LONG def
|
||||||
performance_schema EVENTS_WAITS_SUMMARY_BY_EVENT_NAME def
|
|
||||||
performance_schema EVENTS_WAITS_SUMMARY_BY_INSTANCE def
|
performance_schema EVENTS_WAITS_SUMMARY_BY_INSTANCE def
|
||||||
performance_schema EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME def
|
performance_schema EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME def
|
||||||
|
performance_schema EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME def
|
||||||
performance_schema FILE_INSTANCES def
|
performance_schema FILE_INSTANCES def
|
||||||
performance_schema FILE_SUMMARY_BY_EVENT_NAME def
|
performance_schema FILE_SUMMARY_BY_EVENT_NAME def
|
||||||
performance_schema FILE_SUMMARY_BY_INSTANCE def
|
performance_schema FILE_SUMMARY_BY_INSTANCE def
|
||||||
performance_schema MUTEX_INSTANCES def
|
performance_schema MUTEX_INSTANCES def
|
||||||
performance_schema PERFORMANCE_TIMERS def
|
performance_schema PERFORMANCE_TIMERS def
|
||||||
performance_schema PROCESSLIST def
|
|
||||||
performance_schema RWLOCK_INSTANCES def
|
performance_schema RWLOCK_INSTANCES def
|
||||||
performance_schema SETUP_CONSUMERS def
|
performance_schema SETUP_CONSUMERS def
|
||||||
performance_schema SETUP_INSTRUMENTS def
|
performance_schema SETUP_INSTRUMENTS def
|
||||||
performance_schema SETUP_OBJECTS def
|
|
||||||
performance_schema SETUP_TIMERS def
|
performance_schema SETUP_TIMERS def
|
||||||
|
performance_schema THREADS def
|
||||||
select upper(TABLE_NAME), TABLE_TYPE, ENGINE
|
select upper(TABLE_NAME), TABLE_TYPE, ENGINE
|
||||||
from information_schema.tables
|
from information_schema.tables
|
||||||
where TABLE_SCHEMA='performance_schema';
|
where TABLE_SCHEMA='performance_schema';
|
||||||
@@ -28,20 +27,19 @@ COND_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
|
|||||||
EVENTS_WAITS_CURRENT BASE TABLE PERFORMANCE_SCHEMA
|
EVENTS_WAITS_CURRENT BASE TABLE PERFORMANCE_SCHEMA
|
||||||
EVENTS_WAITS_HISTORY BASE TABLE PERFORMANCE_SCHEMA
|
EVENTS_WAITS_HISTORY BASE TABLE PERFORMANCE_SCHEMA
|
||||||
EVENTS_WAITS_HISTORY_LONG BASE TABLE PERFORMANCE_SCHEMA
|
EVENTS_WAITS_HISTORY_LONG BASE TABLE PERFORMANCE_SCHEMA
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME BASE TABLE PERFORMANCE_SCHEMA
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE BASE TABLE PERFORMANCE_SCHEMA
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE BASE TABLE PERFORMANCE_SCHEMA
|
||||||
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME BASE TABLE PERFORMANCE_SCHEMA
|
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME BASE TABLE PERFORMANCE_SCHEMA
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME BASE TABLE PERFORMANCE_SCHEMA
|
||||||
FILE_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
|
FILE_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
|
||||||
FILE_SUMMARY_BY_EVENT_NAME BASE TABLE PERFORMANCE_SCHEMA
|
FILE_SUMMARY_BY_EVENT_NAME BASE TABLE PERFORMANCE_SCHEMA
|
||||||
FILE_SUMMARY_BY_INSTANCE BASE TABLE PERFORMANCE_SCHEMA
|
FILE_SUMMARY_BY_INSTANCE BASE TABLE PERFORMANCE_SCHEMA
|
||||||
MUTEX_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
|
MUTEX_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
|
||||||
PERFORMANCE_TIMERS BASE TABLE PERFORMANCE_SCHEMA
|
PERFORMANCE_TIMERS BASE TABLE PERFORMANCE_SCHEMA
|
||||||
PROCESSLIST BASE TABLE PERFORMANCE_SCHEMA
|
|
||||||
RWLOCK_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
|
RWLOCK_INSTANCES BASE TABLE PERFORMANCE_SCHEMA
|
||||||
SETUP_CONSUMERS BASE TABLE PERFORMANCE_SCHEMA
|
SETUP_CONSUMERS BASE TABLE PERFORMANCE_SCHEMA
|
||||||
SETUP_INSTRUMENTS BASE TABLE PERFORMANCE_SCHEMA
|
SETUP_INSTRUMENTS BASE TABLE PERFORMANCE_SCHEMA
|
||||||
SETUP_OBJECTS BASE TABLE PERFORMANCE_SCHEMA
|
|
||||||
SETUP_TIMERS BASE TABLE PERFORMANCE_SCHEMA
|
SETUP_TIMERS BASE TABLE PERFORMANCE_SCHEMA
|
||||||
|
THREADS BASE TABLE PERFORMANCE_SCHEMA
|
||||||
select upper(TABLE_NAME), VERSION, ROW_FORMAT
|
select upper(TABLE_NAME), VERSION, ROW_FORMAT
|
||||||
from information_schema.tables
|
from information_schema.tables
|
||||||
where TABLE_SCHEMA='performance_schema';
|
where TABLE_SCHEMA='performance_schema';
|
||||||
@@ -50,20 +48,19 @@ COND_INSTANCES 10 Dynamic
|
|||||||
EVENTS_WAITS_CURRENT 10 Dynamic
|
EVENTS_WAITS_CURRENT 10 Dynamic
|
||||||
EVENTS_WAITS_HISTORY 10 Dynamic
|
EVENTS_WAITS_HISTORY 10 Dynamic
|
||||||
EVENTS_WAITS_HISTORY_LONG 10 Dynamic
|
EVENTS_WAITS_HISTORY_LONG 10 Dynamic
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME 10 Dynamic
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE 10 Dynamic
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE 10 Dynamic
|
||||||
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 10 Dynamic
|
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 10 Dynamic
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME 10 Dynamic
|
||||||
FILE_INSTANCES 10 Dynamic
|
FILE_INSTANCES 10 Dynamic
|
||||||
FILE_SUMMARY_BY_EVENT_NAME 10 Dynamic
|
FILE_SUMMARY_BY_EVENT_NAME 10 Dynamic
|
||||||
FILE_SUMMARY_BY_INSTANCE 10 Dynamic
|
FILE_SUMMARY_BY_INSTANCE 10 Dynamic
|
||||||
MUTEX_INSTANCES 10 Dynamic
|
MUTEX_INSTANCES 10 Dynamic
|
||||||
PERFORMANCE_TIMERS 10 Fixed
|
PERFORMANCE_TIMERS 10 Fixed
|
||||||
PROCESSLIST 10 Dynamic
|
|
||||||
RWLOCK_INSTANCES 10 Dynamic
|
RWLOCK_INSTANCES 10 Dynamic
|
||||||
SETUP_CONSUMERS 10 Dynamic
|
SETUP_CONSUMERS 10 Dynamic
|
||||||
SETUP_INSTRUMENTS 10 Dynamic
|
SETUP_INSTRUMENTS 10 Dynamic
|
||||||
SETUP_OBJECTS 10 Dynamic
|
|
||||||
SETUP_TIMERS 10 Dynamic
|
SETUP_TIMERS 10 Dynamic
|
||||||
|
THREADS 10 Dynamic
|
||||||
select upper(TABLE_NAME), TABLE_ROWS, AVG_ROW_LENGTH
|
select upper(TABLE_NAME), TABLE_ROWS, AVG_ROW_LENGTH
|
||||||
from information_schema.tables
|
from information_schema.tables
|
||||||
where TABLE_SCHEMA='performance_schema';
|
where TABLE_SCHEMA='performance_schema';
|
||||||
@@ -72,20 +69,19 @@ COND_INSTANCES 1000 0
|
|||||||
EVENTS_WAITS_CURRENT 1000 0
|
EVENTS_WAITS_CURRENT 1000 0
|
||||||
EVENTS_WAITS_HISTORY 1000 0
|
EVENTS_WAITS_HISTORY 1000 0
|
||||||
EVENTS_WAITS_HISTORY_LONG 10000 0
|
EVENTS_WAITS_HISTORY_LONG 10000 0
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME 1000 0
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE 1000 0
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE 1000 0
|
||||||
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 1000 0
|
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 1000 0
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME 1000 0
|
||||||
FILE_INSTANCES 1000 0
|
FILE_INSTANCES 1000 0
|
||||||
FILE_SUMMARY_BY_EVENT_NAME 1000 0
|
FILE_SUMMARY_BY_EVENT_NAME 1000 0
|
||||||
FILE_SUMMARY_BY_INSTANCE 1000 0
|
FILE_SUMMARY_BY_INSTANCE 1000 0
|
||||||
MUTEX_INSTANCES 1000 0
|
MUTEX_INSTANCES 1000 0
|
||||||
PERFORMANCE_TIMERS 5 0
|
PERFORMANCE_TIMERS 5 0
|
||||||
PROCESSLIST 1000 0
|
|
||||||
RWLOCK_INSTANCES 1000 0
|
RWLOCK_INSTANCES 1000 0
|
||||||
SETUP_CONSUMERS 8 0
|
SETUP_CONSUMERS 8 0
|
||||||
SETUP_INSTRUMENTS 1000 0
|
SETUP_INSTRUMENTS 1000 0
|
||||||
SETUP_OBJECTS 1000 0
|
|
||||||
SETUP_TIMERS 1 0
|
SETUP_TIMERS 1 0
|
||||||
|
THREADS 1000 0
|
||||||
select upper(TABLE_NAME), DATA_LENGTH, MAX_DATA_LENGTH
|
select upper(TABLE_NAME), DATA_LENGTH, MAX_DATA_LENGTH
|
||||||
from information_schema.tables
|
from information_schema.tables
|
||||||
where TABLE_SCHEMA='performance_schema';
|
where TABLE_SCHEMA='performance_schema';
|
||||||
@@ -94,20 +90,19 @@ COND_INSTANCES 0 0
|
|||||||
EVENTS_WAITS_CURRENT 0 0
|
EVENTS_WAITS_CURRENT 0 0
|
||||||
EVENTS_WAITS_HISTORY 0 0
|
EVENTS_WAITS_HISTORY 0 0
|
||||||
EVENTS_WAITS_HISTORY_LONG 0 0
|
EVENTS_WAITS_HISTORY_LONG 0 0
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME 0 0
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE 0 0
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE 0 0
|
||||||
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 0 0
|
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 0 0
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME 0 0
|
||||||
FILE_INSTANCES 0 0
|
FILE_INSTANCES 0 0
|
||||||
FILE_SUMMARY_BY_EVENT_NAME 0 0
|
FILE_SUMMARY_BY_EVENT_NAME 0 0
|
||||||
FILE_SUMMARY_BY_INSTANCE 0 0
|
FILE_SUMMARY_BY_INSTANCE 0 0
|
||||||
MUTEX_INSTANCES 0 0
|
MUTEX_INSTANCES 0 0
|
||||||
PERFORMANCE_TIMERS 0 0
|
PERFORMANCE_TIMERS 0 0
|
||||||
PROCESSLIST 0 0
|
|
||||||
RWLOCK_INSTANCES 0 0
|
RWLOCK_INSTANCES 0 0
|
||||||
SETUP_CONSUMERS 0 0
|
SETUP_CONSUMERS 0 0
|
||||||
SETUP_INSTRUMENTS 0 0
|
SETUP_INSTRUMENTS 0 0
|
||||||
SETUP_OBJECTS 0 0
|
|
||||||
SETUP_TIMERS 0 0
|
SETUP_TIMERS 0 0
|
||||||
|
THREADS 0 0
|
||||||
select upper(TABLE_NAME), INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT
|
select upper(TABLE_NAME), INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT
|
||||||
from information_schema.tables
|
from information_schema.tables
|
||||||
where TABLE_SCHEMA='performance_schema';
|
where TABLE_SCHEMA='performance_schema';
|
||||||
@@ -116,20 +111,19 @@ COND_INSTANCES 0 0 NULL
|
|||||||
EVENTS_WAITS_CURRENT 0 0 NULL
|
EVENTS_WAITS_CURRENT 0 0 NULL
|
||||||
EVENTS_WAITS_HISTORY 0 0 NULL
|
EVENTS_WAITS_HISTORY 0 0 NULL
|
||||||
EVENTS_WAITS_HISTORY_LONG 0 0 NULL
|
EVENTS_WAITS_HISTORY_LONG 0 0 NULL
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME 0 0 NULL
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE 0 0 NULL
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE 0 0 NULL
|
||||||
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 0 0 NULL
|
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME 0 0 NULL
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME 0 0 NULL
|
||||||
FILE_INSTANCES 0 0 NULL
|
FILE_INSTANCES 0 0 NULL
|
||||||
FILE_SUMMARY_BY_EVENT_NAME 0 0 NULL
|
FILE_SUMMARY_BY_EVENT_NAME 0 0 NULL
|
||||||
FILE_SUMMARY_BY_INSTANCE 0 0 NULL
|
FILE_SUMMARY_BY_INSTANCE 0 0 NULL
|
||||||
MUTEX_INSTANCES 0 0 NULL
|
MUTEX_INSTANCES 0 0 NULL
|
||||||
PERFORMANCE_TIMERS 0 0 NULL
|
PERFORMANCE_TIMERS 0 0 NULL
|
||||||
PROCESSLIST 0 0 NULL
|
|
||||||
RWLOCK_INSTANCES 0 0 NULL
|
RWLOCK_INSTANCES 0 0 NULL
|
||||||
SETUP_CONSUMERS 0 0 NULL
|
SETUP_CONSUMERS 0 0 NULL
|
||||||
SETUP_INSTRUMENTS 0 0 NULL
|
SETUP_INSTRUMENTS 0 0 NULL
|
||||||
SETUP_OBJECTS 0 0 NULL
|
|
||||||
SETUP_TIMERS 0 0 NULL
|
SETUP_TIMERS 0 0 NULL
|
||||||
|
THREADS 0 0 NULL
|
||||||
select upper(TABLE_NAME), CREATE_TIME, UPDATE_TIME, CHECK_TIME
|
select upper(TABLE_NAME), CREATE_TIME, UPDATE_TIME, CHECK_TIME
|
||||||
from information_schema.tables
|
from information_schema.tables
|
||||||
where TABLE_SCHEMA='performance_schema';
|
where TABLE_SCHEMA='performance_schema';
|
||||||
@@ -138,20 +132,19 @@ COND_INSTANCES NULL NULL NULL
|
|||||||
EVENTS_WAITS_CURRENT NULL NULL NULL
|
EVENTS_WAITS_CURRENT NULL NULL NULL
|
||||||
EVENTS_WAITS_HISTORY NULL NULL NULL
|
EVENTS_WAITS_HISTORY NULL NULL NULL
|
||||||
EVENTS_WAITS_HISTORY_LONG NULL NULL NULL
|
EVENTS_WAITS_HISTORY_LONG NULL NULL NULL
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME NULL NULL NULL
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE NULL NULL NULL
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE NULL NULL NULL
|
||||||
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME NULL NULL NULL
|
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME NULL NULL NULL
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME NULL NULL NULL
|
||||||
FILE_INSTANCES NULL NULL NULL
|
FILE_INSTANCES NULL NULL NULL
|
||||||
FILE_SUMMARY_BY_EVENT_NAME NULL NULL NULL
|
FILE_SUMMARY_BY_EVENT_NAME NULL NULL NULL
|
||||||
FILE_SUMMARY_BY_INSTANCE NULL NULL NULL
|
FILE_SUMMARY_BY_INSTANCE NULL NULL NULL
|
||||||
MUTEX_INSTANCES NULL NULL NULL
|
MUTEX_INSTANCES NULL NULL NULL
|
||||||
PERFORMANCE_TIMERS NULL NULL NULL
|
PERFORMANCE_TIMERS NULL NULL NULL
|
||||||
PROCESSLIST NULL NULL NULL
|
|
||||||
RWLOCK_INSTANCES NULL NULL NULL
|
RWLOCK_INSTANCES NULL NULL NULL
|
||||||
SETUP_CONSUMERS NULL NULL NULL
|
SETUP_CONSUMERS NULL NULL NULL
|
||||||
SETUP_INSTRUMENTS NULL NULL NULL
|
SETUP_INSTRUMENTS NULL NULL NULL
|
||||||
SETUP_OBJECTS NULL NULL NULL
|
|
||||||
SETUP_TIMERS NULL NULL NULL
|
SETUP_TIMERS NULL NULL NULL
|
||||||
|
THREADS NULL NULL NULL
|
||||||
select upper(TABLE_NAME), TABLE_COLLATION, CHECKSUM
|
select upper(TABLE_NAME), TABLE_COLLATION, CHECKSUM
|
||||||
from information_schema.tables
|
from information_schema.tables
|
||||||
where TABLE_SCHEMA='performance_schema';
|
where TABLE_SCHEMA='performance_schema';
|
||||||
@@ -160,20 +153,19 @@ COND_INSTANCES utf8_general_ci NULL
|
|||||||
EVENTS_WAITS_CURRENT utf8_general_ci NULL
|
EVENTS_WAITS_CURRENT utf8_general_ci NULL
|
||||||
EVENTS_WAITS_HISTORY utf8_general_ci NULL
|
EVENTS_WAITS_HISTORY utf8_general_ci NULL
|
||||||
EVENTS_WAITS_HISTORY_LONG utf8_general_ci NULL
|
EVENTS_WAITS_HISTORY_LONG utf8_general_ci NULL
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME utf8_general_ci NULL
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE utf8_general_ci NULL
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE utf8_general_ci NULL
|
||||||
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME utf8_general_ci NULL
|
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME utf8_general_ci NULL
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME utf8_general_ci NULL
|
||||||
FILE_INSTANCES utf8_general_ci NULL
|
FILE_INSTANCES utf8_general_ci NULL
|
||||||
FILE_SUMMARY_BY_EVENT_NAME utf8_general_ci NULL
|
FILE_SUMMARY_BY_EVENT_NAME utf8_general_ci NULL
|
||||||
FILE_SUMMARY_BY_INSTANCE utf8_general_ci NULL
|
FILE_SUMMARY_BY_INSTANCE utf8_general_ci NULL
|
||||||
MUTEX_INSTANCES utf8_general_ci NULL
|
MUTEX_INSTANCES utf8_general_ci NULL
|
||||||
PERFORMANCE_TIMERS utf8_general_ci NULL
|
PERFORMANCE_TIMERS utf8_general_ci NULL
|
||||||
PROCESSLIST utf8_general_ci NULL
|
|
||||||
RWLOCK_INSTANCES utf8_general_ci NULL
|
RWLOCK_INSTANCES utf8_general_ci NULL
|
||||||
SETUP_CONSUMERS utf8_general_ci NULL
|
SETUP_CONSUMERS utf8_general_ci NULL
|
||||||
SETUP_INSTRUMENTS utf8_general_ci NULL
|
SETUP_INSTRUMENTS utf8_general_ci NULL
|
||||||
SETUP_OBJECTS utf8_general_ci NULL
|
|
||||||
SETUP_TIMERS utf8_general_ci NULL
|
SETUP_TIMERS utf8_general_ci NULL
|
||||||
|
THREADS utf8_general_ci NULL
|
||||||
select upper(TABLE_NAME), TABLE_COMMENT
|
select upper(TABLE_NAME), TABLE_COMMENT
|
||||||
from information_schema.tables
|
from information_schema.tables
|
||||||
where TABLE_SCHEMA='performance_schema';
|
where TABLE_SCHEMA='performance_schema';
|
||||||
@@ -182,17 +174,16 @@ COND_INSTANCES
|
|||||||
EVENTS_WAITS_CURRENT
|
EVENTS_WAITS_CURRENT
|
||||||
EVENTS_WAITS_HISTORY
|
EVENTS_WAITS_HISTORY
|
||||||
EVENTS_WAITS_HISTORY_LONG
|
EVENTS_WAITS_HISTORY_LONG
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE
|
||||||
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
|
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
FILE_INSTANCES
|
FILE_INSTANCES
|
||||||
FILE_SUMMARY_BY_EVENT_NAME
|
FILE_SUMMARY_BY_EVENT_NAME
|
||||||
FILE_SUMMARY_BY_INSTANCE
|
FILE_SUMMARY_BY_INSTANCE
|
||||||
MUTEX_INSTANCES
|
MUTEX_INSTANCES
|
||||||
PERFORMANCE_TIMERS
|
PERFORMANCE_TIMERS
|
||||||
PROCESSLIST
|
|
||||||
RWLOCK_INSTANCES
|
RWLOCK_INSTANCES
|
||||||
SETUP_CONSUMERS
|
SETUP_CONSUMERS
|
||||||
SETUP_INSTRUMENTS
|
SETUP_INSTRUMENTS
|
||||||
SETUP_OBJECTS
|
|
||||||
SETUP_TIMERS
|
SETUP_TIMERS
|
||||||
|
THREADS
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
||||||
WHERE THREAD_ID IN
|
WHERE THREAD_ID IN
|
||||||
(SELECT THREAD_ID FROM performance_schema.PROCESSLIST)
|
(SELECT THREAD_ID FROM performance_schema.THREADS)
|
||||||
AND EVENT_NAME IN
|
AND EVENT_NAME IN
|
||||||
(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
|
(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
|
||||||
WHERE NAME LIKE "wait/synch/%")
|
WHERE NAME LIKE "wait/synch/%")
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ show variables like "performance_schema_max_thread%";
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema_max_thread_classes 50
|
performance_schema_max_thread_classes 50
|
||||||
performance_schema_max_thread_instances 10
|
performance_schema_max_thread_instances 10
|
||||||
select count(*) from performance_schema.PROCESSLIST
|
select count(*) from performance_schema.THREADS
|
||||||
where name like "thread/sql/main";
|
where name like "thread/sql/main";
|
||||||
count(*)
|
count(*)
|
||||||
1
|
1
|
||||||
select count(*) from performance_schema.PROCESSLIST
|
select count(*) from performance_schema.THREADS
|
||||||
where name like "thread/sql/OneConnection";
|
where name like "thread/sql/OneConnection";
|
||||||
count(*)
|
count(*)
|
||||||
0
|
0
|
||||||
|
|||||||
@@ -12,21 +12,20 @@ ERROR 1050 (42S01) at line 183: Table 'COND_INSTANCES' already exists
|
|||||||
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
||||||
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
||||||
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
||||||
ERROR 1050 (42S01) at line 261: Table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 262: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 282: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 283: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 411: Table 'PROCESSLIST' already exists
|
ERROR 1050 (42S01) at line 412: Table 'RWLOCK_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 429: Table 'RWLOCK_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 428: Table 'SETUP_CONSUMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 445: Table 'SETUP_CONSUMERS' already exists
|
ERROR 1050 (42S01) at line 445: Table 'SETUP_INSTRUMENTS' already exists
|
||||||
ERROR 1050 (42S01) at line 462: Table 'SETUP_INSTRUMENTS' already exists
|
ERROR 1050 (42S01) at line 461: Table 'SETUP_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 482: Table 'SETUP_OBJECTS' already exists
|
ERROR 1050 (42S01) at line 478: Table 'THREADS' already exists
|
||||||
ERROR 1050 (42S01) at line 498: Table 'SETUP_TIMERS' already exists
|
ERROR 1644 (HY000) at line 1118: Unexpected content found in the performance_schema database.
|
||||||
ERROR 1644 (HY000) at line 1138: Unexpected content found in the performance_schema database.
|
|
||||||
FATAL ERROR: Upgrade failed
|
FATAL ERROR: Upgrade failed
|
||||||
show tables like "user_table";
|
show tables like "user_table";
|
||||||
Tables_in_performance_schema (user_table)
|
Tables_in_performance_schema (user_table)
|
||||||
@@ -43,21 +42,20 @@ ERROR 1050 (42S01) at line 183: Table 'COND_INSTANCES' already exists
|
|||||||
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
||||||
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
||||||
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
||||||
ERROR 1050 (42S01) at line 261: Table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 262: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 282: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 283: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 411: Table 'PROCESSLIST' already exists
|
ERROR 1050 (42S01) at line 412: Table 'RWLOCK_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 429: Table 'RWLOCK_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 428: Table 'SETUP_CONSUMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 445: Table 'SETUP_CONSUMERS' already exists
|
ERROR 1050 (42S01) at line 445: Table 'SETUP_INSTRUMENTS' already exists
|
||||||
ERROR 1050 (42S01) at line 462: Table 'SETUP_INSTRUMENTS' already exists
|
ERROR 1050 (42S01) at line 461: Table 'SETUP_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 482: Table 'SETUP_OBJECTS' already exists
|
ERROR 1050 (42S01) at line 478: Table 'THREADS' already exists
|
||||||
ERROR 1050 (42S01) at line 498: Table 'SETUP_TIMERS' already exists
|
ERROR 1644 (HY000) at line 1118: Unexpected content found in the performance_schema database.
|
||||||
ERROR 1644 (HY000) at line 1138: Unexpected content found in the performance_schema database.
|
|
||||||
FATAL ERROR: Upgrade failed
|
FATAL ERROR: Upgrade failed
|
||||||
show tables like "user_view";
|
show tables like "user_view";
|
||||||
Tables_in_performance_schema (user_view)
|
Tables_in_performance_schema (user_view)
|
||||||
@@ -72,21 +70,20 @@ ERROR 1050 (42S01) at line 183: Table 'COND_INSTANCES' already exists
|
|||||||
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
||||||
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
||||||
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
||||||
ERROR 1050 (42S01) at line 261: Table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 262: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 282: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 283: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 411: Table 'PROCESSLIST' already exists
|
ERROR 1050 (42S01) at line 412: Table 'RWLOCK_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 429: Table 'RWLOCK_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 428: Table 'SETUP_CONSUMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 445: Table 'SETUP_CONSUMERS' already exists
|
ERROR 1050 (42S01) at line 445: Table 'SETUP_INSTRUMENTS' already exists
|
||||||
ERROR 1050 (42S01) at line 462: Table 'SETUP_INSTRUMENTS' already exists
|
ERROR 1050 (42S01) at line 461: Table 'SETUP_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 482: Table 'SETUP_OBJECTS' already exists
|
ERROR 1050 (42S01) at line 478: Table 'THREADS' already exists
|
||||||
ERROR 1050 (42S01) at line 498: Table 'SETUP_TIMERS' already exists
|
ERROR 1644 (HY000) at line 1118: Unexpected content found in the performance_schema database.
|
||||||
ERROR 1644 (HY000) at line 1138: Unexpected content found in the performance_schema database.
|
|
||||||
FATAL ERROR: Upgrade failed
|
FATAL ERROR: Upgrade failed
|
||||||
select name from mysql.proc where db='performance_schema';
|
select name from mysql.proc where db='performance_schema';
|
||||||
name
|
name
|
||||||
@@ -101,21 +98,20 @@ ERROR 1050 (42S01) at line 183: Table 'COND_INSTANCES' already exists
|
|||||||
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
||||||
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
||||||
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
||||||
ERROR 1050 (42S01) at line 261: Table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 262: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 282: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 283: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 411: Table 'PROCESSLIST' already exists
|
ERROR 1050 (42S01) at line 412: Table 'RWLOCK_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 429: Table 'RWLOCK_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 428: Table 'SETUP_CONSUMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 445: Table 'SETUP_CONSUMERS' already exists
|
ERROR 1050 (42S01) at line 445: Table 'SETUP_INSTRUMENTS' already exists
|
||||||
ERROR 1050 (42S01) at line 462: Table 'SETUP_INSTRUMENTS' already exists
|
ERROR 1050 (42S01) at line 461: Table 'SETUP_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 482: Table 'SETUP_OBJECTS' already exists
|
ERROR 1050 (42S01) at line 478: Table 'THREADS' already exists
|
||||||
ERROR 1050 (42S01) at line 498: Table 'SETUP_TIMERS' already exists
|
ERROR 1644 (HY000) at line 1118: Unexpected content found in the performance_schema database.
|
||||||
ERROR 1644 (HY000) at line 1138: Unexpected content found in the performance_schema database.
|
|
||||||
FATAL ERROR: Upgrade failed
|
FATAL ERROR: Upgrade failed
|
||||||
select name from mysql.proc where db='performance_schema';
|
select name from mysql.proc where db='performance_schema';
|
||||||
name
|
name
|
||||||
@@ -130,21 +126,20 @@ ERROR 1050 (42S01) at line 183: Table 'COND_INSTANCES' already exists
|
|||||||
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
ERROR 1050 (42S01) at line 213: Table 'EVENTS_WAITS_CURRENT' already exists
|
||||||
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
ERROR 1050 (42S01) at line 227: Table 'EVENTS_WAITS_HISTORY' already exists
|
||||||
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
ERROR 1050 (42S01) at line 241: Table 'EVENTS_WAITS_HISTORY_LONG' already exists
|
||||||
ERROR 1050 (42S01) at line 261: Table 'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 262: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 282: Table 'EVENTS_WAITS_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 283: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 303: Table 'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 320: Table 'FILE_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
ERROR 1050 (42S01) at line 339: Table 'FILE_SUMMARY_BY_EVENT_NAME' already exists
|
||||||
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
ERROR 1050 (42S01) at line 359: Table 'FILE_SUMMARY_BY_INSTANCE' already exists
|
||||||
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 376: Table 'MUTEX_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
ERROR 1050 (42S01) at line 394: Table 'PERFORMANCE_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 411: Table 'PROCESSLIST' already exists
|
ERROR 1050 (42S01) at line 412: Table 'RWLOCK_INSTANCES' already exists
|
||||||
ERROR 1050 (42S01) at line 429: Table 'RWLOCK_INSTANCES' already exists
|
ERROR 1050 (42S01) at line 428: Table 'SETUP_CONSUMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 445: Table 'SETUP_CONSUMERS' already exists
|
ERROR 1050 (42S01) at line 445: Table 'SETUP_INSTRUMENTS' already exists
|
||||||
ERROR 1050 (42S01) at line 462: Table 'SETUP_INSTRUMENTS' already exists
|
ERROR 1050 (42S01) at line 461: Table 'SETUP_TIMERS' already exists
|
||||||
ERROR 1050 (42S01) at line 482: Table 'SETUP_OBJECTS' already exists
|
ERROR 1050 (42S01) at line 478: Table 'THREADS' already exists
|
||||||
ERROR 1050 (42S01) at line 498: Table 'SETUP_TIMERS' already exists
|
ERROR 1644 (HY000) at line 1118: Unexpected content found in the performance_schema database.
|
||||||
ERROR 1644 (HY000) at line 1138: Unexpected content found in the performance_schema database.
|
|
||||||
FATAL ERROR: Upgrade failed
|
FATAL ERROR: Upgrade failed
|
||||||
select name from mysql.event where db='performance_schema';
|
select name from mysql.event where db='performance_schema';
|
||||||
name
|
name
|
||||||
|
|||||||
@@ -12,20 +12,19 @@ COND_INSTANCES
|
|||||||
EVENTS_WAITS_CURRENT
|
EVENTS_WAITS_CURRENT
|
||||||
EVENTS_WAITS_HISTORY
|
EVENTS_WAITS_HISTORY
|
||||||
EVENTS_WAITS_HISTORY_LONG
|
EVENTS_WAITS_HISTORY_LONG
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE
|
||||||
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
|
EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
FILE_INSTANCES
|
FILE_INSTANCES
|
||||||
FILE_SUMMARY_BY_EVENT_NAME
|
FILE_SUMMARY_BY_EVENT_NAME
|
||||||
FILE_SUMMARY_BY_INSTANCE
|
FILE_SUMMARY_BY_INSTANCE
|
||||||
MUTEX_INSTANCES
|
MUTEX_INSTANCES
|
||||||
PERFORMANCE_TIMERS
|
PERFORMANCE_TIMERS
|
||||||
PROCESSLIST
|
|
||||||
RWLOCK_INSTANCES
|
RWLOCK_INSTANCES
|
||||||
SETUP_CONSUMERS
|
SETUP_CONSUMERS
|
||||||
SETUP_INSTRUMENTS
|
SETUP_INSTRUMENTS
|
||||||
SETUP_OBJECTS
|
|
||||||
SETUP_TIMERS
|
SETUP_TIMERS
|
||||||
|
THREADS
|
||||||
show create table COND_INSTANCES;
|
show create table COND_INSTANCES;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
COND_INSTANCES CREATE TABLE `COND_INSTANCES` (
|
COND_INSTANCES CREATE TABLE `COND_INSTANCES` (
|
||||||
@@ -92,16 +91,6 @@ EVENTS_WAITS_HISTORY_LONG CREATE TABLE `EVENTS_WAITS_HISTORY_LONG` (
|
|||||||
`NUMBER_OF_BYTES` bigint(20) unsigned DEFAULT NULL,
|
`NUMBER_OF_BYTES` bigint(20) unsigned DEFAULT NULL,
|
||||||
`FLAGS` int(10) unsigned DEFAULT NULL
|
`FLAGS` int(10) unsigned DEFAULT NULL
|
||||||
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
||||||
show create table EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
Table Create Table
|
|
||||||
EVENTS_WAITS_SUMMARY_BY_EVENT_NAME CREATE TABLE `EVENTS_WAITS_SUMMARY_BY_EVENT_NAME` (
|
|
||||||
`EVENT_NAME` varchar(128) NOT NULL,
|
|
||||||
`COUNT_STAR` bigint(20) unsigned NOT NULL,
|
|
||||||
`SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
|
|
||||||
`MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
|
|
||||||
`AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
|
|
||||||
`MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
|
|
||||||
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
|
||||||
show create table EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
show create table EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
EVENTS_WAITS_SUMMARY_BY_INSTANCE CREATE TABLE `EVENTS_WAITS_SUMMARY_BY_INSTANCE` (
|
EVENTS_WAITS_SUMMARY_BY_INSTANCE CREATE TABLE `EVENTS_WAITS_SUMMARY_BY_INSTANCE` (
|
||||||
@@ -124,6 +113,16 @@ EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME CREATE TABLE `EVENTS_WAITS_SUMMARY_
|
|||||||
`AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
|
`AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
|
||||||
`MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
|
`MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
|
||||||
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
||||||
|
show create table EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
|
Table Create Table
|
||||||
|
EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME CREATE TABLE `EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME` (
|
||||||
|
`EVENT_NAME` varchar(128) NOT NULL,
|
||||||
|
`COUNT_STAR` bigint(20) unsigned NOT NULL,
|
||||||
|
`SUM_TIMER_WAIT` bigint(20) unsigned NOT NULL,
|
||||||
|
`MIN_TIMER_WAIT` bigint(20) unsigned NOT NULL,
|
||||||
|
`AVG_TIMER_WAIT` bigint(20) unsigned NOT NULL,
|
||||||
|
`MAX_TIMER_WAIT` bigint(20) unsigned NOT NULL
|
||||||
|
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
||||||
show create table FILE_INSTANCES;
|
show create table FILE_INSTANCES;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
FILE_INSTANCES CREATE TABLE `FILE_INSTANCES` (
|
FILE_INSTANCES CREATE TABLE `FILE_INSTANCES` (
|
||||||
@@ -165,13 +164,6 @@ PERFORMANCE_TIMERS CREATE TABLE `PERFORMANCE_TIMERS` (
|
|||||||
`TIMER_RESOLUTION` bigint(20) DEFAULT NULL,
|
`TIMER_RESOLUTION` bigint(20) DEFAULT NULL,
|
||||||
`TIMER_OVERHEAD` bigint(20) DEFAULT NULL
|
`TIMER_OVERHEAD` bigint(20) DEFAULT NULL
|
||||||
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
||||||
show create table PROCESSLIST;
|
|
||||||
Table Create Table
|
|
||||||
PROCESSLIST CREATE TABLE `PROCESSLIST` (
|
|
||||||
`THREAD_ID` int(11) NOT NULL,
|
|
||||||
`ID` int(11) NOT NULL,
|
|
||||||
`NAME` varchar(64) NOT NULL
|
|
||||||
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
|
||||||
show create table RWLOCK_INSTANCES;
|
show create table RWLOCK_INSTANCES;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
RWLOCK_INSTANCES CREATE TABLE `RWLOCK_INSTANCES` (
|
RWLOCK_INSTANCES CREATE TABLE `RWLOCK_INSTANCES` (
|
||||||
@@ -193,19 +185,16 @@ SETUP_INSTRUMENTS CREATE TABLE `SETUP_INSTRUMENTS` (
|
|||||||
`ENABLED` enum('YES','NO') NOT NULL,
|
`ENABLED` enum('YES','NO') NOT NULL,
|
||||||
`TIMED` enum('YES','NO') NOT NULL
|
`TIMED` enum('YES','NO') NOT NULL
|
||||||
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
||||||
show create table SETUP_OBJECTS;
|
|
||||||
Table Create Table
|
|
||||||
SETUP_OBJECTS CREATE TABLE `SETUP_OBJECTS` (
|
|
||||||
`OBJECT_TYPE` varchar(64) DEFAULT NULL,
|
|
||||||
`OBJECT_SCHEMA` varchar(64) DEFAULT NULL,
|
|
||||||
`OBJECT_NAME` varchar(64) DEFAULT NULL,
|
|
||||||
`ENABLED` enum('YES','NO') NOT NULL,
|
|
||||||
`TIMED` enum('YES','NO') NOT NULL,
|
|
||||||
`AGGREGATED` enum('YES','NO') NOT NULL
|
|
||||||
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
|
||||||
show create table SETUP_TIMERS;
|
show create table SETUP_TIMERS;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
SETUP_TIMERS CREATE TABLE `SETUP_TIMERS` (
|
SETUP_TIMERS CREATE TABLE `SETUP_TIMERS` (
|
||||||
`NAME` varchar(64) NOT NULL,
|
`NAME` varchar(64) NOT NULL,
|
||||||
`TIMER_NAME` enum('CYCLE','NANOSECOND','MICROSECOND','MILLISECOND','TICK') NOT NULL
|
`TIMER_NAME` enum('CYCLE','NANOSECOND','MICROSECOND','MILLISECOND','TICK') NOT NULL
|
||||||
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
||||||
|
show create table THREADS;
|
||||||
|
Table Create Table
|
||||||
|
THREADS CREATE TABLE `THREADS` (
|
||||||
|
`THREAD_ID` int(11) NOT NULL,
|
||||||
|
`ID` int(11) NOT NULL,
|
||||||
|
`NAME` varchar(64) NOT NULL
|
||||||
|
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ OPERATION TOTAL
|
|||||||
chsize [NUM_BYTES]
|
chsize [NUM_BYTES]
|
||||||
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
||||||
WHERE THREAD_ID IN
|
WHERE THREAD_ID IN
|
||||||
(SELECT THREAD_ID FROM performance_schema.PROCESSLIST)
|
(SELECT THREAD_ID FROM performance_schema.THREADS)
|
||||||
AND EVENT_NAME IN
|
AND EVENT_NAME IN
|
||||||
(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
|
(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
|
||||||
WHERE NAME LIKE "wait/synch/%")
|
WHERE NAME LIKE "wait/synch/%")
|
||||||
@@ -86,7 +86,7 @@ DROP TRIGGER t_ps_trigger;
|
|||||||
DROP PROCEDURE IF EXISTS t_ps_proc;
|
DROP PROCEDURE IF EXISTS t_ps_proc;
|
||||||
CREATE PROCEDURE t_ps_proc(IN tid INT, OUT pid INT)
|
CREATE PROCEDURE t_ps_proc(IN tid INT, OUT pid INT)
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT id FROM performance_schema.PROCESSLIST
|
SELECT id FROM performance_schema.THREADS
|
||||||
WHERE THREAD_ID = tid INTO pid;
|
WHERE THREAD_ID = tid INTO pid;
|
||||||
END;
|
END;
|
||||||
|
|
|
|
||||||
@@ -94,7 +94,7 @@ CALL t_ps_proc(0, @p_id);
|
|||||||
DROP FUNCTION IF EXISTS t_ps_proc;
|
DROP FUNCTION IF EXISTS t_ps_proc;
|
||||||
CREATE FUNCTION t_ps_func(tid INT) RETURNS int
|
CREATE FUNCTION t_ps_func(tid INT) RETURNS int
|
||||||
BEGIN
|
BEGIN
|
||||||
return (SELECT id FROM performance_schema.PROCESSLIST
|
return (SELECT id FROM performance_schema.THREADS
|
||||||
WHERE THREAD_ID = tid);
|
WHERE THREAD_ID = tid);
|
||||||
END;
|
END;
|
||||||
|
|
|
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
@@ -66,7 +65,7 @@ select variable_value > 0 from information_schema.global_status
|
|||||||
where variable_name like 'PERFORMANCE_SCHEMA_THREAD_CLASSES_LOST';
|
where variable_name like 'PERFORMANCE_SCHEMA_THREAD_CLASSES_LOST';
|
||||||
variable_value > 0
|
variable_value > 0
|
||||||
1
|
1
|
||||||
select count(*) from performance_schema.PROCESSLIST;
|
select count(*) from performance_schema.THREADS;
|
||||||
count(*)
|
count(*)
|
||||||
0
|
0
|
||||||
show status like "performance_schema_thread_instances_lost";
|
show status like "performance_schema_thread_instances_lost";
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
@@ -64,7 +63,7 @@ Performance_schema_thread_classes_lost 0
|
|||||||
show variables like "performance_schema_max_thread_instances";
|
show variables like "performance_schema_max_thread_instances";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema_max_thread_instances 0
|
performance_schema_max_thread_instances 0
|
||||||
select count(*) from performance_schema.PROCESSLIST;
|
select count(*) from performance_schema.THREADS;
|
||||||
count(*)
|
count(*)
|
||||||
0
|
0
|
||||||
select variable_value > 0 from information_schema.global_status
|
select variable_value > 0 from information_schema.global_status
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema OFF
|
performance_schema OFF
|
||||||
|
|||||||
@@ -21,20 +21,19 @@ select * from performance_schema.COND_INSTANCES;
|
|||||||
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
select * from performance_schema.EVENTS_WAITS_CURRENT;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
select * from performance_schema.EVENTS_WAITS_HISTORY;
|
||||||
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
select * from performance_schema.EVENTS_WAITS_HISTORY_LONG;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_INSTANCES;
|
select * from performance_schema.FILE_INSTANCES;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
select * from performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
select * from performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
select * from performance_schema.MUTEX_INSTANCES;
|
select * from performance_schema.MUTEX_INSTANCES;
|
||||||
select * from performance_schema.PERFORMANCE_TIMERS;
|
select * from performance_schema.PERFORMANCE_TIMERS;
|
||||||
select * from performance_schema.PROCESSLIST;
|
|
||||||
select * from performance_schema.RWLOCK_INSTANCES;
|
select * from performance_schema.RWLOCK_INSTANCES;
|
||||||
select * from performance_schema.SETUP_CONSUMERS;
|
select * from performance_schema.SETUP_CONSUMERS;
|
||||||
select * from performance_schema.SETUP_INSTRUMENTS;
|
select * from performance_schema.SETUP_INSTRUMENTS;
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
select * from performance_schema.SETUP_TIMERS;
|
select * from performance_schema.SETUP_TIMERS;
|
||||||
|
select * from performance_schema.THREADS;
|
||||||
show variables like "performance_schema%";
|
show variables like "performance_schema%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
performance_schema ON
|
performance_schema ON
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ update performance_schema.SETUP_CONSUMERS set enabled = 'NO';
|
|||||||
# Cleanup statistics
|
# Cleanup statistics
|
||||||
truncate table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
truncate table performance_schema.FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
truncate table performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
truncate table performance_schema.FILE_SUMMARY_BY_INSTANCE;
|
||||||
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
truncate table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
|
||||||
@@ -66,9 +66,9 @@ set @dump_all=FALSE;
|
|||||||
# because doing so removes a row in FILE_SUMMARY_BY_INSTANCE.
|
# because doing so removes a row in FILE_SUMMARY_BY_INSTANCE.
|
||||||
|
|
||||||
# Likewise:
|
# Likewise:
|
||||||
# - COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_EVENT_NAME) >=
|
# - COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME) >=
|
||||||
# COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_INSTANCE)
|
# COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_INSTANCE)
|
||||||
# - MIN(EVENTS_WAITS_SUMMARY_BY_EVENT_NAME) <=
|
# - MIN(EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME) <=
|
||||||
# MIN(EVENTS_WAITS_SUMMARY_BY_INSTANCE)
|
# MIN(EVENTS_WAITS_SUMMARY_BY_INSTANCE)
|
||||||
# There will be equality only when an instrument instance
|
# There will be equality only when an instrument instance
|
||||||
# is not removed, which is next to impossible to predictably guarantee
|
# is not removed, which is next to impossible to predictably guarantee
|
||||||
@@ -80,9 +80,9 @@ set @dump_all=FALSE;
|
|||||||
# Both cause a row to be deleted from EVENTS_WAITS_SUMMARY_BY_INSTANCE.
|
# Both cause a row to be deleted from EVENTS_WAITS_SUMMARY_BY_INSTANCE.
|
||||||
|
|
||||||
# Likewise:
|
# Likewise:
|
||||||
# - COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_EVENT_NAME) >=
|
# - COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME) >=
|
||||||
# COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME)
|
# COUNT/SUM/MAX(EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME)
|
||||||
# - MIN(EVENTS_WAITS_SUMMARY_BY_EVENT_NAME) <=
|
# - MIN(EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME) <=
|
||||||
# MIN(EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME)
|
# MIN(EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME)
|
||||||
# There will be equality only when no thread is removed,
|
# There will be equality only when no thread is removed,
|
||||||
# that is if no thread disconnects, or no sub thread (for example insert
|
# that is if no thread disconnects, or no sub thread (for example insert
|
||||||
@@ -131,14 +131,14 @@ OR @dump_all;
|
|||||||
--echo "Verifying waits aggregate consistency (instance)"
|
--echo "Verifying waits aggregate consistency (instance)"
|
||||||
|
|
||||||
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(i.SUM_TIMER_WAIT)
|
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(i.SUM_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
HAVING (e.SUM_TIMER_WAIT < SUM(i.SUM_TIMER_WAIT))
|
HAVING (e.SUM_TIMER_WAIT < SUM(i.SUM_TIMER_WAIT))
|
||||||
OR @dump_all;
|
OR @dump_all;
|
||||||
|
|
||||||
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(i.MIN_TIMER_WAIT)
|
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(i.MIN_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
HAVING (e.MIN_TIMER_WAIT > MIN(i.MIN_TIMER_WAIT))
|
HAVING (e.MIN_TIMER_WAIT > MIN(i.MIN_TIMER_WAIT))
|
||||||
@@ -146,7 +146,7 @@ AND (MIN(i.MIN_TIMER_WAIT) != 0)
|
|||||||
OR @dump_all;
|
OR @dump_all;
|
||||||
|
|
||||||
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(i.MAX_TIMER_WAIT)
|
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(i.MAX_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
HAVING (e.MAX_TIMER_WAIT < MAX(i.MAX_TIMER_WAIT))
|
HAVING (e.MAX_TIMER_WAIT < MAX(i.MAX_TIMER_WAIT))
|
||||||
@@ -155,7 +155,7 @@ OR @dump_all;
|
|||||||
--echo "Verifying waits aggregate consistency (thread)"
|
--echo "Verifying waits aggregate consistency (thread)"
|
||||||
|
|
||||||
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(t.SUM_TIMER_WAIT)
|
SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(t.SUM_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
||||||
USING (EVENT_NAME)
|
USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
@@ -163,7 +163,7 @@ HAVING (e.SUM_TIMER_WAIT < SUM(t.SUM_TIMER_WAIT))
|
|||||||
OR @dump_all;
|
OR @dump_all;
|
||||||
|
|
||||||
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(t.MIN_TIMER_WAIT)
|
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(t.MIN_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
||||||
USING (EVENT_NAME)
|
USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
@@ -172,7 +172,7 @@ AND (MIN(t.MIN_TIMER_WAIT) != 0)
|
|||||||
OR @dump_all;
|
OR @dump_all;
|
||||||
|
|
||||||
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(t.MAX_TIMER_WAIT)
|
SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(t.MAX_TIMER_WAIT)
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME AS e
|
||||||
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
|
||||||
USING (EVENT_NAME)
|
USING (EVENT_NAME)
|
||||||
GROUP BY EVENT_NAME
|
GROUP BY EVENT_NAME
|
||||||
|
|||||||
@@ -19,13 +19,16 @@
|
|||||||
--source include/have_perfschema.inc
|
--source include/have_perfschema.inc
|
||||||
|
|
||||||
-- error ER_DBACCESS_DENIED_ERROR
|
-- error ER_DBACCESS_DENIED_ERROR
|
||||||
alter table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME add column foo integer;
|
alter table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
add column foo integer;
|
||||||
|
|
||||||
truncate table performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
truncate table performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
|
|
||||||
-- error ER_DBACCESS_DENIED_ERROR
|
-- error ER_DBACCESS_DENIED_ERROR
|
||||||
ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME ADD INDEX test_index(EVENT_NAME);
|
ALTER TABLE performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
ADD INDEX test_index(EVENT_NAME);
|
||||||
|
|
||||||
-- error ER_DBACCESS_DENIED_ERROR
|
-- error ER_DBACCESS_DENIED_ERROR
|
||||||
CREATE UNIQUE INDEX test_index ON performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME(EVENT_NAME);
|
CREATE UNIQUE INDEX test_index
|
||||||
|
ON performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME(EVENT_NAME);
|
||||||
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# Copyright (C) 2009 Sun Microsystems, Inc
|
|
||||||
#
|
|
||||||
# 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 PERFORMANCE_SCHEMA
|
|
||||||
|
|
||||||
--source include/not_embedded.inc
|
|
||||||
--source include/have_perfschema.inc
|
|
||||||
|
|
||||||
--replace_result '\'setup_objects' '\'SETUP_OBJECTS'
|
|
||||||
-- error ER_DBACCESS_DENIED_ERROR
|
|
||||||
alter table performance_schema.SETUP_OBJECTS add column foo integer;
|
|
||||||
|
|
||||||
truncate table performance_schema.SETUP_OBJECTS;
|
|
||||||
|
|
||||||
-- error ER_DBACCESS_DENIED_ERROR
|
|
||||||
ALTER TABLE performance_schema.SETUP_OBJECTS ADD INDEX test_index(OBJECT_NAME);
|
|
||||||
|
|
||||||
-- error ER_DBACCESS_DENIED_ERROR
|
|
||||||
CREATE UNIQUE INDEX test_index ON performance_schema.SETUP_OBJECTS(OBJECT_NAME);
|
|
||||||
|
|
||||||
@@ -19,14 +19,14 @@
|
|||||||
--source include/have_perfschema.inc
|
--source include/have_perfschema.inc
|
||||||
|
|
||||||
-- error ER_DBACCESS_DENIED_ERROR
|
-- error ER_DBACCESS_DENIED_ERROR
|
||||||
alter table performance_schema.PROCESSLIST add column foo integer;
|
alter table performance_schema.THREADS add column foo integer;
|
||||||
|
|
||||||
-- error ER_WRONG_PERFSCHEMA_USAGE
|
-- error ER_WRONG_PERFSCHEMA_USAGE
|
||||||
truncate table performance_schema.PROCESSLIST;
|
truncate table performance_schema.THREADS;
|
||||||
|
|
||||||
-- error ER_DBACCESS_DENIED_ERROR
|
-- error ER_DBACCESS_DENIED_ERROR
|
||||||
ALTER TABLE performance_schema.PROCESSLIST ADD INDEX test_index(ID);
|
ALTER TABLE performance_schema.THREADS ADD INDEX test_index(ID);
|
||||||
|
|
||||||
-- error ER_DBACCESS_DENIED_ERROR
|
-- error ER_DBACCESS_DENIED_ERROR
|
||||||
CREATE UNIQUE INDEX test_index ON performance_schema.PROCESSLIST(ID);
|
CREATE UNIQUE INDEX test_index ON performance_schema.THREADS(ID);
|
||||||
|
|
||||||
@@ -19,44 +19,44 @@
|
|||||||
--source include/have_perfschema.inc
|
--source include/have_perfschema.inc
|
||||||
|
|
||||||
--replace_column 1 # 2 # 3 # 4 # 5 # 6 #
|
--replace_column 1 # 2 # 3 # 4 # 5 # 6 #
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
where event_name like 'Wait/Synch/%' limit 1;
|
where event_name like 'Wait/Synch/%' limit 1;
|
||||||
|
|
||||||
select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
select * from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
where event_name='FOO';
|
where event_name='FOO';
|
||||||
|
|
||||||
--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
--replace_result '\'events_waits_summary_global_by_event_name' '\'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
insert into performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
insert into performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
set event_name='FOO', count_star=1, sum_timer_wait=2, min_timer_wait=3,
|
set event_name='FOO', count_star=1, sum_timer_wait=2, min_timer_wait=3,
|
||||||
avg_timer_wait=4, max_timer_wait=5;
|
avg_timer_wait=4, max_timer_wait=5;
|
||||||
|
|
||||||
--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
--replace_result '\'events_waits_summary_global_by_event_name' '\'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
update performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
update performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
set count_star=12;
|
set count_star=12;
|
||||||
|
|
||||||
--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
--replace_result '\'events_waits_summary_global_by_event_name' '\'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
update performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
update performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
set count_star=12 where event_name like "FOO";
|
set count_star=12 where event_name like "FOO";
|
||||||
|
|
||||||
--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
--replace_result '\'events_waits_summary_global_by_event_name' '\'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
delete from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
where count_star=1;
|
where count_star=1;
|
||||||
|
|
||||||
--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
--replace_result '\'events_waits_summary_global_by_event_name' '\'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
delete from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
delete from performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
|
|
||||||
--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
--replace_result '\'events_waits_summary_global_by_event_name' '\'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
-- error ER_TABLEACCESS_DENIED_ERROR
|
-- error ER_TABLEACCESS_DENIED_ERROR
|
||||||
LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME READ;
|
LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME READ;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--replace_result '\'events_waits_summary_by_event_name' '\'EVENTS_WAITS_SUMMARY_BY_EVENT_NAME'
|
--replace_result '\'events_waits_summary_global_by_event_name' '\'EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME'
|
||||||
-- error ER_TABLEACCESS_DENIED_ERROR
|
-- error ER_TABLEACCESS_DENIED_ERROR
|
||||||
LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME WRITE;
|
LOCK TABLES performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME WRITE;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
# Copyright (C) 2009 Sun Microsystems, Inc
|
|
||||||
#
|
|
||||||
# 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 PERFORMANCE_SCHEMA
|
|
||||||
|
|
||||||
--source include/not_embedded.inc
|
|
||||||
--source include/have_perfschema.inc
|
|
||||||
|
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
|
|
||||||
select * from performance_schema.SETUP_OBJECTS
|
|
||||||
where object_type = 'TABLE';
|
|
||||||
|
|
||||||
select * from performance_schema.SETUP_OBJECTS
|
|
||||||
where enabled='YES';
|
|
||||||
|
|
||||||
# Not implemented yet
|
|
||||||
--replace_result '\'setup_objects' '\'SETUP_OBJECTS'
|
|
||||||
--error ER_ILLEGAL_HA
|
|
||||||
insert into performance_schema.SETUP_OBJECTS
|
|
||||||
set object_type='TABLE', object_schema='FOO', object_name='BAR',
|
|
||||||
enabled='YES', timed='YES', aggregated='YES';
|
|
||||||
|
|
||||||
# Not implemented yet
|
|
||||||
# --error ER_ILLEGAL_HA
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set object_type='TABLE';
|
|
||||||
|
|
||||||
# Not implemented yet
|
|
||||||
# --error ER_ILLEGAL_HA
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set object_schema='ILLEGAL';
|
|
||||||
|
|
||||||
# Not implemented yet
|
|
||||||
# --error ER_ILLEGAL_HA
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set object_name='ILLEGAL';
|
|
||||||
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set enabled='NO';
|
|
||||||
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set timed='NO';
|
|
||||||
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set aggregated='NO';
|
|
||||||
|
|
||||||
select * from performance_schema.SETUP_OBJECTS;
|
|
||||||
|
|
||||||
update performance_schema.SETUP_OBJECTS
|
|
||||||
set enabled='YES', timed='YES', aggregated='YES';
|
|
||||||
|
|
||||||
delete from performance_schema.SETUP_OBJECTS
|
|
||||||
where object_type = 'TABLE';
|
|
||||||
|
|
||||||
delete from performance_schema.SETUP_OBJECTS;
|
|
||||||
|
|
||||||
LOCK TABLES performance_schema.SETUP_OBJECTS READ;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
LOCK TABLES performance_schema.SETUP_OBJECTS WRITE;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
@@ -19,43 +19,43 @@
|
|||||||
--source include/have_perfschema.inc
|
--source include/have_perfschema.inc
|
||||||
|
|
||||||
--replace_column 1 # 2 # 3 #
|
--replace_column 1 # 2 # 3 #
|
||||||
select * from performance_schema.PROCESSLIST
|
select * from performance_schema.THREADS
|
||||||
where name like 'Thread/%' limit 1;
|
where name like 'Thread/%' limit 1;
|
||||||
|
|
||||||
select * from performance_schema.PROCESSLIST
|
select * from performance_schema.THREADS
|
||||||
where name='FOO';
|
where name='FOO';
|
||||||
|
|
||||||
--replace_result '\'processlist' '\'PROCESSLIST'
|
--replace_result '\'threads' '\'THREADS'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
insert into performance_schema.PROCESSLIST
|
insert into performance_schema.THREADS
|
||||||
set name='FOO', thread_id=1, id=2;
|
set name='FOO', thread_id=1, id=2;
|
||||||
|
|
||||||
--replace_result '\'processlist' '\'PROCESSLIST'
|
--replace_result '\'threads' '\'THREADS'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
update performance_schema.PROCESSLIST
|
update performance_schema.THREADS
|
||||||
set thread_id=12;
|
set thread_id=12;
|
||||||
|
|
||||||
--replace_result '\'processlist' '\'PROCESSLIST'
|
--replace_result '\'threads' '\'THREADS'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
update performance_schema.PROCESSLIST
|
update performance_schema.THREADS
|
||||||
set thread_id=12 where name like "FOO";
|
set thread_id=12 where name like "FOO";
|
||||||
|
|
||||||
--replace_result '\'processlist' '\'PROCESSLIST'
|
--replace_result '\'threads' '\'THREADS'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
delete from performance_schema.PROCESSLIST
|
delete from performance_schema.THREADS
|
||||||
where id=1;
|
where id=1;
|
||||||
|
|
||||||
--replace_result '\'processlist' '\'PROCESSLIST'
|
--replace_result '\'threads' '\'THREADS'
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
delete from performance_schema.PROCESSLIST;
|
delete from performance_schema.THREADS;
|
||||||
|
|
||||||
--replace_result '\'processlist' '\'PROCESSLIST'
|
--replace_result '\'threads' '\'THREADS'
|
||||||
-- error ER_TABLEACCESS_DENIED_ERROR
|
-- error ER_TABLEACCESS_DENIED_ERROR
|
||||||
LOCK TABLES performance_schema.PROCESSLIST READ;
|
LOCK TABLES performance_schema.THREADS READ;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--replace_result '\'processlist' '\'PROCESSLIST'
|
--replace_result '\'threads' '\'THREADS'
|
||||||
-- error ER_TABLEACCESS_DENIED_ERROR
|
-- error ER_TABLEACCESS_DENIED_ERROR
|
||||||
LOCK TABLES performance_schema.PROCESSLIST WRITE;
|
LOCK TABLES performance_schema.THREADS WRITE;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@ WHERE FILE_NAME LIKE CONCAT('%', @@tmpdir, '%') ORDER BY NULL;
|
|||||||
#
|
#
|
||||||
--disable_result_log
|
--disable_result_log
|
||||||
SELECT EVENT_NAME, COUNT_STAR, AVG_TIMER_WAIT, SUM_TIMER_WAIT
|
SELECT EVENT_NAME, COUNT_STAR, AVG_TIMER_WAIT, SUM_TIMER_WAIT
|
||||||
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
FROM performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
WHERE COUNT_STAR > 0
|
WHERE COUNT_STAR > 0
|
||||||
ORDER BY SUM_TIMER_WAIT DESC
|
ORDER BY SUM_TIMER_WAIT DESC
|
||||||
LIMIT 10;
|
LIMIT 10;
|
||||||
@@ -158,7 +158,7 @@ LIMIT 10;
|
|||||||
SELECT i.user, SUM(TIMER_WAIT) SUM_WAIT
|
SELECT i.user, SUM(TIMER_WAIT) SUM_WAIT
|
||||||
# ((TIME_TO_SEC(TIMEDIFF(NOW(), i.startup_time)) * 1000) / SUM(TIMER_WAIT)) * 100 WAIT_PERCENTAGE
|
# ((TIME_TO_SEC(TIMEDIFF(NOW(), i.startup_time)) * 1000) / SUM(TIMER_WAIT)) * 100 WAIT_PERCENTAGE
|
||||||
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
||||||
INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
|
INNER JOIN performance_schema.THREADS p USING (THREAD_ID)
|
||||||
LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
||||||
GROUP BY i.user
|
GROUP BY i.user
|
||||||
ORDER BY SUM_WAIT DESC
|
ORDER BY SUM_WAIT DESC
|
||||||
@@ -171,7 +171,7 @@ LIMIT 20;
|
|||||||
--disable_result_log
|
--disable_result_log
|
||||||
SELECT h.EVENT_NAME, SUM(h.TIMER_WAIT) TOTAL_WAIT
|
SELECT h.EVENT_NAME, SUM(h.TIMER_WAIT) TOTAL_WAIT
|
||||||
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
||||||
INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
|
INNER JOIN performance_schema.THREADS p USING (THREAD_ID)
|
||||||
WHERE p.ID = 1
|
WHERE p.ID = 1
|
||||||
GROUP BY h.EVENT_NAME
|
GROUP BY h.EVENT_NAME
|
||||||
HAVING TOTAL_WAIT > 0;
|
HAVING TOTAL_WAIT > 0;
|
||||||
@@ -184,7 +184,7 @@ HAVING TOTAL_WAIT > 0;
|
|||||||
--disable_result_log
|
--disable_result_log
|
||||||
SELECT i.user, h.operation, SUM(NUMBER_OF_BYTES) bytes
|
SELECT i.user, h.operation, SUM(NUMBER_OF_BYTES) bytes
|
||||||
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
FROM performance_schema.EVENTS_WAITS_HISTORY_LONG h
|
||||||
INNER JOIN performance_schema.PROCESSLIST p USING (THREAD_ID)
|
INNER JOIN performance_schema.THREADS p USING (THREAD_ID)
|
||||||
LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
||||||
GROUP BY i.user, h.operation
|
GROUP BY i.user, h.operation
|
||||||
HAVING BYTES > 0
|
HAVING BYTES > 0
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
--disable_result_log
|
--disable_result_log
|
||||||
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
||||||
WHERE THREAD_ID IN
|
WHERE THREAD_ID IN
|
||||||
(SELECT THREAD_ID FROM performance_schema.PROCESSLIST)
|
(SELECT THREAD_ID FROM performance_schema.THREADS)
|
||||||
AND EVENT_NAME IN
|
AND EVENT_NAME IN
|
||||||
(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
|
(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
|
||||||
WHERE NAME LIKE "wait/synch/%")
|
WHERE NAME LIKE "wait/synch/%")
|
||||||
|
|||||||
@@ -45,10 +45,10 @@ show variables like "performance_schema_max_thread%";
|
|||||||
|
|
||||||
# Verification : in this main thread
|
# Verification : in this main thread
|
||||||
|
|
||||||
select count(*) from performance_schema.PROCESSLIST
|
select count(*) from performance_schema.THREADS
|
||||||
where name like "thread/sql/main";
|
where name like "thread/sql/main";
|
||||||
|
|
||||||
select count(*) from performance_schema.PROCESSLIST
|
select count(*) from performance_schema.THREADS
|
||||||
where name like "thread/sql/OneConnection";
|
where name like "thread/sql/OneConnection";
|
||||||
|
|
||||||
select event_name, operation,
|
select event_name, operation,
|
||||||
|
|||||||
@@ -29,18 +29,17 @@ show create table COND_INSTANCES;
|
|||||||
show create table EVENTS_WAITS_CURRENT;
|
show create table EVENTS_WAITS_CURRENT;
|
||||||
show create table EVENTS_WAITS_HISTORY;
|
show create table EVENTS_WAITS_HISTORY;
|
||||||
show create table EVENTS_WAITS_HISTORY_LONG;
|
show create table EVENTS_WAITS_HISTORY_LONG;
|
||||||
show create table EVENTS_WAITS_SUMMARY_BY_EVENT_NAME;
|
|
||||||
show create table EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
show create table EVENTS_WAITS_SUMMARY_BY_INSTANCE;
|
||||||
show create table EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
show create table EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME;
|
||||||
|
show create table EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME;
|
||||||
show create table FILE_INSTANCES;
|
show create table FILE_INSTANCES;
|
||||||
show create table FILE_SUMMARY_BY_EVENT_NAME;
|
show create table FILE_SUMMARY_BY_EVENT_NAME;
|
||||||
show create table FILE_SUMMARY_BY_INSTANCE;
|
show create table FILE_SUMMARY_BY_INSTANCE;
|
||||||
show create table MUTEX_INSTANCES;
|
show create table MUTEX_INSTANCES;
|
||||||
show create table PERFORMANCE_TIMERS;
|
show create table PERFORMANCE_TIMERS;
|
||||||
show create table PROCESSLIST;
|
|
||||||
show create table RWLOCK_INSTANCES;
|
show create table RWLOCK_INSTANCES;
|
||||||
show create table SETUP_CONSUMERS;
|
show create table SETUP_CONSUMERS;
|
||||||
show create table SETUP_INSTRUMENTS;
|
show create table SETUP_INSTRUMENTS;
|
||||||
show create table SETUP_OBJECTS;
|
|
||||||
show create table SETUP_TIMERS;
|
show create table SETUP_TIMERS;
|
||||||
|
show create table THREADS;
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ LIMIT 1;
|
|||||||
--replace_column 1 [EVENT_ID]
|
--replace_column 1 [EVENT_ID]
|
||||||
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
||||||
WHERE THREAD_ID IN
|
WHERE THREAD_ID IN
|
||||||
(SELECT THREAD_ID FROM performance_schema.PROCESSLIST)
|
(SELECT THREAD_ID FROM performance_schema.THREADS)
|
||||||
AND EVENT_NAME IN
|
AND EVENT_NAME IN
|
||||||
(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
|
(SELECT NAME FROM performance_schema.SETUP_INSTRUMENTS
|
||||||
WHERE NAME LIKE "wait/synch/%")
|
WHERE NAME LIKE "wait/synch/%")
|
||||||
@@ -138,7 +138,7 @@ delimiter |;
|
|||||||
|
|
||||||
CREATE PROCEDURE t_ps_proc(IN tid INT, OUT pid INT)
|
CREATE PROCEDURE t_ps_proc(IN tid INT, OUT pid INT)
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT id FROM performance_schema.PROCESSLIST
|
SELECT id FROM performance_schema.THREADS
|
||||||
WHERE THREAD_ID = tid INTO pid;
|
WHERE THREAD_ID = tid INTO pid;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ delimiter |;
|
|||||||
|
|
||||||
CREATE FUNCTION t_ps_func(tid INT) RETURNS int
|
CREATE FUNCTION t_ps_func(tid INT) RETURNS int
|
||||||
BEGIN
|
BEGIN
|
||||||
return (SELECT id FROM performance_schema.PROCESSLIST
|
return (SELECT id FROM performance_schema.THREADS
|
||||||
WHERE THREAD_ID = tid);
|
WHERE THREAD_ID = tid);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ select variable_value > 0 from information_schema.global_status
|
|||||||
where variable_name like 'PERFORMANCE_SCHEMA_THREAD_CLASSES_LOST';
|
where variable_name like 'PERFORMANCE_SCHEMA_THREAD_CLASSES_LOST';
|
||||||
|
|
||||||
# Expect no instances
|
# Expect no instances
|
||||||
select count(*) from performance_schema.PROCESSLIST;
|
select count(*) from performance_schema.THREADS;
|
||||||
|
|
||||||
# Expect no instances lost
|
# Expect no instances lost
|
||||||
show status like "performance_schema_thread_instances_lost";
|
show status like "performance_schema_thread_instances_lost";
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ show status like "performance_schema_thread_classes_lost";
|
|||||||
# Expect no instances
|
# Expect no instances
|
||||||
show variables like "performance_schema_max_thread_instances";
|
show variables like "performance_schema_max_thread_instances";
|
||||||
|
|
||||||
select count(*) from performance_schema.PROCESSLIST;
|
select count(*) from performance_schema.THREADS;
|
||||||
|
|
||||||
# Expect instances lost
|
# Expect instances lost
|
||||||
select variable_value > 0 from information_schema.global_status
|
select variable_value > 0 from information_schema.global_status
|
||||||
|
|||||||
@@ -30,14 +30,14 @@ connect (con1, localhost, root, , );
|
|||||||
|
|
||||||
let $con1_ID=`select connection_id()`;
|
let $con1_ID=`select connection_id()`;
|
||||||
|
|
||||||
let $con1_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
|
let $con1_THREAD_ID=`select thread_id from performance_schema.THREADS
|
||||||
where ID = connection_id()`;
|
where ID = connection_id()`;
|
||||||
|
|
||||||
connect (con2, localhost, root, , );
|
connect (con2, localhost, root, , );
|
||||||
|
|
||||||
let $con2_ID=`select connection_id()`;
|
let $con2_ID=`select connection_id()`;
|
||||||
|
|
||||||
let $con2_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
|
let $con2_THREAD_ID=`select thread_id from performance_schema.THREADS
|
||||||
where ID = connection_id()`;
|
where ID = connection_id()`;
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
@@ -58,7 +58,7 @@ connect (con3, localhost, root, , );
|
|||||||
|
|
||||||
let $con3_ID=`select connection_id()`;
|
let $con3_ID=`select connection_id()`;
|
||||||
|
|
||||||
let $con3_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
|
let $con3_THREAD_ID=`select thread_id from performance_schema.THREADS
|
||||||
where ID = connection_id()`;
|
where ID = connection_id()`;
|
||||||
|
|
||||||
disconnect con3;
|
disconnect con3;
|
||||||
@@ -82,14 +82,14 @@ connect (con1, localhost, root, , );
|
|||||||
|
|
||||||
let $con1_ID=`select connection_id()`;
|
let $con1_ID=`select connection_id()`;
|
||||||
|
|
||||||
let $con1_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
|
let $con1_THREAD_ID=`select thread_id from performance_schema.THREADS
|
||||||
where ID = connection_id()`;
|
where ID = connection_id()`;
|
||||||
|
|
||||||
connect (con2, localhost, root, , );
|
connect (con2, localhost, root, , );
|
||||||
|
|
||||||
let $con2_ID=`select connection_id()`;
|
let $con2_ID=`select connection_id()`;
|
||||||
|
|
||||||
let $con2_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
|
let $con2_THREAD_ID=`select thread_id from performance_schema.THREADS
|
||||||
where ID = connection_id()`;
|
where ID = connection_id()`;
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
@@ -108,7 +108,7 @@ connect (con3, localhost, root, , );
|
|||||||
|
|
||||||
let $con3_ID=`select connection_id()`;
|
let $con3_ID=`select connection_id()`;
|
||||||
|
|
||||||
let $con3_THREAD_ID=`select thread_id from performance_schema.PROCESSLIST
|
let $con3_THREAD_ID=`select thread_id from performance_schema.THREADS
|
||||||
where ID = connection_id()`;
|
where ID = connection_id()`;
|
||||||
|
|
||||||
disconnect con3;
|
disconnect con3;
|
||||||
|
|||||||
@@ -72,6 +72,8 @@ before call db1.p1()
|
|||||||
INSERT INTO db1.t2 VALUES ('before call db1.p2()');
|
INSERT INTO db1.t2 VALUES ('before call db1.p2()');
|
||||||
BEGIN;
|
BEGIN;
|
||||||
CALL db1.p2();
|
CALL db1.p2();
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
INSERT INTO db1.t2 VALUES ('after call db1.p2()');
|
INSERT INTO db1.t2 VALUES ('after call db1.p2()');
|
||||||
SELECT * FROM db1.t1;
|
SELECT * FROM db1.t1;
|
||||||
|
|||||||
@@ -3661,6 +3661,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
SELECT fc_i_nt_5_suc (135, 4);
|
SELECT fc_i_nt_5_suc (135, 4);
|
||||||
fc_i_nt_5_suc (135, 4)
|
fc_i_nt_5_suc (135, 4)
|
||||||
fc_i_nt_5_suc
|
fc_i_nt_5_suc
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -3689,6 +3691,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (136, 4);
|
CALL pc_i_nt_5_suc (136, 4);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -3781,6 +3785,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
SELECT fc_i_nt_5_suc (139, 4);
|
SELECT fc_i_nt_5_suc (139, 4);
|
||||||
fc_i_nt_5_suc (139, 4)
|
fc_i_nt_5_suc (139, 4)
|
||||||
fc_i_nt_5_suc
|
fc_i_nt_5_suc
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -3809,6 +3815,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (140, 4);
|
CALL pc_i_nt_5_suc (140, 4);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -3907,6 +3915,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
SELECT fc_i_nt_5_suc (143, 4);
|
SELECT fc_i_nt_5_suc (143, 4);
|
||||||
fc_i_nt_5_suc (143, 4)
|
fc_i_nt_5_suc (143, 4)
|
||||||
fc_i_nt_5_suc
|
fc_i_nt_5_suc
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -3937,6 +3947,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (144, 4);
|
CALL pc_i_nt_5_suc (144, 4);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4033,6 +4045,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
SELECT fc_i_nt_5_suc (147, 4);
|
SELECT fc_i_nt_5_suc (147, 4);
|
||||||
fc_i_nt_5_suc (147, 4)
|
fc_i_nt_5_suc (147, 4)
|
||||||
fc_i_nt_5_suc
|
fc_i_nt_5_suc
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4063,6 +4077,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (148, 4);
|
CALL pc_i_nt_5_suc (148, 4);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4295,6 +4311,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
SELECT fc_i_nt_5_suc (155, 4);
|
SELECT fc_i_nt_5_suc (155, 4);
|
||||||
fc_i_nt_5_suc (155, 4)
|
fc_i_nt_5_suc (155, 4)
|
||||||
fc_i_nt_5_suc
|
fc_i_nt_5_suc
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4325,6 +4343,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> T << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (156, 4);
|
CALL pc_i_nt_5_suc (156, 4);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4423,6 +4443,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
SELECT fc_i_nt_5_suc (159, 4);
|
SELECT fc_i_nt_5_suc (159, 4);
|
||||||
fc_i_nt_5_suc (159, 4)
|
fc_i_nt_5_suc (159, 4)
|
||||||
fc_i_nt_5_suc
|
fc_i_nt_5_suc
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4453,6 +4475,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> T-trig << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (160, 4);
|
CALL pc_i_nt_5_suc (160, 4);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4557,6 +4581,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
SELECT fc_i_nt_5_suc (163, 4);
|
SELECT fc_i_nt_5_suc (163, 4);
|
||||||
fc_i_nt_5_suc (163, 4)
|
fc_i_nt_5_suc (163, 4)
|
||||||
fc_i_nt_5_suc
|
fc_i_nt_5_suc
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4589,6 +4615,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> T-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (164, 4);
|
CALL pc_i_nt_5_suc (164, 4);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4691,6 +4719,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
SELECT fc_i_nt_5_suc (167, 4);
|
SELECT fc_i_nt_5_suc (167, 4);
|
||||||
fc_i_nt_5_suc (167, 4)
|
fc_i_nt_5_suc (167, 4)
|
||||||
fc_i_nt_5_suc
|
fc_i_nt_5_suc
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-func << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -4723,6 +4753,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> T-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (168, 4);
|
CALL pc_i_nt_5_suc (168, 4);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> N-proc << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> R << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@@ -5291,6 +5323,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (185, 2);
|
CALL pc_i_nt_5_suc (185, 2);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',185), NAME_CONST('in_stmt_id',1))
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',185), NAME_CONST('in_stmt_id',1))
|
||||||
@@ -5329,6 +5363,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (186, 2);
|
CALL pc_i_nt_5_suc (186, 2);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',186), NAME_CONST('in_stmt_id',1))
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',186), NAME_CONST('in_stmt_id',1))
|
||||||
@@ -5367,6 +5403,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (187, 2);
|
CALL pc_i_nt_5_suc (187, 2);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',187), NAME_CONST('in_stmt_id',1))
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',187), NAME_CONST('in_stmt_id',1))
|
||||||
@@ -5407,6 +5445,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (188, 2);
|
CALL pc_i_nt_5_suc (188, 2);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1))
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',188), NAME_CONST('in_stmt_id',1))
|
||||||
@@ -5885,6 +5925,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (201, 2);
|
CALL pc_i_nt_5_suc (201, 2);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',201), NAME_CONST('in_stmt_id',1))
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',201), NAME_CONST('in_stmt_id',1))
|
||||||
@@ -5925,6 +5967,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (202, 2);
|
CALL pc_i_nt_5_suc (202, 2);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1))
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',202), NAME_CONST('in_stmt_id',1))
|
||||||
@@ -5967,6 +6011,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (203, 2);
|
CALL pc_i_nt_5_suc (203, 2);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',203), NAME_CONST('in_stmt_id',1))
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',203), NAME_CONST('in_stmt_id',1))
|
||||||
@@ -6007,6 +6053,8 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
|||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> N-proc << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
CALL pc_i_nt_5_suc (204, 2);
|
CALL pc_i_nt_5_suc (204, 2);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction.
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',204), NAME_CONST('in_stmt_id',1))
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',204), NAME_CONST('in_stmt_id',1))
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ INSERT INTO t2 VALUES (NULL);
|
|||||||
RETURN i;
|
RETURN i;
|
||||||
END//
|
END//
|
||||||
CALL p1();
|
CALL p1();
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
show binlog events from <binlog_start>;
|
show binlog events from <binlog_start>;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
@@ -123,6 +125,8 @@ SELECT * FROM t2;
|
|||||||
id
|
id
|
||||||
DROP TRIGGER tr1;
|
DROP TRIGGER tr1;
|
||||||
CALL p2();
|
CALL p2();
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly.
|
||||||
show binlog events from <binlog_start>;
|
show binlog events from <binlog_start>;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ INSERT INTO t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '
|
|||||||
END|
|
END|
|
||||||
CALL p2();
|
CALL p2();
|
||||||
CALL p1();
|
CALL p1();
|
||||||
|
Warnings:
|
||||||
|
Error 1329 No data - zero rows fetched, selected, or processed
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
rpl_ndb_stm_innodb : Bug#54850 2010-07-02 alik rpl_ndb.rpl_ndb_stm_innodb and rpl_ndb.rpl_ndb_2other fails
|
rpl_ndb_stm_innodb : Bug#54850 2010-07-02 alik rpl_ndb.rpl_ndb_stm_innodb and rpl_ndb.rpl_ndb_2other fails
|
||||||
rpl_ndb_2other : Bug#54850 2010-07-02 alik rpl_ndb.rpl_ndb_stm_innodb and rpl_ndb.rpl_ndb_2other fails
|
rpl_ndb_2other : Bug#54850 2010-07-02 alik rpl_ndb.rpl_ndb_stm_innodb and rpl_ndb.rpl_ndb_2other fails
|
||||||
|
rpl_ndb_row_implicit_commit_binlog : Bug#55849 2010-08-09 alik rpl_ndb.rpl_ndb_row_implicit_commit_binlog fails
|
||||||
|
|
||||||
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
|
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
|
||||||
rpl_ndb_2ndb : Bug#45974: rpl_ndb_2ndb fails sporadically
|
rpl_ndb_2ndb : Bug#45974: rpl_ndb_2ndb fails sporadically
|
||||||
|
|||||||
@@ -1,31 +1,4 @@
|
|||||||
# Can't run test of external client with embedded server
|
-- source include/mysql_upgrade_preparation.inc
|
||||||
-- source include/not_embedded.inc
|
|
||||||
|
|
||||||
# Only run test if "mysql_upgrade" is found
|
|
||||||
--require r/have_mysql_upgrade.result
|
|
||||||
--disable_query_log
|
|
||||||
select LENGTH("$MYSQL_UPGRADE")>0 as have_mysql_upgrade;
|
|
||||||
--enable_query_log
|
|
||||||
|
|
||||||
#
|
|
||||||
# Hack:
|
|
||||||
#
|
|
||||||
# If running with Valgrind ($VALGRIND_TEST <> 0) then the resource
|
|
||||||
# consumption (CPU) for upgrading a large log table will be intense.
|
|
||||||
# Therefore, truncate the log table in advance and issue a statement
|
|
||||||
# that should be logged.
|
|
||||||
#
|
|
||||||
if (`SELECT $VALGRIND_TEST`)
|
|
||||||
{
|
|
||||||
--disable_query_log
|
|
||||||
--disable_result_log
|
|
||||||
--disable_abort_on_error
|
|
||||||
TRUNCATE TABLE mysql.general_log;
|
|
||||||
SELECT 1;
|
|
||||||
--enable_abort_on_error
|
|
||||||
--enable_result_log
|
|
||||||
--enable_query_log
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Basic test that we can run mysql_upgrde and that it finds the
|
# Basic test that we can run mysql_upgrde and that it finds the
|
||||||
|
|||||||
10
mysql-test/t/mysql_upgrade_ssl.test
Normal file
10
mysql-test/t/mysql_upgrade_ssl.test
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# mysql_upgrade tests requiring SSL support
|
||||||
|
|
||||||
|
-- source include/have_ssl_communication.inc
|
||||||
|
-- source include/mysql_upgrade_preparation.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#55672 mysql_upgrade dies with internal error
|
||||||
|
--echo #
|
||||||
|
--exec $MYSQL_UPGRADE --skip-verbose --ssl --force 2>&1
|
||||||
|
--exit
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
# Copyright (C) 2006 MySQL AB
|
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -252,43 +251,40 @@ IF(POLICY CMP0007)
|
|||||||
CMAKE_POLICY(SET CMP0007 OLD)
|
CMAKE_POLICY(SET CMP0007 OLD)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
LIST(REMOVE_ITEM mysqlclient_LIB_DEPENDS "")
|
# Extract dependencies using CMake's internal ${target}_LIB_DEPENDS variable
|
||||||
LIST(REMOVE_DUPLICATES mysqlclient_LIB_DEPENDS)
|
# returned string in ${var} is can be passed to linker's command line
|
||||||
FOREACH(lib ${mysqlclient_LIB_DEPENDS})
|
MACRO(EXTRACT_LINK_LIBRARIES target var)
|
||||||
# Filter out "general", it is not a library, just CMake hint
|
IF(${target}_LIB_DEPENDS)
|
||||||
IF(NOT lib STREQUAL "general" AND NOT CLIENT_LIBS MATCHES "-l${lib} ")
|
LIST(REMOVE_ITEM ${target}_LIB_DEPENDS "")
|
||||||
IF (lib MATCHES "^\\-l")
|
LIST(REMOVE_DUPLICATES ${target}_LIB_DEPENDS)
|
||||||
SET(CLIENT_LIBS "${CLIENT_LIBS} ${lib} ")
|
FOREACH(lib ${${target}_LIB_DEPENDS})
|
||||||
ELSEIF(lib MATCHES "^/")
|
# Filter out "general", it is not a library, just CMake hint
|
||||||
# Full path, convert to just filename, strip "lib" prefix and extension
|
# Also, remove duplicates
|
||||||
GET_FILENAME_COMPONENT(lib "${lib}" NAME_WE)
|
IF(NOT lib STREQUAL "general" AND NOT ${var} MATCHES "-l${lib} ")
|
||||||
STRING(REGEX REPLACE "^lib" "" lib "${lib}")
|
IF (lib MATCHES "^\\-l")
|
||||||
SET(CLIENT_LIBS "${CLIENT_LIBS}-l${lib} " )
|
SET(${var} "${${var}} ${lib} ")
|
||||||
ELSE()
|
ELSEIF(lib MATCHES "^/")
|
||||||
SET(CLIENT_LIBS "${CLIENT_LIBS}-l${lib} " )
|
# Full path, convert to just filename, strip "lib" prefix and extension
|
||||||
ENDIF()
|
GET_FILENAME_COMPONENT(lib "${lib}" NAME_WE)
|
||||||
|
STRING(REGEX REPLACE "^lib" "" lib "${lib}")
|
||||||
|
SET(${var} "${${var}}-l${lib} " )
|
||||||
|
ELSE()
|
||||||
|
SET(${var} "${${var}}-l${lib} " )
|
||||||
|
ENDIF()
|
||||||
|
ENDIF()
|
||||||
|
ENDFOREACH()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDFOREACH()
|
IF(MSVC)
|
||||||
|
STRING(REPLACE "-l" "" ${var} "${${var}}")
|
||||||
|
ENDIF()
|
||||||
|
ENDMACRO()
|
||||||
|
|
||||||
|
EXTRACT_LINK_LIBRARIES(mysqlclient CLIENT_LIBS)
|
||||||
|
EXTRACT_LINK_LIBRARIES(mysqlserver LIBS)
|
||||||
|
|
||||||
IF(LIBDL AND NOT LIBDL MATCHES "-l")
|
# mysql_config evaluates ${LIBDL}, we want to avoid it
|
||||||
SET(LIBDL "-l${LIBDL}")
|
# as our CLIENT_LIBS and LIBS are already correct
|
||||||
ENDIF()
|
SET(LIBDL)
|
||||||
|
|
||||||
IF(LIBWRAP)
|
|
||||||
SET(WRAPLIBS "-lwrap")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(LIBS "${CLIENT_LIBS}")
|
|
||||||
|
|
||||||
IF(LIBCRYPT)
|
|
||||||
SET(LIBS "${LIBS} -l${LIBCRYPT}")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(MSVC)
|
|
||||||
STRING(REPLACE "-l" "" CLIENT_LIBS "${CLIENT_LIBS}")
|
|
||||||
STRING(REPLACE "-l" "" LIBS "${LIBS}" )
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(NON_THREADED_LIBS ${CLIENT_LIBS})
|
SET(NON_THREADED_LIBS ${CLIENT_LIBS})
|
||||||
SET(mysql_config_COMPONENT COMPONENT Development)
|
SET(mysql_config_COMPONENT COMPONENT Development)
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ fi
|
|||||||
# We intentionally add a space to the beginning and end of lib strings, simplifies replace later
|
# We intentionally add a space to the beginning and end of lib strings, simplifies replace later
|
||||||
libs=" $ldflags -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
|
libs=" $ldflags -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
|
||||||
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ "
|
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ "
|
||||||
libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@ "
|
libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @CLIENT_LIBS@ @openssl_libs@ "
|
||||||
embedded_libs=" $ldflags -L$pkglibdir -lmysqld @LIBDL@ @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @openssl_libs@ "
|
embedded_libs=" $ldflags -L$pkglibdir -lmysqld @LIBDL@ @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @openssl_libs@ "
|
||||||
|
|
||||||
if [ -r "$pkglibdir/libmygcc.a" ]; then
|
if [ -r "$pkglibdir/libmygcc.a" ]; then
|
||||||
|
|||||||
@@ -241,26 +241,6 @@ PREPARE stmt FROM @str;
|
|||||||
EXECUTE stmt;
|
EXECUTE stmt;
|
||||||
DROP PREPARE stmt;
|
DROP PREPARE stmt;
|
||||||
|
|
||||||
--
|
|
||||||
-- TABLE EVENTS_WAITS_SUMMARY_BY_EVENT_NAME
|
|
||||||
--
|
|
||||||
|
|
||||||
SET @l1="CREATE TABLE performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME(";
|
|
||||||
SET @l2="EVENT_NAME VARCHAR(128) not null,";
|
|
||||||
SET @l3="COUNT_STAR BIGINT unsigned not null,";
|
|
||||||
SET @l4="SUM_TIMER_WAIT BIGINT unsigned not null,";
|
|
||||||
SET @l5="MIN_TIMER_WAIT BIGINT unsigned not null,";
|
|
||||||
SET @l6="AVG_TIMER_WAIT BIGINT unsigned not null,";
|
|
||||||
SET @l7="MAX_TIMER_WAIT BIGINT unsigned not null";
|
|
||||||
SET @l8=")ENGINE=PERFORMANCE_SCHEMA;";
|
|
||||||
|
|
||||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8);
|
|
||||||
|
|
||||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
|
||||||
PREPARE stmt FROM @str;
|
|
||||||
EXECUTE stmt;
|
|
||||||
DROP PREPARE stmt;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- TABLE EVENTS_WAITS_SUMMARY_BY_INSTANCE
|
-- TABLE EVENTS_WAITS_SUMMARY_BY_INSTANCE
|
||||||
--
|
--
|
||||||
@@ -303,6 +283,26 @@ PREPARE stmt FROM @str;
|
|||||||
EXECUTE stmt;
|
EXECUTE stmt;
|
||||||
DROP PREPARE stmt;
|
DROP PREPARE stmt;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- TABLE EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME
|
||||||
|
--
|
||||||
|
|
||||||
|
SET @l1="CREATE TABLE performance_schema.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME(";
|
||||||
|
SET @l2="EVENT_NAME VARCHAR(128) not null,";
|
||||||
|
SET @l3="COUNT_STAR BIGINT unsigned not null,";
|
||||||
|
SET @l4="SUM_TIMER_WAIT BIGINT unsigned not null,";
|
||||||
|
SET @l5="MIN_TIMER_WAIT BIGINT unsigned not null,";
|
||||||
|
SET @l6="AVG_TIMER_WAIT BIGINT unsigned not null,";
|
||||||
|
SET @l7="MAX_TIMER_WAIT BIGINT unsigned not null";
|
||||||
|
SET @l8=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||||
|
|
||||||
|
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8);
|
||||||
|
|
||||||
|
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||||
|
PREPARE stmt FROM @str;
|
||||||
|
EXECUTE stmt;
|
||||||
|
DROP PREPARE stmt;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- TABLE FILE_INSTANCES
|
-- TABLE FILE_INSTANCES
|
||||||
--
|
--
|
||||||
@@ -394,23 +394,6 @@ PREPARE stmt FROM @str;
|
|||||||
EXECUTE stmt;
|
EXECUTE stmt;
|
||||||
DROP PREPARE stmt;
|
DROP PREPARE stmt;
|
||||||
|
|
||||||
--
|
|
||||||
-- TABLE PROCESSLIST
|
|
||||||
--
|
|
||||||
|
|
||||||
SET @l1="CREATE TABLE performance_schema.PROCESSLIST(";
|
|
||||||
SET @l2="THREAD_ID INTEGER not null,";
|
|
||||||
SET @l3="ID INTEGER not null,";
|
|
||||||
SET @l4="NAME VARCHAR(64) not null";
|
|
||||||
SET @l5=")ENGINE=PERFORMANCE_SCHEMA;";
|
|
||||||
|
|
||||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5);
|
|
||||||
|
|
||||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
|
||||||
PREPARE stmt FROM @str;
|
|
||||||
EXECUTE stmt;
|
|
||||||
DROP PREPARE stmt;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- TABLE RWLOCK_INSTANCES
|
-- TABLE RWLOCK_INSTANCES
|
||||||
--
|
--
|
||||||
@@ -462,26 +445,6 @@ PREPARE stmt FROM @str;
|
|||||||
EXECUTE stmt;
|
EXECUTE stmt;
|
||||||
DROP PREPARE stmt;
|
DROP PREPARE stmt;
|
||||||
|
|
||||||
--
|
|
||||||
-- TABLE SETUP_OBJECTS
|
|
||||||
--
|
|
||||||
|
|
||||||
SET @l1="CREATE TABLE performance_schema.SETUP_OBJECTS(";
|
|
||||||
SET @l2="OBJECT_TYPE VARCHAR(64),";
|
|
||||||
SET @l3="OBJECT_SCHEMA VARCHAR(64),";
|
|
||||||
SET @l4="OBJECT_NAME VARCHAR(64),";
|
|
||||||
SET @l5="ENABLED ENUM ('YES', 'NO') not null,";
|
|
||||||
SET @l6="TIMED ENUM ('YES', 'NO') not null,";
|
|
||||||
SET @l7="AGGREGATED ENUM ('YES', 'NO') not null";
|
|
||||||
SET @l8=")ENGINE=PERFORMANCE_SCHEMA;";
|
|
||||||
|
|
||||||
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5,@l6,@l7,@l8);
|
|
||||||
|
|
||||||
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
|
||||||
PREPARE stmt FROM @str;
|
|
||||||
EXECUTE stmt;
|
|
||||||
DROP PREPARE stmt;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- TABLE SETUP_TIMERS
|
-- TABLE SETUP_TIMERS
|
||||||
--
|
--
|
||||||
@@ -498,3 +461,20 @@ PREPARE stmt FROM @str;
|
|||||||
EXECUTE stmt;
|
EXECUTE stmt;
|
||||||
DROP PREPARE stmt;
|
DROP PREPARE stmt;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- TABLE THREADS
|
||||||
|
--
|
||||||
|
|
||||||
|
SET @l1="CREATE TABLE performance_schema.THREADS(";
|
||||||
|
SET @l2="THREAD_ID INTEGER not null,";
|
||||||
|
SET @l3="ID INTEGER not null,";
|
||||||
|
SET @l4="NAME VARCHAR(64) not null";
|
||||||
|
SET @l5=")ENGINE=PERFORMANCE_SCHEMA;";
|
||||||
|
|
||||||
|
SET @cmd=concat(@l1,@l2,@l3,@l4,@l5);
|
||||||
|
|
||||||
|
SET @str = IF(@have_pfs = 1, @cmd, 'SET @dummy = 0');
|
||||||
|
PREPARE stmt FROM @str;
|
||||||
|
EXECUTE stmt;
|
||||||
|
DROP PREPARE stmt;
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ MYSQL_ADD_PLUGIN(partition ha_partition.cc STORAGE_ENGINE DEFAULT STATIC_ONLY
|
|||||||
RECOMPILE_FOR_EMBEDDED)
|
RECOMPILE_FOR_EMBEDDED)
|
||||||
|
|
||||||
ADD_LIBRARY(sql STATIC ${SQL_SOURCE})
|
ADD_LIBRARY(sql STATIC ${SQL_SOURCE})
|
||||||
|
ADD_DEPENDENCIES(sql GenServerSource)
|
||||||
DTRACE_INSTRUMENT(sql)
|
DTRACE_INSTRUMENT(sql)
|
||||||
TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS}
|
TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS}
|
||||||
mysys dbug strings vio regex
|
mysys dbug strings vio regex
|
||||||
@@ -188,6 +189,7 @@ ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
|
|||||||
ADD_CUSTOM_COMMAND(
|
ADD_CUSTOM_COMMAND(
|
||||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
|
||||||
COMMAND gen_lex_hash > lex_hash.h
|
COMMAND gen_lex_hash > lex_hash.h
|
||||||
|
DEPENDS gen_lex_hash
|
||||||
)
|
)
|
||||||
|
|
||||||
MYSQL_ADD_EXECUTABLE(mysql_tzinfo_to_sql tztime.cc)
|
MYSQL_ADD_EXECUTABLE(mysql_tzinfo_to_sql tztime.cc)
|
||||||
|
|||||||
@@ -4704,7 +4704,7 @@ bool MYSQL_BIN_LOG::write(Log_event *event_info)
|
|||||||
file= cache_mngr->get_binlog_cache_log(is_trans_cache);
|
file= cache_mngr->get_binlog_cache_log(is_trans_cache);
|
||||||
cache_data= cache_mngr->get_binlog_cache_data(is_trans_cache);
|
cache_data= cache_mngr->get_binlog_cache_data(is_trans_cache);
|
||||||
|
|
||||||
if (thd->stmt_accessed_non_trans_temp_table())
|
if (thd->lex->stmt_accessed_non_trans_temp_table())
|
||||||
cache_data->set_changes_to_non_trans_temp_table();
|
cache_data->set_changes_to_non_trans_temp_table();
|
||||||
|
|
||||||
thd->binlog_start_trans_and_stmt();
|
thd->binlog_start_trans_and_stmt();
|
||||||
|
|||||||
@@ -679,7 +679,7 @@ Log_event::Log_event(THD* thd_arg, uint16 flags_arg, bool using_trans)
|
|||||||
server_id= thd->server_id;
|
server_id= thd->server_id;
|
||||||
when= thd->start_time;
|
when= thd->start_time;
|
||||||
cache_type= ((using_trans || stmt_has_updated_trans_table(thd) ||
|
cache_type= ((using_trans || stmt_has_updated_trans_table(thd) ||
|
||||||
(thd->stmt_accessed_temp_table() &&
|
(thd->lex->stmt_accessed_temp_table() &&
|
||||||
trans_has_updated_trans_table(thd)))
|
trans_has_updated_trans_table(thd)))
|
||||||
? Log_event::EVENT_TRANSACTIONAL_CACHE :
|
? Log_event::EVENT_TRANSACTIONAL_CACHE :
|
||||||
Log_event::EVENT_STMT_CACHE);
|
Log_event::EVENT_STMT_CACHE);
|
||||||
@@ -2573,7 +2573,7 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
cache_type= ((using_trans || stmt_has_updated_trans_table(thd) || trx_cache ||
|
cache_type= ((using_trans || stmt_has_updated_trans_table(thd) || trx_cache ||
|
||||||
(thd->stmt_accessed_temp_table() &&
|
(thd->lex->stmt_accessed_temp_table() &&
|
||||||
trans_has_updated_trans_table(thd)))
|
trans_has_updated_trans_table(thd)))
|
||||||
? Log_event::EVENT_TRANSACTIONAL_CACHE :
|
? Log_event::EVENT_TRANSACTIONAL_CACHE :
|
||||||
Log_event::EVENT_STMT_CACHE);
|
Log_event::EVENT_STMT_CACHE);
|
||||||
|
|||||||
@@ -1743,7 +1743,7 @@ sp_head::execute_function(THD *thd, Item **argp, uint argcount,
|
|||||||
Field *return_value_fld)
|
Field *return_value_fld)
|
||||||
{
|
{
|
||||||
ulonglong binlog_save_options;
|
ulonglong binlog_save_options;
|
||||||
bool need_binlog_call;
|
bool need_binlog_call= FALSE;
|
||||||
uint arg_no;
|
uint arg_no;
|
||||||
sp_rcontext *octx = thd->spcont;
|
sp_rcontext *octx = thd->spcont;
|
||||||
sp_rcontext *nctx = NULL;
|
sp_rcontext *nctx = NULL;
|
||||||
@@ -1950,6 +1950,14 @@ err_with_cleanup:
|
|||||||
free_root(&call_mem_root, MYF(0));
|
free_root(&call_mem_root, MYF(0));
|
||||||
thd->spcont= octx;
|
thd->spcont= octx;
|
||||||
|
|
||||||
|
/*
|
||||||
|
If not insided a procedure and a function printing warning
|
||||||
|
messsages.
|
||||||
|
*/
|
||||||
|
if (need_binlog_call &&
|
||||||
|
thd->spcont == NULL && !thd->binlog_evt_union.do_union)
|
||||||
|
thd->issue_unsafe_warnings();
|
||||||
|
|
||||||
DBUG_RETURN(err_status);
|
DBUG_RETURN(err_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2195,6 +2203,17 @@ sp_head::execute_procedure(THD *thd, List<Item> *args)
|
|||||||
thd->spcont= save_spcont;
|
thd->spcont= save_spcont;
|
||||||
thd->utime_after_lock= utime_before_sp_exec;
|
thd->utime_after_lock= utime_before_sp_exec;
|
||||||
|
|
||||||
|
/*
|
||||||
|
If not insided a procedure and a function printing warning
|
||||||
|
messsages.
|
||||||
|
*/
|
||||||
|
bool need_binlog_call= mysql_bin_log.is_open() &&
|
||||||
|
(thd->variables.option_bits & OPTION_BIN_LOG) &&
|
||||||
|
!thd->is_current_stmt_binlog_format_row();
|
||||||
|
if (need_binlog_call && thd->spcont == NULL &&
|
||||||
|
!thd->binlog_evt_union.do_union)
|
||||||
|
thd->issue_unsafe_warnings();
|
||||||
|
|
||||||
DBUG_RETURN(err_status);
|
DBUG_RETURN(err_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
122
sql/sql_class.cc
122
sql/sql_class.cc
@@ -492,7 +492,6 @@ THD::THD()
|
|||||||
rli_fake(0),
|
rli_fake(0),
|
||||||
user_time(0), in_sub_stmt(0),
|
user_time(0), in_sub_stmt(0),
|
||||||
binlog_unsafe_warning_flags(0),
|
binlog_unsafe_warning_flags(0),
|
||||||
stmt_accessed_table_flag(0),
|
|
||||||
binlog_table_maps(0),
|
binlog_table_maps(0),
|
||||||
table_map_for_update(0),
|
table_map_for_update(0),
|
||||||
arg_of_last_insert_id_function(FALSE),
|
arg_of_last_insert_id_function(FALSE),
|
||||||
@@ -3675,8 +3674,17 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
Innodb and Falcon; Innodb and MyIsam.
|
Innodb and Falcon; Innodb and MyIsam.
|
||||||
*/
|
*/
|
||||||
my_bool multi_access_engine= FALSE;
|
my_bool multi_access_engine= FALSE;
|
||||||
|
/*
|
||||||
|
Identifies if a table is changed.
|
||||||
|
*/
|
||||||
|
my_bool is_write= FALSE;
|
||||||
|
/*
|
||||||
|
A pointer to a previous table that was changed.
|
||||||
|
*/
|
||||||
TABLE* prev_write_table= NULL;
|
TABLE* prev_write_table= NULL;
|
||||||
|
/*
|
||||||
|
A pointer to a previous table that was accessed.
|
||||||
|
*/
|
||||||
TABLE* prev_access_table= NULL;
|
TABLE* prev_access_table= NULL;
|
||||||
|
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
@@ -3700,7 +3708,8 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
if (table->placeholder())
|
if (table->placeholder())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (table->table->s->table_category == TABLE_CATEGORY_PERFORMANCE)
|
if (table->table->s->table_category == TABLE_CATEGORY_PERFORMANCE ||
|
||||||
|
table->table->s->table_category == TABLE_CATEGORY_LOG)
|
||||||
lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_TABLE);
|
lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_TABLE);
|
||||||
|
|
||||||
handler::Table_flags const flags= table->table->file->ha_table_flags();
|
handler::Table_flags const flags= table->table->file->ha_table_flags();
|
||||||
@@ -3716,16 +3725,18 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
my_bool trans= table->table->file->has_transactions();
|
my_bool trans= table->table->file->has_transactions();
|
||||||
|
|
||||||
if (table->table->s->tmp_table)
|
if (table->table->s->tmp_table)
|
||||||
set_stmt_accessed_table(trans ? STMT_WRITES_TEMP_TRANS_TABLE :
|
lex->set_stmt_accessed_table(trans ? LEX::STMT_WRITES_TEMP_TRANS_TABLE :
|
||||||
STMT_WRITES_TEMP_NON_TRANS_TABLE);
|
LEX::STMT_WRITES_TEMP_NON_TRANS_TABLE);
|
||||||
else
|
else
|
||||||
set_stmt_accessed_table(trans ? STMT_WRITES_TRANS_TABLE :
|
lex->set_stmt_accessed_table(trans ? LEX::STMT_WRITES_TRANS_TABLE :
|
||||||
STMT_WRITES_NON_TRANS_TABLE);
|
LEX::STMT_WRITES_NON_TRANS_TABLE);
|
||||||
|
|
||||||
flags_write_all_set &= flags;
|
flags_write_all_set &= flags;
|
||||||
flags_write_some_set |= flags;
|
flags_write_some_set |= flags;
|
||||||
|
is_write= TRUE;
|
||||||
|
|
||||||
prev_write_table= table->table;
|
prev_write_table= table->table;
|
||||||
|
|
||||||
}
|
}
|
||||||
flags_access_some_set |= flags;
|
flags_access_some_set |= flags;
|
||||||
|
|
||||||
@@ -3736,11 +3747,11 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
my_bool trans= table->table->file->has_transactions();
|
my_bool trans= table->table->file->has_transactions();
|
||||||
|
|
||||||
if (table->table->s->tmp_table)
|
if (table->table->s->tmp_table)
|
||||||
set_stmt_accessed_table(trans ? STMT_READS_TEMP_TRANS_TABLE :
|
lex->set_stmt_accessed_table(trans ? LEX::STMT_READS_TEMP_TRANS_TABLE :
|
||||||
STMT_READS_TEMP_NON_TRANS_TABLE);
|
LEX::STMT_READS_TEMP_NON_TRANS_TABLE);
|
||||||
else
|
else
|
||||||
set_stmt_accessed_table(trans ? STMT_READS_TRANS_TABLE :
|
lex->set_stmt_accessed_table(trans ? LEX::STMT_READS_TRANS_TABLE :
|
||||||
STMT_READS_NON_TRANS_TABLE);
|
LEX::STMT_READS_NON_TRANS_TABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prev_access_table && prev_access_table->file->ht !=
|
if (prev_access_table && prev_access_table->file->ht !=
|
||||||
@@ -3812,24 +3823,24 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
my_bool non_trans_unsafe= FALSE;
|
my_bool non_trans_unsafe= FALSE;
|
||||||
|
|
||||||
/* Case 1. */
|
/* Case 1. */
|
||||||
if (stmt_accessed_table(STMT_WRITES_TRANS_TABLE) &&
|
if (lex->stmt_accessed_table(LEX::STMT_WRITES_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_WRITES_NON_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE))
|
||||||
mixed_unsafe= TRUE;
|
mixed_unsafe= TRUE;
|
||||||
/* Case 2. */
|
/* Case 2. */
|
||||||
else if (stmt_accessed_table(STMT_WRITES_TEMP_TRANS_TABLE) &&
|
else if (lex->stmt_accessed_table(LEX::STMT_WRITES_TEMP_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_WRITES_NON_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE))
|
||||||
mixed_unsafe= TRUE;
|
mixed_unsafe= TRUE;
|
||||||
/* Case 3. */
|
/* Case 3. */
|
||||||
else if (stmt_accessed_table(STMT_WRITES_TRANS_TABLE) &&
|
else if (lex->stmt_accessed_table(LEX::STMT_WRITES_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_READS_NON_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_READS_NON_TRANS_TABLE))
|
||||||
mixed_unsafe= TRUE;
|
mixed_unsafe= TRUE;
|
||||||
/* Case 4. */
|
/* Case 4. */
|
||||||
else if (stmt_accessed_table(STMT_WRITES_TEMP_TRANS_TABLE) &&
|
else if (lex->stmt_accessed_table(LEX::STMT_WRITES_TEMP_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_READS_NON_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_READS_NON_TRANS_TABLE))
|
||||||
mixed_unsafe= TRUE;
|
mixed_unsafe= TRUE;
|
||||||
/* Case 5. */
|
/* Case 5. */
|
||||||
else if (stmt_accessed_table(STMT_WRITES_NON_TRANS_TABLE) &&
|
else if (lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_READS_TRANS_TABLE) &&
|
lex->stmt_accessed_table(LEX::STMT_READS_TRANS_TABLE) &&
|
||||||
tx_isolation < ISO_REPEATABLE_READ)
|
tx_isolation < ISO_REPEATABLE_READ)
|
||||||
/*
|
/*
|
||||||
By default, InnoDB operates in REPEATABLE READ and with the option
|
By default, InnoDB operates in REPEATABLE READ and with the option
|
||||||
@@ -3847,28 +3858,28 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
if (trans_has_updated_trans_table(this))
|
if (trans_has_updated_trans_table(this))
|
||||||
{
|
{
|
||||||
/* Case 6. */
|
/* Case 6. */
|
||||||
if (stmt_accessed_table(STMT_WRITES_NON_TRANS_TABLE) &&
|
if (lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_READS_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_READS_TRANS_TABLE))
|
||||||
mixed_unsafe= TRUE;
|
mixed_unsafe= TRUE;
|
||||||
/* Case 7. */
|
/* Case 7. */
|
||||||
else if (stmt_accessed_table(STMT_WRITES_NON_TRANS_TABLE) &&
|
else if (lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_READS_TEMP_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_READS_TEMP_TRANS_TABLE))
|
||||||
mixed_unsafe= TRUE;
|
mixed_unsafe= TRUE;
|
||||||
/* Case 8. */
|
/* Case 8. */
|
||||||
else if (stmt_accessed_table(STMT_WRITES_NON_TRANS_TABLE) &&
|
else if (lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_READS_TEMP_NON_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_READS_TEMP_NON_TRANS_TABLE))
|
||||||
mixed_unsafe= TRUE;
|
mixed_unsafe= TRUE;
|
||||||
/* Case 9. */
|
/* Case 9. */
|
||||||
else if (stmt_accessed_table(STMT_WRITES_TEMP_NON_TRANS_TABLE) &&
|
else if (lex->stmt_accessed_table(LEX::STMT_WRITES_TEMP_NON_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_WRITES_NON_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE))
|
||||||
mixed_unsafe= TRUE;
|
mixed_unsafe= TRUE;
|
||||||
/* Case 10. */
|
/* Case 10. */
|
||||||
else if (stmt_accessed_table(STMT_WRITES_TEMP_NON_TRANS_TABLE) &&
|
else if (lex->stmt_accessed_table(LEX::STMT_WRITES_TEMP_NON_TRANS_TABLE) &&
|
||||||
stmt_accessed_table(STMT_READS_NON_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_READS_NON_TRANS_TABLE))
|
||||||
mixed_unsafe= TRUE;
|
mixed_unsafe= TRUE;
|
||||||
/* Case 11. */
|
/* Case 11. */
|
||||||
else if (!variables.binlog_direct_non_trans_update &&
|
else if (!variables.binlog_direct_non_trans_update &&
|
||||||
stmt_accessed_table(STMT_WRITES_NON_TRANS_TABLE))
|
lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE))
|
||||||
non_trans_unsafe= TRUE;
|
non_trans_unsafe= TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3959,13 +3970,14 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
*/
|
*/
|
||||||
my_error((error= ER_BINLOG_STMT_MODE_AND_ROW_ENGINE), MYF(0), "");
|
my_error((error= ER_BINLOG_STMT_MODE_AND_ROW_ENGINE), MYF(0), "");
|
||||||
}
|
}
|
||||||
else if ((unsafe_flags= lex->get_stmt_unsafe_flags()) != 0)
|
else if (is_write && (unsafe_flags= lex->get_stmt_unsafe_flags()) != 0)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
7. Warning: Unsafe statement logged as statement due to
|
7. Warning: Unsafe statement logged as statement due to
|
||||||
binlog_format = STATEMENT
|
binlog_format = STATEMENT
|
||||||
*/
|
*/
|
||||||
binlog_unsafe_warning_flags|= unsafe_flags;
|
binlog_unsafe_warning_flags|= unsafe_flags;
|
||||||
|
|
||||||
DBUG_PRINT("info", ("Scheduling warning to be issued by "
|
DBUG_PRINT("info", ("Scheduling warning to be issued by "
|
||||||
"binlog_query: '%s'",
|
"binlog_query: '%s'",
|
||||||
ER(ER_BINLOG_UNSAFE_STATEMENT)));
|
ER(ER_BINLOG_UNSAFE_STATEMENT)));
|
||||||
@@ -4441,23 +4453,10 @@ void THD::issue_unsafe_warnings()
|
|||||||
Ensure that binlog_unsafe_warning_flags is big enough to hold all
|
Ensure that binlog_unsafe_warning_flags is big enough to hold all
|
||||||
bits. This is actually a constant expression.
|
bits. This is actually a constant expression.
|
||||||
*/
|
*/
|
||||||
DBUG_ASSERT(2 * LEX::BINLOG_STMT_UNSAFE_COUNT <=
|
DBUG_ASSERT(LEX::BINLOG_STMT_UNSAFE_COUNT <=
|
||||||
sizeof(binlog_unsafe_warning_flags) * CHAR_BIT);
|
sizeof(binlog_unsafe_warning_flags) * CHAR_BIT);
|
||||||
|
|
||||||
uint32 unsafe_type_flags= binlog_unsafe_warning_flags;
|
uint32 unsafe_type_flags= binlog_unsafe_warning_flags;
|
||||||
|
|
||||||
/*
|
|
||||||
Clear: (1) bits above BINLOG_STMT_UNSAFE_COUNT; (2) bits for
|
|
||||||
warnings that have been printed already.
|
|
||||||
*/
|
|
||||||
unsafe_type_flags &= (LEX::BINLOG_STMT_UNSAFE_ALL_FLAGS ^
|
|
||||||
(unsafe_type_flags >> LEX::BINLOG_STMT_UNSAFE_COUNT));
|
|
||||||
/* If all warnings have been printed already, return. */
|
|
||||||
if (unsafe_type_flags == 0)
|
|
||||||
DBUG_VOID_RETURN;
|
|
||||||
|
|
||||||
DBUG_PRINT("info", ("unsafe_type_flags: 0x%x", unsafe_type_flags));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
For each unsafe_type, check if the statement is unsafe in this way
|
For each unsafe_type, check if the statement is unsafe in this way
|
||||||
and issue a warning.
|
and issue a warning.
|
||||||
@@ -4481,12 +4480,6 @@ void THD::issue_unsafe_warnings()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
Mark these unsafe types as already printed, to avoid printing
|
|
||||||
warnings for them again.
|
|
||||||
*/
|
|
||||||
binlog_unsafe_warning_flags|=
|
|
||||||
unsafe_type_flags << LEX::BINLOG_STMT_UNSAFE_COUNT;
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4540,19 +4533,32 @@ int THD::binlog_query(THD::enum_binlog_query_type qtype, char const *query_arg,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
Warnings for unsafe statements logged in statement format are
|
Warnings for unsafe statements logged in statement format are
|
||||||
printed here instead of in decide_logging_format(). This is
|
printed in three places instead of in decide_logging_format().
|
||||||
because the warnings should be printed only if the statement is
|
This is because the warnings should be printed only if the statement
|
||||||
actually logged. When executing decide_logging_format(), we cannot
|
is actually logged. When executing decide_logging_format(), we cannot
|
||||||
know for sure if the statement will be logged.
|
know for sure if the statement will be logged:
|
||||||
|
|
||||||
|
1 - sp_head::execute_procedure which prints out warnings for calls to
|
||||||
|
stored procedures.
|
||||||
|
|
||||||
|
2 - sp_head::execute_function which prints out warnings for calls
|
||||||
|
involving functions.
|
||||||
|
|
||||||
|
3 - THD::binlog_query (here) which prints warning for top level
|
||||||
|
statements not covered by the two cases above: i.e., if not insided a
|
||||||
|
procedure and a function.
|
||||||
|
|
||||||
Besides, we should not try to print these warnings if it is not
|
Besides, we should not try to print these warnings if it is not
|
||||||
possible to write statements to the binary log as it happens when
|
possible to write statements to the binary log as it happens when
|
||||||
the execution is inside a function, or generaly speaking, when
|
the execution is inside a function, or generaly speaking, when
|
||||||
the variables.option_bits & OPTION_BIN_LOG is false.
|
the variables.option_bits & OPTION_BIN_LOG is false.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
if (variables.option_bits & OPTION_BIN_LOG)
|
if ((variables.option_bits & OPTION_BIN_LOG) &&
|
||||||
|
spcont == NULL && !binlog_evt_union.do_union)
|
||||||
issue_unsafe_warnings();
|
issue_unsafe_warnings();
|
||||||
|
|
||||||
|
|
||||||
switch (qtype) {
|
switch (qtype) {
|
||||||
/*
|
/*
|
||||||
ROW_QUERY_TYPE means that the statement may be logged either in
|
ROW_QUERY_TYPE means that the statement may be logged either in
|
||||||
|
|||||||
149
sql/sql_class.h
149
sql/sql_class.h
@@ -1566,125 +1566,6 @@ public:
|
|||||||
return current_stmt_binlog_format == BINLOG_FORMAT_ROW;
|
return current_stmt_binlog_format == BINLOG_FORMAT_ROW;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum enum_stmt_accessed_table
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
If a transactional table is about to be read. Note that
|
|
||||||
a write implies a read.
|
|
||||||
*/
|
|
||||||
STMT_READS_TRANS_TABLE= 0,
|
|
||||||
/*
|
|
||||||
If a transactional table is about to be updated.
|
|
||||||
*/
|
|
||||||
STMT_WRITES_TRANS_TABLE,
|
|
||||||
/*
|
|
||||||
If a non-transactional table is about to be read. Note that
|
|
||||||
a write implies a read.
|
|
||||||
*/
|
|
||||||
STMT_READS_NON_TRANS_TABLE,
|
|
||||||
/*
|
|
||||||
If a non-transactional table is about to be updated.
|
|
||||||
*/
|
|
||||||
STMT_WRITES_NON_TRANS_TABLE,
|
|
||||||
/*
|
|
||||||
If a temporary transactional table is about to be read. Note
|
|
||||||
that a write implies a read.
|
|
||||||
*/
|
|
||||||
STMT_READS_TEMP_TRANS_TABLE,
|
|
||||||
/*
|
|
||||||
If a temporary transactional table is about to be updated.
|
|
||||||
*/
|
|
||||||
STMT_WRITES_TEMP_TRANS_TABLE,
|
|
||||||
/*
|
|
||||||
If a temporary non-transactional table is about to be read. Note
|
|
||||||
that a write implies a read.
|
|
||||||
*/
|
|
||||||
STMT_READS_TEMP_NON_TRANS_TABLE,
|
|
||||||
/*
|
|
||||||
If a temporary non-transactional table is about to be updated.
|
|
||||||
*/
|
|
||||||
STMT_WRITES_TEMP_NON_TRANS_TABLE,
|
|
||||||
/*
|
|
||||||
The last element of the enumeration. Please, if necessary add
|
|
||||||
anything before this.
|
|
||||||
*/
|
|
||||||
STMT_ACCESS_TABLE_COUNT
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
Sets the type of table that is about to be accessed while executing a
|
|
||||||
statement.
|
|
||||||
|
|
||||||
@param accessed_table Enumeration type that defines the type of table,
|
|
||||||
e.g. temporary, transactional, non-transactional.
|
|
||||||
*/
|
|
||||||
inline void set_stmt_accessed_table(enum_stmt_accessed_table accessed_table)
|
|
||||||
{
|
|
||||||
DBUG_ENTER("THD::set_stmt_accessed_table");
|
|
||||||
|
|
||||||
DBUG_ASSERT(accessed_table >= 0 && accessed_table < STMT_ACCESS_TABLE_COUNT);
|
|
||||||
stmt_accessed_table_flag |= (1U << accessed_table);
|
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Checks if a type of table is about to be accessed while executing a
|
|
||||||
statement.
|
|
||||||
|
|
||||||
@param accessed_table Enumeration type that defines the type of table,
|
|
||||||
e.g. temporary, transactional, non-transactional.
|
|
||||||
|
|
||||||
@return
|
|
||||||
@retval TRUE if the type of the table is about to be accessed
|
|
||||||
@retval FALSE otherwise
|
|
||||||
*/
|
|
||||||
inline bool stmt_accessed_table(enum_stmt_accessed_table accessed_table)
|
|
||||||
{
|
|
||||||
DBUG_ENTER("THD::stmt_accessed_table");
|
|
||||||
|
|
||||||
DBUG_ASSERT(accessed_table >= 0 && accessed_table < STMT_ACCESS_TABLE_COUNT);
|
|
||||||
|
|
||||||
DBUG_RETURN((stmt_accessed_table_flag & (1U << accessed_table)) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Checks if a temporary table is about to be accessed while executing a
|
|
||||||
statement.
|
|
||||||
|
|
||||||
@return
|
|
||||||
@retval TRUE if a temporary table is about to be accessed
|
|
||||||
@retval FALSE otherwise
|
|
||||||
*/
|
|
||||||
inline bool stmt_accessed_temp_table()
|
|
||||||
{
|
|
||||||
DBUG_ENTER("THD::stmt_accessed_temp_table");
|
|
||||||
|
|
||||||
DBUG_RETURN((stmt_accessed_table_flag &
|
|
||||||
((1U << STMT_READS_TEMP_TRANS_TABLE) |
|
|
||||||
(1U << STMT_WRITES_TEMP_TRANS_TABLE) |
|
|
||||||
(1U << STMT_READS_TEMP_NON_TRANS_TABLE) |
|
|
||||||
(1U << STMT_WRITES_TEMP_NON_TRANS_TABLE))) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Checks if a temporary non-transactional table is about to be accessed
|
|
||||||
while executing a statement.
|
|
||||||
|
|
||||||
@return
|
|
||||||
@retval TRUE if a temporary non-transactional table is about to be
|
|
||||||
accessed
|
|
||||||
@retval FALSE otherwise
|
|
||||||
*/
|
|
||||||
inline bool stmt_accessed_non_trans_temp_table()
|
|
||||||
{
|
|
||||||
DBUG_ENTER("THD::stmt_accessed_non_trans_temp_table");
|
|
||||||
|
|
||||||
DBUG_RETURN((stmt_accessed_table_flag &
|
|
||||||
((1U << STMT_READS_TEMP_NON_TRANS_TABLE) |
|
|
||||||
(1U << STMT_WRITES_TEMP_NON_TRANS_TABLE))) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
Indicates the format in which the current statement will be
|
Indicates the format in which the current statement will be
|
||||||
@@ -1695,24 +1576,8 @@ private:
|
|||||||
/**
|
/**
|
||||||
Bit field for the state of binlog warnings.
|
Bit field for the state of binlog warnings.
|
||||||
|
|
||||||
There are two groups of bits:
|
The first Lex::BINLOG_STMT_UNSAFE_COUNT bits list all types of
|
||||||
|
unsafeness that the current statement has.
|
||||||
- The first Lex::BINLOG_STMT_UNSAFE_COUNT bits list all types of
|
|
||||||
unsafeness that the current statement has.
|
|
||||||
|
|
||||||
- The following Lex::BINLOG_STMT_UNSAFE_COUNT bits list all types
|
|
||||||
of unsafeness that the current statement has issued warnings
|
|
||||||
for.
|
|
||||||
|
|
||||||
Hence, this variable must be big enough to hold
|
|
||||||
2*Lex::BINLOG_STMT_UNSAFE_COUNT bits. This is asserted in @c
|
|
||||||
issue_unsafe_warnings().
|
|
||||||
|
|
||||||
The first and second groups of bits are set by @c
|
|
||||||
decide_logging_format() when it detects that a warning should be
|
|
||||||
issued. The third group of bits is set from @c binlog_query()
|
|
||||||
when a warning is issued. All bits are cleared at the end of the
|
|
||||||
top-level statement.
|
|
||||||
|
|
||||||
This must be a member of THD and not of LEX, because warnings are
|
This must be a member of THD and not of LEX, because warnings are
|
||||||
detected and issued in different places (@c
|
detected and issued in different places (@c
|
||||||
@@ -1722,20 +1587,14 @@ private:
|
|||||||
*/
|
*/
|
||||||
uint32 binlog_unsafe_warning_flags;
|
uint32 binlog_unsafe_warning_flags;
|
||||||
|
|
||||||
/**
|
|
||||||
Bit field that determines the type of tables that are about to be
|
|
||||||
be accessed while executing a statement.
|
|
||||||
*/
|
|
||||||
uint32 stmt_accessed_table_flag;
|
|
||||||
|
|
||||||
void issue_unsafe_warnings();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Number of outstanding table maps, i.e., table maps in the
|
Number of outstanding table maps, i.e., table maps in the
|
||||||
transaction cache.
|
transaction cache.
|
||||||
*/
|
*/
|
||||||
uint binlog_table_maps;
|
uint binlog_table_maps;
|
||||||
public:
|
public:
|
||||||
|
void issue_unsafe_warnings();
|
||||||
|
|
||||||
uint get_binlog_table_maps() const {
|
uint get_binlog_table_maps() const {
|
||||||
return binlog_table_maps;
|
return binlog_table_maps;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2300,6 +2300,7 @@ void Query_tables_list::reset_query_tables_list(bool init)
|
|||||||
sroutines_list_own_last= sroutines_list.next;
|
sroutines_list_own_last= sroutines_list.next;
|
||||||
sroutines_list_own_elements= 0;
|
sroutines_list_own_elements= 0;
|
||||||
binlog_stmt_flags= 0;
|
binlog_stmt_flags= 0;
|
||||||
|
stmt_accessed_table_flag= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
125
sql/sql_lex.h
125
sql/sql_lex.h
@@ -1276,6 +1276,125 @@ public:
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum enum_stmt_accessed_table
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
If a transactional table is about to be read. Note that
|
||||||
|
a write implies a read.
|
||||||
|
*/
|
||||||
|
STMT_READS_TRANS_TABLE= 0,
|
||||||
|
/*
|
||||||
|
If a transactional table is about to be updated.
|
||||||
|
*/
|
||||||
|
STMT_WRITES_TRANS_TABLE,
|
||||||
|
/*
|
||||||
|
If a non-transactional table is about to be read. Note that
|
||||||
|
a write implies a read.
|
||||||
|
*/
|
||||||
|
STMT_READS_NON_TRANS_TABLE,
|
||||||
|
/*
|
||||||
|
If a non-transactional table is about to be updated.
|
||||||
|
*/
|
||||||
|
STMT_WRITES_NON_TRANS_TABLE,
|
||||||
|
/*
|
||||||
|
If a temporary transactional table is about to be read. Note
|
||||||
|
that a write implies a read.
|
||||||
|
*/
|
||||||
|
STMT_READS_TEMP_TRANS_TABLE,
|
||||||
|
/*
|
||||||
|
If a temporary transactional table is about to be updated.
|
||||||
|
*/
|
||||||
|
STMT_WRITES_TEMP_TRANS_TABLE,
|
||||||
|
/*
|
||||||
|
If a temporary non-transactional table is about to be read. Note
|
||||||
|
that a write implies a read.
|
||||||
|
*/
|
||||||
|
STMT_READS_TEMP_NON_TRANS_TABLE,
|
||||||
|
/*
|
||||||
|
If a temporary non-transactional table is about to be updated.
|
||||||
|
*/
|
||||||
|
STMT_WRITES_TEMP_NON_TRANS_TABLE,
|
||||||
|
/*
|
||||||
|
The last element of the enumeration. Please, if necessary add
|
||||||
|
anything before this.
|
||||||
|
*/
|
||||||
|
STMT_ACCESS_TABLE_COUNT
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets the type of table that is about to be accessed while executing a
|
||||||
|
statement.
|
||||||
|
|
||||||
|
@param accessed_table Enumeration type that defines the type of table,
|
||||||
|
e.g. temporary, transactional, non-transactional.
|
||||||
|
*/
|
||||||
|
inline void set_stmt_accessed_table(enum_stmt_accessed_table accessed_table)
|
||||||
|
{
|
||||||
|
DBUG_ENTER("THD::set_stmt_accessed_table");
|
||||||
|
|
||||||
|
DBUG_ASSERT(accessed_table >= 0 && accessed_table < STMT_ACCESS_TABLE_COUNT);
|
||||||
|
stmt_accessed_table_flag |= (1U << accessed_table);
|
||||||
|
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Checks if a type of table is about to be accessed while executing a
|
||||||
|
statement.
|
||||||
|
|
||||||
|
@param accessed_table Enumeration type that defines the type of table,
|
||||||
|
e.g. temporary, transactional, non-transactional.
|
||||||
|
|
||||||
|
@return
|
||||||
|
@retval TRUE if the type of the table is about to be accessed
|
||||||
|
@retval FALSE otherwise
|
||||||
|
*/
|
||||||
|
inline bool stmt_accessed_table(enum_stmt_accessed_table accessed_table)
|
||||||
|
{
|
||||||
|
DBUG_ENTER("THD::stmt_accessed_table");
|
||||||
|
|
||||||
|
DBUG_ASSERT(accessed_table >= 0 && accessed_table < STMT_ACCESS_TABLE_COUNT);
|
||||||
|
|
||||||
|
DBUG_RETURN((stmt_accessed_table_flag & (1U << accessed_table)) != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Checks if a temporary table is about to be accessed while executing a
|
||||||
|
statement.
|
||||||
|
|
||||||
|
@return
|
||||||
|
@retval TRUE if a temporary table is about to be accessed
|
||||||
|
@retval FALSE otherwise
|
||||||
|
*/
|
||||||
|
inline bool stmt_accessed_temp_table()
|
||||||
|
{
|
||||||
|
DBUG_ENTER("THD::stmt_accessed_temp_table");
|
||||||
|
|
||||||
|
DBUG_RETURN((stmt_accessed_table_flag &
|
||||||
|
((1U << STMT_READS_TEMP_TRANS_TABLE) |
|
||||||
|
(1U << STMT_WRITES_TEMP_TRANS_TABLE) |
|
||||||
|
(1U << STMT_READS_TEMP_NON_TRANS_TABLE) |
|
||||||
|
(1U << STMT_WRITES_TEMP_NON_TRANS_TABLE))) != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Checks if a temporary non-transactional table is about to be accessed
|
||||||
|
while executing a statement.
|
||||||
|
|
||||||
|
@return
|
||||||
|
@retval TRUE if a temporary non-transactional table is about to be
|
||||||
|
accessed
|
||||||
|
@retval FALSE otherwise
|
||||||
|
*/
|
||||||
|
inline bool stmt_accessed_non_trans_temp_table()
|
||||||
|
{
|
||||||
|
DBUG_ENTER("THD::stmt_accessed_non_trans_temp_table");
|
||||||
|
|
||||||
|
DBUG_RETURN((stmt_accessed_table_flag &
|
||||||
|
((1U << STMT_READS_TEMP_NON_TRANS_TABLE) |
|
||||||
|
(1U << STMT_WRITES_TEMP_NON_TRANS_TABLE))) != 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
true if the parsed tree contains references to stored procedures
|
true if the parsed tree contains references to stored procedures
|
||||||
or functions, false otherwise
|
or functions, false otherwise
|
||||||
@@ -1317,6 +1436,12 @@ private:
|
|||||||
stored procedure has its own LEX object (but no own THD object).
|
stored procedure has its own LEX object (but no own THD object).
|
||||||
*/
|
*/
|
||||||
uint32 binlog_stmt_flags;
|
uint32 binlog_stmt_flags;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Bit field that determines the type of tables that are about to be
|
||||||
|
be accessed while executing a statement.
|
||||||
|
*/
|
||||||
|
uint32 stmt_accessed_table_flag;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5653,7 +5653,6 @@ void THD::reset_for_next_command()
|
|||||||
|
|
||||||
thd->reset_current_stmt_binlog_format_row();
|
thd->reset_current_stmt_binlog_format_row();
|
||||||
thd->binlog_unsafe_warning_flags= 0;
|
thd->binlog_unsafe_warning_flags= 0;
|
||||||
thd->stmt_accessed_table_flag= 0;
|
|
||||||
|
|
||||||
DBUG_PRINT("debug",
|
DBUG_PRINT("debug",
|
||||||
("is_current_stmt_binlog_format_row(): %d",
|
("is_current_stmt_binlog_format_row(): %d",
|
||||||
|
|||||||
@@ -38,15 +38,15 @@ SET(PERFSCHEMA_SOURCES ha_perfschema.h
|
|||||||
table_all_instr.h
|
table_all_instr.h
|
||||||
table_events_waits.h
|
table_events_waits.h
|
||||||
table_events_waits_summary.h
|
table_events_waits_summary.h
|
||||||
|
table_ews_global_by_event_name.h
|
||||||
table_file_instances.h
|
table_file_instances.h
|
||||||
table_file_summary.h
|
table_file_summary.h
|
||||||
table_performance_timers.h
|
table_performance_timers.h
|
||||||
table_processlist.h
|
|
||||||
table_setup_consumers.h
|
table_setup_consumers.h
|
||||||
table_setup_instruments.h
|
table_setup_instruments.h
|
||||||
table_setup_objects.h
|
|
||||||
table_setup_timers.h
|
table_setup_timers.h
|
||||||
table_sync_instances.h
|
table_sync_instances.h
|
||||||
|
table_threads.h
|
||||||
ha_perfschema.cc
|
ha_perfschema.cc
|
||||||
pfs.cc
|
pfs.cc
|
||||||
pfs_column_values.cc
|
pfs_column_values.cc
|
||||||
@@ -60,15 +60,15 @@ SET(PERFSCHEMA_SOURCES ha_perfschema.h
|
|||||||
table_all_instr.cc
|
table_all_instr.cc
|
||||||
table_events_waits.cc
|
table_events_waits.cc
|
||||||
table_events_waits_summary.cc
|
table_events_waits_summary.cc
|
||||||
|
table_ews_global_by_event_name.cc
|
||||||
table_file_instances.cc
|
table_file_instances.cc
|
||||||
table_file_summary.cc
|
table_file_summary.cc
|
||||||
table_performance_timers.cc
|
table_performance_timers.cc
|
||||||
table_processlist.cc
|
|
||||||
table_setup_consumers.cc
|
table_setup_consumers.cc
|
||||||
table_setup_instruments.cc
|
table_setup_instruments.cc
|
||||||
table_setup_objects.cc
|
|
||||||
table_setup_timers.cc
|
table_setup_timers.cc
|
||||||
table_sync_instances.cc
|
table_sync_instances.cc
|
||||||
|
table_threads.cc
|
||||||
pfs_atomic.cc
|
pfs_atomic.cc
|
||||||
pfs_check.cc
|
pfs_check.cc
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -39,12 +39,12 @@ noinst_HEADERS = ha_perfschema.h pfs_engine_table.h pfs.h pfs_server.h \
|
|||||||
table_setup_instruments.h table_performance_timers.h \
|
table_setup_instruments.h table_performance_timers.h \
|
||||||
table_setup_timers.h \
|
table_setup_timers.h \
|
||||||
table_setup_consumers.h table_events_waits.h \
|
table_setup_consumers.h table_events_waits.h \
|
||||||
pfs_events_waits.h pfs_timer.h table_processlist.h \
|
pfs_events_waits.h pfs_timer.h table_threads.h \
|
||||||
table_sync_instances.h \
|
table_sync_instances.h \
|
||||||
table_events_waits_summary.h pfs_stat.h \
|
table_events_waits_summary.h pfs_stat.h \
|
||||||
table_all_instr.h \
|
table_ews_global_by_event_name.h table_all_instr.h \
|
||||||
table_file_instances.h table_file_summary.h \
|
table_file_instances.h table_file_summary.h \
|
||||||
table_setup_objects.h pfs_lock.h pfs_atomic.h
|
pfs_lock.h pfs_atomic.h
|
||||||
|
|
||||||
PSE_SOURCES = ha_perfschema.cc pfs_engine_table.cc pfs.cc pfs_server.cc \
|
PSE_SOURCES = ha_perfschema.cc pfs_engine_table.cc pfs.cc pfs_server.cc \
|
||||||
pfs_global.cc pfs_instr_class.cc pfs_instr.cc \
|
pfs_global.cc pfs_instr_class.cc pfs_instr.cc \
|
||||||
@@ -52,12 +52,12 @@ PSE_SOURCES = ha_perfschema.cc pfs_engine_table.cc pfs.cc pfs_server.cc \
|
|||||||
table_setup_instruments.cc table_performance_timers.cc \
|
table_setup_instruments.cc table_performance_timers.cc \
|
||||||
table_setup_timers.cc \
|
table_setup_timers.cc \
|
||||||
table_setup_consumers.cc table_events_waits.cc \
|
table_setup_consumers.cc table_events_waits.cc \
|
||||||
pfs_events_waits.cc pfs_timer.cc table_processlist.cc \
|
pfs_events_waits.cc pfs_timer.cc table_threads.cc \
|
||||||
table_sync_instances.cc \
|
table_sync_instances.cc \
|
||||||
table_events_waits_summary.cc \
|
table_events_waits_summary.cc \
|
||||||
table_all_instr.cc \
|
table_ews_global_by_event_name.cc table_all_instr.cc \
|
||||||
table_file_instances.cc table_file_summary.cc \
|
table_file_instances.cc table_file_summary.cc \
|
||||||
table_setup_objects.cc pfs_atomic.cc pfs_check.cc
|
pfs_atomic.cc pfs_check.cc
|
||||||
|
|
||||||
EXTRA_LIBRARIES = libperfschema.a
|
EXTRA_LIBRARIES = libperfschema.a
|
||||||
noinst_LIBRARIES = @plugin_perfschema_static_target@
|
noinst_LIBRARIES = @plugin_perfschema_static_target@
|
||||||
|
|||||||
@@ -1117,7 +1117,6 @@ get_thread_mutex_locker_v1(PSI_mutex_locker_state *state,
|
|||||||
}
|
}
|
||||||
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
||||||
[pfs_thread->m_wait_locker_count];
|
[pfs_thread->m_wait_locker_count];
|
||||||
pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS;
|
|
||||||
|
|
||||||
pfs_locker->m_target.m_mutex= pfs_mutex;
|
pfs_locker->m_target.m_mutex= pfs_mutex;
|
||||||
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
||||||
@@ -1163,7 +1162,6 @@ get_thread_rwlock_locker_v1(PSI_rwlock_locker_state *state,
|
|||||||
}
|
}
|
||||||
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
||||||
[pfs_thread->m_wait_locker_count];
|
[pfs_thread->m_wait_locker_count];
|
||||||
pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS;
|
|
||||||
|
|
||||||
pfs_locker->m_target.m_rwlock= pfs_rwlock;
|
pfs_locker->m_target.m_rwlock= pfs_rwlock;
|
||||||
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
||||||
@@ -1222,7 +1220,6 @@ get_thread_cond_locker_v1(PSI_cond_locker_state *state,
|
|||||||
}
|
}
|
||||||
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
||||||
[pfs_thread->m_wait_locker_count];
|
[pfs_thread->m_wait_locker_count];
|
||||||
pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS;
|
|
||||||
|
|
||||||
pfs_locker->m_target.m_cond= pfs_cond;
|
pfs_locker->m_target.m_cond= pfs_cond;
|
||||||
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
||||||
@@ -1267,7 +1264,6 @@ get_thread_table_locker_v1(PSI_table_locker_state *state,
|
|||||||
}
|
}
|
||||||
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
||||||
[pfs_thread->m_wait_locker_count];
|
[pfs_thread->m_wait_locker_count];
|
||||||
pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS;
|
|
||||||
|
|
||||||
pfs_locker->m_target.m_table= pfs_table;
|
pfs_locker->m_target.m_table= pfs_table;
|
||||||
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
||||||
@@ -1320,7 +1316,6 @@ get_thread_file_name_locker_v1(PSI_file_locker_state *state,
|
|||||||
|
|
||||||
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
||||||
[pfs_thread->m_wait_locker_count];
|
[pfs_thread->m_wait_locker_count];
|
||||||
pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS;
|
|
||||||
|
|
||||||
pfs_locker->m_target.m_file= pfs_file;
|
pfs_locker->m_target.m_file= pfs_file;
|
||||||
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
||||||
@@ -1372,7 +1367,6 @@ get_thread_file_stream_locker_v1(PSI_file_locker_state *state,
|
|||||||
}
|
}
|
||||||
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
||||||
[pfs_thread->m_wait_locker_count];
|
[pfs_thread->m_wait_locker_count];
|
||||||
pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS;
|
|
||||||
|
|
||||||
pfs_locker->m_target.m_file= pfs_file;
|
pfs_locker->m_target.m_file= pfs_file;
|
||||||
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
||||||
@@ -1441,7 +1435,6 @@ get_thread_file_descriptor_locker_v1(PSI_file_locker_state *state,
|
|||||||
}
|
}
|
||||||
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
PFS_wait_locker *pfs_locker= &pfs_thread->m_wait_locker_stack
|
||||||
[pfs_thread->m_wait_locker_count];
|
[pfs_thread->m_wait_locker_count];
|
||||||
pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS;
|
|
||||||
|
|
||||||
pfs_locker->m_target.m_file= pfs_file;
|
pfs_locker->m_target.m_file= pfs_file;
|
||||||
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
pfs_locker->m_waits_current.m_thread= pfs_thread;
|
||||||
|
|||||||
@@ -23,11 +23,11 @@
|
|||||||
#include "table_events_waits.h"
|
#include "table_events_waits.h"
|
||||||
#include "table_setup_consumers.h"
|
#include "table_setup_consumers.h"
|
||||||
#include "table_setup_instruments.h"
|
#include "table_setup_instruments.h"
|
||||||
#include "table_setup_objects.h"
|
|
||||||
#include "table_setup_timers.h"
|
#include "table_setup_timers.h"
|
||||||
#include "table_performance_timers.h"
|
#include "table_performance_timers.h"
|
||||||
#include "table_processlist.h"
|
#include "table_threads.h"
|
||||||
#include "table_events_waits_summary.h"
|
#include "table_events_waits_summary.h"
|
||||||
|
#include "table_ews_global_by_event_name.h"
|
||||||
#include "table_sync_instances.h"
|
#include "table_sync_instances.h"
|
||||||
#include "table_file_instances.h"
|
#include "table_file_instances.h"
|
||||||
#include "table_file_summary.h"
|
#include "table_file_summary.h"
|
||||||
@@ -52,13 +52,12 @@ static PFS_engine_table_share *all_shares[]=
|
|||||||
&table_events_waits_history_long::m_share,
|
&table_events_waits_history_long::m_share,
|
||||||
&table_setup_consumers::m_share,
|
&table_setup_consumers::m_share,
|
||||||
&table_setup_instruments::m_share,
|
&table_setup_instruments::m_share,
|
||||||
&table_setup_objects::m_share,
|
|
||||||
&table_setup_timers::m_share,
|
&table_setup_timers::m_share,
|
||||||
&table_performance_timers::m_share,
|
&table_performance_timers::m_share,
|
||||||
&table_processlist::m_share,
|
&table_threads::m_share,
|
||||||
&table_events_waits_summary_by_thread_by_event_name::m_share,
|
&table_events_waits_summary_by_thread_by_event_name::m_share,
|
||||||
&table_events_waits_summary_by_event_name::m_share,
|
|
||||||
&table_events_waits_summary_by_instance::m_share,
|
&table_events_waits_summary_by_instance::m_share,
|
||||||
|
&table_ews_global_by_event_name::m_share,
|
||||||
&table_file_summary_by_event_name::m_share,
|
&table_file_summary_by_event_name::m_share,
|
||||||
&table_file_summary_by_instance::m_share,
|
&table_file_summary_by_instance::m_share,
|
||||||
&table_mutex_instances::m_share,
|
&table_mutex_instances::m_share,
|
||||||
|
|||||||
@@ -80,25 +80,10 @@ void cleanup_events_waits_history_long(void)
|
|||||||
events_waits_history_long_array= NULL;
|
events_waits_history_long_array= NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void copy_events_waits(PFS_events_waits *dest,
|
static inline void copy_events_waits(PFS_events_waits *dest,
|
||||||
const PFS_events_waits *source)
|
const PFS_events_waits *source)
|
||||||
{
|
{
|
||||||
/* m_wait_class must be the first member of PFS_events_waits. */
|
memcpy(dest, source, sizeof(PFS_events_waits));
|
||||||
compile_time_assert(offsetof(PFS_events_waits, m_wait_class) == 0);
|
|
||||||
|
|
||||||
char* dest_body= (reinterpret_cast<char*> (dest)) + sizeof(events_waits_class);
|
|
||||||
const char* source_body= (reinterpret_cast<const char*> (source))
|
|
||||||
+ sizeof(events_waits_class);
|
|
||||||
|
|
||||||
/* See comments in table_events_waits_common::make_row(). */
|
|
||||||
|
|
||||||
/* Signal readers they are about to read garbage ... */
|
|
||||||
dest->m_wait_class= NO_WAIT_CLASS;
|
|
||||||
/* ... that this can generate. */
|
|
||||||
memcpy(dest_body, source_body,
|
|
||||||
sizeof(PFS_events_waits) - sizeof(events_waits_class));
|
|
||||||
/* Signal readers the record is now clean again. */
|
|
||||||
dest->m_wait_class= source->m_wait_class;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -116,9 +101,7 @@ void insert_events_waits_history(PFS_thread *thread, PFS_events_waits *wait)
|
|||||||
causing a potential race condition.
|
causing a potential race condition.
|
||||||
We are not testing for this and insert a possibly empty record,
|
We are not testing for this and insert a possibly empty record,
|
||||||
to make this thread (the writer) faster.
|
to make this thread (the writer) faster.
|
||||||
This is ok, the truncated data will have
|
This is ok, the readers of m_waits_history will filter this out.
|
||||||
wait->m_wait_class == NO_WAIT_CLASS,
|
|
||||||
which readers of m_waits_history will filter out.
|
|
||||||
*/
|
*/
|
||||||
copy_events_waits(&thread->m_waits_history[index], wait);
|
copy_events_waits(&thread->m_waits_history[index], wait);
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ struct PFS_events_waits
|
|||||||
- TRUNCATE EVENTS_WAITS_HISTORY
|
- TRUNCATE EVENTS_WAITS_HISTORY
|
||||||
- TRUNCATE EVENTS_WAITS_HISTORY_LONG
|
- TRUNCATE EVENTS_WAITS_HISTORY_LONG
|
||||||
*/
|
*/
|
||||||
volatile events_waits_class m_wait_class;
|
events_waits_class m_wait_class;
|
||||||
/** Executing thread. */
|
/** Executing thread. */
|
||||||
PFS_thread *m_thread;
|
PFS_thread *m_thread;
|
||||||
/** Instrument metadata. */
|
/** Instrument metadata. */
|
||||||
|
|||||||
@@ -217,16 +217,8 @@ void table_events_waits_common::make_row(bool thread_own_wait,
|
|||||||
or 8 atomics per recorded event.
|
or 8 atomics per recorded event.
|
||||||
The problem is that we record a *lot* of events ...
|
The problem is that we record a *lot* of events ...
|
||||||
|
|
||||||
Instead, a *dirty* marking is done using m_wait_class.
|
This code is prepared to accept *dirty* records,
|
||||||
Using m_wait_class alone does not guarantee anything, it just filters
|
and sanitizes all the data before returning a row.
|
||||||
out most of the bad data.
|
|
||||||
This is acceptable because this code is garbage-proof,
|
|
||||||
and won't crash on bad data, only display it,
|
|
||||||
very rarely (which is accepted).
|
|
||||||
|
|
||||||
If a bad record is displayed, it's a very transient failure:
|
|
||||||
the next select * from EVENTS_WAITS_CURRENT/_HISTORY/_HISTORY_LONG will
|
|
||||||
show clean data again.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
m_row.m_thread_internal_id= safe_thread->m_thread_internal_id;
|
m_row.m_thread_internal_id= safe_thread->m_thread_internal_id;
|
||||||
|
|||||||
@@ -338,144 +338,6 @@ int table_events_waits_summary_by_thread_by_event_name
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
THR_LOCK table_events_waits_summary_by_event_name::m_table_lock;
|
|
||||||
|
|
||||||
static const TABLE_FIELD_TYPE ews_by_event_name_field_types[]=
|
|
||||||
{
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("EVENT_NAME") },
|
|
||||||
{ C_STRING_WITH_LEN("varchar(128)") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("COUNT_STAR") },
|
|
||||||
{ C_STRING_WITH_LEN("bigint(20)") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("SUM_TIMER_WAIT") },
|
|
||||||
{ C_STRING_WITH_LEN("bigint(20)") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("MIN_TIMER_WAIT") },
|
|
||||||
{ C_STRING_WITH_LEN("bigint(20)") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("AVG_TIMER_WAIT") },
|
|
||||||
{ C_STRING_WITH_LEN("bigint(20)") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("MAX_TIMER_WAIT") },
|
|
||||||
{ C_STRING_WITH_LEN("bigint(20)") },
|
|
||||||
{ NULL, 0}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
TABLE_FIELD_DEF
|
|
||||||
table_events_waits_summary_by_event_name::m_field_def=
|
|
||||||
{ 6, ews_by_event_name_field_types };
|
|
||||||
|
|
||||||
PFS_engine_table_share
|
|
||||||
table_events_waits_summary_by_event_name::m_share=
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("EVENTS_WAITS_SUMMARY_BY_EVENT_NAME") },
|
|
||||||
&pfs_truncatable_acl,
|
|
||||||
&table_events_waits_summary_by_event_name::create,
|
|
||||||
NULL, /* write_row */
|
|
||||||
&table_events_waits_summary_by_event_name::delete_all_rows,
|
|
||||||
1000, /* records */
|
|
||||||
sizeof(pos_all_instr_class),
|
|
||||||
&m_table_lock,
|
|
||||||
&m_field_def,
|
|
||||||
false /* checked */
|
|
||||||
};
|
|
||||||
|
|
||||||
PFS_engine_table* table_events_waits_summary_by_event_name::create(void)
|
|
||||||
{
|
|
||||||
return new table_events_waits_summary_by_event_name();
|
|
||||||
}
|
|
||||||
|
|
||||||
int table_events_waits_summary_by_event_name::delete_all_rows(void)
|
|
||||||
{
|
|
||||||
reset_instrument_class_waits();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table_events_waits_summary_by_event_name
|
|
||||||
::table_events_waits_summary_by_event_name()
|
|
||||||
: table_all_instr_class(&m_share)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void table_events_waits_summary_by_event_name
|
|
||||||
::make_instr_row(PFS_instr_class *klass)
|
|
||||||
{
|
|
||||||
m_row.m_name= klass->m_name;
|
|
||||||
m_row.m_name_length= klass->m_name_length;
|
|
||||||
|
|
||||||
m_row.m_count= klass->m_wait_stat.m_count;
|
|
||||||
m_row.m_sum= klass->m_wait_stat.m_sum;
|
|
||||||
m_row.m_min= klass->m_wait_stat.m_min;
|
|
||||||
m_row.m_max= klass->m_wait_stat.m_max;
|
|
||||||
|
|
||||||
if (m_row.m_count)
|
|
||||||
m_row.m_avg= m_row.m_sum / m_row.m_count;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_row.m_min= 0;
|
|
||||||
m_row.m_avg= 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int table_events_waits_summary_by_event_name
|
|
||||||
::read_row_values(TABLE *table, unsigned char *, Field **fields,
|
|
||||||
bool read_all)
|
|
||||||
{
|
|
||||||
Field *f;
|
|
||||||
|
|
||||||
/* Set the null bits */
|
|
||||||
DBUG_ASSERT(table->s->null_bytes == 0);
|
|
||||||
|
|
||||||
/*
|
|
||||||
The row always exist,
|
|
||||||
the instrument classes are static and never disappear.
|
|
||||||
*/
|
|
||||||
|
|
||||||
for (; (f= *fields) ; fields++)
|
|
||||||
{
|
|
||||||
if (read_all || bitmap_is_set(table->read_set, f->field_index))
|
|
||||||
{
|
|
||||||
switch(f->field_index)
|
|
||||||
{
|
|
||||||
case 0: /* NAME */
|
|
||||||
set_field_varchar_utf8(f, m_row.m_name, m_row.m_name_length);
|
|
||||||
break;
|
|
||||||
case 1: /* COUNT */
|
|
||||||
set_field_ulonglong(f, m_row.m_count);
|
|
||||||
break;
|
|
||||||
case 2: /* SUM */
|
|
||||||
set_field_ulonglong(f, m_row.m_sum);
|
|
||||||
break;
|
|
||||||
case 3: /* MIN */
|
|
||||||
set_field_ulonglong(f, m_row.m_min);
|
|
||||||
break;
|
|
||||||
case 4: /* AVG */
|
|
||||||
set_field_ulonglong(f, m_row.m_avg);
|
|
||||||
break;
|
|
||||||
case 5: /* MAX */
|
|
||||||
set_field_ulonglong(f, m_row.m_max);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
DBUG_ASSERT(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
THR_LOCK table_events_waits_summary_by_instance::m_table_lock;
|
THR_LOCK table_events_waits_summary_by_instance::m_table_lock;
|
||||||
|
|
||||||
static const TABLE_FIELD_TYPE ews_by_instance_field_types[]=
|
static const TABLE_FIELD_TYPE ews_by_instance_field_types[]=
|
||||||
|
|||||||
@@ -144,58 +144,6 @@ private:
|
|||||||
pos_events_waits_summary_by_thread_by_event_name m_next_pos;
|
pos_events_waits_summary_by_thread_by_event_name m_next_pos;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** A row of PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME. */
|
|
||||||
struct row_events_waits_summary_by_event_name
|
|
||||||
{
|
|
||||||
/** Column EVENT_NAME. */
|
|
||||||
const char *m_name;
|
|
||||||
/** Length in bytes of @c m_name. */
|
|
||||||
uint m_name_length;
|
|
||||||
/** Column COUNT_STAR. */
|
|
||||||
ulonglong m_count;
|
|
||||||
/** Column SUM_TIMER_WAIT. */
|
|
||||||
ulonglong m_sum;
|
|
||||||
/** Column MIN_TIMER_WAIT. */
|
|
||||||
ulonglong m_min;
|
|
||||||
/** Column AVG_TIMER_WAIT. */
|
|
||||||
ulonglong m_avg;
|
|
||||||
/** Column MAX_TIMER_WAIT. */
|
|
||||||
ulonglong m_max;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Table PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME. */
|
|
||||||
class table_events_waits_summary_by_event_name : public table_all_instr_class
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/** Table share */
|
|
||||||
static PFS_engine_table_share m_share;
|
|
||||||
static PFS_engine_table* create();
|
|
||||||
static int delete_all_rows();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void make_instr_row(PFS_instr_class *klass);
|
|
||||||
|
|
||||||
virtual int read_row_values(TABLE *table,
|
|
||||||
unsigned char *buf,
|
|
||||||
Field **fields,
|
|
||||||
bool read_all);
|
|
||||||
|
|
||||||
table_events_waits_summary_by_event_name();
|
|
||||||
|
|
||||||
public:
|
|
||||||
~table_events_waits_summary_by_event_name()
|
|
||||||
{}
|
|
||||||
|
|
||||||
private:
|
|
||||||
/** Table share lock. */
|
|
||||||
static THR_LOCK m_table_lock;
|
|
||||||
/** Fields definition. */
|
|
||||||
static TABLE_FIELD_DEF m_field_def;
|
|
||||||
|
|
||||||
/** Current row. */
|
|
||||||
row_events_waits_summary_by_event_name m_row;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** A row of PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_BY_INSTANCE. */
|
/** A row of PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_BY_INSTANCE. */
|
||||||
struct row_events_waits_summary_by_instance
|
struct row_events_waits_summary_by_instance
|
||||||
{
|
{
|
||||||
|
|||||||
166
storage/perfschema/table_ews_global_by_event_name.cc
Normal file
166
storage/perfschema/table_ews_global_by_event_name.cc
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
/* Copyright (c) 2008, 2010, 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,
|
||||||
|
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||||
|
|
||||||
|
/**
|
||||||
|
@file storage/perfschema/table_ews_global_by_event_name.cc
|
||||||
|
Table EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME (implementation).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "my_global.h"
|
||||||
|
#include "my_pthread.h"
|
||||||
|
#include "pfs_instr_class.h"
|
||||||
|
#include "pfs_column_types.h"
|
||||||
|
#include "pfs_column_values.h"
|
||||||
|
#include "table_ews_global_by_event_name.h"
|
||||||
|
#include "pfs_global.h"
|
||||||
|
|
||||||
|
THR_LOCK table_ews_global_by_event_name::m_table_lock;
|
||||||
|
|
||||||
|
static const TABLE_FIELD_TYPE field_types[]=
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{ C_STRING_WITH_LEN("EVENT_NAME") },
|
||||||
|
{ C_STRING_WITH_LEN("varchar(128)") },
|
||||||
|
{ NULL, 0}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ C_STRING_WITH_LEN("COUNT_STAR") },
|
||||||
|
{ C_STRING_WITH_LEN("bigint(20)") },
|
||||||
|
{ NULL, 0}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ C_STRING_WITH_LEN("SUM_TIMER_WAIT") },
|
||||||
|
{ C_STRING_WITH_LEN("bigint(20)") },
|
||||||
|
{ NULL, 0}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ C_STRING_WITH_LEN("MIN_TIMER_WAIT") },
|
||||||
|
{ C_STRING_WITH_LEN("bigint(20)") },
|
||||||
|
{ NULL, 0}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ C_STRING_WITH_LEN("AVG_TIMER_WAIT") },
|
||||||
|
{ C_STRING_WITH_LEN("bigint(20)") },
|
||||||
|
{ NULL, 0}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ C_STRING_WITH_LEN("MAX_TIMER_WAIT") },
|
||||||
|
{ C_STRING_WITH_LEN("bigint(20)") },
|
||||||
|
{ NULL, 0}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TABLE_FIELD_DEF
|
||||||
|
table_ews_global_by_event_name::m_field_def=
|
||||||
|
{ 6, field_types };
|
||||||
|
|
||||||
|
PFS_engine_table_share
|
||||||
|
table_ews_global_by_event_name::m_share=
|
||||||
|
{
|
||||||
|
{ C_STRING_WITH_LEN("EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME") },
|
||||||
|
&pfs_truncatable_acl,
|
||||||
|
&table_ews_global_by_event_name::create,
|
||||||
|
NULL, /* write_row */
|
||||||
|
&table_ews_global_by_event_name::delete_all_rows,
|
||||||
|
1000, /* records */
|
||||||
|
sizeof(pos_all_instr_class),
|
||||||
|
&m_table_lock,
|
||||||
|
&m_field_def,
|
||||||
|
false /* checked */
|
||||||
|
};
|
||||||
|
|
||||||
|
PFS_engine_table* table_ews_global_by_event_name::create(void)
|
||||||
|
{
|
||||||
|
return new table_ews_global_by_event_name();
|
||||||
|
}
|
||||||
|
|
||||||
|
int table_ews_global_by_event_name::delete_all_rows(void)
|
||||||
|
{
|
||||||
|
reset_instrument_class_waits();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table_ews_global_by_event_name
|
||||||
|
::table_ews_global_by_event_name()
|
||||||
|
: table_all_instr_class(&m_share)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void table_ews_global_by_event_name
|
||||||
|
::make_instr_row(PFS_instr_class *klass)
|
||||||
|
{
|
||||||
|
m_row.m_name= klass->m_name;
|
||||||
|
m_row.m_name_length= klass->m_name_length;
|
||||||
|
|
||||||
|
m_row.m_count= klass->m_wait_stat.m_count;
|
||||||
|
m_row.m_sum= klass->m_wait_stat.m_sum;
|
||||||
|
m_row.m_min= klass->m_wait_stat.m_min;
|
||||||
|
m_row.m_max= klass->m_wait_stat.m_max;
|
||||||
|
|
||||||
|
if (m_row.m_count)
|
||||||
|
m_row.m_avg= m_row.m_sum / m_row.m_count;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_row.m_min= 0;
|
||||||
|
m_row.m_avg= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int table_ews_global_by_event_name
|
||||||
|
::read_row_values(TABLE *table, unsigned char *, Field **fields,
|
||||||
|
bool read_all)
|
||||||
|
{
|
||||||
|
Field *f;
|
||||||
|
|
||||||
|
/* Set the null bits */
|
||||||
|
DBUG_ASSERT(table->s->null_bytes == 0);
|
||||||
|
|
||||||
|
/*
|
||||||
|
The row always exist,
|
||||||
|
the instrument classes are static and never disappear.
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (; (f= *fields) ; fields++)
|
||||||
|
{
|
||||||
|
if (read_all || bitmap_is_set(table->read_set, f->field_index))
|
||||||
|
{
|
||||||
|
switch(f->field_index)
|
||||||
|
{
|
||||||
|
case 0: /* NAME */
|
||||||
|
set_field_varchar_utf8(f, m_row.m_name, m_row.m_name_length);
|
||||||
|
break;
|
||||||
|
case 1: /* COUNT */
|
||||||
|
set_field_ulonglong(f, m_row.m_count);
|
||||||
|
break;
|
||||||
|
case 2: /* SUM */
|
||||||
|
set_field_ulonglong(f, m_row.m_sum);
|
||||||
|
break;
|
||||||
|
case 3: /* MIN */
|
||||||
|
set_field_ulonglong(f, m_row.m_min);
|
||||||
|
break;
|
||||||
|
case 4: /* AVG */
|
||||||
|
set_field_ulonglong(f, m_row.m_avg);
|
||||||
|
break;
|
||||||
|
case 5: /* MAX */
|
||||||
|
set_field_ulonglong(f, m_row.m_max);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
DBUG_ASSERT(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
88
storage/perfschema/table_ews_global_by_event_name.h
Normal file
88
storage/perfschema/table_ews_global_by_event_name.h
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
/* Copyright (c) 2008, 2010, 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,
|
||||||
|
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||||
|
|
||||||
|
#ifndef TABLE_EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME_H
|
||||||
|
#define TABLE_EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
@file storage/perfschema/table_ews_global_by_event_name.h
|
||||||
|
Table EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME (declarations).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "pfs_column_types.h"
|
||||||
|
#include "pfs_engine_table.h"
|
||||||
|
#include "pfs_instr_class.h"
|
||||||
|
#include "pfs_instr.h"
|
||||||
|
#include "table_all_instr.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
@addtogroup Performance_schema_tables
|
||||||
|
@{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** A row of PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME. */
|
||||||
|
struct row_ews_global_by_event_name
|
||||||
|
{
|
||||||
|
/** Column EVENT_NAME. */
|
||||||
|
const char *m_name;
|
||||||
|
/** Length in bytes of @c m_name. */
|
||||||
|
uint m_name_length;
|
||||||
|
/** Column COUNT_STAR. */
|
||||||
|
ulonglong m_count;
|
||||||
|
/** Column SUM_TIMER_WAIT. */
|
||||||
|
ulonglong m_sum;
|
||||||
|
/** Column MIN_TIMER_WAIT. */
|
||||||
|
ulonglong m_min;
|
||||||
|
/** Column AVG_TIMER_WAIT. */
|
||||||
|
ulonglong m_avg;
|
||||||
|
/** Column MAX_TIMER_WAIT. */
|
||||||
|
ulonglong m_max;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Table PERFORMANCE_SCHEMA.EVENTS_WAITS_SUMMARY_GLOBAL_BY_EVENT_NAME. */
|
||||||
|
class table_ews_global_by_event_name : public table_all_instr_class
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/** Table share */
|
||||||
|
static PFS_engine_table_share m_share;
|
||||||
|
static PFS_engine_table* create();
|
||||||
|
static int delete_all_rows();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void make_instr_row(PFS_instr_class *klass);
|
||||||
|
|
||||||
|
virtual int read_row_values(TABLE *table,
|
||||||
|
unsigned char *buf,
|
||||||
|
Field **fields,
|
||||||
|
bool read_all);
|
||||||
|
|
||||||
|
table_ews_global_by_event_name();
|
||||||
|
|
||||||
|
public:
|
||||||
|
~table_ews_global_by_event_name()
|
||||||
|
{}
|
||||||
|
|
||||||
|
private:
|
||||||
|
/** Table share lock. */
|
||||||
|
static THR_LOCK m_table_lock;
|
||||||
|
/** Fields definition. */
|
||||||
|
static TABLE_FIELD_DEF m_field_def;
|
||||||
|
|
||||||
|
/** Current row. */
|
||||||
|
row_ews_global_by_event_name m_row;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
#endif
|
||||||
@@ -1,281 +0,0 @@
|
|||||||
/* Copyright (C) 2008-2009 Sun Microsystems, Inc
|
|
||||||
|
|
||||||
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 */
|
|
||||||
|
|
||||||
/**
|
|
||||||
@file storage/perfschema/table_setup_objects.cc
|
|
||||||
Table SETUP_OBJECTS (implementation).
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "sql_priv.h"
|
|
||||||
#include "unireg.h"
|
|
||||||
#include "pfs_instr_class.h"
|
|
||||||
#include "pfs_column_types.h"
|
|
||||||
#include "pfs_column_values.h"
|
|
||||||
#include "table_setup_objects.h"
|
|
||||||
#include "pfs_global.h"
|
|
||||||
|
|
||||||
THR_LOCK table_setup_objects::m_table_lock;
|
|
||||||
|
|
||||||
static const TABLE_FIELD_TYPE field_types[]=
|
|
||||||
{
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("OBJECT_TYPE") },
|
|
||||||
{ C_STRING_WITH_LEN("varchar(64)") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("OBJECT_SCHEMA") },
|
|
||||||
{ C_STRING_WITH_LEN("varchar(64)") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("OBJECT_NAME") },
|
|
||||||
{ C_STRING_WITH_LEN("varchar(64)") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("ENABLED") },
|
|
||||||
{ C_STRING_WITH_LEN("enum(\'YES\',\'NO\')") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("TIMED") },
|
|
||||||
{ C_STRING_WITH_LEN("enum(\'YES\',\'NO\')") },
|
|
||||||
{ NULL, 0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("AGGREGATED") },
|
|
||||||
{ C_STRING_WITH_LEN("enum(\'YES\',\'NO\')") },
|
|
||||||
{ NULL, 0}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
TABLE_FIELD_DEF
|
|
||||||
table_setup_objects::m_field_def=
|
|
||||||
{ 6, field_types };
|
|
||||||
|
|
||||||
PFS_engine_table_share
|
|
||||||
table_setup_objects::m_share=
|
|
||||||
{
|
|
||||||
{ C_STRING_WITH_LEN("SETUP_OBJECTS") },
|
|
||||||
&pfs_editable_acl,
|
|
||||||
&table_setup_objects::create,
|
|
||||||
table_setup_objects::write_row,
|
|
||||||
table_setup_objects::delete_all_rows,
|
|
||||||
1000, /* records */
|
|
||||||
sizeof(pos_setup_objects),
|
|
||||||
&m_table_lock,
|
|
||||||
&m_field_def,
|
|
||||||
false /* checked */
|
|
||||||
};
|
|
||||||
|
|
||||||
PFS_engine_table* table_setup_objects::create(void)
|
|
||||||
{
|
|
||||||
return new table_setup_objects();
|
|
||||||
}
|
|
||||||
|
|
||||||
int table_setup_objects::write_row(TABLE *table, unsigned char *buf,
|
|
||||||
Field **fields)
|
|
||||||
{
|
|
||||||
/* Not implemented */
|
|
||||||
return HA_ERR_WRONG_COMMAND;
|
|
||||||
}
|
|
||||||
|
|
||||||
int table_setup_objects::delete_all_rows(void)
|
|
||||||
{
|
|
||||||
/* Not implemented */
|
|
||||||
return HA_ERR_WRONG_COMMAND;
|
|
||||||
}
|
|
||||||
|
|
||||||
table_setup_objects::table_setup_objects()
|
|
||||||
: PFS_engine_table(&m_share, &m_pos),
|
|
||||||
m_row_exists(false), m_pos(), m_next_pos()
|
|
||||||
{}
|
|
||||||
|
|
||||||
void table_setup_objects::reset_position(void)
|
|
||||||
{
|
|
||||||
m_pos.reset();
|
|
||||||
m_next_pos.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
int table_setup_objects::rnd_next(void)
|
|
||||||
{
|
|
||||||
PFS_table_share *table_share;
|
|
||||||
|
|
||||||
for (m_pos.set_at(&m_next_pos);
|
|
||||||
m_pos.has_more_view();
|
|
||||||
m_pos.next_view())
|
|
||||||
{
|
|
||||||
switch (m_pos.m_index_1) {
|
|
||||||
case pos_setup_objects::VIEW_TABLE:
|
|
||||||
for ( ; m_pos.m_index_2 < table_share_max; m_pos.m_index_2++)
|
|
||||||
{
|
|
||||||
table_share= &table_share_array[m_pos.m_index_2];
|
|
||||||
if (table_share->m_lock.is_populated())
|
|
||||||
{
|
|
||||||
make_row(table_share);
|
|
||||||
m_next_pos.set_after(&m_pos);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case pos_setup_objects::VIEW_EVENT:
|
|
||||||
case pos_setup_objects::VIEW_PROCEDURE:
|
|
||||||
case pos_setup_objects::VIEW_FUNCTION:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return HA_ERR_END_OF_FILE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int table_setup_objects::rnd_pos(const void *pos)
|
|
||||||
{
|
|
||||||
PFS_table_share *share;
|
|
||||||
|
|
||||||
set_position(pos);
|
|
||||||
|
|
||||||
switch (m_pos.m_index_1) {
|
|
||||||
case pos_setup_objects::VIEW_TABLE:
|
|
||||||
DBUG_ASSERT(m_pos.m_index_2 < table_share_max);
|
|
||||||
share= &table_share_array[m_pos.m_index_2];
|
|
||||||
if (share->m_lock.is_populated())
|
|
||||||
{
|
|
||||||
make_row(share);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case pos_setup_objects::VIEW_EVENT:
|
|
||||||
case pos_setup_objects::VIEW_PROCEDURE:
|
|
||||||
case pos_setup_objects::VIEW_FUNCTION:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return HA_ERR_RECORD_DELETED;
|
|
||||||
}
|
|
||||||
|
|
||||||
void table_setup_objects::make_row(PFS_table_share *share)
|
|
||||||
{
|
|
||||||
pfs_lock lock;
|
|
||||||
|
|
||||||
m_row_exists= false;
|
|
||||||
if (share == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
share->m_lock.begin_optimistic_lock(&lock);
|
|
||||||
|
|
||||||
m_row.m_schema_name= &share->m_schema_name[0];
|
|
||||||
m_row.m_schema_name_length= share->m_schema_name_length;
|
|
||||||
m_row.m_object_name= &share->m_table_name[0];
|
|
||||||
m_row.m_object_name_length= share->m_table_name_length;
|
|
||||||
m_row.m_enabled_ptr= &share->m_enabled;
|
|
||||||
m_row.m_timed_ptr= &share->m_timed;
|
|
||||||
m_row.m_aggregated_ptr= &share->m_aggregated;
|
|
||||||
|
|
||||||
if (share->m_lock.end_optimistic_lock(&lock))
|
|
||||||
m_row_exists= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
int table_setup_objects::read_row_values(TABLE *table,
|
|
||||||
unsigned char *buf,
|
|
||||||
Field **fields,
|
|
||||||
bool read_all)
|
|
||||||
{
|
|
||||||
Field *f;
|
|
||||||
|
|
||||||
if (unlikely(! m_row_exists))
|
|
||||||
return HA_ERR_RECORD_DELETED;
|
|
||||||
|
|
||||||
/* Set the null bits */
|
|
||||||
DBUG_ASSERT(table->s->null_bytes == 1);
|
|
||||||
buf[0]= 0;
|
|
||||||
|
|
||||||
for (; (f= *fields) ; fields++)
|
|
||||||
{
|
|
||||||
if (read_all || bitmap_is_set(table->read_set, f->field_index))
|
|
||||||
{
|
|
||||||
switch(f->field_index)
|
|
||||||
{
|
|
||||||
case 0: /* OBJECT_TYPE */
|
|
||||||
set_field_varchar_utf8(f, "TABLE", 5);
|
|
||||||
break;
|
|
||||||
case 1: /* OBJECT_SCHEMA */
|
|
||||||
set_field_varchar_utf8(f, m_row.m_schema_name,
|
|
||||||
m_row.m_schema_name_length);
|
|
||||||
break;
|
|
||||||
case 2: /* OBJECT_NAME */
|
|
||||||
set_field_varchar_utf8(f, m_row.m_object_name,
|
|
||||||
m_row.m_object_name_length);
|
|
||||||
break;
|
|
||||||
case 3: /* ENABLED */
|
|
||||||
set_field_enum(f, (*m_row.m_enabled_ptr) ? ENUM_YES : ENUM_NO);
|
|
||||||
break;
|
|
||||||
case 4: /* TIMED */
|
|
||||||
set_field_enum(f, (*m_row.m_timed_ptr) ? ENUM_YES : ENUM_NO);
|
|
||||||
break;
|
|
||||||
case 5: /* AGGREGATED */
|
|
||||||
set_field_enum(f, (*m_row.m_aggregated_ptr) ? ENUM_YES : ENUM_NO);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
DBUG_ASSERT(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int table_setup_objects::update_row_values(TABLE *table,
|
|
||||||
const unsigned char *,
|
|
||||||
unsigned char *,
|
|
||||||
Field **fields)
|
|
||||||
{
|
|
||||||
Field *f;
|
|
||||||
enum_yes_no value;
|
|
||||||
|
|
||||||
for (; (f= *fields) ; fields++)
|
|
||||||
{
|
|
||||||
if (bitmap_is_set(table->write_set, f->field_index))
|
|
||||||
{
|
|
||||||
switch(f->field_index)
|
|
||||||
{
|
|
||||||
case 0: /* OBJECT_TYPE */
|
|
||||||
case 1: /* OBJECT_SCHEMA */
|
|
||||||
case 2: /* OBJECT_NAME */
|
|
||||||
my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
|
|
||||||
return HA_ERR_WRONG_COMMAND;
|
|
||||||
case 3: /* ENABLED */
|
|
||||||
value= (enum_yes_no) get_field_enum(f);
|
|
||||||
*m_row.m_enabled_ptr= (value == ENUM_YES) ? true : false;
|
|
||||||
break;
|
|
||||||
case 4: /* TIMED */
|
|
||||||
value= (enum_yes_no) get_field_enum(f);
|
|
||||||
*m_row.m_timed_ptr= (value == ENUM_YES) ? true : false;
|
|
||||||
break;
|
|
||||||
case 5: /* AGGREGATED */
|
|
||||||
value= (enum_yes_no) get_field_enum(f);
|
|
||||||
*m_row.m_aggregated_ptr= (value == ENUM_YES) ? true : false;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
DBUG_ASSERT(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
/* Copyright (C) 2008-2009 Sun Microsystems, Inc
|
|
||||||
|
|
||||||
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 */
|
|
||||||
|
|
||||||
#ifndef TABLE_SETUP_OBJECTS_H
|
|
||||||
#define TABLE_SETUP_OBJECTS_H
|
|
||||||
|
|
||||||
/**
|
|
||||||
@file storage/perfschema/table_setup_objects.h
|
|
||||||
Table SETUP_OBJECTS (declarations).
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "pfs_instr_class.h"
|
|
||||||
#include "pfs_engine_table.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
@addtogroup Performance_schema_tables
|
|
||||||
@{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** A row of PERFORMANCE_SCHEMA.SETUP_OBJECTS. */
|
|
||||||
struct row_setup_objects
|
|
||||||
{
|
|
||||||
/** Column SCHEMA_NAME. */
|
|
||||||
const char *m_schema_name;
|
|
||||||
/** Length in bytes of @c m_schema_name. */
|
|
||||||
uint m_schema_name_length;
|
|
||||||
/** Column OBJECT_NAME. */
|
|
||||||
const char *m_object_name;
|
|
||||||
/** Length in bytes of @c m_object_name. */
|
|
||||||
uint m_object_name_length;
|
|
||||||
/** Column ENABLED. */
|
|
||||||
bool *m_enabled_ptr;
|
|
||||||
/** Column TIMED. */
|
|
||||||
bool *m_timed_ptr;
|
|
||||||
/** Column AGGREGATED. */
|
|
||||||
bool *m_aggregated_ptr;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Position of a cursor on PERFORMANCE_SCHEMA.SETUP_OBJECTS. */
|
|
||||||
struct pos_setup_objects : public PFS_double_index,
|
|
||||||
public PFS_object_view_constants
|
|
||||||
{
|
|
||||||
pos_setup_objects()
|
|
||||||
: PFS_double_index(VIEW_TABLE, 0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
inline void reset(void)
|
|
||||||
{
|
|
||||||
m_index_1= VIEW_TABLE;
|
|
||||||
m_index_2= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool has_more_view(void)
|
|
||||||
{ return (m_index_1 <= VIEW_FUNCTION); }
|
|
||||||
|
|
||||||
inline void next_view(void)
|
|
||||||
{
|
|
||||||
m_index_1++;
|
|
||||||
m_index_2= 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Table PERFORMANCE_SCHEMA.SETUP_OBJECTS. */
|
|
||||||
class table_setup_objects : public PFS_engine_table
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/** Table share. */
|
|
||||||
static PFS_engine_table_share m_share;
|
|
||||||
static PFS_engine_table* create();
|
|
||||||
static int write_row(TABLE *table, unsigned char *buf, Field **fields);
|
|
||||||
static int delete_all_rows();
|
|
||||||
|
|
||||||
virtual int rnd_next();
|
|
||||||
virtual int rnd_pos(const void *pos);
|
|
||||||
virtual void reset_position(void);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual int read_row_values(TABLE *table,
|
|
||||||
unsigned char *buf,
|
|
||||||
Field **fields,
|
|
||||||
bool read_all);
|
|
||||||
|
|
||||||
virtual int update_row_values(TABLE *table,
|
|
||||||
const unsigned char *old_buf,
|
|
||||||
unsigned char *new_buf,
|
|
||||||
Field **fields);
|
|
||||||
|
|
||||||
table_setup_objects();
|
|
||||||
|
|
||||||
public:
|
|
||||||
~table_setup_objects()
|
|
||||||
{}
|
|
||||||
|
|
||||||
private:
|
|
||||||
void make_row(PFS_table_share *share);
|
|
||||||
|
|
||||||
/** Table share lock. */
|
|
||||||
static THR_LOCK m_table_lock;
|
|
||||||
/** Fields definition. */
|
|
||||||
static TABLE_FIELD_DEF m_field_def;
|
|
||||||
|
|
||||||
/** Current row. */
|
|
||||||
row_setup_objects m_row;
|
|
||||||
/** True is the current row exists. */
|
|
||||||
bool m_row_exists;
|
|
||||||
/** Current position. */
|
|
||||||
pos_setup_objects m_pos;
|
|
||||||
/** Next position. */
|
|
||||||
pos_setup_objects m_next_pos;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** @} */
|
|
||||||
#endif
|
|
||||||
@@ -14,17 +14,17 @@
|
|||||||
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@file storage/perfschema/table_processlist.cc
|
@file storage/perfschema/table_threads.cc
|
||||||
Table PROCESSLIST (implementation).
|
Table THREADS (implementation).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "my_global.h"
|
#include "my_global.h"
|
||||||
#include "my_pthread.h"
|
#include "my_pthread.h"
|
||||||
#include "table_processlist.h"
|
#include "table_threads.h"
|
||||||
#include "pfs_instr_class.h"
|
#include "pfs_instr_class.h"
|
||||||
#include "pfs_instr.h"
|
#include "pfs_instr.h"
|
||||||
|
|
||||||
THR_LOCK table_processlist::m_table_lock;
|
THR_LOCK table_threads::m_table_lock;
|
||||||
|
|
||||||
static const TABLE_FIELD_TYPE field_types[]=
|
static const TABLE_FIELD_TYPE field_types[]=
|
||||||
{
|
{
|
||||||
@@ -46,15 +46,15 @@ static const TABLE_FIELD_TYPE field_types[]=
|
|||||||
};
|
};
|
||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_processlist::m_field_def=
|
table_threads::m_field_def=
|
||||||
{ 3, field_types };
|
{ 3, field_types };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_processlist::m_share=
|
table_threads::m_share=
|
||||||
{
|
{
|
||||||
{ C_STRING_WITH_LEN("PROCESSLIST") },
|
{ C_STRING_WITH_LEN("THREADS") },
|
||||||
&pfs_readonly_acl,
|
&pfs_readonly_acl,
|
||||||
&table_processlist::create,
|
&table_threads::create,
|
||||||
NULL, /* write_row */
|
NULL, /* write_row */
|
||||||
NULL, /* delete_all_rows */
|
NULL, /* delete_all_rows */
|
||||||
1000, /* records */
|
1000, /* records */
|
||||||
@@ -64,23 +64,23 @@ table_processlist::m_share=
|
|||||||
false /* checked */
|
false /* checked */
|
||||||
};
|
};
|
||||||
|
|
||||||
PFS_engine_table* table_processlist::create(void)
|
PFS_engine_table* table_threads::create(void)
|
||||||
{
|
{
|
||||||
return new table_processlist();
|
return new table_threads();
|
||||||
}
|
}
|
||||||
|
|
||||||
table_processlist::table_processlist()
|
table_threads::table_threads()
|
||||||
: PFS_engine_table(&m_share, &m_pos),
|
: PFS_engine_table(&m_share, &m_pos),
|
||||||
m_row_exists(false), m_pos(0), m_next_pos(0)
|
m_row_exists(false), m_pos(0), m_next_pos(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void table_processlist::reset_position(void)
|
void table_threads::reset_position(void)
|
||||||
{
|
{
|
||||||
m_pos.m_index= 0;
|
m_pos.m_index= 0;
|
||||||
m_next_pos.m_index= 0;
|
m_next_pos.m_index= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int table_processlist::rnd_next(void)
|
int table_threads::rnd_next(void)
|
||||||
{
|
{
|
||||||
PFS_thread *pfs;
|
PFS_thread *pfs;
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ int table_processlist::rnd_next(void)
|
|||||||
return HA_ERR_END_OF_FILE;
|
return HA_ERR_END_OF_FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int table_processlist::rnd_pos(const void *pos)
|
int table_threads::rnd_pos(const void *pos)
|
||||||
{
|
{
|
||||||
PFS_thread *pfs;
|
PFS_thread *pfs;
|
||||||
|
|
||||||
@@ -116,7 +116,7 @@ int table_processlist::rnd_pos(const void *pos)
|
|||||||
return HA_ERR_RECORD_DELETED;
|
return HA_ERR_RECORD_DELETED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void table_processlist::make_row(PFS_thread *pfs)
|
void table_threads::make_row(PFS_thread *pfs)
|
||||||
{
|
{
|
||||||
pfs_lock lock;
|
pfs_lock lock;
|
||||||
PFS_thread_class *safe_class;
|
PFS_thread_class *safe_class;
|
||||||
@@ -139,10 +139,10 @@ void table_processlist::make_row(PFS_thread *pfs)
|
|||||||
m_row_exists= true;
|
m_row_exists= true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int table_processlist::read_row_values(TABLE *table,
|
int table_threads::read_row_values(TABLE *table,
|
||||||
unsigned char *,
|
unsigned char *,
|
||||||
Field **fields,
|
Field **fields,
|
||||||
bool read_all)
|
bool read_all)
|
||||||
{
|
{
|
||||||
Field *f;
|
Field *f;
|
||||||
|
|
||||||
@@ -13,12 +13,12 @@
|
|||||||
along with this program; if not, write to the Free Software Foundation,
|
along with this program; if not, write to the Free Software Foundation,
|
||||||
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||||
|
|
||||||
#ifndef TABLE_PROCESSIST_H
|
#ifndef TABLE_THREADS_H
|
||||||
#define TABLE_PROCESSIST_H
|
#define TABLE_THREADS_H
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@file storage/perfschema/table_processlist.h
|
@file storage/perfschema/table_threads.h
|
||||||
Table PROCESSLIST (declarations).
|
Table THREADS (declarations).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "pfs_column_types.h"
|
#include "pfs_column_types.h"
|
||||||
@@ -31,8 +31,8 @@ struct PFS_thread;
|
|||||||
@{
|
@{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** A row of PERFORMANCE_SCHEMA.PROCESSLIST. */
|
/** A row of PERFORMANCE_SCHEMA.THREADS. */
|
||||||
struct row_processlist
|
struct row_threads
|
||||||
{
|
{
|
||||||
/** Column THREAD_ID. */
|
/** Column THREAD_ID. */
|
||||||
ulong m_thread_internal_id;
|
ulong m_thread_internal_id;
|
||||||
@@ -44,8 +44,8 @@ struct row_processlist
|
|||||||
uint m_name_length;
|
uint m_name_length;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Table PERFORMANCE_SCHEMA.PROCESSLIST. */
|
/** Table PERFORMANCE_SCHEMA.THREADS. */
|
||||||
class table_processlist : public PFS_engine_table
|
class table_threads : public PFS_engine_table
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/** Table share. */
|
/** Table share. */
|
||||||
@@ -63,10 +63,10 @@ protected:
|
|||||||
bool read_all);
|
bool read_all);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
table_processlist();
|
table_threads();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~table_processlist()
|
~table_threads()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -78,7 +78,7 @@ private:
|
|||||||
static TABLE_FIELD_DEF m_field_def;
|
static TABLE_FIELD_DEF m_field_def;
|
||||||
|
|
||||||
/** Current row. */
|
/** Current row. */
|
||||||
row_processlist m_row;
|
row_threads m_row;
|
||||||
/** True is the current row exists. */
|
/** True is the current row exists. */
|
||||||
bool m_row_exists;
|
bool m_row_exists;
|
||||||
/** Current position. */
|
/** Current position. */
|
||||||
Reference in New Issue
Block a user