polardbxengine/mysql-test/suite/query_rewrite_plugins/t/refresh_thread.test

69 lines
2.3 KiB
Plaintext

--echo #
--echo # Tests of the dedicated thread for refreshing the rules table.
--echo #
SET sql_mode = 'PIPES_AS_CONCAT';
--source include/have_debug_sync.inc
--source suite/query_rewrite_plugins/include/have_plugin_rewriter.inc
--source suite/query_rewrite_plugins/include/install_rewriter.inc
--echo #
--echo # We will now test shutting down the server while refreshing rules. We
--echo # then restart the server and make sure it recovered.
--echo #
--echo # We will shut down the server while a session is waiting for a debug
--echo # sync signal. All debug sync points are released during shutdown,
--echo # so the plugin will proceed to try and read from a handler with a server
--echo # that has gone away. This will lead to a storage engine error.
CALL mtr.add_suppression( "Got error from storage engine while refreshing " ||
"rewrite rules." );
INSERT INTO query_rewrite.rewrite_rules ( pattern, replacement )
VALUES ( 'SELECT "Rewrite"', 'SELECT "Rewritten"' );
SET GLOBAL debug= '+d,dbug.block_do_refresh';
--connect (con1,localhost,root,,test,,)
--echo # Two root connections are supposed to show here
SELECT COUNT(user) FROM information_schema.processlist WHERE user LIKE 'root';
--echo # We have to do this in order to avoid deadlock on the memory table's
--echo # mutex.
SET @@global.rewriter_enabled = OFF;
--send CALL query_rewrite.flush_rewrite_rules()
--connection default
--echo # We don't care if we time out here, as long as we manage to restart the
--echo # server.
--disable_warnings
SET debug_sync = 'now WAIT_FOR parked';
--enable_warnings
--echo # Two root connections are supposed to show here
SELECT COUNT(user) FROM information_schema.processlist WHERE user LIKE 'root';
--echo #
--echo # Restart the server
--echo #
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server
--source include/wait_until_disconnected.inc
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
SELECT 'Rewrite';
--echo # One root connection is supposed to show here, as the rewrite thread is now gone
SELECT COUNT(user) FROM information_schema.processlist WHERE user LIKE 'root';
SET @@global.rewriter_enabled = DEFAULT;
--source suite/query_rewrite_plugins/include/uninstall_rewriter.inc