mirror of
https://github.com/MariaDB/server.git
synced 2025-02-07 06:12:18 +01:00
151 lines
3.5 KiB
Text
151 lines
3.5 KiB
Text
# Tests for PERFORMANCE_SCHEMA
|
|
|
|
--source include/not_embedded.inc
|
|
--source include/have_innodb.inc
|
|
--source include/have_perfschema.inc
|
|
--source include/have_debug.inc
|
|
--source include/have_debug_sync.inc
|
|
|
|
# Presence of the query cache changes query stages,
|
|
# causing noise in the test output
|
|
#--source include/have_query_cache_disabled.inc
|
|
|
|
# Setup
|
|
|
|
connect (con1, localhost, root, , );
|
|
|
|
let $con1_THREAD_ID=`select thread_id from performance_schema.threads
|
|
where PROCESSLIST_ID = connection_id()`;
|
|
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
|
|
create table t1(a int) engine = myisam;
|
|
|
|
insert into t1 values (1), (2), (3), (4), (5);
|
|
|
|
--connection default
|
|
|
|
update performance_schema.threads
|
|
set instrumented = 'NO'
|
|
where processlist_id = connection_id();
|
|
|
|
truncate table performance_schema.events_statements_history_long;
|
|
truncate table performance_schema.events_stages_history_long;
|
|
|
|
--disable_cursor_protocol
|
|
--disable_query_log
|
|
eval select $con1_THREAD_ID into @con1_thread_id;
|
|
--enable_query_log
|
|
--enable_cursor_protocol
|
|
|
|
--connection con1
|
|
|
|
# ALTER TABLE statement to inspect,
|
|
# execution should instrument progress
|
|
|
|
SET DEBUG_SYNC='RESET';
|
|
SET DEBUG_SYNC='copy_data_between_tables_before SIGNAL found_row WAIT_FOR wait_row EXECUTE 5';
|
|
--send ALTER TABLE t1 engine = innodb;
|
|
|
|
--connection default
|
|
|
|
SET DEBUG_SYNC='now WAIT_FOR found_row';
|
|
|
|
# Find the statement id of the ALTER TABLE
|
|
--disable_cursor_protocol
|
|
--enable_prepare_warnings
|
|
select event_id from performance_schema.events_statements_current
|
|
where thread_id = @con1_thread_id into @con1_stmt_id;
|
|
--disable_prepare_warnings
|
|
--enable_cursor_protocol
|
|
|
|
# completed 0
|
|
select EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED
|
|
from performance_schema.events_stages_current
|
|
where (thread_id = @con1_thread_id);
|
|
|
|
SET DEBUG_SYNC='now SIGNAL wait_row';
|
|
|
|
#======
|
|
|
|
SET DEBUG_SYNC='now WAIT_FOR found_row';
|
|
|
|
# completed 1
|
|
select EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED
|
|
from performance_schema.events_stages_current
|
|
where (thread_id = @con1_thread_id);
|
|
|
|
SET DEBUG_SYNC='now SIGNAL wait_row';
|
|
|
|
#======
|
|
|
|
SET DEBUG_SYNC='now WAIT_FOR found_row';
|
|
|
|
# completed 2
|
|
select EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED
|
|
from performance_schema.events_stages_current
|
|
where (thread_id = @con1_thread_id);
|
|
|
|
SET DEBUG_SYNC='now SIGNAL wait_row';
|
|
|
|
#======
|
|
|
|
SET DEBUG_SYNC='now WAIT_FOR found_row';
|
|
|
|
# completed 3
|
|
select EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED
|
|
from performance_schema.events_stages_current
|
|
where (thread_id = @con1_thread_id);
|
|
|
|
SET DEBUG_SYNC='now SIGNAL wait_row';
|
|
|
|
#======
|
|
|
|
SET DEBUG_SYNC='now WAIT_FOR found_row';
|
|
|
|
# completed 4
|
|
select EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED
|
|
from performance_schema.events_stages_current
|
|
where (thread_id = @con1_thread_id);
|
|
|
|
SET DEBUG_SYNC='now SIGNAL wait_row';
|
|
|
|
#======
|
|
|
|
--connection con1
|
|
|
|
# Complete the ALTER TABLE statement.
|
|
--reap
|
|
|
|
# Make sure the ALTER TABLE cleanup is executed,
|
|
# as the last stages are after writing back to the client,
|
|
# and done asynchronously from the last 'reap'.
|
|
select "After payload";
|
|
|
|
--connection default
|
|
|
|
--echo # Dumping ALTER TABLE stages
|
|
|
|
# Print all stages for this ALTER TABLE statement
|
|
select EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED
|
|
from performance_schema.events_stages_history_long
|
|
where (thread_id = @con1_thread_id)
|
|
and (nesting_event_id = @con1_stmt_id)
|
|
order by thread_id, event_id;
|
|
|
|
SET DEBUG_SYNC='RESET';
|
|
|
|
--connection con1
|
|
|
|
drop table t1;
|
|
|
|
--disconnect con1
|
|
|
|
--connection default
|
|
|
|
update performance_schema.threads
|
|
set instrumented = 'YES'
|
|
where processlist_id = connection_id();
|
|
|