#
--source include/have_debug_sync.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

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';

# 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);

# Cleanup
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
