Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 3.133.113.101
Cant Read [ /etc/named.conf ]
8.1.13
www
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
www /
server /
mysql /
mysql-test /
suite /
sysschema /
t /
[ HOME SHELL ]
Name
Size
Permission
Action
all_sys_objects_exist.test
636
B
-rw-r--r--
fn_extract_schema_from_file_na...
352
B
-rw-r--r--
fn_extract_table_from_file_nam...
349
B
-rw-r--r--
fn_format_bytes.test
760
B
-rw-r--r--
fn_format_path-master.opt
172
B
-rw-r--r--
fn_format_path-master.sh
357
B
-rwxr-xr-x
fn_format_path.test
1.23
KB
-rw-r--r--
fn_format_statement.test
694
B
-rw-r--r--
fn_format_time.test
1.03
KB
-rw-r--r--
fn_list_add.test
911
B
-rw-r--r--
fn_list_drop.test
894
B
-rw-r--r--
fn_ps_is_account_enabled.test
675
B
-rw-r--r--
fn_ps_is_consumer_enabled.test
1.66
KB
-rw-r--r--
fn_ps_is_instrument_default_en...
1.36
KB
-rw-r--r--
fn_ps_is_instrument_default_ti...
1.33
KB
-rw-r--r--
fn_ps_is_thread_instrumented.t...
673
B
-rw-r--r--
fn_ps_thread_account.test
388
B
-rw-r--r--
fn_ps_thread_id.test
636
B
-rw-r--r--
fn_ps_thread_trx_info.test
3.9
KB
-rw-r--r--
fn_quote_identifier.test
1.02
KB
-rw-r--r--
fn_sys_get_config.test
427
B
-rw-r--r--
mysqldump.test
779
B
-rw-r--r--
pr_create_synonym_db.test
2.24
KB
-rw-r--r--
pr_diagnostics.test
1.67
KB
-rw-r--r--
pr_execute_prepared_stmt.test
553
B
-rw-r--r--
pr_ps_setup_reset_to_default.t...
795
B
-rw-r--r--
pr_ps_setup_show_disabled.test
1.13
KB
-rw-r--r--
pr_ps_setup_show_disabled_cons...
292
B
-rw-r--r--
pr_ps_setup_show_disabled_inst...
346
B
-rw-r--r--
pr_ps_setup_show_enabled.test
1.43
KB
-rw-r--r--
pr_ps_setup_show_enabled_consu...
291
B
-rw-r--r--
pr_ps_setup_show_enabled_instr...
525
B
-rw-r--r--
pr_ps_trace_statement_digest.t...
2.95
KB
-rw-r--r--
pr_statement_performance_analy...
20.17
KB
-rw-r--r--
pr_table_exists.test
962
B
-rw-r--r--
t_sys_config.test
627
B
-rw-r--r--
v_host_summary.test
543
B
-rw-r--r--
v_host_summary_by_file_io.test
598
B
-rw-r--r--
v_host_summary_by_file_io_type...
623
B
-rw-r--r--
v_host_summary_by_stages.test
593
B
-rw-r--r--
v_host_summary_by_statement_la...
648
B
-rw-r--r--
v_host_summary_by_statement_ty...
633
B
-rw-r--r--
v_innodb_buffer_stats_by_schem...
627
B
-rw-r--r--
v_innodb_buffer_stats_by_table...
622
B
-rw-r--r--
v_innodb_lock_waits.test
568
B
-rw-r--r--
v_io_by_thread_by_latency.test
598
B
-rw-r--r--
v_io_global_by_file_by_bytes.t...
613
B
-rw-r--r--
v_io_global_by_file_by_latency...
623
B
-rw-r--r--
v_io_global_by_wait_by_bytes.t...
613
B
-rw-r--r--
v_io_global_by_wait_by_latency...
623
B
-rw-r--r--
v_latest_file_io.test
553
B
-rw-r--r--
v_memory_by_host_by_current_by...
638
B
-rw-r--r--
v_memory_by_thread_by_current_...
648
B
-rw-r--r--
v_memory_by_user_by_current_by...
638
B
-rw-r--r--
v_memory_global_by_current_byt...
633
B
-rw-r--r--
v_memory_global_total.test
578
B
-rw-r--r--
v_metrics.test
344
B
-rw-r--r--
v_processlist.test
538
B
-rw-r--r--
v_ps_check_lost_instrumentatio...
391
B
-rw-r--r--
v_ps_digest_95th_percentile_by...
679
B
-rw-r--r--
v_ps_digest_avg_latency_distri...
673
B
-rw-r--r--
v_ps_schema_table_statistics_i...
643
B
-rw-r--r--
v_schema_auto_increment_column...
7.22
KB
-rw-r--r--
v_schema_index_statistics.test
598
B
-rw-r--r--
v_schema_object_overview.test
370
B
-rw-r--r--
v_schema_redundant_indexes.tes...
865
B
-rw-r--r--
v_schema_table_lock_waits.test
1.41
KB
-rw-r--r--
v_schema_table_statistics.test
598
B
-rw-r--r--
v_schema_table_statistics_with...
658
B
-rw-r--r--
v_schema_tables_with_full_tabl...
3.18
KB
-rw-r--r--
v_schema_unused_indexes.test
367
B
-rw-r--r--
v_session.test
518
B
-rw-r--r--
v_session_ssl_status.test
357
B
-rw-r--r--
v_statement_analysis.test
573
B
-rw-r--r--
v_statements_with_errors_or_wa...
653
B
-rw-r--r--
v_statements_with_full_table_s...
3.88
KB
-rw-r--r--
v_statements_with_runtimes_in_...
698
B
-rw-r--r--
v_statements_with_sorting.test
598
B
-rw-r--r--
v_statements_with_temp_tables....
618
B
-rw-r--r--
v_user_summary.test
543
B
-rw-r--r--
v_user_summary_by_file_io.test
598
B
-rw-r--r--
v_user_summary_by_file_io_type...
623
B
-rw-r--r--
v_user_summary_by_stages.test
593
B
-rw-r--r--
v_user_summary_by_statement_la...
648
B
-rw-r--r--
v_user_summary_by_statement_ty...
633
B
-rw-r--r--
v_version.test
362
B
-rw-r--r--
v_wait_classes_global_by_avg_l...
653
B
-rw-r--r--
v_wait_classes_global_by_laten...
633
B
-rw-r--r--
v_waits_by_host_by_latency.tes...
603
B
-rw-r--r--
v_waits_by_user_by_latency.tes...
603
B
-rw-r--r--
v_waits_global_by_latency.test
598
B
-rw-r--r--
version_functions.test
1.33
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : pr_statement_performance_analyzer.test
########### suite/sysschema/t/pr_statement_performance_analyzer.test ############# # # # Testing of of the sys.statement_performance_analyzer() procedure # # # # Creation: # # 2015-07-28 jkrogh Implement this test as part of # # WL#7804 REPORT FOR SUPPORT # # # ################################################################################## -- source include/not_embedded.inc # Performance schema tracks prepared statements separately, and does not # yet have a summary view that we can use for this view. # Until then, we disable this test with --ps-protocol -- source include/no_protocol.inc # Bug #23290879 - For reasons unknown to man this test fails randomly only on Windows -- source include/not_windows.inc use test; --disable_warnings DROP TABLE IF EXISTS t1; DROP TEMPORARY TABLE IF EXISTS tmp_digests_ini; DROP VIEW IF EXISTS view_digests; --enable_warnings # Create a table CREATE TABLE t1 (id INT PRIMARY KEY, val int); # Create a new connection to make the actual changes # Create the connection now to ensure queries like "SELECT @@`version_comment` LIMIT 1" are excluded connect (con1,localhost,root,,); connection con1; use test; --let $con1_thread_id= `SELECT THREAD_ID FROM performance_schema.threads WHERE PROCESSLIST_ID = CONNECTION_ID()` # Disable instrumentation for all other threads other than the one that will # my monitored for this test ($con1_thread_id) connection default; --disable_result_log --replace_result $con1_thread_id CON1_THREAD_ID eval UPDATE performance_schema.threads SET INSTRUMENTED = IF(THREAD_ID = $con1_thread_id, 'YES', 'NO'); CALL sys.ps_setup_enable_consumer('events_statements_history_long'); CALL sys.ps_truncate_all_tables(FALSE); --enable_result_log # Start with some initial queries # Don't rely on the digests being constant across MySQL releases and versions, so find the # digest for each of the three queries by getting the last event from performance_schema.events_statements_current # for the con1 connection. connection con1; INSERT INTO t1 VALUES (1, 0); connection default; --let $wait_condition= SELECT SUBSTRING(SQL_TEXT, 1, 7) = 'INSERT ' FROM performance_schema.events_statements_current WHERE THREAD_ID = $con1_thread_id AND DIGEST IS NOT NULL --source include/wait_condition.inc --let $digest_insert= `SELECT DIGEST FROM performance_schema.events_statements_current WHERE THREAD_ID = $con1_thread_id ORDER BY EVENT_ID DESC LIMIT 1` --let $query_insert= `SELECT sys.format_statement(DIGEST_TEXT) FROM performance_schema.events_statements_current WHERE THREAD_ID = $con1_thread_id ORDER BY EVENT_ID DESC LIMIT 1` connection con1; UPDATE t1 SET val = 1 WHERE id = 1; connection default; --let $wait_condition= SELECT SUBSTRING(SQL_TEXT, 1, 7) = 'UPDATE ' FROM performance_schema.events_statements_current WHERE THREAD_ID = $con1_thread_id AND DIGEST IS NOT NULL --source include/wait_condition.inc --let $digest_update= `SELECT DIGEST FROM performance_schema.events_statements_current WHERE THREAD_ID = $con1_thread_id ORDER BY EVENT_ID DESC LIMIT 1` --let $query_update= `SELECT sys.format_statement(DIGEST_TEXT) FROM performance_schema.events_statements_current WHERE THREAD_ID = $con1_thread_id ORDER BY EVENT_ID DESC LIMIT 1` connection con1; SELECT t1a.* FROM t1 AS t1a LEFT OUTER JOIN (SELECT * FROM t1 AS t1b1 INNER JOIN t1 AS t1b2 USING (id, val)) AS t1b ON t1b.id > t1a.id ORDER BY t1a.val, t1a.id; connection default; --let $wait_condition= SELECT SUBSTRING(SQL_TEXT, 1, 7) = 'SELECT ' FROM performance_schema.events_statements_current WHERE THREAD_ID = $con1_thread_id AND DIGEST IS NOT NULL --source include/wait_condition.inc --let $digest_select= `SELECT DIGEST FROM performance_schema.events_statements_current WHERE THREAD_ID = $con1_thread_id ORDER BY EVENT_ID DESC LIMIT 1` --let $query_select= `SELECT sys.format_statement(DIGEST_TEXT) FROM performance_schema.events_statements_current WHERE THREAD_ID = $con1_thread_id ORDER BY EVENT_ID DESC LIMIT 1` # Enable to debug if some digests are not found # --output /tmp/digest # --eval SELECT '$digest_insert' AS DigestInsert, '$digest_update' AS DigestUpdate, '$digest_select' AS DigestSelect # --output /tmp/digest_text # --eval SELECT '$query_insert' AS DigestInsert, '$query_update' AS DigestUpdate, '$query_select' AS DigestSelect # --output /tmp/ps_history # SELECT THREAD_ID, EVENT_ID, END_EVENT_ID, DIGEST, SQL_TEXT FROM performance_schema.events_statements_history_long ORDER BY EVENT_ID; # Start collecting data CALL sys.statement_performance_analyzer('create_tmp', 'test.tmp_digests_ini', NULL); CALL sys.statement_performance_analyzer('snapshot', NULL, NULL); CALL sys.statement_performance_analyzer('save', 'test.tmp_digests_ini', NULL); # Make sure the last_seen times will be different from the SELECT statement's first_seen. DO SLEEP(1.2); # Make some more changes connection con1; INSERT INTO t1 VALUES (2, 0); UPDATE t1 SET val = 1 WHERE id = 2; SELECT t1a.* FROM t1 AS t1a LEFT OUTER JOIN (SELECT * FROM t1 AS t1b1 INNER JOIN t1 AS t1b2 USING (id, val)) AS t1b ON t1b.id > t1a.id ORDER BY t1a.val, t1a.id; disconnect con1; # Make the second collection of data and create the output connection default; # Make sure all of the queries executing in con1 has been recorded in performance_schema.events_statements_summary_by_digest # before continuing with the actual tests of pr_statement_performance_analyzer() --let $wait_condition= SELECT COUNT_STAR = 2 FROM performance_schema.events_statements_summary_by_digest WHERE DIGEST = '$digest_select' --source include/wait_condition.inc # Get all values to be used in replacements now to minimize the risk of the # values disappearing out of the performance_schema tables --let $o_upd_total_latency= `SELECT total_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_update'` --let $o_upd_max_latency= `SELECT max_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_update'` --let $o_upd_avg_latency= `SELECT avg_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_update'` --let $o_upd_first_seen= `SELECT first_seen FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_update'` --let $o_upd_last_seen= `SELECT last_seen FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_update'` --let $o_sel_total_latency= `SELECT total_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_select'` --let $o_sel_max_latency= `SELECT max_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_select'` --let $o_sel_avg_latency= `SELECT avg_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_select'` --let $o_sel_first_seen= `SELECT first_seen FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_select'` --let $o_sel_last_seen= `SELECT last_seen FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_select'` --let $o_ins_total_latency= `SELECT total_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_insert'` --let $o_ins_max_latency= `SELECT max_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_insert'` --let $o_ins_avg_latency= `SELECT avg_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_insert'` --let $o_ins_first_seen= `SELECT first_seen FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_insert'` --let $o_ins_last_seen= `SELECT last_seen FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_insert'` --let $o_upd_lock_latency= `SELECT lock_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_update'` --let $o_sel_lock_latency= `SELECT lock_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_select'` --let $o_ins_lock_latency= `SELECT lock_latency FROM sys.statement_analysis WHERE db = 'test' AND digest = '$digest_insert'` --let $d_upd_total_latency= `SELECT sys.format_time(TIMER_WAIT) FROM performance_schema.events_statements_history_long WHERE CURRENT_SCHEMA = 'test' AND DIGEST = '$digest_update' ORDER BY EVENT_ID DESC LIMIT 1` --let $d_sel_total_latency= `SELECT sys.format_time(TIMER_WAIT) FROM performance_schema.events_statements_history_long WHERE CURRENT_SCHEMA = 'test' AND DIGEST = '$digest_select' ORDER BY EVENT_ID DESC LIMIT 1` --let $d_ins_total_latency= `SELECT sys.format_time(TIMER_WAIT) FROM performance_schema.events_statements_history_long WHERE CURRENT_SCHEMA = 'test' AND DIGEST = '$digest_insert' ORDER BY EVENT_ID DESC LIMIT 1` --let $d_upd_tock_latency= `SELECT sys.format_time(LOCK_TIME) FROM performance_schema.events_statements_history_long WHERE CURRENT_SCHEMA = 'test' AND DIGEST = '$digest_update' ORDER BY EVENT_ID DESC LIMIT 1` --let $d_sel_tock_latency= `SELECT sys.format_time(LOCK_TIME) FROM performance_schema.events_statements_history_long WHERE CURRENT_SCHEMA = 'test' AND DIGEST = '$digest_select' ORDER BY EVENT_ID DESC LIMIT 1` --let $d_ins_tock_latency= `SELECT sys.format_time(LOCK_TIME) FROM performance_schema.events_statements_history_long WHERE CURRENT_SCHEMA = 'test' AND DIGEST = '$digest_insert' ORDER BY EVENT_ID DESC LIMIT 1` CALL sys.statement_performance_analyzer('snapshot', NULL, NULL); # Do a sanity check to ensure we are assuming the queries has the digests they have and that there is nothing else in the events_statements_summary_by_digest than there actually is. --replace_result $digest_insert DIGEST_INSERT $digest_update DIGEST_UPDATE $digest_select DIGEST_SELECT --sorted_result SELECT DIGEST, COUNT_STAR FROM performance_schema.events_statements_summary_by_digest; # with_runtimes_in_95th_percentile # It is unknown what the result will be since the execution times for each query are unknown # So just check that no warning or error occurs --disable_result_log CALL sys.statement_performance_analyzer('overall', NULL, 'with_runtimes_in_95th_percentile'); CALL sys.statement_performance_analyzer('delta', 'test.tmp_digests_ini', 'with_runtimes_in_95th_percentile'); --enable_result_log # analysis - as there's no control of the various latencies, it may be the same for two or more of the queries. # So replace_result cannot be used to give it a unique value. Instead just use LATENCY for all rows. --replace_result $query_insert QUERY_INSERT $query_select QUERY_SELECT $query_update QUERY_UPDATE $digest_insert DIGEST_INSERT $digest_update DIGEST_UPDATE $digest_select DIGEST_SELECT $o_upd_total_latency LATENCY $o_upd_max_latency LATENCY $o_upd_avg_latency LATENCY $o_upd_lock_latency LATENCY $o_upd_first_seen FIRST_SEEN $o_upd_last_seen LAST_SEEN $o_sel_total_latency LATENCY $o_sel_max_latency LATENCY $o_sel_avg_latency LATENCY $o_sel_lock_latency LATENCY $o_sel_first_seen FIRST_SEEN $o_sel_last_seen LAST_SEEN $o_ins_total_latency LATENCY $o_ins_max_latency LATENCY $o_ins_avg_latency LATENCY $o_ins_lock_latency LATENCY $o_ins_first_seen FIRST_SEEN $o_ins_last_seen LAST_SEEN --sorted_result CALL sys.statement_performance_analyzer('overall', NULL, 'analysis'); --replace_result $query_insert QUERY_INSERT $query_select QUERY_SELECT $query_update QUERY_UPDATE $digest_insert DIGEST_INSERT $digest_update DIGEST_UPDATE $digest_select DIGEST_SELECT $d_upd_total_latency LATENCY $o_upd_max_latency LATENCY $o_upd_first_seen FIRST_SEEN $o_upd_last_seen LAST_SEEN $d_upd_tock_latency LATENCY $d_sel_total_latency LATENCY $o_sel_max_latency LATENCY $o_sel_first_seen FIRST_SEEN $o_sel_last_seen LAST_SEEN $d_sel_tock_latency LATENCY $d_ins_total_latency LATENCY $o_ins_max_latency LATENCY $o_ins_first_seen FIRST_SEEN $o_ins_last_seen LAST_SEEN $d_ins_tock_latency LATENCY --sorted_result CALL sys.statement_performance_analyzer('delta', 'test.tmp_digests_ini', 'analysis'); # Should give an empty result except for the banner generated by the procedure CALL sys.statement_performance_analyzer('overall', NULL, 'with_errors_or_warnings'); CALL sys.statement_performance_analyzer('delta', 'test.tmp_digests_ini', 'with_errors_or_warnings'); --replace_result $query_select QUERY_SELECT $digest_select DIGEST_SELECT $o_sel_total_latency LATENCY $o_sel_first_seen FIRST_SEEN $o_sel_last_seen LAST_SEEN CALL sys.statement_performance_analyzer('overall', NULL, 'with_full_table_scans'); --replace_result $query_select QUERY_SELECT $digest_select DIGEST_SELECT $d_sel_total_latency LATENCY $o_sel_first_seen FIRST_SEEN $o_sel_last_seen LAST_SEEN CALL sys.statement_performance_analyzer('delta', 'test.tmp_digests_ini', 'with_full_table_scans'); --replace_result $query_select QUERY_SELECT $digest_select DIGEST_SELECT $o_sel_total_latency LATENCY $o_sel_first_seen FIRST_SEEN $o_sel_last_seen LAST_SEEN CALL sys.statement_performance_analyzer('overall', NULL, 'with_sorting'); --replace_result $query_select QUERY_SELECT $digest_select DIGEST_SELECT $d_sel_total_latency LATENCY $o_sel_first_seen FIRST_SEEN $o_sel_last_seen LAST_SEEN CALL sys.statement_performance_analyzer('delta', 'test.tmp_digests_ini', 'with_sorting'); --replace_result $query_select QUERY_SELECT $digest_select DIGEST_SELECT $o_sel_total_latency LATENCY $o_sel_first_seen FIRST_SEEN $o_sel_last_seen LAST_SEEN CALL sys.statement_performance_analyzer('overall', NULL, 'with_temp_tables'); --replace_result $query_select QUERY_SELECT $digest_select DIGEST_SELECT $d_sel_total_latency LATENCY $o_sel_first_seen FIRST_SEEN $o_sel_last_seen LAST_SEEN CALL sys.statement_performance_analyzer('delta', 'test.tmp_digests_ini', 'with_temp_tables'); # Try a custom view # Sort by the query, then we know the order will be INSERT, SELECT, UPDATE CREATE VIEW test.view_digests AS SELECT sys.format_statement(DIGEST_TEXT) AS query, SCHEMA_NAME AS db, COUNT_STAR AS exec_count, sys.format_time(SUM_TIMER_WAIT) AS total_latency, sys.format_time(AVG_TIMER_WAIT) AS avg_latency, ROUND(IFNULL(SUM_ROWS_SENT / NULLIF(COUNT_STAR, 0), 0)) AS rows_sent_avg, ROUND(IFNULL(SUM_ROWS_EXAMINED / NULLIF(COUNT_STAR, 0), 0)) AS rows_examined_avg, ROUND(IFNULL(SUM_ROWS_AFFECTED / NULLIF(COUNT_STAR, 0), 0)) AS rows_affected_avg, DIGEST AS digest FROM performance_schema.events_statements_summary_by_digest ORDER BY SUBSTRING(query, 1, 6); SET @sys.statement_performance_analyzer.view = 'test.view_digests'; --replace_result $query_insert QUERY_INSERT $query_select QUERY_SELECT $query_update QUERY_UPDATE $digest_insert DIGEST_INSERT $digest_update DIGEST_UPDATE $digest_select DIGEST_SELECT $o_upd_total_latency LATENCY $o_upd_avg_latency LATENCY $o_sel_total_latency LATENCY $o_sel_avg_latency LATENCY $o_ins_total_latency LATENCY $o_ins_avg_latency LATENCY CALL sys.statement_performance_analyzer('overall', NULL, 'custom'); --replace_result $query_insert QUERY_INSERT $query_select QUERY_SELECT $query_update QUERY_UPDATE $digest_insert DIGEST_INSERT $digest_update DIGEST_UPDATE $digest_select DIGEST_SELECT $d_upd_total_latency LATENCY $d_sel_total_latency LATENCY $d_ins_total_latency LATENCY CALL sys.statement_performance_analyzer('delta', 'test.tmp_digests_ini', 'custom'); # Verify that setting a limit works SET @sys.statement_performance_analyzer.limit = 2; --replace_result $query_insert QUERY_INSERT $query_select QUERY_SELECT $digest_insert DIGEST_INSERT $digest_select DIGEST_SELECT $o_ins_total_latency LATENCY $o_ins_avg_latency LATENCY $o_sel_total_latency LATENCY $o_sel_avg_latency LATENCY CALL sys.statement_performance_analyzer('overall', NULL, 'custom'); # Test for error conditions - some of the errors depend on the sql_mode so set it explicitly # Which sql_modes are deprecated depends on the release, so disable warnings while setting the sql_mode # Use non-strict sql_mode - keep NO_AUTO_CREATE_USER as this sql_mode will be mandatory in the future: SET SESSION sql_mode = 'NO_AUTO_CREATE_USER'; # Ask for a non-supported action - since strict more is not used, this will give the error: ERROR 1644 (45000): Unknown action: '' # Note: the action passed to the procedure is actually lost because it's truncated. --error ER_SIGNAL_EXCEPTION CALL sys.statement_performance_analyzer('do magic', NULL, NULL); # Use 5.7.9+ default: --disable_warnings SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; --enable_warnings # Ask for a non-supported action - since strict mode is used, this will give the error: ERROR 1265 (01000): Data truncated for column 'in_action' at row 1 --error 1265 CALL sys.statement_performance_analyzer('do magic', NULL, NULL); # Try to create reserved table name -- error S45000 CALL sys.statement_performance_analyzer('create_tmp', 'sys.tmp_digests', NULL); -- error S45000 CALL sys.statement_performance_analyzer('create_tmp', 'sys.tmp_digests_delta', NULL); -- error S45000 CALL sys.statement_performance_analyzer('create_tmp', 'tmp_digests', NULL); # This should succeed CALL sys.statement_performance_analyzer('create_tmp', 'test.tmp_digests', NULL); CREATE TABLE test.tmp_unsupported LIKE test.tmp_digests_ini; # Try to create a temporary table that already exists -- error S45000 CALL sys.statement_performance_analyzer('create_tmp', 'test.tmp_digests_ini', NULL); # Try to create a base table that already exists -- error S45000 CALL sys.statement_performance_analyzer('create_table', 'test.tmp_digests_ini', NULL); -- error S45000 CALL sys.statement_performance_analyzer('create_table', 'test.tmp_unsupported', NULL); # Verify that the sanity check for the input table e.g. for saving snapshots works ALTER TABLE test.tmp_unsupported ADD COLUMN myvar int DEFAULT 0; -- error S45000 CALL sys.statement_performance_analyzer('save', 'test.tmp_unsupported', NULL); # Try to create a snapshot or overall output with the wrong in_table -- error S45000 CALL sys.statement_performance_analyzer('snapshot', 'test.new_table', NULL); -- error S45000 CALL sys.statement_performance_analyzer('overall', 'test.new_table', 'analysis'); # Try to create a delta output or save a snapshot specifying a non-existing table. -- error S45000 CALL sys.statement_performance_analyzer('delta', 'test.new_table', 'analysis'); -- error S45000 CALL sys.statement_performance_analyzer('save', 'test.new_table', NULL); # Verify custom views doesn't work without the user variable set SET @sys.statement_performance_analyzer.view = NULL; DELETE FROM sys.sys_config WHERE variable = 'statement_performance_analyzer.view'; -- error S45000 CALL sys.statement_performance_analyzer('overall', NULL, 'custom'); # Set the custom view to a regular table - should not work SET @sys.statement_performance_analyzer.view = 'test.tmp_unsupported'; -- error S45000 CALL sys.statement_performance_analyzer('overall', NULL, 'custom'); # Remove the temporary tables created by the procedure # First ensure the tables actually exists (to avoid passing the test if the table names are changed) CALL sys.table_exists('sys', 'tmp_digests', @exists); SELECT @exists; CALL sys.table_exists('sys', 'tmp_digests_delta', @exists); SELECT @exists; CALL sys.statement_performance_analyzer('cleanup', NULL, NULL); # Verify the internal tables really were removed -- error ER_BAD_TABLE_ERROR DROP TEMPORARY TABLE sys.tmp_digests; -- error ER_BAD_TABLE_ERROR DROP TEMPORARY TABLE sys.tmp_digests_delta; # An attempt to create a delta view should fail now as there's no longer an existing snapshot. -- error S45000 CALL sys.statement_performance_analyzer('delta', 'test.tmp_digests_ini', 'analysis'); # Ensure no delta table was created. -- error ER_BAD_TABLE_ERROR DROP TEMPORARY TABLE sys.tmp_digests_delta; # Try and use a table.db name > 129 SET @identifier := REPEAT('a', 65); -- error 1406 CALL sys.statement_performance_analyzer('snapshot', CONCAT(@identifier, '.', @identifier), NULL); # Clean up DROP TEMPORARY TABLE test.tmp_digests_ini; DROP TEMPORARY TABLE test.tmp_digests; DROP TABLE test.tmp_unsupported; DROP TABLE test.t1; DROP VIEW view_digests; SET @identifier := NULL; SET SESSION sql_mode = @@global.sql_mode; SET @sys.statement_performance_analyzer.limit = NULL; SET @sys.statement_performance_analyzer.view = NULL; --source ../include/ps_setup_consumers_cleanup.inc --source ../include/ps_threads_cleanup.inc --source ../include/sys_config_cleanup.inc
Close