83 lines
2.9 KiB
Plaintext
83 lines
2.9 KiB
Plaintext
#
|
|
--source include/have_debug_sync.inc
|
|
--source include/not_embedded.inc
|
|
|
|
# Save the initial number of concurrent sessions.
|
|
--source include/count_sessions.inc
|
|
|
|
--echo #
|
|
--echo # Bug#18591145 - SOME MONOTONICALLY INCREASING STATUS VARIABLES DECREASES UNEXPECTEDLY
|
|
--echo #
|
|
|
|
--enable_connect_log
|
|
show variables like "show_COMPATIBILITY_56";
|
|
let $compatibility_mode=`select @@global.show_compatibility_56`;
|
|
|
|
# Information Schema will work only server is running in 5.6 compatiability
|
|
# mode. Else information_schema will return empty set.
|
|
set global SHOW_COMPATIBILITY_56 = 1;
|
|
|
|
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(64), val VARCHAR(1024));
|
|
--echo # Insert 1 tuple to increment com_insert status.
|
|
INSERT INTO t1(name, val) VALUES ('dummy', 0);
|
|
|
|
connect (con1, localhost, root,,);
|
|
SET DEBUG_SYNC='before_preparing_global_status_array SIGNAL change_user WAIT_FOR continue';
|
|
SET DEBUG_SYNC='after_preparing_global_status_array SIGNAL continue_change_user';
|
|
--SEND INSERT INTO t1(name, val) SELECT * FROM INFORMATION_SCHEMA.global_status WHERE variable_name='com_insert';
|
|
|
|
CONNECTION default;
|
|
SET DEBUG_SYNC='now WAIT_FOR change_user';
|
|
SET DEBUG_SYNC='thd_cleanup_start SIGNAL continue WAIT_FOR continue_change_user';
|
|
--change_user root,,test
|
|
|
|
CONNECTION con1;
|
|
--REAP
|
|
|
|
SET DEBUG_SYNC='RESET';
|
|
CONNECTION default;
|
|
INSERT INTO t1(name, val)
|
|
SELECT * FROM INFORMATION_SCHEMA.global_status WHERE variable_name='com_insert';
|
|
|
|
--echo # With fix, difference of com_insert status should be "0" here.
|
|
SELECT (SELECT val FROM t1 WHERE id = 2) - (SELECT val FROM t1 WHERE id = 3);
|
|
|
|
--echo # Testing the same scenario with performance_schema.
|
|
# Make sure we are not running in 5.6 compatiability mode. Else
|
|
# performance_schema will return empty set.
|
|
set global SHOW_COMPATIBILITY_56 = 0;
|
|
truncate t1;
|
|
|
|
--echo # Insert 1 tuple to increment com_insert status.
|
|
INSERT INTO t1(name, val) VALUES ('dummy', 0);
|
|
|
|
CONNECTION con1;
|
|
SET DEBUG_SYNC='before_materialize_global_status_array SIGNAL change_user WAIT_FOR continue';
|
|
SET DEBUG_SYNC='after_materialize_global_status_array SIGNAL continue_change_user';
|
|
--SEND INSERT INTO t1(name, val) SELECT * FROM performance_schema.global_status WHERE variable_name='Handler_commit';
|
|
|
|
CONNECTION default;
|
|
SET DEBUG_SYNC='now WAIT_FOR change_user';
|
|
SET DEBUG_SYNC='thd_cleanup_start SIGNAL continue WAIT_FOR continue_change_user';
|
|
--change_user root,,test
|
|
|
|
CONNECTION con1;
|
|
--REAP
|
|
|
|
SET DEBUG_SYNC='RESET';
|
|
CONNECTION default;
|
|
INSERT INTO t1(name, val) SELECT * FROM performance_schema.global_status WHERE variable_name='Handler_commit';
|
|
|
|
--echo # With fix, Handler_commit status should be 1 (select insert during switch user).
|
|
SELECT (SELECT val FROM t1 WHERE id = 3) - (SELECT val FROM t1 WHERE id = 2);
|
|
|
|
# Cleanup
|
|
eval set global SHOW_COMPATIBILITY_56=$compatibility_mode;
|
|
DISCONNECT con1;
|
|
DROP TABLE t1;
|
|
|
|
--disable_connect_log
|
|
|
|
# Wait till we reached the initial number of concurrent sessions
|
|
--source include/wait_until_count_sessions.inc
|