--source include/have_innodb.inc
# This restarts the server and waits a long time for output.
--source include/big_test.inc
# Embedded server does not support restarting.
--source include/not_embedded.inc

# Test the deprecation messages and connection to the flags.
CREATE TABLE innodb_monitor(a SERIAL) ENGINE=InnoDB;
SHOW VARIABLES LIKE 'innodb_status_output%';
DROP TABLE innodb_monitor;
SHOW VARIABLES LIKE 'innodb_status_output%';
CREATE TABLE innodb_lock_monitor(a SERIAL) ENGINE=InnoDB;
SHOW VARIABLES LIKE 'innodb_status_output%';
DROP TABLE innodb_lock_monitor;
SHOW VARIABLES LIKE 'innodb_status_output%';
CREATE TABLE innodb_tablespace_monitor(a SERIAL) ENGINE=InnoDB;
DROP TABLE innodb_tablespace_monitor;
CREATE TABLE innodb_table_monitor(a SERIAL) ENGINE=InnoDB;
DROP TABLE innodb_table_monitor;

CREATE TABLE t(a SERIAL) ENGINE=InnoDB;
INSERT INTO t VALUES(42);

# Restart, writing the error log to a different file.
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server

let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/innodb-status-output.err;

--error 0,1
--remove_file $SEARCH_FILE

# Test that the output appears.
--exec echo "restart: --log-error=$SEARCH_FILE" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect

BEGIN;
SELECT * FROM t FOR UPDATE;
# Enable full output.
SET GLOBAL innodb_status_output_locks=ON;
SET GLOBAL innodb_status_output=ON;
SELECT SLEEP(30);
COMMIT;

# Restart, check the log output
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server

let SEARCH_PATTERN= INNODB MONITOR OUTPUT;
--source include/search_pattern_in_file.inc
let SEARCH_PATTERN= SELECT SLEEP.*\nTABLE LOCK.*\nRECORD LOCKS space id;
--source include/search_pattern_in_file.inc
--remove_file $SEARCH_FILE

--exec echo "restart: --log-error=$SEARCH_FILE" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect

BEGIN;
SELECT * FROM t FOR UPDATE;
# This alone should not enable any output.
SET GLOBAL innodb_status_output_locks=ON;
SELECT SLEEP(30);
COMMIT;

# Restart, check the log output
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server

# We should not see any extra output.
let SEARCH_PATTERN= ready for connections.*\nVersion:.*\n.*Normal shutdown;
--source include/search_pattern_in_file.inc
--remove_file $SEARCH_FILE

--exec echo "restart: --log-error=$SEARCH_FILE" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect

BEGIN;
SELECT * FROM t FOR UPDATE;
# Enable some output.
SET GLOBAL innodb_status_output=ON;
SELECT SLEEP(30);
COMMIT;

# Restart, check the log output
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server

# We should have some extra output.
let SEARCH_PATTERN= INNODB MONITOR OUTPUT;
--source include/search_pattern_in_file.inc
# No RECORD LOCKS output expected
let SEARCH_PATTERN= SELECT SLEEP.*\n------;
--source include/search_pattern_in_file.inc
--remove_file $SEARCH_FILE

# Clean up.
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect

DROP TABLE t;
