diff options
Diffstat (limited to 'mysql-test/suite/perfschema')
125 files changed, 3032 insertions, 44 deletions
diff --git a/mysql-test/suite/perfschema/include/processlist_load.inc b/mysql-test/suite/perfschema/include/processlist_load.inc new file mode 100644 index 00000000000..5a14ea17d07 --- /dev/null +++ b/mysql-test/suite/perfschema/include/processlist_load.inc @@ -0,0 +1,39 @@ +# ../include/processlist_load.inc +# +# SUMMARY +# +# Execute PROCESSLIST queries, sorted by user +# +# USAGE +# +# Example: Using processlist_set.inc to set @@global.performance_schema_show_processlist +# +# let $pfs_spl = on/off +# --source ../include/processlist_set.inc +# --source ../include/processlist_load.inc +# +# Columns +# 1 <Id> 2 <User> 3 <Host> 4 <db> 5 <Command> 6 <Time> 7 <State> 8 <Info> + +# Sort SHOW PROCESSLIST by User instead of Id because Id is not zero-padded +# Unique usernames give best results +--echo +--replace_column 1 <Id> 3 <Host> 6 <Time> 7 <State> +--replace_regex /Daemon/<Command>/ /Connect/<Command>/ /Sleep/<Command>/ +--sorted_result +SHOW FULL PROCESSLIST; + +--echo +--echo # Performance Schema processlist table +--echo +--replace_column 1 <Id> 3 <Host> 6 <Time> 7 <State> +--replace_regex /Daemon/<Command>/ /Connect/<Command>/ /Sleep/<Command>/ +select * from performance_schema.processlist order by user, id; + +--echo +--echo # Information Schema processlist table +--echo +--replace_column 1 <Id> 3 <Host> 6 <Time> 7 <State> +--replace_regex /Daemon/<Command>/ /Connect/<Command>/ /Sleep/<Command>/ +select * from information_schema.processlist order by user, id; + diff --git a/mysql-test/suite/perfschema/include/processlist_set.inc b/mysql-test/suite/perfschema/include/processlist_set.inc new file mode 100644 index 00000000000..a15e09fd989 --- /dev/null +++ b/mysql-test/suite/perfschema/include/processlist_set.inc @@ -0,0 +1,17 @@ +# ../include/processlist_set.inc +# +# SUMMARY +# +# Set the value of performance_schema_show_proceslist then +# wait for the operation to complete +# +# USAGE +# +# let $pfs_spl = on; +# --source ../include/processlist_set.inc + +eval set @@global.performance_schema_show_processlist = $pfs_spl; + +let $wait_condition = show variables where variable_name like '%show_processlist%' and value = '$pfs_spl'; +--source include/wait_condition.inc + diff --git a/mysql-test/suite/perfschema/r/ddl_processlist.result b/mysql-test/suite/perfschema/r/ddl_processlist.result new file mode 100644 index 00000000000..3b1b8608725 --- /dev/null +++ b/mysql-test/suite/perfschema/r/ddl_processlist.result @@ -0,0 +1,20 @@ +select @@global.performance_schema_show_processlist into @save_processlist; +set @@global.performance_schema_show_processlist = 'on'; +alter table performance_schema.processlist +add column foo integer; +ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema' +truncate table performance_schema.processlist; +ERROR HY000: Invalid performance_schema usage. +alter table performance_schema.processlist +add index test_index(info); +ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema' +create unique index test_index +on performance_schema.processlist(host); +ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema' +drop index `PRIMARY` + on performance_schema.processlist; +ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema' +CREATE TABLE test.create_select +AS SELECT * from performance_schema.processlist; +DROP TABLE test.create_select; +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/r/dml_handler.result b/mysql-test/suite/perfschema/r/dml_handler.result index 3ee00750f59..46722993102 100644 --- a/mysql-test/suite/perfschema/r/dml_handler.result +++ b/mysql-test/suite/perfschema/r/dml_handler.result @@ -9,105 +9,108 @@ SELECT COUNT(*) FROM table_list INTO @table_count; # For each table in the performance schema, attempt HANDLER...OPEN, # which should fail with an error 1031, ER_ILLEGAL_HA. -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=87; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=88; HANDLER performance_schema.variables_by_thread OPEN; ERROR HY000: Table storage engine for 'variables_by_thread' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=86; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=87; HANDLER performance_schema.users OPEN; ERROR HY000: Table storage engine for 'users' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=85; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=86; HANDLER performance_schema.user_variables_by_thread OPEN; ERROR HY000: Table storage engine for 'user_variables_by_thread' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=84; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=85; HANDLER performance_schema.threads OPEN; ERROR HY000: Table storage engine for 'threads' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=83; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=84; HANDLER performance_schema.table_lock_waits_summary_by_table OPEN; ERROR HY000: Table storage engine for 'table_lock_waits_summary_by_table' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=82; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=83; HANDLER performance_schema.table_io_waits_summary_by_table OPEN; ERROR HY000: Table storage engine for 'table_io_waits_summary_by_table' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=81; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=82; HANDLER performance_schema.table_io_waits_summary_by_index_usage OPEN; ERROR HY000: Table storage engine for 'table_io_waits_summary_by_index_usage' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=80; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=81; HANDLER performance_schema.table_handles OPEN; ERROR HY000: Table storage engine for 'table_handles' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=79; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=80; HANDLER performance_schema.status_by_user OPEN; ERROR HY000: Table storage engine for 'status_by_user' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=78; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=79; HANDLER performance_schema.status_by_thread OPEN; ERROR HY000: Table storage engine for 'status_by_thread' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=77; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=78; HANDLER performance_schema.status_by_host OPEN; ERROR HY000: Table storage engine for 'status_by_host' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=76; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=77; HANDLER performance_schema.status_by_account OPEN; ERROR HY000: Table storage engine for 'status_by_account' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=75; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=76; HANDLER performance_schema.socket_summary_by_instance OPEN; ERROR HY000: Table storage engine for 'socket_summary_by_instance' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=74; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=75; HANDLER performance_schema.socket_summary_by_event_name OPEN; ERROR HY000: Table storage engine for 'socket_summary_by_event_name' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=73; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=74; HANDLER performance_schema.socket_instances OPEN; ERROR HY000: Table storage engine for 'socket_instances' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=72; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=73; HANDLER performance_schema.setup_timers OPEN; ERROR HY000: Table storage engine for 'setup_timers' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=71; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=72; HANDLER performance_schema.setup_objects OPEN; ERROR HY000: Table storage engine for 'setup_objects' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=70; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=71; HANDLER performance_schema.setup_instruments OPEN; ERROR HY000: Table storage engine for 'setup_instruments' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=69; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=70; HANDLER performance_schema.setup_consumers OPEN; ERROR HY000: Table storage engine for 'setup_consumers' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=68; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=69; HANDLER performance_schema.setup_actors OPEN; ERROR HY000: Table storage engine for 'setup_actors' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=67; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=68; HANDLER performance_schema.session_variables OPEN; ERROR HY000: Table storage engine for 'session_variables' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=66; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=67; HANDLER performance_schema.session_status OPEN; ERROR HY000: Table storage engine for 'session_status' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=65; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=66; HANDLER performance_schema.session_connect_attrs OPEN; ERROR HY000: Table storage engine for 'session_connect_attrs' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=64; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=65; HANDLER performance_schema.session_account_connect_attrs OPEN; ERROR HY000: Table storage engine for 'session_account_connect_attrs' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=63; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=64; HANDLER performance_schema.rwlock_instances OPEN; ERROR HY000: Table storage engine for 'rwlock_instances' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=62; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=63; HANDLER performance_schema.replication_group_members OPEN; ERROR HY000: Table storage engine for 'replication_group_members' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=61; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=62; HANDLER performance_schema.replication_group_member_stats OPEN; ERROR HY000: Table storage engine for 'replication_group_member_stats' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=60; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=61; HANDLER performance_schema.replication_connection_status OPEN; ERROR HY000: Table storage engine for 'replication_connection_status' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=59; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=60; HANDLER performance_schema.replication_connection_configuration OPEN; ERROR HY000: Table storage engine for 'replication_connection_configuration' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=58; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=59; HANDLER performance_schema.replication_applier_status_by_worker OPEN; ERROR HY000: Table storage engine for 'replication_applier_status_by_worker' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=57; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=58; HANDLER performance_schema.replication_applier_status_by_coordinator OPEN; ERROR HY000: Table storage engine for 'replication_applier_status_by_coordinator' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=56; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=57; HANDLER performance_schema.replication_applier_status OPEN; ERROR HY000: Table storage engine for 'replication_applier_status' doesn't have this option -SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=55; +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=56; HANDLER performance_schema.replication_applier_configuration OPEN; ERROR HY000: Table storage engine for 'replication_applier_configuration' doesn't have this option +SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=55; +HANDLER performance_schema.processlist OPEN; +ERROR HY000: Table storage engine for 'processlist' doesn't have this option SELECT TABLE_NAME INTO @table_name FROM table_list WHERE id=54; HANDLER performance_schema.prepared_statements_instances OPEN; ERROR HY000: Table storage engine for 'prepared_statements_instances' doesn't have this option diff --git a/mysql-test/suite/perfschema/r/dml_processlist.result b/mysql-test/suite/perfschema/r/dml_processlist.result new file mode 100644 index 00000000000..f3627807a49 --- /dev/null +++ b/mysql-test/suite/perfschema/r/dml_processlist.result @@ -0,0 +1,24 @@ +select @@global.performance_schema_show_processlist into @save_processlist; +set @@global.performance_schema_show_processlist = 'on'; +select * from performance_schema.processlist +where user like 'event_scheduler'; +select * from performance_schema.processlist +where user = 'FOO'; +insert into performance_schema.processlist +values (12, 'foo', 'bar', 'test', null, 1000, 'state', 'info'); +ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'processlist' +update performance_schema.processlist +set id=12, user='foo'; +ERROR 42000: UPDATE command denied to user 'root'@'localhost' for table 'processlist' +delete from performance_schema.processlist +where id <> 99; +ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'processlist' +delete from performance_schema.processlist; +ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'processlist' +LOCK TABLES performance_schema.processlist READ; +ERROR 42000: SELECT, LOCK TABLES command denied to user 'root'@'localhost' for table 'processlist' +UNLOCK TABLES; +LOCK TABLES performance_schema.processlist WRITE; +ERROR 42000: SELECT, LOCK TABLES command denied to user 'root'@'localhost' for table 'processlist' +UNLOCK TABLES; +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/r/information_schema.result b/mysql-test/suite/perfschema/r/information_schema.result index 040b3371cdf..8cfff3f8f2b 100644 --- a/mysql-test/suite/perfschema/r/information_schema.result +++ b/mysql-test/suite/perfschema/r/information_schema.result @@ -56,6 +56,7 @@ performance_schema mutex_instances def performance_schema objects_summary_global_by_type def performance_schema performance_timers def performance_schema prepared_statements_instances def +performance_schema processlist def performance_schema replication_applier_configuration def performance_schema replication_applier_status def performance_schema replication_applier_status_by_coordinator def @@ -147,6 +148,7 @@ mutex_instances BASE TABLE PERFORMANCE_SCHEMA objects_summary_global_by_type BASE TABLE PERFORMANCE_SCHEMA performance_timers BASE TABLE PERFORMANCE_SCHEMA prepared_statements_instances BASE TABLE PERFORMANCE_SCHEMA +processlist BASE TABLE PERFORMANCE_SCHEMA replication_applier_configuration BASE TABLE PERFORMANCE_SCHEMA replication_applier_status BASE TABLE PERFORMANCE_SCHEMA replication_applier_status_by_coordinator BASE TABLE PERFORMANCE_SCHEMA @@ -238,6 +240,7 @@ mutex_instances 10 Dynamic objects_summary_global_by_type 10 Dynamic performance_timers 10 Fixed prepared_statements_instances 10 Dynamic +processlist 10 Dynamic replication_applier_configuration 10 Fixed replication_applier_status 10 Fixed replication_applier_status_by_coordinator 10 Dynamic @@ -328,6 +331,7 @@ mutex_instances 0 objects_summary_global_by_type 0 performance_timers 0 prepared_statements_instances 0 +processlist 0 replication_applier_configuration 0 replication_applier_status 0 replication_applier_status_by_coordinator 0 @@ -426,6 +430,7 @@ mutex_instances 0 0 objects_summary_global_by_type 0 0 performance_timers 0 0 prepared_statements_instances 0 0 +processlist 0 0 replication_applier_configuration 0 0 replication_applier_status 0 0 replication_applier_status_by_coordinator 0 0 @@ -517,6 +522,7 @@ mutex_instances 0 0 NULL objects_summary_global_by_type 0 0 NULL performance_timers 0 0 NULL prepared_statements_instances 0 0 NULL +processlist 0 0 NULL replication_applier_configuration 0 0 NULL replication_applier_status 0 0 NULL replication_applier_status_by_coordinator 0 0 NULL @@ -608,6 +614,7 @@ mutex_instances NULL NULL NULL objects_summary_global_by_type NULL NULL NULL performance_timers NULL NULL NULL prepared_statements_instances NULL NULL NULL +processlist NULL NULL NULL replication_applier_configuration NULL NULL NULL replication_applier_status NULL NULL NULL replication_applier_status_by_coordinator NULL NULL NULL @@ -699,6 +706,7 @@ mutex_instances utf8_general_ci NULL objects_summary_global_by_type utf8_general_ci NULL performance_timers utf8_general_ci NULL prepared_statements_instances utf8_general_ci NULL +processlist utf8_general_ci NULL replication_applier_configuration utf8_general_ci NULL replication_applier_status utf8_general_ci NULL replication_applier_status_by_coordinator utf8_general_ci NULL @@ -790,6 +798,7 @@ mutex_instances objects_summary_global_by_type performance_timers prepared_statements_instances +processlist replication_applier_configuration replication_applier_status replication_applier_status_by_coordinator @@ -881,6 +890,7 @@ mutex_instances objects_summary_global_by_type performance_timers prepared_statements_instances +processlist replication_applier_configuration replication_applier_status replication_applier_status_by_coordinator diff --git a/mysql-test/suite/perfschema/r/max_program_zero.result b/mysql-test/suite/perfschema/r/max_program_zero.result index 9a2a30f2f9e..ba569a6a910 100644 --- a/mysql-test/suite/perfschema/r/max_program_zero.result +++ b/mysql-test/suite/perfschema/r/max_program_zero.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/misc_global_status.result b/mysql-test/suite/perfschema/r/misc_global_status.result new file mode 100644 index 00000000000..14080af8249 --- /dev/null +++ b/mysql-test/suite/perfschema/r/misc_global_status.result @@ -0,0 +1,101 @@ +CREATE USER user1@localhost; +CREATE USER user2@localhost; +CREATE USER user3@localhost; +grant ALL on *.* to user1@localhost; +grant ALL on *.* to user2@localhost; +grant ALL on *.* to user3@localhost; +SET GLOBAL show_compatibility_56=0; +TRUNCATE TABLE performance_schema.accounts; +FLUSH PRIVILEGES; +CREATE TABLE test.t_range(a int, b int, PRIMARY KEY(a)); +INSERT INTO test.t_range values (1, 1), (2,2), (3, 3), (4, 4), (5, 5); +INSERT INTO test.t_range values (6, 6), (7,7), (8, 8), (9, 9), (10, 10); +FLUSH STATUS; +SELECT * from test.t_range where (a >= 3) AND (a <= 5); +a b +3 3 +4 4 +5 5 +SELECT * from performance_schema.session_status +WHERE VARIABLE_NAME = 'Select_range'; +VARIABLE_NAME VARIABLE_VALUE +Select_range 1 +VARIABLE_NAME DELTA +Select_range 1 +SELECT * from test.t_range where (a >= 3) AND (a <= 5); +a b +3 3 +4 4 +5 5 +SELECT * from performance_schema.session_status +WHERE VARIABLE_NAME = 'Select_range'; +VARIABLE_NAME VARIABLE_VALUE +Select_range 1 +VARIABLE_NAME DELTA +Select_range 2 +SELECT * from test.t_range where (a >= 3) AND (a <= 5); +a b +3 3 +4 4 +5 5 +SELECT * from test.t_range where (a >= 4) AND (a <= 6); +a b +4 4 +5 5 +6 6 +SELECT * from performance_schema.session_status +WHERE VARIABLE_NAME = 'Select_range'; +VARIABLE_NAME VARIABLE_VALUE +Select_range 2 +VARIABLE_NAME DELTA +Select_range 4 +SELECT * from test.t_range where (a >= 3) AND (a <= 5); +a b +3 3 +4 4 +5 5 +SELECT * from test.t_range where (a >= 4) AND (a <= 6); +a b +4 4 +5 5 +6 6 +SELECT * from test.t_range where (a >= 5) AND (a <= 7); +a b +5 5 +6 6 +7 7 +SELECT * from performance_schema.session_status +WHERE VARIABLE_NAME = 'Select_range'; +VARIABLE_NAME VARIABLE_VALUE +Select_range 3 +VARIABLE_NAME DELTA +Select_range 7 +VARIABLE_NAME DELTA +Select_range 7 +SELECT `USER`, `HOST`, VARIABLE_NAME, VARIABLE_VALUE +FROM performance_schema.status_by_account WHERE VARIABLE_NAME = 'Select_range' + AND `USER` LIKE 'user%' + ORDER BY `USER`; +USER HOST VARIABLE_NAME VARIABLE_VALUE +user1 localhost Select_range 1 +user2 localhost Select_range 2 +user3 localhost Select_range 3 +VARIABLE_NAME DELTA +Select_range 7 +TRUNCATE TABLE performance_schema.accounts; +VARIABLE_NAME DELTA +Select_range 7 +VARIABLE_NAME DELTA +Select_range 7 +TRUNCATE TABLE performance_schema.accounts; +VARIABLE_NAME DELTA +Select_range 7 +DROP TABLE test.t_range; +REVOKE ALL PRIVILEGES, GRANT OPTION FROM user1@localhost; +REVOKE ALL PRIVILEGES, GRANT OPTION FROM user2@localhost; +REVOKE ALL PRIVILEGES, GRANT OPTION FROM user3@localhost; +DROP USER user1@localhost; +DROP USER user2@localhost; +DROP USER user3@localhost; +SET GLOBAL show_compatibility_56=1; +FLUSH PRIVILEGES; diff --git a/mysql-test/suite/perfschema/r/ortho_iter.result b/mysql-test/suite/perfschema/r/ortho_iter.result index 4bbddd0c04b..5fd557c0e0e 100644 --- a/mysql-test/suite/perfschema/r/ortho_iter.result +++ b/mysql-test/suite/perfschema/r/ortho_iter.result @@ -258,6 +258,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 call check_instrument("wait/synch/mutex/"); instr_name is_wait is_wait_file is_wait_socket is_stage is_statement is_memory is_transaction diff --git a/mysql-test/suite/perfschema/r/pfs_upgrade_event.result b/mysql-test/suite/perfschema/r/pfs_upgrade_event.result index cd1e174ccf8..3a927d95f62 100644 --- a/mysql-test/suite/perfschema/r/pfs_upgrade_event.result +++ b/mysql-test/suite/perfschema/r/pfs_upgrade_event.result @@ -33,6 +33,7 @@ mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_index_usage' alrea mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'table_lock_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'threads' already exists +mysql_upgrade: [ERROR] 1050: Table 'processlist' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_current' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history_long' already exists diff --git a/mysql-test/suite/perfschema/r/pfs_upgrade_func.result b/mysql-test/suite/perfschema/r/pfs_upgrade_func.result index 1a134c61398..b4e535f15d0 100644 --- a/mysql-test/suite/perfschema/r/pfs_upgrade_func.result +++ b/mysql-test/suite/perfschema/r/pfs_upgrade_func.result @@ -33,6 +33,7 @@ mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_index_usage' alrea mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'table_lock_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'threads' already exists +mysql_upgrade: [ERROR] 1050: Table 'processlist' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_current' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history_long' already exists diff --git a/mysql-test/suite/perfschema/r/pfs_upgrade_proc.result b/mysql-test/suite/perfschema/r/pfs_upgrade_proc.result index 4a0f422f9f0..0b774ede5a6 100644 --- a/mysql-test/suite/perfschema/r/pfs_upgrade_proc.result +++ b/mysql-test/suite/perfschema/r/pfs_upgrade_proc.result @@ -33,6 +33,7 @@ mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_index_usage' alrea mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'table_lock_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'threads' already exists +mysql_upgrade: [ERROR] 1050: Table 'processlist' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_current' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history_long' already exists diff --git a/mysql-test/suite/perfschema/r/pfs_upgrade_table.result b/mysql-test/suite/perfschema/r/pfs_upgrade_table.result index 36134b1f22b..9b924b16d59 100644 --- a/mysql-test/suite/perfschema/r/pfs_upgrade_table.result +++ b/mysql-test/suite/perfschema/r/pfs_upgrade_table.result @@ -35,6 +35,7 @@ mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_index_usage' alrea mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'table_lock_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'threads' already exists +mysql_upgrade: [ERROR] 1050: Table 'processlist' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_current' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history_long' already exists diff --git a/mysql-test/suite/perfschema/r/pfs_upgrade_view.result b/mysql-test/suite/perfschema/r/pfs_upgrade_view.result index dfed1199f87..a64e226ce14 100644 --- a/mysql-test/suite/perfschema/r/pfs_upgrade_view.result +++ b/mysql-test/suite/perfschema/r/pfs_upgrade_view.result @@ -35,6 +35,7 @@ mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_index_usage' alrea mysql_upgrade: [ERROR] 1050: Table 'table_io_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'table_lock_waits_summary_by_table' already exists mysql_upgrade: [ERROR] 1050: Table 'threads' already exists +mysql_upgrade: [ERROR] 1050: Table 'processlist' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_current' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history' already exists mysql_upgrade: [ERROR] 1050: Table 'events_stages_history_long' already exists diff --git a/mysql-test/suite/perfschema/r/privilege_table_io.result b/mysql-test/suite/perfschema/r/privilege_table_io.result index 7b8ae29e260..969169b5d68 100644 --- a/mysql-test/suite/perfschema/r/privilege_table_io.result +++ b/mysql-test/suite/perfschema/r/privilege_table_io.result @@ -65,6 +65,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/processlist.result b/mysql-test/suite/perfschema/r/processlist.result new file mode 100644 index 00000000000..40c5a0f04a8 --- /dev/null +++ b/mysql-test/suite/perfschema/r/processlist.result @@ -0,0 +1,201 @@ +## +## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +## +## Test cases: +## 1. Execute the new SHOW [FULL] PROCESSLIST and SELECT on performance_schema.processlist +## 2. Execute the legacy SHOW [FULL] PROCESSLIST and SELECT on information_schema.processlist +## 3. Verify that performance_schema_show_processlist = ON executes the new implementation +## 4. Verify that performance_schema_show_processlist = OFF executes the legacy code path +## +## Results must be manually verified. + +### Setup ### + +select @@global.performance_schema_show_processlist into @save_processlist; + +create user user1@localhost, user2@localhost, +user3@localhost, user4@localhost; + +grant ALL on *.* to user1@localhost; +grant ALL on *.* to user2@localhost; +grant ALL on *.* to user3@localhost; +grant ALL on *.* to user4@localhost; + +flush privileges; + +use test; +create table test.t1 (s1 int, s2 int, s3 int, s4 int); + +# Switch to (con0, localhost, root, , ) + +insert into test.t1 values(1, 1, 1, 1); +insert into test.t1 values(2, 2, 2, 2); +insert into test.t1 values(3, 3, 3, 3); +insert into test.t1 values(4, 4, 4, 4); + +# Lock test.t1, insert/update/deletes will block +lock tables t1 read; + +# Connect (con1, localhost, user1, , ) +insert into test.t1 values (0, 0, 0, 0); + +# Connect (con2, localhost, user2, , ) +update test.t1 set s1 = s1 + 1, s2 = s2 + 2, s3 = s3 + 3, s4 = ((s4 + 4) * (s4 + 5)) + 12345 + 67890 + 11111 + 22222 + 33333 + 44444 + 55555 + 99999;; + +# Connect (con3, localhost, user3, , ) +delete from test.t1 where s1 = 3; + +# Connect (con4, localhost, user4, , ) +insert into test.t1 values (4, 4, 4, 4); + +# Connection default + +# Wait for queries to appear in the processlist table + + +### Execute new SHOW [FULL] PROCESSLIST and SELECT on performance_schema.processlist + +set @@global.performance_schema_show_processlist = on; + +SHOW FULL PROCESSLIST; +Id User Host db Command Time State Info +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> root <Host> test Query <Time> <State> SHOW FULL PROCESSLIST +<Id> user1 <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user2 <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2, s3 = s3 + 3, s4 = ((s4 + 4) * (s4 + 5)) + 12345 + 67890 + 11111 + 22222 + 33333 + 44444 + 55555 + 99999 +<Id> user3 <Host> test Query <Time> <State> delete from test.t1 where s1 = 3 +<Id> user4 <Host> test Query <Time> <State> insert into test.t1 values (4, 4, 4, 4) + +# Performance Schema processlist table + +select * from performance_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test Query <Time> <State> select * from performance_schema.processlist order by user, id +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user1 <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user2 <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2, s3 = s3 + 3, s4 = ((s4 + 4) * (s4 + 5)) + 12345 + 67890 + 11111 + 22222 + 33333 + 44444 + 55555 + 99999 +<Id> user3 <Host> test Query <Time> <State> delete from test.t1 where s1 = 3 +<Id> user4 <Host> test Query <Time> <State> insert into test.t1 values (4, 4, 4, 4) + +# Information Schema processlist table + +select * from information_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test Query <Time> <State> select * from information_schema.processlist order by user, id +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user1 <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user2 <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2, s3 = s3 + 3, s4 = ((s4 + 4) * (s4 + 5)) + 12345 + 67890 + 11111 + 22222 + 33333 + 44444 + 55555 + 99999 +<Id> user3 <Host> test Query <Time> <State> delete from test.t1 where s1 = 3 +<Id> user4 <Host> test Query <Time> <State> insert into test.t1 values (4, 4, 4, 4) + + +### Execute legacy SHOW [FULL] PROCESSLIST and SELECT on information_schema.processlist + +set @@global.performance_schema_show_processlist = off; + +SHOW FULL PROCESSLIST; +Id User Host db Command Time State Info +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> root <Host> test Query <Time> <State> SHOW FULL PROCESSLIST +<Id> user1 <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user2 <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2, s3 = s3 + 3, s4 = ((s4 + 4) * (s4 + 5)) + 12345 + 67890 + 11111 + 22222 + 33333 + 44444 + 55555 + 99999 +<Id> user3 <Host> test Query <Time> <State> delete from test.t1 where s1 = 3 +<Id> user4 <Host> test Query <Time> <State> insert into test.t1 values (4, 4, 4, 4) + +# Performance Schema processlist table + +select * from performance_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test Query <Time> <State> select * from performance_schema.processlist order by user, id +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user1 <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user2 <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2, s3 = s3 + 3, s4 = ((s4 + 4) * (s4 + 5)) + 12345 + 67890 + 11111 + 22222 + 33333 + 44444 + 55555 + 99999 +<Id> user3 <Host> test Query <Time> <State> delete from test.t1 where s1 = 3 +<Id> user4 <Host> test Query <Time> <State> insert into test.t1 values (4, 4, 4, 4) + +# Information Schema processlist table + +select * from information_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test Query <Time> <State> select * from information_schema.processlist order by user, id +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user1 <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user2 <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2, s3 = s3 + 3, s4 = ((s4 + 4) * (s4 + 5)) + 12345 + 67890 + 11111 + 22222 + 33333 + 44444 + 55555 + 99999 +<Id> user3 <Host> test Query <Time> <State> delete from test.t1 where s1 = 3 +<Id> user4 <Host> test Query <Time> <State> insert into test.t1 values (4, 4, 4, 4) + + +### Verify feature code path + +# Enable SHOW PROCESSLIST via the Performance Schema +set @@global.performance_schema_show_processlist = on; + +# Connection default, send SHOW PROCESSLIST +SET DEBUG_SYNC='pfs_show_processlist_performance_schema SIGNAL pfs_processlist_pfs WAIT_FOR continue'; +SHOW FULL PROCESSLIST; + +# Connection con0 +SET DEBUG_SYNC='now WAIT_FOR pfs_processlist_pfs'; +SET DEBUG_SYNC='now SIGNAL continue'; + +# Connection default, reap +Id User Host db Command Time State Info +<Id> event_scheduler <Host> NULL <Command> <Time> <State> <Info> +<Id> root <Host> test <Command> <Time> <State> <Info> +<Id> root <Host> test <Command> <Time> <State> <Info> +<Id> user1 <Host> test <Command> <Time> <State> <Info> +<Id> user2 <Host> test <Command> <Time> <State> <Info> +<Id> user3 <Host> test <Command> <Time> <State> <Info> +<Id> user4 <Host> test <Command> <Time> <State> <Info> + + +### Verify legacy code path + +# Enable the legacy SHOW PROCESSLIST +set @@global.performance_schema_show_processlist = off; + +# Connection default, send SHOW PROCESSLIST +SET DEBUG_SYNC='RESET'; +SET DEBUG_SYNC='pfs_show_processlist_legacy SIGNAL pfs_processlist_legacy WAIT_FOR continue'; +SHOW FULL PROCESSLIST; + +# Connection con0 +SET DEBUG_SYNC='now WAIT_FOR pfs_processlist_legacy'; +SET DEBUG_SYNC='now SIGNAL continue'; + +# Connection default, reap +Id User Host db Command Time State Info +<Id> event_scheduler <Host> NULL <Command> <Time> <State> <Info> +<Id> root <Host> test <Command> <Time> <State> <Info> +<Id> root <Host> test <Command> <Time> <State> <Info> +<Id> user1 <Host> test <Command> <Time> <State> <Info> +<Id> user2 <Host> test <Command> <Time> <State> <Info> +<Id> user3 <Host> test <Command> <Time> <State> <Info> +<Id> user4 <Host> test <Command> <Time> <State> <Info> + + +### Clean up ### + +# Connection con0, unlock test.t1, disconnect +unlock tables; + +# Connection con1, reap, disconnect +# Connection con2, reap, disconnect +# Connection con3, reap, disconnect +# Connection con4, reap, disconnect + +# Connection default + +drop table test.t1; +drop user user1@localhost; +drop user user2@localhost; +drop user user3@localhost; +drop user user4@localhost; + +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/r/processlist_57.result b/mysql-test/suite/perfschema/r/processlist_57.result new file mode 100644 index 00000000000..0068eb6c3cd --- /dev/null +++ b/mysql-test/suite/perfschema/r/processlist_57.result @@ -0,0 +1,345 @@ +call mtr.add_suppression("Optional native table 'performance_schema'.'processlist' has the wrong structure or is missing."); +call mtr.add_suppression("Column count of performance_schema.processlist is wrong. Expected 8, found 2. The table is probably corrupted"); +## +## Verify fresh 5.7 instance +## +SELECT @@global.performance_schema_show_processlist; +@@global.performance_schema_show_processlist +0 +SHOW CREATE TABLE performance_schema.processlist; +Table Create Table +processlist CREATE TABLE `processlist` ( + `ID` bigint(20) unsigned NOT NULL, + `USER` varchar(32) DEFAULT NULL, + `HOST` varchar(66) DEFAULT NULL, + `DB` varchar(64) DEFAULT NULL, + `COMMAND` varchar(16) DEFAULT NULL, + `TIME` bigint(20) DEFAULT NULL, + `STATE` varchar(64) DEFAULT NULL, + `INFO` longtext +) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8 +## +## Simulate old 5.7 instance +## +DROP TABLE performance_schema.processlist; +SHOW CREATE TABLE performance_schema.processlist; +ERROR 42S02: Table 'performance_schema.processlist' doesn't exist +## +## Server shutdown +## +## +### Server restart +## +## +## Verify old 5.7 instance +## +SELECT @@global.performance_schema_show_processlist; +@@global.performance_schema_show_processlist +0 +SHOW CREATE TABLE performance_schema.processlist; +ERROR 42S02: Table 'performance_schema.processlist' doesn't exist +SELECT * FROM performance_schema.processlist; +ERROR 42S02: Table 'performance_schema.processlist' doesn't exist +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] starting SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'ON'; +SELECT * FROM performance_schema.processlist; +ERROR 42S02: Table 'performance_schema.processlist' doesn't exist +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +ERROR 42S02: Table 'performance_schema.processlist' doesn't exist +## +## Perform broken upgrade (case 1) +## +CREATE TABLE performance_schema.processlist (a int, b int); +SHOW CREATE TABLE performance_schema.processlist; +Table Create Table +processlist CREATE TABLE `processlist` ( + `a` int(11) DEFAULT NULL, + `b` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 +SET GLOBAL performance_schema_show_processlist = 'OFF'; +SELECT * FROM performance_schema.processlist; +a b +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] starting SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'ON'; +SELECT * FROM performance_schema.processlist; +a b +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +ERROR 42S22: Unknown column 'ID' in 'field list' +## +## Server shutdown +## +## +### Server restart +## +SHOW CREATE TABLE performance_schema.processlist; +Table Create Table +processlist CREATE TABLE `processlist` ( + `a` int(11) DEFAULT NULL, + `b` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 +SET GLOBAL performance_schema_show_processlist = 'OFF'; +SELECT * FROM performance_schema.processlist; +a b +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] starting SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'ON'; +SELECT * FROM performance_schema.processlist; +a b +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +ERROR 42S22: Unknown column 'ID' in 'field list' +## +## Perform broken upgrade (case 2) +## +DROP TABLE performance_schema.processlist; +CREATE TABLE performance_schema.processlist ( +`ID` bigint(20) unsigned NOT NULL, +`USER` varchar(32) DEFAULT NULL, +`HOST` varchar(66) DEFAULT NULL, +`DB` varchar(64) DEFAULT NULL, +`COMMAND` varchar(16) DEFAULT NULL, +`TIME` bigint(20) DEFAULT NULL, +`STATE` varchar(64) DEFAULT NULL, +`INFO` longtext +); +SHOW CREATE TABLE performance_schema.processlist; +Table Create Table +processlist CREATE TABLE `processlist` ( + `ID` bigint(20) unsigned NOT NULL, + `USER` varchar(32) DEFAULT NULL, + `HOST` varchar(66) DEFAULT NULL, + `DB` varchar(64) DEFAULT NULL, + `COMMAND` varchar(16) DEFAULT NULL, + `TIME` bigint(20) DEFAULT NULL, + `STATE` varchar(64) DEFAULT NULL, + `INFO` longtext +) ENGINE=InnoDB DEFAULT CHARSET=utf8 +SET GLOBAL performance_schema_show_processlist = 'OFF'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] starting SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'ON'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +## +## Server shutdown +## +## +### Server restart +## +SHOW CREATE TABLE performance_schema.processlist; +Table Create Table +processlist CREATE TABLE `processlist` ( + `ID` bigint(20) unsigned NOT NULL, + `USER` varchar(32) DEFAULT NULL, + `HOST` varchar(66) DEFAULT NULL, + `DB` varchar(64) DEFAULT NULL, + `COMMAND` varchar(16) DEFAULT NULL, + `TIME` bigint(20) DEFAULT NULL, + `STATE` varchar(64) DEFAULT NULL, + `INFO` longtext +) ENGINE=InnoDB DEFAULT CHARSET=utf8 +SET GLOBAL performance_schema_show_processlist = 'OFF'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] starting SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'ON'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +## +## Perform broken upgrade (case 3) +## +DROP TABLE performance_schema.processlist; +CREATE TABLE performance_schema.processlist +LIKE INFORMATION_SCHEMA.PROCESSLIST; +SHOW CREATE TABLE performance_schema.processlist; +Table Create Table +processlist CREATE TABLE `processlist` ( + `ID` bigint(21) unsigned NOT NULL DEFAULT '0', + `USER` varchar(32) NOT NULL DEFAULT '', + `HOST` varchar(64) NOT NULL DEFAULT '', + `DB` varchar(64) DEFAULT NULL, + `COMMAND` varchar(16) NOT NULL DEFAULT '', + `TIME` int(7) NOT NULL DEFAULT '0', + `STATE` varchar(64) DEFAULT NULL, + `INFO` longtext +) ENGINE=InnoDB DEFAULT CHARSET=utf8 +SET GLOBAL performance_schema_show_processlist = 'OFF'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] starting SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'ON'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +## +## Server shutdown +## +## +### Server restart +## +SHOW CREATE TABLE performance_schema.processlist; +Table Create Table +processlist CREATE TABLE `processlist` ( + `ID` bigint(21) unsigned NOT NULL DEFAULT '0', + `USER` varchar(32) NOT NULL DEFAULT '', + `HOST` varchar(64) NOT NULL DEFAULT '', + `DB` varchar(64) DEFAULT NULL, + `COMMAND` varchar(16) NOT NULL DEFAULT '', + `TIME` int(7) NOT NULL DEFAULT '0', + `STATE` varchar(64) DEFAULT NULL, + `INFO` longtext +) ENGINE=InnoDB DEFAULT CHARSET=utf8 +SET GLOBAL performance_schema_show_processlist = 'OFF'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] starting SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'ON'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +## +## Perform correct upgrade +## +DROP TABLE performance_schema.processlist; +CREATE TABLE performance_schema.processlist ( +`ID` bigint(20) unsigned NOT NULL, +`USER` varchar(32) DEFAULT NULL, +`HOST` varchar(66) DEFAULT NULL, +`DB` varchar(64) DEFAULT NULL, +`COMMAND` varchar(16) DEFAULT NULL, +`TIME` bigint(20) DEFAULT NULL, +`STATE` varchar(64) DEFAULT NULL, +`INFO` longtext +) ENGINE = 'PERFORMANCE_SCHEMA'; +SHOW CREATE TABLE performance_schema.processlist; +Table Create Table +processlist CREATE TABLE `processlist` ( + `ID` bigint(20) unsigned NOT NULL, + `USER` varchar(32) DEFAULT NULL, + `HOST` varchar(66) DEFAULT NULL, + `DB` varchar(64) DEFAULT NULL, + `COMMAND` varchar(16) DEFAULT NULL, + `TIME` bigint(20) DEFAULT NULL, + `STATE` varchar(64) DEFAULT NULL, + `INFO` longtext +) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8 +SET GLOBAL performance_schema_show_processlist = 'OFF'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] Sending data SELECT * FROM performance_schema.processlist +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] starting SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'ON'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] Sending data SELECT * FROM performance_schema.processlist +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] Sending data SHOW PROCESSLIST +## +## Server shutdown +## +## +### Server restart +## +SHOW CREATE TABLE performance_schema.processlist; +Table Create Table +processlist CREATE TABLE `processlist` ( + `ID` bigint(20) unsigned NOT NULL, + `USER` varchar(32) DEFAULT NULL, + `HOST` varchar(66) DEFAULT NULL, + `DB` varchar(64) DEFAULT NULL, + `COMMAND` varchar(16) DEFAULT NULL, + `TIME` bigint(20) DEFAULT NULL, + `STATE` varchar(64) DEFAULT NULL, + `INFO` longtext +) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8 +SET GLOBAL performance_schema_show_processlist = 'OFF'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] Sending data SELECT * FROM performance_schema.processlist +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] starting SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'ON'; +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] Sending data SELECT * FROM performance_schema.processlist +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +2 root [HOST:PORT] test Query [TIME] executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST +SHOW PROCESSLIST; +Id User Host db Command Time State Info +2 root [HOST:PORT] test Query [TIME] Sending data SHOW PROCESSLIST +SET GLOBAL performance_schema_show_processlist = 'OFF'; diff --git a/mysql-test/suite/perfschema/r/processlist_acl.result b/mysql-test/suite/perfschema/r/processlist_acl.result new file mode 100644 index 00000000000..2e60b403484 --- /dev/null +++ b/mysql-test/suite/perfschema/r/processlist_acl.result @@ -0,0 +1,255 @@ +## +## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +## +## Verify handling of the SELECT and PROCESS privileges. +## +## Test cases: +## - Execute SHOW PROCESSLIST (new and legacy) with all privileges +## - Execute SELECT on the performance_schema.processlist and information_schema.processlist with all privileges +## - Execute SHOW PROCESSLIST (new and legacy) with no privileges +## - Execute SELECT on the performance_schema.processlist and information_schema.processlist with no privileges +## +## Results must be manually verified. + +### Setup ### + +select @@global.performance_schema_show_processlist into @save_processlist; + +# Control users +create user user_00@localhost, user_01@localhost; +grant ALL on *.* to user_00@localhost; +grant ALL on *.* to user_01@localhost; + +# Test users +create user user_all@localhost, user_none@localhost; +grant ALL on *.* to user_all@localhost; +grant USAGE on *.* to user_none@localhost; + +flush privileges; + +show grants for user_all@localhost; +Grants for user_all@localhost +GRANT ALL PRIVILEGES ON *.* TO 'user_all'@'localhost' + +show grants for user_none@localhost; +Grants for user_none@localhost +GRANT USAGE ON *.* TO 'user_none'@'localhost' + +use test; +create table test.t1 (s1 int, s2 int, s3 int, s4 int); + +# Connect (con_00, localhost, user_00, , ) +# Connect (con_01, localhost, user_01, , ) + +insert into test.t1 values(1, 1, 1, 1); +insert into test.t1 values(2, 2, 2, 2); +insert into test.t1 values(3, 3, 3, 3); +insert into test.t1 values(4, 4, 4, 4); + +# Lock test.t1, insert/update/deletes will block +lock tables t1 read; + +# Establish 2 connections for user_all +# Connect (con_all_1, localhost, user_all, , ) +# Connect (con_all_2, localhost, user_all, , ) +insert into test.t1 values (0, 0, 0, 0); + +# Establish 4 connections for user_none +# Connect (con_none_1, localhost, user_none, , ) +# Connect (con_none_2, localhost, user_none, , ) +# Connect (con_none_3, localhost, user_none, , ) +# Connect (con_none_4, localhost, user_none, , ) +update test.t1 set s1 = s1 + 1, s2 = s2 + 2;; + +# Connection con_all_1 + +# Wait for queries to appear in the processlist table + +### Execute SHOW PROCESSLIST with all privileges +### Expect all users + +# New SHOW PROCESSLIST +set @@global.performance_schema_show_processlist = on; + +SHOW FULL PROCESSLIST; +Id User Host db Command Time State Info +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user_00 <Host> test <Command> <Time> <State> NULL +<Id> user_01 <Host> test <Command> <Time> <State> NULL +<Id> user_all <Host> test Query <Time> <State> SHOW FULL PROCESSLIST +<Id> user_all <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Performance Schema processlist table + +select * from performance_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user_00 <Host> test <Command> <Time> <State> NULL +<Id> user_01 <Host> test <Command> <Time> <State> NULL +<Id> user_all <Host> test Query <Time> <State> select * from performance_schema.processlist order by user, id +<Id> user_all <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Information Schema processlist table + +select * from information_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user_00 <Host> test <Command> <Time> <State> NULL +<Id> user_01 <Host> test <Command> <Time> <State> NULL +<Id> user_all <Host> test Query <Time> <State> select * from information_schema.processlist order by user, id +<Id> user_all <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Legacy SHOW PROCESSLIST +set @@global.performance_schema_show_processlist = off; + +SHOW FULL PROCESSLIST; +Id User Host db Command Time State Info +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user_00 <Host> test <Command> <Time> <State> NULL +<Id> user_01 <Host> test <Command> <Time> <State> NULL +<Id> user_all <Host> test Query <Time> <State> SHOW FULL PROCESSLIST +<Id> user_all <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Performance Schema processlist table + +select * from performance_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user_00 <Host> test <Command> <Time> <State> NULL +<Id> user_01 <Host> test <Command> <Time> <State> NULL +<Id> user_all <Host> test Query <Time> <State> select * from performance_schema.processlist order by user, id +<Id> user_all <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Information Schema processlist table + +select * from information_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user_00 <Host> test <Command> <Time> <State> NULL +<Id> user_01 <Host> test <Command> <Time> <State> NULL +<Id> user_all <Host> test Query <Time> <State> select * from information_schema.processlist order by user, id +<Id> user_all <Host> test Query <Time> <State> insert into test.t1 values (0, 0, 0, 0) +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + + +### Execute SHOW PROCESSLIST with no SELECT and no PROCESS privileges +### Expect processes only from user_none + +# New SHOW PROCESSLIST +set @@global.performance_schema_show_processlist = on; + +# Connection con_none_1 + +SHOW FULL PROCESSLIST; +Id User Host db Command Time State Info +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> SHOW FULL PROCESSLIST +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Performance Schema processlist table + +select * from performance_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> user_none <Host> test Query <Time> <State> select * from performance_schema.processlist order by user, id +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Information Schema processlist table + +select * from information_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> user_none <Host> test Query <Time> <State> select * from information_schema.processlist order by user, id +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Confirm that only processes from user_none are visible + +select count(*) as "Expect 0" from performance_schema.processlist +where user not in ('user_none'); +Expect 0 +0 + +# Legacy SHOW PROCESSLIST +set @@global.performance_schema_show_processlist = off; + +# Connection con_none_1 + +SHOW FULL PROCESSLIST; +Id User Host db Command Time State Info +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> SHOW FULL PROCESSLIST +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Performance Schema processlist table + +select * from performance_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> user_none <Host> test Query <Time> <State> select * from performance_schema.processlist order by user, id +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + +# Information Schema processlist table + +select * from information_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> user_none <Host> test Query <Time> <State> select * from information_schema.processlist order by user, id +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test <Command> <Time> <State> NULL +<Id> user_none <Host> test Query <Time> <State> update test.t1 set s1 = s1 + 1, s2 = s2 + 2 + + +### Clean up ### + +# Disconnect con_00 +# Connection con_01, unlock test.t1, disconnect +unlock tables; +# Disconnect con_all_1 +# Reap con_all_2, disconnect +# Disconnect con_none_1 +# Disconnect con_none_2 +# Disconnect con_none_3 +# Reap con_none_4, disconnect + +# Connection default + +drop table test.t1; +drop user user_00@localhost; +drop user user_01@localhost; +drop user user_all@localhost; +drop user user_none@localhost; + +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/r/processlist_anonymous.result b/mysql-test/suite/perfschema/r/processlist_anonymous.result new file mode 100644 index 00000000000..a27a6df2606 --- /dev/null +++ b/mysql-test/suite/perfschema/r/processlist_anonymous.result @@ -0,0 +1,66 @@ +## +## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +## Verify behavior for anonymous users and PROCESS_ACL. +## +SELECT @@global.performance_schema_show_processlist INTO @save_processlist; +SET @@global.performance_schema_show_processlist = OFF; +SHOW GRANTS; +Grants for @localhost +GRANT USAGE ON *.* TO ''@'localhost' +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SHOW PROCESSLIST; +ERROR 42000: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation +SET @@global.performance_schema_show_processlist = ON; +SHOW GRANTS; +Grants for @localhost +GRANT USAGE ON *.* TO ''@'localhost' +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; +ID USER HOST DB COMMAND TIME STATE INFO +SELECT * FROM performance_schema.processlist; +ID USER HOST DB COMMAND TIME STATE INFO +SHOW PROCESSLIST; +ERROR 42000: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation +GRANT PROCESS ON *.* TO ''@'localhost'; +SET @@global.performance_schema_show_processlist = OFF; +SHOW GRANTS; +Grants for @localhost +GRANT PROCESS ON *.* TO ''@'localhost' +SELECT count(*) >= 2 FROM INFORMATION_SCHEMA.PROCESSLIST; +count(*) >= 2 +1 +SELECT count(*) >= 2 FROM performance_schema.processlist; +count(*) >= 2 +1 +SHOW PROCESSLIST; +SELECT "Previous statement is now completed." as status; +status +Previous statement is now completed. +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT as BROKEN_ROWS_SENT +FROM performance_schema.events_statements_history +WHERE SQL_TEXT = "SHOW PROCESSLIST"; +EVENT_NAME SQL_TEXT BROKEN_ROWS_SENT +statement/sql/show_processlist SHOW PROCESSLIST 0 +TRUNCATE TABLE performance_schema.events_statements_history; +set @@global.performance_schema_show_processlist = ON; +SHOW GRANTS; +Grants for @localhost +GRANT PROCESS ON *.* TO ''@'localhost' +SELECT count(*) >= 2 FROM INFORMATION_SCHEMA.PROCESSLIST; +count(*) >= 2 +1 +SELECT count(*) >= 2 FROM performance_schema.processlist; +count(*) >= 2 +1 +SHOW PROCESSLIST; +SELECT "Previous statement is now completed." as status; +status +Previous statement is now completed. +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT >= 2 +FROM performance_schema.events_statements_history +WHERE SQL_TEXT = "SHOW PROCESSLIST"; +EVENT_NAME SQL_TEXT ROWS_SENT >= 2 +statement/sql/show_processlist SHOW PROCESSLIST 1 +SET @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/r/processlist_no_pfs.result b/mysql-test/suite/perfschema/r/processlist_no_pfs.result new file mode 100644 index 00000000000..16e5a13b52a --- /dev/null +++ b/mysql-test/suite/perfschema/r/processlist_no_pfs.result @@ -0,0 +1,181 @@ +show databases; +Database +information_schema +mtr +mysql +performance_schema +sys +test +select count(*) from performance_schema.performance_timers; +count(*) +0 +select count(*) from performance_schema.setup_consumers; +count(*) +0 +select count(*) > 4 from performance_schema.setup_instruments; +count(*) > 4 +0 +select count(*) from performance_schema.setup_timers; +count(*) +0 +Warnings: +Warning 1681 'performance_schema.setup_timers' is deprecated and will be removed in a future release. +select * from performance_schema.accounts; +select * from performance_schema.cond_instances; +select * from performance_schema.events_stages_current; +select * from performance_schema.events_stages_history; +select * from performance_schema.events_stages_history_long; +select * from performance_schema.events_stages_summary_by_account_by_event_name; +select * from performance_schema.events_stages_summary_by_host_by_event_name; +select * from performance_schema.events_stages_summary_by_thread_by_event_name; +select * from performance_schema.events_stages_summary_by_user_by_event_name; +select * from performance_schema.events_stages_summary_global_by_event_name; +select * from performance_schema.events_statements_current; +select * from performance_schema.events_statements_history; +select * from performance_schema.events_statements_history_long; +select * from performance_schema.events_statements_summary_by_account_by_event_name; +select * from performance_schema.events_statements_summary_by_digest; +select * from performance_schema.events_statements_summary_by_host_by_event_name; +select * from performance_schema.events_statements_summary_by_thread_by_event_name; +select * from performance_schema.events_statements_summary_by_user_by_event_name; +select * from performance_schema.events_statements_summary_global_by_event_name; +select * from performance_schema.events_transactions_current; +select * from performance_schema.events_transactions_history; +select * from performance_schema.events_transactions_history_long; +select * from performance_schema.events_transactions_summary_by_account_by_event_name; +select * from performance_schema.events_transactions_summary_by_host_by_event_name; +select * from performance_schema.events_transactions_summary_by_thread_by_event_name; +select * from performance_schema.events_transactions_summary_by_user_by_event_name; +select * from performance_schema.events_transactions_summary_global_by_event_name; +select * from performance_schema.events_waits_current; +select * from performance_schema.events_waits_history; +select * from performance_schema.events_waits_history_long; +select * from performance_schema.events_waits_summary_by_account_by_event_name; +select * from performance_schema.events_waits_summary_by_host_by_event_name; +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_user_by_event_name; +select * from performance_schema.events_waits_summary_global_by_event_name; +select * from performance_schema.memory_summary_by_account_by_event_name; +select * from performance_schema.memory_summary_by_host_by_event_name; +select * from performance_schema.memory_summary_by_thread_by_event_name; +select * from performance_schema.memory_summary_by_user_by_event_name; +select * from performance_schema.memory_summary_global_by_event_name; +select * from performance_schema.file_instances; +select * from performance_schema.file_summary_by_event_name; +select * from performance_schema.file_summary_by_instance; +select * from performance_schema.host_cache; +select * from performance_schema.hosts; +select * from performance_schema.memory_summary_by_account_by_event_name; +select * from performance_schema.memory_summary_by_host_by_event_name; +select * from performance_schema.memory_summary_by_thread_by_event_name; +select * from performance_schema.memory_summary_by_user_by_event_name; +select * from performance_schema.memory_summary_global_by_event_name; +select * from performance_schema.metadata_locks; +select * from performance_schema.mutex_instances; +select * from performance_schema.objects_summary_global_by_type; +select * from performance_schema.performance_timers; +select * from performance_schema.rwlock_instances; +select * from performance_schema.session_account_connect_attrs; +select * from performance_schema.session_connect_attrs; +select * from performance_schema.setup_actors; +select * from performance_schema.setup_consumers; +select * from performance_schema.setup_instruments; +select * from performance_schema.setup_objects; +select * from performance_schema.setup_timers; +select * from performance_schema.socket_instances; +select * from performance_schema.socket_summary_by_instance; +select * from performance_schema.socket_summary_by_event_name; +select * from performance_schema.table_handles; +select * from performance_schema.table_io_waits_summary_by_index_usage; +select * from performance_schema.table_io_waits_summary_by_table; +select * from performance_schema.table_lock_waits_summary_by_table; +select * from performance_schema.threads; +select * from performance_schema.users; +select * from performance_schema.replication_connection_configuration; +select * from performance_schema.replication_connection_status; +select * from performance_schema.replication_applier_configuration; +select * from performance_schema.replication_applier_status; +select * from performance_schema.replication_applier_status_by_coordinator; +select * from performance_schema.replication_applier_status_by_worker; +select * from performance_schema.global_status; +select * from performance_schema.status_by_thread; +select * from performance_schema.status_by_user; +select * from performance_schema.status_by_host; +select * from performance_schema.status_by_account; +select * from performance_schema.session_status; +select * from performance_schema.global_variables; +select * from performance_schema.variables_by_thread; +select * from performance_schema.session_variables; +show global variables like "performance_schema%"; +Variable_name Value +performance_schema OFF +performance_schema_accounts_size 0 +performance_schema_digests_size 0 +performance_schema_events_stages_history_long_size 0 +performance_schema_events_stages_history_size 0 +performance_schema_events_statements_history_long_size 0 +performance_schema_events_statements_history_size 0 +performance_schema_events_transactions_history_long_size 0 +performance_schema_events_transactions_history_size 0 +performance_schema_events_waits_history_long_size 0 +performance_schema_events_waits_history_size 0 +performance_schema_hosts_size 0 +performance_schema_max_cond_classes 0 +performance_schema_max_cond_instances 0 +performance_schema_max_digest_length 0 +performance_schema_max_file_classes 0 +performance_schema_max_file_handles 0 +performance_schema_max_file_instances 0 +performance_schema_max_index_stat 0 +performance_schema_max_memory_classes 0 +performance_schema_max_metadata_locks 0 +performance_schema_max_mutex_classes 0 +performance_schema_max_mutex_instances 0 +performance_schema_max_prepared_statements_instances 0 +performance_schema_max_program_instances 0 +performance_schema_max_rwlock_classes 0 +performance_schema_max_rwlock_instances 0 +performance_schema_max_socket_classes 0 +performance_schema_max_socket_instances 0 +performance_schema_max_sql_text_length 0 +performance_schema_max_stage_classes 0 +performance_schema_max_statement_classes 0 +performance_schema_max_statement_stack 0 +performance_schema_max_table_handles 0 +performance_schema_max_table_instances 0 +performance_schema_max_table_lock_stat 0 +performance_schema_max_thread_classes 0 +performance_schema_max_thread_instances 0 +performance_schema_session_connect_attrs_size 0 +performance_schema_setup_actors_size 0 +performance_schema_setup_objects_size 0 +performance_schema_show_processlist ON +performance_schema_users_size 0 +show engine PERFORMANCE_SCHEMA status; +show global status like "performance_schema%"; + +select * from information_schema.engines +where engine = "PERFORMANCE_SCHEMA"; +ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS +PERFORMANCE_SCHEMA YES Performance Schema NO NO NO + +# If the Performance Schema is disabled, then expect +# performance-schema-show-processlist = OFF +# regardless of its initial setting + +select @@global.performance_schema_show_processlist; +@@global.performance_schema_show_processlist +1 + +# If the Performance Schema is disabled, then setting +# performance-schema-show-processlist = ON +# succeeds, SHOW PROCESSLIST returns no data. + +set @@global.performance_schema_show_processlist = ON; +SHOW PROCESSLIST; +Id User Host db Command Time State Info + +show global variables like "performance_schema"; +Variable_name Value +performance_schema OFF diff --git a/mysql-test/suite/perfschema/r/processlist_port.result b/mysql-test/suite/perfschema/r/processlist_port.result new file mode 100644 index 00000000000..c11ff41f112 --- /dev/null +++ b/mysql-test/suite/perfschema/r/processlist_port.result @@ -0,0 +1,145 @@ +## +## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +## +## Verify the Host field (hostname:port) against the legacy implementation. +## + +### Setup ### + +select @@global.performance_schema_show_processlist into @save_processlist; + +# Control user +create user user0@localhost; +grant ALL on *.* to user0@localhost; +# Test users + +create user user1@localhost, user2@localhost, +user3@localhost, user4@localhost; + +grant USAGE on *.* to user1@localhost; +grant ALL on *.* to user2@localhost; +grant ALL on *.* to user3@localhost; +grant ALL on *.* to user4@localhost; + +flush privileges; + +show grants for user1@localhost; +Grants for user1@localhost +GRANT USAGE ON *.* TO 'user1'@'localhost' + +# Connect (con_user0, 127.0.0.1, user0, , , MASTER_MYPORT, ) + +select connection_id() into @con_user0_id; +# Connect (con_user1, 127.0.0.1, user1, , , MASTER_MYPORT, ) +# Connect (con_user2, 127.0.0.1, user2, , , MASTER_MYPORT, ) +# Connect (con_user3, 127.0.0.1, user3, , , MASTER_MYPORT, ) +# Connect (con_user4, 127.0.0.1, user4, , , MASTER_MYPORT, ) +# Connection user0 + +### Compare the SHOW PROCESSLIST Host column between the new and old implementations + +## New SHOW PROCESSLIST +set @@global.performance_schema_show_processlist = on; + +SHOW FULL PROCESSLIST; +Id User Host db Command Time State Info +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user0 <Host> test Query <Time> <State> SHOW FULL PROCESSLIST +<Id> user1 <Host> test <Command> <Time> <State> NULL +<Id> user2 <Host> test <Command> <Time> <State> NULL +<Id> user3 <Host> test <Command> <Time> <State> NULL +<Id> user4 <Host> test <Command> <Time> <State> NULL + +# Performance Schema processlist table + +select * from performance_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user0 <Host> test Query <Time> <State> select * from performance_schema.processlist order by user, id +<Id> user1 <Host> test <Command> <Time> <State> NULL +<Id> user2 <Host> test <Command> <Time> <State> NULL +<Id> user3 <Host> test <Command> <Time> <State> NULL +<Id> user4 <Host> test <Command> <Time> <State> NULL + +# Information Schema processlist table + +select * from information_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user0 <Host> test Query <Time> <State> select * from information_schema.processlist order by user, id +<Id> user1 <Host> test <Command> <Time> <State> NULL +<Id> user2 <Host> test <Command> <Time> <State> NULL +<Id> user3 <Host> test <Command> <Time> <State> NULL +<Id> user4 <Host> test <Command> <Time> <State> NULL + +# Connection user1 +# Get Host:Port, new + +## Legacy SHOW PROCESSLIST +set @@global.performance_schema_show_processlist = off; + +SHOW FULL PROCESSLIST; +Id User Host db Command Time State Info +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user0 <Host> test Query <Time> <State> SHOW FULL PROCESSLIST +<Id> user1 <Host> test <Command> <Time> <State> NULL +<Id> user2 <Host> test <Command> <Time> <State> NULL +<Id> user3 <Host> test <Command> <Time> <State> NULL +<Id> user4 <Host> test <Command> <Time> <State> NULL + +# Performance Schema processlist table + +select * from performance_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user0 <Host> test Query <Time> <State> select * from performance_schema.processlist order by user, id +<Id> user1 <Host> test <Command> <Time> <State> NULL +<Id> user2 <Host> test <Command> <Time> <State> NULL +<Id> user3 <Host> test <Command> <Time> <State> NULL +<Id> user4 <Host> test <Command> <Time> <State> NULL + +# Information Schema processlist table + +select * from information_schema.processlist order by user, id; +ID USER HOST DB COMMAND TIME STATE INFO +<Id> event_scheduler <Host> NULL <Command> <Time> <State> NULL +<Id> root <Host> test <Command> <Time> <State> NULL +<Id> user0 <Host> test Query <Time> <State> select * from information_schema.processlist order by user, id +<Id> user1 <Host> test <Command> <Time> <State> NULL +<Id> user2 <Host> test <Command> <Time> <State> NULL +<Id> user3 <Host> test <Command> <Time> <State> NULL +<Id> user4 <Host> test <Command> <Time> <State> NULL + +# Connection user1 +# Get Host:Port, legacy + +***SUCCESS*** The SHOW PROCESSLIST Host fields match + +### Compare the processlist Host column between Performance Schema and the Information Schema + +# Connection con_user0 + +***SUCCESS*** The processlist Host fields match between the Performance Schema and the Information Schema + + +### Clean up ### + +# Disconnect con_user0 +# Disconnect con_user1 +# Disconnect con_user2 +# Disconnect con_user3 +# Disconnect con_user4 +# Connection default + +drop user user0@localhost; +drop user user1@localhost; +drop user user2@localhost; +drop user user3@localhost; +drop user user4@localhost; + +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/r/processlist_reg_user.result b/mysql-test/suite/perfschema/r/processlist_reg_user.result new file mode 100644 index 00000000000..72e879e4c09 --- /dev/null +++ b/mysql-test/suite/perfschema/r/processlist_reg_user.result @@ -0,0 +1,89 @@ +## +## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +## Verify behavior for regular users and PROCESS_ACL. +## +SELECT @@global.performance_schema_show_processlist INTO @save_processlist; +SET @@global.performance_schema_show_processlist = OFF; +CREATE USER 'regular'@'localhost'; +SHOW GRANTS; +Grants for regular@localhost +GRANT USAGE ON *.* TO 'regular'@'localhost' +SELECT USER, INFO FROM INFORMATION_SCHEMA.PROCESSLIST; +USER INFO +regular SELECT USER, INFO FROM INFORMATION_SCHEMA.PROCESSLIST +SELECT USER, INFO FROM performance_schema.processlist; +USER INFO +regular SELECT USER, INFO FROM performance_schema.processlist +SHOW PROCESSLIST; +SELECT "Previous statement is now completed." as status; +status +Previous statement is now completed. +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT as BROKEN_ROWS_SENT +FROM performance_schema.events_statements_history +WHERE SQL_TEXT = "SHOW PROCESSLIST"; +EVENT_NAME SQL_TEXT BROKEN_ROWS_SENT +statement/sql/show_processlist SHOW PROCESSLIST 0 +TRUNCATE TABLE performance_schema.events_statements_history; +SET @@global.performance_schema_show_processlist = ON; +SHOW GRANTS; +Grants for regular@localhost +GRANT USAGE ON *.* TO 'regular'@'localhost' +SELECT USER, INFO FROM INFORMATION_SCHEMA.PROCESSLIST; +USER INFO +regular SELECT USER, INFO FROM INFORMATION_SCHEMA.PROCESSLIST +SELECT USER, INFO FROM performance_schema.processlist; +USER INFO +regular SELECT USER, INFO FROM performance_schema.processlist +SHOW PROCESSLIST; +SELECT "Previous statement is now completed." as status; +status +Previous statement is now completed. +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT +FROM performance_schema.events_statements_history +WHERE SQL_TEXT = "SHOW PROCESSLIST"; +EVENT_NAME SQL_TEXT ROWS_SENT +statement/sql/show_processlist SHOW PROCESSLIST 1 +TRUNCATE TABLE performance_schema.events_statements_history; +GRANT PROCESS ON *.* TO 'regular'@'localhost'; +SET @@global.performance_schema_show_processlist = OFF; +SHOW GRANTS; +Grants for regular@localhost +GRANT PROCESS ON *.* TO 'regular'@'localhost' +SELECT count(*) >= 2 FROM INFORMATION_SCHEMA.PROCESSLIST; +count(*) >= 2 +1 +SELECT count(*) >= 2 FROM performance_schema.processlist; +count(*) >= 2 +1 +SHOW PROCESSLIST; +SELECT "Previous statement is now completed." as status; +status +Previous statement is now completed. +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT as BROKEN_ROWS_SENT +FROM performance_schema.events_statements_history +WHERE SQL_TEXT = "SHOW PROCESSLIST"; +EVENT_NAME SQL_TEXT BROKEN_ROWS_SENT +statement/sql/show_processlist SHOW PROCESSLIST 0 +TRUNCATE TABLE performance_schema.events_statements_history; +SET @@global.performance_schema_show_processlist = ON; +SHOW GRANTS; +Grants for regular@localhost +GRANT PROCESS ON *.* TO 'regular'@'localhost' +SELECT count(*) >= 2 FROM INFORMATION_SCHEMA.PROCESSLIST; +count(*) >= 2 +1 +SELECT count(*) >= 2 FROM performance_schema.processlist; +count(*) >= 2 +1 +SHOW PROCESSLIST; +SELECT "Previous statement is now completed." as status; +status +Previous statement is now completed. +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT >= 2 +FROM performance_schema.events_statements_history +WHERE SQL_TEXT = "SHOW PROCESSLIST"; +EVENT_NAME SQL_TEXT ROWS_SENT >= 2 +statement/sql/show_processlist SHOW PROCESSLIST 1 +TRUNCATE TABLE performance_schema.events_statements_history; +SET @@global.performance_schema_show_processlist = @save_processlist; +DROP USER 'regular'@'localhost'; diff --git a/mysql-test/suite/perfschema/r/schema.result b/mysql-test/suite/perfschema/r/schema.result index d09c35779cf..11676811ca9 100644 --- a/mysql-test/suite/perfschema/r/schema.result +++ b/mysql-test/suite/perfschema/r/schema.result @@ -61,6 +61,7 @@ mutex_instances objects_summary_global_by_type performance_timers prepared_statements_instances +processlist replication_applier_configuration replication_applier_status replication_applier_status_by_coordinator diff --git a/mysql-test/suite/perfschema/r/show_sanity.result b/mysql-test/suite/perfschema/r/show_sanity.result index dc326dd7f64..6fb33ea4d17 100644 --- a/mysql-test/suite/perfschema/r/show_sanity.result +++ b/mysql-test/suite/perfschema/r/show_sanity.result @@ -414,6 +414,7 @@ SHOW_MODE SOURCE VARIABLE_NAME 5.6 I_S.SESSION_VARIABLES INNODB_STATS_INCLUDE_DELETE_MARKED 5.6 I_S.SESSION_VARIABLES KEYRING_OPERATIONS 5.6 I_S.SESSION_VARIABLES LOG_STATEMENTS_UNSAFE_FOR_BINLOG +5.6 I_S.SESSION_VARIABLES PERFORMANCE_SCHEMA_SHOW_PROCESSLIST 5.6 I_S.SESSION_VARIABLES REPLICATION_OPTIMIZE_FOR_STATIC_PLUGIN_CONFIG 5.6 I_S.SESSION_VARIABLES REPLICATION_SENDER_OBSERVE_COMMIT_ONLY 5.6 I_S.SESSION_VARIABLES TLS_VERSION @@ -444,6 +445,7 @@ SHOW_MODE SOURCE VARIABLE_NAME 5.6 I_S.SESSION_VARIABLES INNODB_STATS_INCLUDE_DELETE_MARKED 5.6 I_S.SESSION_VARIABLES KEYRING_OPERATIONS 5.6 I_S.SESSION_VARIABLES LOG_STATEMENTS_UNSAFE_FOR_BINLOG +5.6 I_S.SESSION_VARIABLES PERFORMANCE_SCHEMA_SHOW_PROCESSLIST 5.6 I_S.SESSION_VARIABLES REPLICATION_OPTIMIZE_FOR_STATIC_PLUGIN_CONFIG 5.6 I_S.SESSION_VARIABLES REPLICATION_SENDER_OBSERVE_COMMIT_ONLY 5.6 I_S.SESSION_VARIABLES TLS_VERSION diff --git a/mysql-test/suite/perfschema/r/start_server_disable_idle.result b/mysql-test/suite/perfschema/r/start_server_disable_idle.result index 1204e4b57a9..fd49ee31e08 100644 --- a/mysql-test/suite/perfschema/r/start_server_disable_idle.result +++ b/mysql-test/suite/perfschema/r/start_server_disable_idle.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_disable_stages.result b/mysql-test/suite/perfschema/r/start_server_disable_stages.result index 3aa4a6b9573..0c581c6a11b 100644 --- a/mysql-test/suite/perfschema/r/start_server_disable_stages.result +++ b/mysql-test/suite/perfschema/r/start_server_disable_stages.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_disable_statements.result b/mysql-test/suite/perfschema/r/start_server_disable_statements.result index a3f20107af5..ff07ecc36a3 100644 --- a/mysql-test/suite/perfschema/r/start_server_disable_statements.result +++ b/mysql-test/suite/perfschema/r/start_server_disable_statements.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_disable_transactions.result b/mysql-test/suite/perfschema/r/start_server_disable_transactions.result index d77a12f83f2..a1e9b773705 100644 --- a/mysql-test/suite/perfschema/r/start_server_disable_transactions.result +++ b/mysql-test/suite/perfschema/r/start_server_disable_transactions.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_disable_waits.result b/mysql-test/suite/perfschema/r/start_server_disable_waits.result index b59e7b08023..85d0372b31c 100644 --- a/mysql-test/suite/perfschema/r/start_server_disable_waits.result +++ b/mysql-test/suite/perfschema/r/start_server_disable_waits.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_innodb.result b/mysql-test/suite/perfschema/r/start_server_innodb.result index 7caf2863dfc..d6519ab8972 100644 --- a/mysql-test/suite/perfschema/r/start_server_innodb.result +++ b/mysql-test/suite/perfschema/r/start_server_innodb.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_low_index.result b/mysql-test/suite/perfschema/r/start_server_low_index.result index 87ac365e02c..cea26f48fc1 100644 --- a/mysql-test/suite/perfschema/r/start_server_low_index.result +++ b/mysql-test/suite/perfschema/r/start_server_low_index.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_low_table_lock.result b/mysql-test/suite/perfschema/r/start_server_low_table_lock.result index 32ff64949a6..c9bd36da386 100644 --- a/mysql-test/suite/perfschema/r/start_server_low_table_lock.result +++ b/mysql-test/suite/perfschema/r/start_server_low_table_lock.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_account.result b/mysql-test/suite/perfschema/r/start_server_no_account.result index 7986377ec34..a5087f664d5 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_account.result +++ b/mysql-test/suite/perfschema/r/start_server_no_account.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_cond_class.result b/mysql-test/suite/perfschema/r/start_server_no_cond_class.result index d97efeaca69..eb28240939e 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_cond_class.result +++ b/mysql-test/suite/perfschema/r/start_server_no_cond_class.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result b/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result index e3b5332b302..5688da44327 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result +++ b/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_file_class.result b/mysql-test/suite/perfschema/r/start_server_no_file_class.result index 152452cc373..a8025c771c8 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_file_class.result +++ b/mysql-test/suite/perfschema/r/start_server_no_file_class.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_file_inst.result b/mysql-test/suite/perfschema/r/start_server_no_file_inst.result index b3a177e5f7f..441defa573b 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_file_inst.result +++ b/mysql-test/suite/perfschema/r/start_server_no_file_inst.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_host.result b/mysql-test/suite/perfschema/r/start_server_no_host.result index 434208b573a..bcd24b5ed16 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_host.result +++ b/mysql-test/suite/perfschema/r/start_server_no_host.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_index.result b/mysql-test/suite/perfschema/r/start_server_no_index.result index 31bfffc1ce7..888a0da0927 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_index.result +++ b/mysql-test/suite/perfschema/r/start_server_no_index.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_mdl.result b/mysql-test/suite/perfschema/r/start_server_no_mdl.result index 6da730a39ea..ce411ad1ee4 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_mdl.result +++ b/mysql-test/suite/perfschema/r/start_server_no_mdl.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_memory_class.result b/mysql-test/suite/perfschema/r/start_server_no_memory_class.result index 06f337c1dff..a540554bed4 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_memory_class.result +++ b/mysql-test/suite/perfschema/r/start_server_no_memory_class.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result b/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result index b966284b954..c22f50a7cdf 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result +++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result b/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result index ba7f80ec857..0410edddae1 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result +++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_prepared_stmts_instances.result b/mysql-test/suite/perfschema/r/start_server_no_prepared_stmts_instances.result index bd5643707b1..27051ff97eb 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_prepared_stmts_instances.result +++ b/mysql-test/suite/perfschema/r/start_server_no_prepared_stmts_instances.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result b/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result index 17b55f88f04..06f74f7651f 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result +++ b/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result b/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result index b8aebe52838..8a0e9bef97d 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result +++ b/mysql-test/suite/perfschema/r/start_server_no_rwlock_inst.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_setup_actors.result b/mysql-test/suite/perfschema/r/start_server_no_setup_actors.result index c46c1b61150..0b1042472b2 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_setup_actors.result +++ b/mysql-test/suite/perfschema/r/start_server_no_setup_actors.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 0 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_setup_objects.result b/mysql-test/suite/perfschema/r/start_server_no_setup_objects.result index 206ba243a02..c7589b6ef44 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_setup_objects.result +++ b/mysql-test/suite/perfschema/r/start_server_no_setup_objects.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 0 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_socket_class.result b/mysql-test/suite/perfschema/r/start_server_no_socket_class.result index 1a7de31d12c..25e8d28a2e5 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_socket_class.result +++ b/mysql-test/suite/perfschema/r/start_server_no_socket_class.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_socket_inst.result b/mysql-test/suite/perfschema/r/start_server_no_socket_inst.result index 0ee80fbdc34..a3f7ea4f6fa 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_socket_inst.result +++ b/mysql-test/suite/perfschema/r/start_server_no_socket_inst.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_stage_class.result b/mysql-test/suite/perfschema/r/start_server_no_stage_class.result index 83218d0cd0c..c05b6a717e4 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_stage_class.result +++ b/mysql-test/suite/perfschema/r/start_server_no_stage_class.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_stages_history.result b/mysql-test/suite/perfschema/r/start_server_no_stages_history.result index 7605a6742ea..a0f4b066c6f 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_stages_history.result +++ b/mysql-test/suite/perfschema/r/start_server_no_stages_history.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result b/mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result index 0a657b0207d..881bd12d789 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result +++ b/mysql-test/suite/perfschema/r/start_server_no_stages_history_long.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_statement_class.result b/mysql-test/suite/perfschema/r/start_server_no_statement_class.result index 8340c9a065e..bf4728f60c9 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_statement_class.result +++ b/mysql-test/suite/perfschema/r/start_server_no_statement_class.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_statements_history.result b/mysql-test/suite/perfschema/r/start_server_no_statements_history.result index 41ec7acac67..0c99faaa601 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_statements_history.result +++ b/mysql-test/suite/perfschema/r/start_server_no_statements_history.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result b/mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result index e730dd5f917..ee20ed74231 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result +++ b/mysql-test/suite/perfschema/r/start_server_no_statements_history_long.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_table_hdl.result b/mysql-test/suite/perfschema/r/start_server_no_table_hdl.result index e2c97655595..d5789acdfc6 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_table_hdl.result +++ b/mysql-test/suite/perfschema/r/start_server_no_table_hdl.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_table_inst.result b/mysql-test/suite/perfschema/r/start_server_no_table_inst.result index a591154e1a5..46b0b9941b3 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_table_inst.result +++ b/mysql-test/suite/perfschema/r/start_server_no_table_inst.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_table_lock.result b/mysql-test/suite/perfschema/r/start_server_no_table_lock.result index ca0b4a864a9..81acb8ad493 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_table_lock.result +++ b/mysql-test/suite/perfschema/r/start_server_no_table_lock.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_thread_class.result b/mysql-test/suite/perfschema/r/start_server_no_thread_class.result index bd2718de70d..863680baa37 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_thread_class.result +++ b/mysql-test/suite/perfschema/r/start_server_no_thread_class.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result b/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result index 6eefbf7e885..9ba32bb001a 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result +++ b/mysql-test/suite/perfschema/r/start_server_no_thread_inst.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances 0 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_transactions_history.result b/mysql-test/suite/perfschema/r/start_server_no_transactions_history.result index 69e26208045..2e0f61e6a96 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_transactions_history.result +++ b/mysql-test/suite/perfschema/r/start_server_no_transactions_history.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_transactions_history_long.result b/mysql-test/suite/perfschema/r/start_server_no_transactions_history_long.result index c5f2aa23e76..cad715ce16a 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_transactions_history_long.result +++ b/mysql-test/suite/perfschema/r/start_server_no_transactions_history_long.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_user.result b/mysql-test/suite/perfschema/r/start_server_no_user.result index 6d226ad8d5d..aba6c1f1a4b 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_user.result +++ b/mysql-test/suite/perfschema/r/start_server_no_user.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 0 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_waits_history.result b/mysql-test/suite/perfschema/r/start_server_no_waits_history.result index 801b8990bdd..ee82e625554 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_waits_history.result +++ b/mysql-test/suite/perfschema/r/start_server_no_waits_history.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_no_waits_history_long.result b/mysql-test/suite/perfschema/r/start_server_no_waits_history_long.result index 9a2b667d1ef..77e3a9cea41 100644 --- a/mysql-test/suite/perfschema/r/start_server_no_waits_history_long.result +++ b/mysql-test/suite/perfschema/r/start_server_no_waits_history_long.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_nothing.result b/mysql-test/suite/perfschema/r/start_server_nothing.result index 0c708b77381..12d59e757e6 100644 --- a/mysql-test/suite/perfschema/r/start_server_nothing.result +++ b/mysql-test/suite/perfschema/r/start_server_nothing.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances 0 performance_schema_session_connect_attrs_size 0 performance_schema_setup_actors_size 0 performance_schema_setup_objects_size 0 +performance_schema_show_processlist OFF performance_schema_users_size 0 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; @@ -196,6 +197,7 @@ performance_schema_max_thread_instances 0 performance_schema_session_connect_attrs_size 0 performance_schema_setup_actors_size 0 performance_schema_setup_objects_size 0 +performance_schema_show_processlist OFF performance_schema_users_size 0 select * from performance_schema.setup_instruments order by name; diff --git a/mysql-test/suite/perfschema/r/start_server_off.result b/mysql-test/suite/perfschema/r/start_server_off.result index 34ef1183e19..81d9b209615 100644 --- a/mysql-test/suite/perfschema/r/start_server_off.result +++ b/mysql-test/suite/perfschema/r/start_server_off.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances 0 performance_schema_session_connect_attrs_size 0 performance_schema_setup_actors_size 0 performance_schema_setup_objects_size 0 +performance_schema_show_processlist OFF performance_schema_users_size 0 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/start_server_on.result b/mysql-test/suite/perfschema/r/start_server_on.result index 7caf2863dfc..d6519ab8972 100644 --- a/mysql-test/suite/perfschema/r/start_server_on.result +++ b/mysql-test/suite/perfschema/r/start_server_on.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/statement_program_lost_inst.result b/mysql-test/suite/perfschema/r/statement_program_lost_inst.result index 81b6bd69e54..071ac042e5a 100644 --- a/mysql-test/suite/perfschema/r/statement_program_lost_inst.result +++ b/mysql-test/suite/perfschema/r/statement_program_lost_inst.result @@ -150,6 +150,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show engine PERFORMANCE_SCHEMA status; show global status like "performance_schema%"; diff --git a/mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result b/mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result index a53604e33fd..012692507d2 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_global_2u_2t.result @@ -97,6 +97,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result b/mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result index 9db2bab0e40..0b7284b0b74 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_global_2u_3t.result @@ -96,6 +96,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result b/mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result index 1e053c47ae5..698b8e8ce6d 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_global_4u_2t.result @@ -97,6 +97,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result b/mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result index 5a9bc84ec07..e49936c366a 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_global_4u_3t.result @@ -96,6 +96,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result b/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result index 27a191f1e3c..0a7106d097d 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_2t.result @@ -95,6 +95,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result b/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result index 0b5fd259df2..3df2763c5e5 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_2u_3t.result @@ -94,6 +94,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result b/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result index 59c32ba7fe1..c50dfcdcc2b 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_2t.result @@ -95,6 +95,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result b/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result index 50597b5575c..78b75d38c8f 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_hist_4u_3t.result @@ -94,6 +94,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_off.result b/mysql-test/suite/perfschema/r/table_aggregate_off.result index a7995e640ac..8069d8209b8 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_off.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_off.result @@ -96,6 +96,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result b/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result index 6d85c5a92ca..5fbc5826238 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_2t.result @@ -97,6 +97,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result b/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result index ea21763a371..a36730d96d4 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_2u_3t.result @@ -96,6 +96,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result b/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result index 77c11f86d98..91cbf91c521 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_2t.result @@ -97,6 +97,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result b/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result index a3de3c85f41..d2fe34adc46 100644 --- a/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result +++ b/mysql-test/suite/perfschema/r/table_aggregate_thread_4u_3t.result @@ -96,6 +96,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result index 5cf3b33cfac..accfd1b3dba 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_2t.result @@ -99,6 +99,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result index 16be22d8cd2..bf9d9b7e33b 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_2u_3t.result @@ -98,6 +98,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result index 55c1e46b026..5a7045ea4f4 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_2t.result @@ -99,6 +99,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result index d09a544105e..fc1dcbeab48 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_global_4u_3t.result @@ -98,6 +98,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result index 4cdfc181099..659922feadc 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_2t.result @@ -97,6 +97,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result index e2ed0f3c5fb..eccbedcc5b6 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_2u_3t.result @@ -96,6 +96,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result index c818ba89bb6..500e2e1df1d 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_2t.result @@ -97,6 +97,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result index ca1b6d37e67..e62fdeb2412 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_hist_4u_3t.result @@ -96,6 +96,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result index 679ac7a4c07..d33110ad9ea 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_2t.result @@ -99,6 +99,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result index 26c3070d242..380a98a4328 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_2u_3t.result @@ -98,6 +98,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result index 96ef0a6a6a6..2f9cb5fe1dd 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_2t.result @@ -99,6 +99,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result index a0beb393a74..4b1d7d0d959 100644 --- a/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result +++ b/mysql-test/suite/perfschema/r/table_io_aggregate_thread_4u_3t.result @@ -98,6 +98,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result index 5d97d0fa177..b5667a4875e 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_2t.result @@ -99,6 +99,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result index f013a396726..7e8d9f37a2c 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_2u_3t.result @@ -98,6 +98,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result index bed4a2f99a5..c50fb6d14f5 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_2t.result @@ -99,6 +99,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result index 9d3cc74beb4..51717ecc4c2 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_global_4u_3t.result @@ -98,6 +98,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result index 5cbe7735ebf..aeeb8b98224 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_2t.result @@ -97,6 +97,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result index c4a5e08bc74..0e880adc9ad 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_2u_3t.result @@ -96,6 +96,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result index 8785c2399e7..1405afd3219 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_2t.result @@ -97,6 +97,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result index b9a8343f868..b24387c3d58 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_hist_4u_3t.result @@ -96,6 +96,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result index 9666c17c1e4..0048340ee6e 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_2t.result @@ -99,6 +99,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result index a31f8f41b96..00ee54e2a05 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_2u_3t.result @@ -98,6 +98,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result index dc440c2b768..2b18c4b19d9 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_2t.result @@ -99,6 +99,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result index 9aed1d06cb9..7899cda3407 100644 --- a/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result +++ b/mysql-test/suite/perfschema/r/table_lock_aggregate_thread_4u_3t.result @@ -98,6 +98,7 @@ performance_schema_max_thread_instances -1 performance_schema_session_connect_attrs_size 2048 performance_schema_setup_actors_size 100 performance_schema_setup_objects_size 100 +performance_schema_show_processlist OFF performance_schema_users_size 100 show global status like "performance_schema%"; Variable_name Value diff --git a/mysql-test/suite/perfschema/r/table_schema.result b/mysql-test/suite/perfschema/r/table_schema.result index b980a8cd685..e4373660764 100644 --- a/mysql-test/suite/perfschema/r/table_schema.result +++ b/mysql-test/suite/perfschema/r/table_schema.result @@ -855,6 +855,14 @@ def performance_schema prepared_statements_instances SUM_SORT_ROWS 32 NULL NO bi def performance_schema prepared_statements_instances SUM_SORT_SCAN 33 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references def performance_schema prepared_statements_instances SUM_NO_INDEX_USED 34 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references def performance_schema prepared_statements_instances SUM_NO_GOOD_INDEX_USED 35 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references +def performance_schema processlist ID 1 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references +def performance_schema processlist USER 2 NULL YES varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) select,insert,update,references +def performance_schema processlist HOST 3 NULL YES varchar 66 198 NULL NULL NULL utf8 utf8_general_ci varchar(66) select,insert,update,references +def performance_schema processlist DB 4 NULL YES varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references +def performance_schema processlist COMMAND 5 NULL YES varchar 16 48 NULL NULL NULL utf8 utf8_general_ci varchar(16) select,insert,update,references +def performance_schema processlist TIME 6 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(20) select,insert,update,references +def performance_schema processlist STATE 7 NULL YES varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references +def performance_schema processlist INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8 utf8_general_ci longtext select,insert,update,references def performance_schema replication_applier_configuration CHANNEL_NAME 1 NULL NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references def performance_schema replication_applier_configuration DESIRED_DELAY 2 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references def performance_schema replication_applier_status CHANNEL_NAME 1 NULL NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references diff --git a/mysql-test/suite/perfschema/r/threads_mysql.result b/mysql-test/suite/perfschema/r/threads_mysql.result index b96339b7de0..db78c2af531 100644 --- a/mysql-test/suite/perfschema/r/threads_mysql.result +++ b/mysql-test/suite/perfschema/r/threads_mysql.result @@ -3,7 +3,7 @@ SELECT name, type, processlist_user, processlist_host, processlist_db, processlist_command, processlist_info, IF(parent_thread_id IS NULL, parent_thread_id, 'unified parent_thread_id') AS unified_parent_thread_id, -role, instrumented +`role`, instrumented FROM performance_schema.threads WHERE name LIKE 'thread/sql%' ORDER BY name; @@ -37,7 +37,7 @@ processlist_info SELECT name, type, processlist_user, processlist_host, processl processlist_command, processlist_info, IF(parent_thread_id IS NULL, parent_thread_id, 'unified parent_thread_id') AS unified_parent_thread_id, -role, instrumented +`role`, instrumented FROM performance_schema.threads WHERE name LIKE 'thread/sql%' ORDER BY name @@ -72,17 +72,17 @@ SELECT name, type, processlist_user, processlist_host, processlist_db, processlist_command, processlist_info, IF(parent_thread_id IS NULL, parent_thread_id, 'unified parent_thread_id') AS unified_parent_thread_id, -role, instrumented +`role`, instrumented FROM performance_schema.threads WHERE name LIKE 'thread/sql%' AND thread_id NOT IN (SELECT thread_id FROM t1) ORDER BY name; name thread/sql/event_scheduler type FOREGROUND -processlist_user root +processlist_user event_scheduler processlist_host localhost processlist_db NULL -processlist_command Sleep +processlist_command Daemon processlist_info NULL unified_parent_thread_id unified parent_thread_id role NULL @@ -100,17 +100,17 @@ SELECT name, type, processlist_user, processlist_host, processlist_db, processlist_command, processlist_info, IF(parent_thread_id IS NULL, parent_thread_id, 'unified parent_thread_id') AS unified_parent_thread_id, -role, instrumented +`role`, instrumented FROM performance_schema.threads WHERE name LIKE 'thread/sql%' AND thread_id NOT IN (SELECT thread_id FROM t1) ORDER BY name; name thread/sql/event_worker type FOREGROUND -processlist_user root +processlist_user event_scheduler processlist_host localhost processlist_db NULL -processlist_command Sleep +processlist_command Connect processlist_info SELECT SLEEP(3) unified_parent_thread_id unified parent_thread_id role NULL diff --git a/mysql-test/suite/perfschema/t/ddl_processlist.test b/mysql-test/suite/perfschema/t/ddl_processlist.test new file mode 100644 index 00000000000..d960bf2df89 --- /dev/null +++ b/mysql-test/suite/perfschema/t/ddl_processlist.test @@ -0,0 +1,32 @@ +# Tests for PERFORMANCE_SCHEMA + +--source include/not_embedded.inc + +select @@global.performance_schema_show_processlist into @save_processlist; +set @@global.performance_schema_show_processlist = 'on'; + +--error ER_DBACCESS_DENIED_ERROR +alter table performance_schema.processlist + add column foo integer; + +--error ER_WRONG_PERFSCHEMA_USAGE +truncate table performance_schema.processlist; + +--error ER_DBACCESS_DENIED_ERROR +alter table performance_schema.processlist + add index test_index(info); + +--error ER_DBACCESS_DENIED_ERROR +create unique index test_index + on performance_schema.processlist(host); + +-- error ER_DBACCESS_DENIED_ERROR +drop index `PRIMARY` + on performance_schema.processlist; + +CREATE TABLE test.create_select + AS SELECT * from performance_schema.processlist; + +DROP TABLE test.create_select; + +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/t/dml_processlist.test b/mysql-test/suite/perfschema/t/dml_processlist.test new file mode 100644 index 00000000000..c075db3eabd --- /dev/null +++ b/mysql-test/suite/perfschema/t/dml_processlist.test @@ -0,0 +1,39 @@ +# Tests for PERFORMANCE_SCHEMA + +--source include/not_embedded.inc + +select @@global.performance_schema_show_processlist into @save_processlist; +set @@global.performance_schema_show_processlist = 'on'; + +--disable_result_log +select * from performance_schema.processlist + where user like 'event_scheduler'; + +select * from performance_schema.processlist + where user = 'FOO'; +--enable_result_log + +--error ER_TABLEACCESS_DENIED_ERROR +insert into performance_schema.processlist + values (12, 'foo', 'bar', 'test', null, 1000, 'state', 'info'); + +--error ER_TABLEACCESS_DENIED_ERROR +update performance_schema.processlist + set id=12, user='foo'; + +--error ER_TABLEACCESS_DENIED_ERROR +delete from performance_schema.processlist + where id <> 99; + +--error ER_TABLEACCESS_DENIED_ERROR +delete from performance_schema.processlist; + +--error ER_TABLEACCESS_DENIED_ERROR +LOCK TABLES performance_schema.processlist READ; +UNLOCK TABLES; + +--error ER_TABLEACCESS_DENIED_ERROR +LOCK TABLES performance_schema.processlist WRITE; +UNLOCK TABLES; + +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/t/misc_global_status-master.opt b/mysql-test/suite/perfschema/t/misc_global_status-master.opt new file mode 100644 index 00000000000..26b61f08d4e --- /dev/null +++ b/mysql-test/suite/perfschema/t/misc_global_status-master.opt @@ -0,0 +1 @@ +--loose-performance_schema_hosts_size=0 diff --git a/mysql-test/suite/perfschema/t/misc_global_status.test b/mysql-test/suite/perfschema/t/misc_global_status.test new file mode 100644 index 00000000000..2157096aaa6 --- /dev/null +++ b/mysql-test/suite/perfschema/t/misc_global_status.test @@ -0,0 +1,134 @@ +# Tests for PERFORMANCE_SCHEMA + +--source include/not_embedded.inc +--source include/have_perfschema.inc +--source include/have_query_cache_disabled.inc + +CREATE USER user1@localhost; +CREATE USER user2@localhost; +CREATE USER user3@localhost; + +grant ALL on *.* to user1@localhost; +grant ALL on *.* to user2@localhost; +grant ALL on *.* to user3@localhost; + +# To aggregate to accounts +SET GLOBAL show_compatibility_56=0; + +TRUNCATE TABLE performance_schema.accounts; + +FLUSH PRIVILEGES; + +CREATE TABLE test.t_range(a int, b int, PRIMARY KEY(a)); + +INSERT INTO test.t_range values (1, 1), (2,2), (3, 3), (4, 4), (5, 5); +INSERT INTO test.t_range values (6, 6), (7,7), (8, 8), (9, 9), (10, 10); + +FLUSH STATUS; + +let $initial= `SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'`; + +# Causes Select_range to increment (+1) +SELECT * from test.t_range where (a >= 3) AND (a <= 5); + +SELECT * from performance_schema.session_status + WHERE VARIABLE_NAME = 'Select_range'; + +--disable_query_log +eval SELECT VARIABLE_NAME, (VARIABLE_VALUE - $initial) AS DELTA from performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'; +--enable_query_log + +connect(con1, localhost, user1,,); +# Causes Select_range to increment (+1) +SELECT * from test.t_range where (a >= 3) AND (a <= 5); + +SELECT * from performance_schema.session_status + WHERE VARIABLE_NAME = 'Select_range'; + +--disable_query_log +eval SELECT VARIABLE_NAME, (VARIABLE_VALUE - $initial) AS DELTA from performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'; +--enable_query_log + +connect(con2, localhost, user2,,); +# Causes Select_range to increment (+2) +SELECT * from test.t_range where (a >= 3) AND (a <= 5); +SELECT * from test.t_range where (a >= 4) AND (a <= 6); + +SELECT * from performance_schema.session_status + WHERE VARIABLE_NAME = 'Select_range'; + +--disable_query_log +eval SELECT VARIABLE_NAME, (VARIABLE_VALUE - $initial) AS DELTA from performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'; +--enable_query_log + +connect(con3, localhost, user3,,); +# Causes Select_range to increment (+3) +SELECT * from test.t_range where (a >= 3) AND (a <= 5); +SELECT * from test.t_range where (a >= 4) AND (a <= 6); +SELECT * from test.t_range where (a >= 5) AND (a <= 7); + +SELECT * from performance_schema.session_status + WHERE VARIABLE_NAME = 'Select_range'; + +--disable_query_log +eval SELECT VARIABLE_NAME, (VARIABLE_VALUE - $initial) AS DELTA from performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'; +--enable_query_log + +--connection default + +--disable_query_log +eval SELECT VARIABLE_NAME, (VARIABLE_VALUE - $initial) AS DELTA from performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'; +--enable_query_log + +SELECT `USER`, `HOST`, VARIABLE_NAME, VARIABLE_VALUE + FROM performance_schema.status_by_account WHERE VARIABLE_NAME = 'Select_range' + AND `USER` LIKE 'user%' + ORDER BY `USER`; + +--disconnect con1 +--disconnect con2 + +# Wait till all disconnects are completed +let $count_sessions= 2; +--source include/wait_until_count_sessions.inc + +--disable_query_log +eval SELECT VARIABLE_NAME, (VARIABLE_VALUE - $initial) AS DELTA from performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'; +--enable_query_log + +TRUNCATE TABLE performance_schema.accounts; + +--disable_query_log +eval SELECT VARIABLE_NAME, (VARIABLE_VALUE - $initial) AS DELTA from performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'; +--enable_query_log + +--disconnect con3 + +# Wait till all disconnects are completed +let $count_sessions= 1; +--source include/wait_until_count_sessions.inc + +--disable_query_log +eval SELECT VARIABLE_NAME, (VARIABLE_VALUE - $initial) AS DELTA from performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'; +--enable_query_log + +# Make sure TRUNCATE on accounts does not add to global_status +TRUNCATE TABLE performance_schema.accounts; + +--disable_query_log +eval SELECT VARIABLE_NAME, (VARIABLE_VALUE - $initial) AS DELTA from performance_schema.global_status WHERE VARIABLE_NAME = 'Select_range'; +--enable_query_log + +DROP TABLE test.t_range; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM user1@localhost; +REVOKE ALL PRIVILEGES, GRANT OPTION FROM user2@localhost; +REVOKE ALL PRIVILEGES, GRANT OPTION FROM user3@localhost; +DROP USER user1@localhost; +DROP USER user2@localhost; +DROP USER user3@localhost; + +SET GLOBAL show_compatibility_56=1; + +FLUSH PRIVILEGES; + diff --git a/mysql-test/suite/perfschema/t/processlist-master.opt b/mysql-test/suite/perfschema/t/processlist-master.opt new file mode 100644 index 00000000000..f93413a61e5 --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist-master.opt @@ -0,0 +1 @@ +--event-scheduler diff --git a/mysql-test/suite/perfschema/t/processlist.test b/mysql-test/suite/perfschema/t/processlist.test new file mode 100644 index 00000000000..fed22153931 --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist.test @@ -0,0 +1,197 @@ +--echo ## +--echo ## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +--echo ## +--echo ## Test cases: +--echo ## 1. Execute the new SHOW [FULL] PROCESSLIST and SELECT on performance_schema.processlist +--echo ## 2. Execute the legacy SHOW [FULL] PROCESSLIST and SELECT on information_schema.processlist +--echo ## 3. Verify that performance_schema_show_processlist = ON executes the new implementation +--echo ## 4. Verify that performance_schema_show_processlist = OFF executes the legacy code path +--echo ## +--echo ## Results must be manually verified. + +--source include/no_protocol.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc +--source include/not_embedded.inc + +--echo +--echo ### Setup ### +--echo +select @@global.performance_schema_show_processlist into @save_processlist; + +--echo +create user user1@localhost, user2@localhost, + user3@localhost, user4@localhost; +--echo +grant ALL on *.* to user1@localhost; +grant ALL on *.* to user2@localhost; +grant ALL on *.* to user3@localhost; +grant ALL on *.* to user4@localhost; +--echo +flush privileges; + +--echo +use test; +create table test.t1 (s1 int, s2 int, s3 int, s4 int); + +--echo +--echo # Switch to (con0, localhost, root, , ) +connect (con0, localhost, root, , ); +--echo +insert into test.t1 values(1, 1, 1, 1); +insert into test.t1 values(2, 2, 2, 2); +insert into test.t1 values(3, 3, 3, 3); +insert into test.t1 values(4, 4, 4, 4); + +--echo +--echo # Lock test.t1, insert/update/deletes will block +lock tables t1 read; + +--echo +--echo # Connect (con1, localhost, user1, , ) +connect (con1, localhost, user1, , ); +--send insert into test.t1 values (0, 0, 0, 0) + +--echo +--echo # Connect (con2, localhost, user2, , ) +connect (con2, localhost, user2, , ); +# Create a query > 100 characters +--send update test.t1 set s1 = s1 + 1, s2 = s2 + 2, s3 = s3 + 3, s4 = ((s4 + 4) * (s4 + 5)) + 12345 + 67890 + 11111 + 22222 + 33333 + 44444 + 55555 + 99999; +--echo +--echo # Connect (con3, localhost, user3, , ) +connect (con3, localhost, user3, , ); +--send delete from test.t1 where s1 = 3 + +--echo +--echo # Connect (con4, localhost, user4, , ) +connect (con4, localhost, user4, , ); +--send insert into test.t1 values (4, 4, 4, 4) + +--echo +--echo # Connection default +--connection default + +--echo +--echo # Wait for queries to appear in the processlist table +let $wait_condition = select count(*) >= 4 from information_schema.processlist + where state like '%metadata%'; +--source include/wait_condition.inc + +--echo +--echo +--echo ### Execute new SHOW [FULL] PROCESSLIST and SELECT on performance_schema.processlist +--echo +let $pfs_spl = on; +--source ../include/processlist_set.inc +--source ../include/processlist_load.inc + +--echo +--echo +--echo ### Execute legacy SHOW [FULL] PROCESSLIST and SELECT on information_schema.processlist +--echo +let $pfs_spl = off; +--source ../include/processlist_set.inc +--source ../include/processlist_load.inc + +--echo +--echo +--echo ### Verify feature code path +--echo +--echo # Enable SHOW PROCESSLIST via the Performance Schema +let $pfs_spl = on; +--source ../include/processlist_set.inc + +--echo +--echo # Connection default, send SHOW PROCESSLIST +--connection default +SET DEBUG_SYNC='pfs_show_processlist_performance_schema SIGNAL pfs_processlist_pfs WAIT_FOR continue'; +--send SHOW FULL PROCESSLIST + +--echo +--echo # Connection con0 +--connection con0 +SET DEBUG_SYNC='now WAIT_FOR pfs_processlist_pfs'; +SET DEBUG_SYNC='now SIGNAL continue'; + +--echo +--echo # Connection default, reap +--connection default +--replace_column 1 <Id> 3 <Host> 5 <Command> 6 <Time> 7 <State> 8 <Info> +--sorted_result +--reap + +--echo +--echo +--echo ### Verify legacy code path +--echo +--echo # Enable the legacy SHOW PROCESSLIST +let $pfs_spl = off; +--source ../include/processlist_set.inc + +--echo +--echo # Connection default, send SHOW PROCESSLIST +--connection default +SET DEBUG_SYNC='RESET'; +SET DEBUG_SYNC='pfs_show_processlist_legacy SIGNAL pfs_processlist_legacy WAIT_FOR continue'; +--send SHOW FULL PROCESSLIST + +--echo +--echo # Connection con0 +--connection con0 +SET DEBUG_SYNC='now WAIT_FOR pfs_processlist_legacy'; +SET DEBUG_SYNC='now SIGNAL continue'; + +--echo +--echo # Connection default, reap +--connection default +--replace_column 1 <Id> 3 <Host> 5 <Command> 6 <Time> 7 <State> 8 <Info> +--sorted_result +--reap + +--echo +--echo +--echo ### Clean up ### +--echo + +--echo # Connection con0, unlock test.t1, disconnect +--connection con0 +unlock tables; +--disconnect con0 + +--disable_query_log +--disable_result_log +--echo +--echo # Connection con1, reap, disconnect +--connection con1 +--reap +--disconnect con1 + +--echo # Connection con2, reap, disconnect +--connection con2 +--reap +--disconnect con2 + +--echo # Connection con3, reap, disconnect +--connection con3 +--reap +--disconnect con3 + +--echo # Connection con4, reap, disconnect +--connection con4 +--reap +--disconnect con4 +--enable_result_log +--enable_query_log + +--echo +--echo # Connection default +--connection default + +--echo +drop table test.t1; +drop user user1@localhost; +drop user user2@localhost; +drop user user3@localhost; +drop user user4@localhost; +--echo +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/t/processlist_57.test b/mysql-test/suite/perfschema/t/processlist_57.test new file mode 100644 index 00000000000..748d8b7402b --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist_57.test @@ -0,0 +1,349 @@ + +--source include/no_protocol.inc +--source include/not_embedded.inc + +call mtr.add_suppression("Optional native table 'performance_schema'.'processlist' has the wrong structure or is missing."); +call mtr.add_suppression("Column count of performance_schema.processlist is wrong. Expected 8, found 2. The table is probably corrupted"); + +--echo ## +--echo ## Verify fresh 5.7 instance +--echo ## + +SELECT @@global.performance_schema_show_processlist; + +SHOW CREATE TABLE performance_schema.processlist; + +--echo ## +--echo ## Simulate old 5.7 instance +--echo ## + +DROP TABLE performance_schema.processlist; + +--error ER_NO_SUCH_TABLE +SHOW CREATE TABLE performance_schema.processlist; + +let $restart_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect; +--exec echo "wait" > $restart_file +--echo ## +--echo ## Server shutdown +--echo ## +--shutdown_server +--source include/wait_until_disconnected.inc +--echo ## +--echo ### Server restart +--echo ## +--exec echo "restart:">$restart_file +--enable_reconnect +--source include/wait_until_connected_again.inc + +--echo ## +--echo ## Verify old 5.7 instance +--echo ## + +SELECT @@global.performance_schema_show_processlist; + +--error ER_NO_SUCH_TABLE +SHOW CREATE TABLE performance_schema.processlist; + +--error ER_NO_SUCH_TABLE +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +SET GLOBAL performance_schema_show_processlist = 'ON'; + +--error ER_NO_SUCH_TABLE +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--error ER_NO_SUCH_TABLE +SHOW PROCESSLIST; + +--echo ## +--echo ## Perform broken upgrade (case 1) +--echo ## + +CREATE TABLE performance_schema.processlist (a int, b int); + +SHOW CREATE TABLE performance_schema.processlist; + +SET GLOBAL performance_schema_show_processlist = 'OFF'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +SET GLOBAL performance_schema_show_processlist = 'ON'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--error ER_BAD_FIELD_ERROR +SHOW PROCESSLIST; + +--exec echo "wait" > $restart_file +--echo ## +--echo ## Server shutdown +--echo ## +--shutdown_server +--source include/wait_until_disconnected.inc +--echo ## +--echo ### Server restart +--echo ## +--exec echo "restart:">$restart_file +--enable_reconnect +--source include/wait_until_connected_again.inc + +SHOW CREATE TABLE performance_schema.processlist; + +SET GLOBAL performance_schema_show_processlist = 'OFF'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +SET GLOBAL performance_schema_show_processlist = 'ON'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--error ER_BAD_FIELD_ERROR +SHOW PROCESSLIST; + +--echo ## +--echo ## Perform broken upgrade (case 2) +--echo ## + +DROP TABLE performance_schema.processlist; +CREATE TABLE performance_schema.processlist ( + `ID` bigint(20) unsigned NOT NULL, + `USER` varchar(32) DEFAULT NULL, + `HOST` varchar(66) DEFAULT NULL, + `DB` varchar(64) DEFAULT NULL, + `COMMAND` varchar(16) DEFAULT NULL, + `TIME` bigint(20) DEFAULT NULL, + `STATE` varchar(64) DEFAULT NULL, + `INFO` longtext +); + +SHOW CREATE TABLE performance_schema.processlist; + +SET GLOBAL performance_schema_show_processlist = 'OFF'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +SET GLOBAL performance_schema_show_processlist = 'ON'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Works and returns no data, innodb table is empty. +SHOW PROCESSLIST; + +--exec echo "wait" > $restart_file +--echo ## +--echo ## Server shutdown +--echo ## +--shutdown_server +--source include/wait_until_disconnected.inc +--echo ## +--echo ### Server restart +--echo ## +--exec echo "restart:">$restart_file +--enable_reconnect +--source include/wait_until_connected_again.inc + +SHOW CREATE TABLE performance_schema.processlist; + +SET GLOBAL performance_schema_show_processlist = 'OFF'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +SET GLOBAL performance_schema_show_processlist = 'ON'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Works and returns no data, innodb table is empty. +SHOW PROCESSLIST; + +--echo ## +--echo ## Perform broken upgrade (case 3) +--echo ## + +DROP TABLE performance_schema.processlist; +CREATE TABLE performance_schema.processlist + LIKE INFORMATION_SCHEMA.PROCESSLIST; + +SHOW CREATE TABLE performance_schema.processlist; + +SET GLOBAL performance_schema_show_processlist = 'OFF'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +SET GLOBAL performance_schema_show_processlist = 'ON'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Works and returns no data, innodb table is empty. +SHOW PROCESSLIST; + +--exec echo "wait" > $restart_file +--echo ## +--echo ## Server shutdown +--echo ## +--shutdown_server +--source include/wait_until_disconnected.inc +--echo ## +--echo ### Server restart +--echo ## +--exec echo "restart:">$restart_file +--enable_reconnect +--source include/wait_until_connected_again.inc + +SHOW CREATE TABLE performance_schema.processlist; + +SET GLOBAL performance_schema_show_processlist = 'OFF'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +SET GLOBAL performance_schema_show_processlist = 'ON'; + +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Works and returns no data, innodb table is empty. +SHOW PROCESSLIST; + +--echo ## +--echo ## Perform correct upgrade +--echo ## + +DROP TABLE performance_schema.processlist; +CREATE TABLE performance_schema.processlist ( + `ID` bigint(20) unsigned NOT NULL, + `USER` varchar(32) DEFAULT NULL, + `HOST` varchar(66) DEFAULT NULL, + `DB` varchar(64) DEFAULT NULL, + `COMMAND` varchar(16) DEFAULT NULL, + `TIME` bigint(20) DEFAULT NULL, + `STATE` varchar(64) DEFAULT NULL, + `INFO` longtext +) ENGINE = 'PERFORMANCE_SCHEMA'; + +SHOW CREATE TABLE performance_schema.processlist; + +SET GLOBAL performance_schema_show_processlist = 'OFF'; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +SET GLOBAL performance_schema_show_processlist = 'ON'; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +--exec echo "wait" > $restart_file +--echo ## +--echo ## Server shutdown +--echo ## +--shutdown_server +--source include/wait_until_disconnected.inc +--echo ## +--echo ### Server restart +--echo ## +--exec echo "restart:">$restart_file +--enable_reconnect +--source include/wait_until_connected_again.inc + +SHOW CREATE TABLE performance_schema.processlist; + +SET GLOBAL performance_schema_show_processlist = 'OFF'; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +SET GLOBAL performance_schema_show_processlist = 'ON'; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM performance_schema.processlist; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +--replace_column 3 [HOST:PORT] 6 [TIME] +SHOW PROCESSLIST; + +# Cleanup + +SET GLOBAL performance_schema_show_processlist = 'OFF'; + diff --git a/mysql-test/suite/perfschema/t/processlist_acl-master.opt b/mysql-test/suite/perfschema/t/processlist_acl-master.opt new file mode 100644 index 00000000000..f93413a61e5 --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist_acl-master.opt @@ -0,0 +1 @@ +--event-scheduler diff --git a/mysql-test/suite/perfschema/t/processlist_acl.test b/mysql-test/suite/perfschema/t/processlist_acl.test new file mode 100644 index 00000000000..f0733865ebc --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist_acl.test @@ -0,0 +1,196 @@ +--echo ## +--echo ## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +--echo ## +--echo ## Verify handling of the SELECT and PROCESS privileges. +--echo ## +--echo ## Test cases: +--echo ## - Execute SHOW PROCESSLIST (new and legacy) with all privileges +--echo ## - Execute SELECT on the performance_schema.processlist and information_schema.processlist with all privileges +--echo ## - Execute SHOW PROCESSLIST (new and legacy) with no privileges +--echo ## - Execute SELECT on the performance_schema.processlist and information_schema.processlist with no privileges +--echo ## +--echo ## Results must be manually verified. +--echo + +--source include/no_protocol.inc +--source include/not_embedded.inc + +--echo ### Setup ### +--echo +select @@global.performance_schema_show_processlist into @save_processlist; + +--echo +--echo # Control users +create user user_00@localhost, user_01@localhost; +grant ALL on *.* to user_00@localhost; +grant ALL on *.* to user_01@localhost; + +--echo +--echo # Test users +create user user_all@localhost, user_none@localhost; +grant ALL on *.* to user_all@localhost; +grant USAGE on *.* to user_none@localhost; +--echo +flush privileges; + +--echo +show grants for user_all@localhost; +--echo +show grants for user_none@localhost; + +--echo +use test; +create table test.t1 (s1 int, s2 int, s3 int, s4 int); + +--echo +--echo # Connect (con_00, localhost, user_00, , ) +connect (con_00, localhost, user_00, , ); + +--echo # Connect (con_01, localhost, user_01, , ) +connect (con_01, localhost, user_01, , ); +--echo +insert into test.t1 values(1, 1, 1, 1); +insert into test.t1 values(2, 2, 2, 2); +insert into test.t1 values(3, 3, 3, 3); +insert into test.t1 values(4, 4, 4, 4); + +--echo +--echo # Lock test.t1, insert/update/deletes will block +lock tables t1 read; + +--echo +--echo # Establish 2 connections for user_all +--echo # Connect (con_all_1, localhost, user_all, , ) +connect (con_all_1, localhost, user_all, , ); + +--echo # Connect (con_all_2, localhost, user_all, , ) +connect (con_all_2, localhost, user_all, , ); +--send insert into test.t1 values (0, 0, 0, 0) + +--echo +--echo # Establish 4 connections for user_none +--echo # Connect (con_none_1, localhost, user_none, , ) +connect (con_none_1, localhost, user_none, , ); + +--echo # Connect (con_none_2, localhost, user_none, , ) +connect (con_none_2, localhost, user_none, , ); + +--echo # Connect (con_none_3, localhost, user_none, , ) +connect (con_none_3, localhost, user_none, , ); + +--echo # Connect (con_none_4, localhost, user_none, , ) +connect (con_none_4, localhost, user_none, , ); +--send update test.t1 set s1 = s1 + 1, s2 = s2 + 2; + +--echo +--echo # Connection con_all_1 +--connection con_all_1 + +# Note: When expecting processlist results for all users, the wait_condition +# and subsequent execution of SHOW PROCESSLIST should be conducted from the +# same connection to ensure consistent values in the Command and Info columns. + +--echo +--echo # Wait for queries to appear in the processlist table +let $wait_condition = select count(*) >= 2 from information_schema.processlist + where state like '%metadata%'; +--source include/wait_condition.inc + +--echo +--echo ### Execute SHOW PROCESSLIST with all privileges +--echo ### Expect all users +--echo +--echo # New SHOW PROCESSLIST +let $pfs_spl = on; +--source ../include/processlist_set.inc +--source ../include/processlist_load.inc + +--echo +--echo # Legacy SHOW PROCESSLIST +let $pfs_spl = off; +--source ../include/processlist_set.inc +--source ../include/processlist_load.inc + +--echo +--echo +--echo ### Execute SHOW PROCESSLIST with no SELECT and no PROCESS privileges +--echo ### Expect processes only from user_none +--echo +--echo # New SHOW PROCESSLIST +let $pfs_spl = on; +--source ../include/processlist_set.inc + +--echo +--echo # Connection con_none_1 +--connection con_none_1 +--source ../include/processlist_load.inc + +--echo +--echo # Confirm that only processes from user_none are visible +--echo +select count(*) as "Expect 0" from performance_schema.processlist + where user not in ('user_none'); + +--echo +--echo # Legacy SHOW PROCESSLIST +--connection con_00 +let $pfs_spl = off; +--source ../include/processlist_set.inc + +--echo +--echo # Connection con_none_1 +--connection con_none_1 +--source ../include/processlist_load.inc + +--echo +--echo +--echo ### Clean up ### +--echo + +--echo # Disconnect con_00 +--connection con_00 +--disconnect con_00 + +--echo # Connection con_01, unlock test.t1, disconnect +--connection con_01 +unlock tables; +--disconnect con_01 + +--echo # Disconnect con_all_1 +--connection con_all_1 +--disconnect con_all_1 + +--echo # Reap con_all_2, disconnect +--connection con_all_2 +--reap +--disconnect con_all_2 + +--echo # Disconnect con_none_1 +--connection con_none_1 +--disconnect con_none_1 + +--echo # Disconnect con_none_2 +--connection con_none_2 +--disconnect con_none_2 + +--echo # Disconnect con_none_3 +--connection con_none_3 +--disconnect con_none_3 + +--echo # Reap con_none_4, disconnect +--connection con_none_4 +--reap +--disconnect con_none_4 + +--echo +--echo # Connection default +--connection default + +--echo +drop table test.t1; +drop user user_00@localhost; +drop user user_01@localhost; +drop user user_all@localhost; +drop user user_none@localhost; +--echo +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/t/processlist_anonymous.test b/mysql-test/suite/perfschema/t/processlist_anonymous.test new file mode 100644 index 00000000000..4b8e7ec2e1f --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist_anonymous.test @@ -0,0 +1,111 @@ +--echo ## +--echo ## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +--echo ## Verify behavior for anonymous users and PROCESS_ACL. +--echo ## + +--source include/no_protocol.inc +--source include/not_embedded.inc + +SELECT @@global.performance_schema_show_processlist INTO @save_processlist; + +--source include/add_anonymous_users.inc + +SET @@global.performance_schema_show_processlist = OFF; + +connect (anon,localhost,test,,test,$MASTER_MYPORT,$MASTER_MYSOCK); + +SHOW GRANTS; + +# Empty +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Empty +SELECT * FROM performance_schema.processlist; + +--error ER_SPECIFIC_ACCESS_DENIED_ERROR +SHOW PROCESSLIST; + +connection default; + +SET @@global.performance_schema_show_processlist = ON; + +connection anon; + +SHOW GRANTS; + +# Empty +SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Empty +SELECT * FROM performance_schema.processlist; + +--error ER_SPECIFIC_ACCESS_DENIED_ERROR +SHOW PROCESSLIST; + +disconnect anon; +connection default; + +GRANT PROCESS ON *.* TO ''@'localhost'; + +SET @@global.performance_schema_show_processlist = OFF; + +connect (anon2,localhost,test,,test,$MASTER_MYPORT,$MASTER_MYSOCK); + +SHOW GRANTS; + +# Full rows +SELECT count(*) >= 2 FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Full rows +SELECT count(*) >= 2 FROM performance_schema.processlist; + +# Full rows +--disable_result_log +SHOW PROCESSLIST; +--enable_result_log + +SELECT "Previous statement is now completed." as status; + +connection default; +# Returns ROWS_SENT = 0 even when SHOW PROCESSLIST has rows +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT as BROKEN_ROWS_SENT + FROM performance_schema.events_statements_history + WHERE SQL_TEXT = "SHOW PROCESSLIST"; +connection anon2; + + +connection default; + +TRUNCATE TABLE performance_schema.events_statements_history; +set @@global.performance_schema_show_processlist = ON; + + +connection anon2; + +SHOW GRANTS; + +# Full rows +SELECT count(*) >= 2 FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Full rows +SELECT count(*) >= 2 FROM performance_schema.processlist; + +# Full rows +--disable_result_log +SHOW PROCESSLIST; +--enable_result_log + +SELECT "Previous statement is now completed." as status; + +connection default; +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT >= 2 + FROM performance_schema.events_statements_history + WHERE SQL_TEXT = "SHOW PROCESSLIST"; + +disconnect anon2; +connection default; + +--source include/delete_anonymous_users.inc + +SET @@global.performance_schema_show_processlist = @save_processlist; + diff --git a/mysql-test/suite/perfschema/t/processlist_no_pfs-master.opt b/mysql-test/suite/perfschema/t/processlist_no_pfs-master.opt new file mode 100644 index 00000000000..6fb075f60bc --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist_no_pfs-master.opt @@ -0,0 +1,2 @@ +--loose-disable-performance-schema +--loose-performance-schema-show-processlist=ON diff --git a/mysql-test/suite/perfschema/t/processlist_no_pfs.test b/mysql-test/suite/perfschema/t/processlist_no_pfs.test new file mode 100644 index 00000000000..273e180a18a --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist_no_pfs.test @@ -0,0 +1,29 @@ +# Tests for PERFORMANCE_SCHEMA + +--source include/not_embedded.inc + +--source ../include/start_server_common.inc + +--echo +select * from information_schema.engines + where engine = "PERFORMANCE_SCHEMA"; + +--echo +--echo # If the Performance Schema is disabled, then expect +--echo # performance-schema-show-processlist = OFF +--echo # regardless of its initial setting +--echo +select @@global.performance_schema_show_processlist; + +--echo +--echo # If the Performance Schema is disabled, then setting +--echo # performance-schema-show-processlist = ON +--echo # succeeds, SHOW PROCESSLIST returns no data. +--echo +set @@global.performance_schema_show_processlist = ON; + +SHOW PROCESSLIST; + +--echo +show global variables like "performance_schema"; + diff --git a/mysql-test/suite/perfschema/t/processlist_port-master.opt b/mysql-test/suite/perfschema/t/processlist_port-master.opt new file mode 100644 index 00000000000..f93413a61e5 --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist_port-master.opt @@ -0,0 +1 @@ +--event-scheduler diff --git a/mysql-test/suite/perfschema/t/processlist_port.test b/mysql-test/suite/perfschema/t/processlist_port.test new file mode 100644 index 00000000000..8403b0c793b --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist_port.test @@ -0,0 +1,162 @@ +--echo ## +--echo ## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +--echo ## +--echo ## Verify the Host field (hostname:port) against the legacy implementation. +--echo ## + +--source include/no_protocol.inc +--source include/not_embedded.inc + +--echo +--echo ### Setup ### +--echo +select @@global.performance_schema_show_processlist into @save_processlist; + +--echo +--echo # Control user +create user user0@localhost; +grant ALL on *.* to user0@localhost; + +--echo # Test users +--echo +create user user1@localhost, user2@localhost, + user3@localhost, user4@localhost; +--echo +# Grant no privileges to user1 to ensure only one process +grant USAGE on *.* to user1@localhost; +grant ALL on *.* to user2@localhost; +grant ALL on *.* to user3@localhost; +grant ALL on *.* to user4@localhost; +--echo +flush privileges; +--echo +show grants for user1@localhost; + +--echo +--echo # Connect (con_user0, 127.0.0.1, user0, , , MASTER_MYPORT, ) +connect (con_user0, 127.0.0.1, user0, , , $MASTER_MYPORT, ); +--echo +select connection_id() into @con_user0_id; + +--echo # Connect (con_user1, 127.0.0.1, user1, , , MASTER_MYPORT, ) +connect (con_user1, 127.0.0.1, user1, , , $MASTER_MYPORT, ); + +--echo # Connect (con_user2, 127.0.0.1, user2, , , MASTER_MYPORT, ) +connect (con_user2, 127.0.0.1, user2, , , $MASTER_MYPORT, ); + +--echo # Connect (con_user3, 127.0.0.1, user3, , , MASTER_MYPORT, ) +connect (con_user3, 127.0.0.1, user3, , , $MASTER_MYPORT, ); + +--echo # Connect (con_user4, 127.0.0.1, user4, , , MASTER_MYPORT, ) +connect (con_user4, 127.0.0.1, user4, , , $MASTER_MYPORT, ); + +--echo # Connection user0 +--connection con_user0 +let $wait_condition = select connection_id() = @con_user0_id; +--source include/wait_condition.inc + +--echo +--echo ### Compare the SHOW PROCESSLIST Host column between the new and old implementations +--echo +--echo ## New SHOW PROCESSLIST +let $pfs_spl = on; +--source ../include/processlist_set.inc +--source ../include/processlist_load.inc + +--echo +--echo # Connection user1 +--connection con_user1 + +--echo # Get Host:Port, new +let $host_new = query_get_value(SHOW FULL PROCESSLIST, Host, 1); + +--echo +--echo ## Legacy SHOW PROCESSLIST +--connection con_user0 +let $pfs_spl = off; +--source ../include/processlist_set.inc +--source ../include/processlist_load.inc + +--echo +--echo # Connection user1 +--connection con_user1 + +--echo # Get Host:Port, legacy +let $host_old = query_get_value(SHOW FULL PROCESSLIST, Host, 1); + +--echo + +## DEBUG ONLY +## --echo DEBUG: New: $host_new Old: $host_old + +if ($host_new == $host_old) +{ + --echo ***SUCCESS*** The SHOW PROCESSLIST Host fields match +} + +if ($host_new != $host_old) +{ + --echo ***ERROR*** SHOW PROCESSLIST Host fields do not match. New: $host_new Old: $host_old +} + +--echo +--echo ### Compare the processlist Host column between Performance Schema and the Information Schema +--echo +--echo # Connection con_user0 +--connection con_user0 +let $count_new = `select count(*) from performance_schema.processlist`; +let $count_old = `select count(*) from information_schema.processlist`; +let $count_join = `select count(*) from performance_schema.processlist pspl + left join information_schema.processlist ispl on pspl.host = ispl.host and pspl.id = ispl.id`; + +--echo + +if ($count_old == $count_join) +{ + --echo ***SUCCESS*** The processlist Host fields match between the Performance Schema and the Information Schema +} + +if ($count_old != $count_join) +{ + --echo ***ERROR*** The processlist Host fields do not match + --echo Count new: $count_new Count old: $count_old Count join: $count_join + --echo + select * from performance_schema.processlist order by host, id; + --echo + select * from information_schema.processlist order by host, id; + --echo + select * from performance_schema.processlist pspl + left join information_schema.processlist ispl on pspl.host = ispl.host and pspl.id = ispl.id; +} + +--echo +--echo +--echo ### Clean up ### +--echo + +--echo # Disconnect con_user0 +--connection con_user0 +--disconnect con_user0 +--echo # Disconnect con_user1 +--connection con_user1 +--disconnect con_user1 +--echo # Disconnect con_user2 +--connection con_user2 +--disconnect con_user2 +--echo # Disconnect con_user3 +--connection con_user3 +--disconnect con_user3 +--echo # Disconnect con_user4 +--connection con_user4 +--disconnect con_user4 + +--echo # Connection default +--connection default +--echo +drop user user0@localhost; +drop user user1@localhost; +drop user user2@localhost; +drop user user3@localhost; +drop user user4@localhost; +--echo +set @@global.performance_schema_show_processlist = @save_processlist; diff --git a/mysql-test/suite/perfschema/t/processlist_reg_user.test b/mysql-test/suite/perfschema/t/processlist_reg_user.test new file mode 100644 index 00000000000..53dc8abfa63 --- /dev/null +++ b/mysql-test/suite/perfschema/t/processlist_reg_user.test @@ -0,0 +1,134 @@ +--echo ## +--echo ## Test the Performance Schema-based implementation of SHOW PROCESSLIST. +--echo ## Verify behavior for regular users and PROCESS_ACL. +--echo ## + +--source include/no_protocol.inc +--source include/not_embedded.inc + +SELECT @@global.performance_schema_show_processlist INTO @save_processlist; + +--source include/add_anonymous_users.inc + +SET @@global.performance_schema_show_processlist = OFF; + +CREATE USER 'regular'@'localhost'; + +connect (reg,localhost,regular,,test,$MASTER_MYPORT,$MASTER_MYSOCK); + +SHOW GRANTS; + +# Self rows only +SELECT USER, INFO FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Self rows only +SELECT USER, INFO FROM performance_schema.processlist; + +# Self rows only +--disable_result_log +SHOW PROCESSLIST; +--enable_result_log + +SELECT "Previous statement is now completed." as status; + +connection default; + +# Returns ROWS_SENT = 0 even when SHOW PROCESSLIST has rows +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT as BROKEN_ROWS_SENT + FROM performance_schema.events_statements_history + WHERE SQL_TEXT = "SHOW PROCESSLIST"; + +TRUNCATE TABLE performance_schema.events_statements_history; +SET @@global.performance_schema_show_processlist = ON; + +connection reg; + +SHOW GRANTS; + +# Self rows only +SELECT USER, INFO FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Self rows only +SELECT USER, INFO FROM performance_schema.processlist; + +# Self rows only +--disable_result_log +SHOW PROCESSLIST; +--enable_result_log + +SELECT "Previous statement is now completed." as status; + +connection default; + +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT + FROM performance_schema.events_statements_history + WHERE SQL_TEXT = "SHOW PROCESSLIST"; + +TRUNCATE TABLE performance_schema.events_statements_history; + +disconnect reg; + +GRANT PROCESS ON *.* TO 'regular'@'localhost'; + +SET @@global.performance_schema_show_processlist = OFF; + +connect (reg2,localhost,regular,,test,$MASTER_MYPORT,$MASTER_MYSOCK); + +SHOW GRANTS; + +# Full rows +SELECT count(*) >= 2 FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Full rows +SELECT count(*) >= 2 FROM performance_schema.processlist; + +# Full rows +--disable_result_log +SHOW PROCESSLIST; +--enable_result_log + +SELECT "Previous statement is now completed." as status; + +connection default; + +# Returns ROWS_SENT = 0 even when SHOW PROCESSLIST has rows +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT as BROKEN_ROWS_SENT + FROM performance_schema.events_statements_history + WHERE SQL_TEXT = "SHOW PROCESSLIST"; + +TRUNCATE TABLE performance_schema.events_statements_history; +SET @@global.performance_schema_show_processlist = ON; + +connection reg2; + +SHOW GRANTS; + +# Full rows +SELECT count(*) >= 2 FROM INFORMATION_SCHEMA.PROCESSLIST; + +# Full rows +SELECT count(*) >= 2 FROM performance_schema.processlist; + +# Full rows +--disable_result_log +SHOW PROCESSLIST; +--enable_result_log + +SELECT "Previous statement is now completed." as status; + +connection default; + +SELECT EVENT_NAME, SQL_TEXT, ROWS_SENT >= 2 + FROM performance_schema.events_statements_history + WHERE SQL_TEXT = "SHOW PROCESSLIST"; + +TRUNCATE TABLE performance_schema.events_statements_history; + +disconnect reg2; + +--source include/delete_anonymous_users.inc + +SET @@global.performance_schema_show_processlist = @save_processlist; + +DROP USER 'regular'@'localhost'; + diff --git a/mysql-test/suite/perfschema/t/threads_mysql.test b/mysql-test/suite/perfschema/t/threads_mysql.test index 8576c8767d6..05ce84ca0fc 100644 --- a/mysql-test/suite/perfschema/t/threads_mysql.test +++ b/mysql-test/suite/perfschema/t/threads_mysql.test @@ -47,7 +47,7 @@ SELECT name, type, processlist_user, processlist_host, processlist_db, processlist_command, processlist_info, IF(parent_thread_id IS NULL, parent_thread_id, 'unified parent_thread_id') AS unified_parent_thread_id, - role, instrumented + `role`, instrumented FROM performance_schema.threads WHERE name LIKE 'thread/sql%' ORDER BY name; @@ -66,7 +66,7 @@ SELECT name, type, processlist_user, processlist_host, processlist_db, processlist_command, processlist_info, IF(parent_thread_id IS NULL, parent_thread_id, 'unified parent_thread_id') AS unified_parent_thread_id, - role, instrumented + `role`, instrumented FROM performance_schema.threads WHERE name LIKE 'thread/sql%' AND thread_id NOT IN (SELECT thread_id FROM t1) @@ -106,7 +106,7 @@ SELECT name, type, processlist_user, processlist_host, processlist_db, processlist_command, processlist_info, IF(parent_thread_id IS NULL, parent_thread_id, 'unified parent_thread_id') AS unified_parent_thread_id, - role, instrumented + `role`, instrumented FROM performance_schema.threads WHERE name LIKE 'thread/sql%' AND thread_id NOT IN (SELECT thread_id FROM t1) |