config root man

Current Path : /home/usr.opt/mysql57/mysql-test/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //home/usr.opt/mysql57/mysql-test/t/view_gtid_mode_on_debug.test

--source include/have_debug_sync.inc
--source include/have_gtid.inc

# Save the initial number of concurrent sessions
--source include/count_sessions.inc

--echo #
--echo # BUG#21463167 - GTIDS: LOCK_OPEN DEADLOCK WITH REVOKE INCIDENT +
--echo #                SHOW TABLE STATUS CONCURRENTLY
--echo #

CREATE USER u1;
CREATE TABLE t1(a INT);
CREATE VIEW v1 AS SELECT * FROM t1;

CALL mtr.add_suppression("REVOKE failed while revoking all_privileges from a list of users.");

--enable_connect_log

--connect (con1, localhost, root,,)
# Set force_mysql_revoke_all_fail in order to simulate partial execution failure
# in mysql_revoke_all(). In this case execution flow go to the 'if' branch where
# mysql_bin_log.write_incident is called.
SET debug="+d,force_mysql_revoke_all_fail";
# When the sync point revoke_all_before_write_incident_to_binlog
# will be hit a write lock for LOCK_grant has already been acquired
# in mysql_revoke_all() and we are waiting for the signal revoke_all_cont
# be emitted to go inside mysql_bin_log.write_incident() where LOCK_open
# will be acquired.
SET DEBUG_SYNC='revoke_all_before_write_incident_to_binlog SIGNAL revoke_all_has_lock_grant WAIT_FOR revoke_all_cont';

--connection default
# Set the debug variable force_check_table_access_return_ok
# in order to avoid calling of check_grant as part of handling
# the statement SET DEBUG_SYNC="....". If we didn't do so we would be suspended on
# waiting for LOCK_grant be released that had been acquired on handling REVOKE ALL.
SET debug="+d,force_check_table_access_return_ok";

--connection con1
# Processing of the following REVOKE ALL will be suspended on
# the sync point revoke_all_before_write_incident_to_binlog waiting until
# the signal revoke_all_cont be emitted. While suspending it holds
# the lock LOCK_grant on write.
--echo # Sending REVOKE ALL PRIVILEGES
--send REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'u1'@'%'

--connection default
# In the default connection we are waiting until processing of the statement
# REVOKE ALL PRIVILEGES hit the sync point revoke_all_before_write_incident_to_binlog.
# When this happen the connection con1 holds LOCK_grant on write.
SET DEBUG_SYNC='now WAIT_FOR revoke_all_has_lock_grant';

# When processing the statement SHOW TABLE STATUS we will hit the sync point
# fill_effective_table_privileges that will emit signal revoke_all_cont.
# At this point we know that REVOKE ALL PRIVILEGES has already acquired LOCK_grant.
# Waken up thread that is handling REVOKE ALL PRIVILEGES will try to acquire
# LOCK_open while executing mysql_bin_log.write_incident().
SET DEBUG_SYNC='fill_effective_table_privileges SIGNAL revoke_all_cont';

--replace_column 12 x
# When there is a view while handling SHOW TABLE STATUS the function mysql_make_view()
# is called from open_table(). LOCK_open has been acquired within open_table before calling
# mysql_make_view and when we are trying to lock LOCK_grant on read from
# revoke_all_before_write_incident_to_binlog we would get a deadlock without the patch.
SHOW TABLE STATUS;

--connection con1
# Get execution result of REVOKE ALL PRIVILEGES.
# We expect the error ER_REVOKE_GRANTS since the debug variable force_mysql_revoke_all_fail
# was set to simulate failure of REVOKE ALL PRIVILEGES
--echo # Reaping REVOKE ALL PRIVILEGES
--error ER_REVOKE_GRANTS
--reap

--connection default
--disconnect con1
DROP USER u1;
DROP VIEW v1;
DROP TABLE t1;
# Wait till we reached the initial number of concurrent sessions
--source include/wait_until_count_sessions.inc
--disable_connect_log

SET debug='';


Man Man