421 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			421 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| ###################### t/debug_sync.test ###############################
 | |
| #                                                                      #
 | |
| # Testing of the Debug Sync Facility.                                  #
 | |
| #                                                                      #
 | |
| # There is important documentation within sql/debug_sync.cc            #
 | |
| #                                                                      #
 | |
| # Used objects in this test case:                                      #
 | |
| # p0 - synchronization point 0. Non-existent dummy sync point.         #
 | |
| # s1 - signal 1.                                                       #
 | |
| # s2 - signal 2.                                                       #
 | |
| #                                                                      #
 | |
| # Creation:                                                            #
 | |
| # 2008-02-18 istruewing                                                #
 | |
| #                                                                      #
 | |
| ########################################################################
 | |
| 
 | |
| #
 | |
| # We need the Debug Sync Facility.
 | |
| #
 | |
| --source include/have_debug_sync.inc
 | |
| 
 | |
| #
 | |
| # We are checking privileges, which the embedded server cannot do.
 | |
| #
 | |
| --source include/not_embedded.inc
 | |
| 
 | |
| #
 | |
| # Preparative cleanup.
 | |
| #
 | |
| --disable_warnings
 | |
| SET DEBUG_SYNC= 'RESET';
 | |
| DROP TABLE IF EXISTS t1;
 | |
| --enable_warnings
 | |
| 
 | |
| #
 | |
| # Show the special system variable.
 | |
| # It shows ON or OFF depending on the command line option --debug-sync.
 | |
| # The test case assumes it is ON (command line option present).
 | |
| #
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| 
 | |
| #
 | |
| # Syntax. Valid forms.
 | |
| #
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6 EXECUTE 2 HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6 EXECUTE 2';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6           HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2           EXECUTE 2 HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2           EXECUTE 2';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2                     HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1                       EXECUTE 2 HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1                       EXECUTE 2';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1                                 HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1';
 | |
| SET DEBUG_SYNC='p0           WAIT_FOR s2 TIMEOUT 6 EXECUTE 2 HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0           WAIT_FOR s2 TIMEOUT 6 EXECUTE 2';
 | |
| SET DEBUG_SYNC='p0           WAIT_FOR s2 TIMEOUT 6           HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0           WAIT_FOR s2 TIMEOUT 6';
 | |
| SET DEBUG_SYNC='p0           WAIT_FOR s2           EXECUTE 2 HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0           WAIT_FOR s2           EXECUTE 2';
 | |
| SET DEBUG_SYNC='p0           WAIT_FOR s2                     HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0           WAIT_FOR s2';
 | |
| SET DEBUG_SYNC='p0                                           HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='p0 CLEAR';
 | |
| SET DEBUG_SYNC='p0 TEST';
 | |
| SET DEBUG_SYNC='RESET';
 | |
| 
 | |
| #
 | |
| # Syntax. Valid forms. Lower case.
 | |
| #
 | |
| set debug_sync='p0 signal s1 wait_for s2 timeout 6 execute 2 hit_limit 3';
 | |
| set debug_sync='p0 signal s1 wait_for s2 timeout 6 execute 2';
 | |
| set debug_sync='p0 signal s1 wait_for s2 timeout 6           hit_limit 3';
 | |
| set debug_sync='p0 signal s1 wait_for s2 timeout 6';
 | |
| set debug_sync='p0 signal s1 wait_for s2           execute 2 hit_limit 3';
 | |
| set debug_sync='p0 signal s1 wait_for s2           execute 2';
 | |
| set debug_sync='p0 signal s1 wait_for s2                     hit_limit 3';
 | |
| set debug_sync='p0 signal s1 wait_for s2';
 | |
| set debug_sync='p0 signal s1                       execute 2 hit_limit 3';
 | |
| set debug_sync='p0 signal s1                       execute 2';
 | |
| set debug_sync='p0 signal s1                                 hit_limit 3';
 | |
| set debug_sync='p0 signal s1';
 | |
| set debug_sync='p0           wait_for s2 timeout 6 execute 2 hit_limit 3';
 | |
| set debug_sync='p0           wait_for s2 timeout 6 execute 2';
 | |
| set debug_sync='p0           wait_for s2 timeout 6           hit_limit 3';
 | |
| set debug_sync='p0           wait_for s2 timeout 6';
 | |
| set debug_sync='p0           wait_for s2           execute 2 hit_limit 3';
 | |
| set debug_sync='p0           wait_for s2           execute 2';
 | |
| set debug_sync='p0           wait_for s2                     hit_limit 3';
 | |
| set debug_sync='p0           wait_for s2';
 | |
| set debug_sync='p0                                           hit_limit 3';
 | |
| set debug_sync='p0 clear';
 | |
| set debug_sync='p0 test';
 | |
| set debug_sync='reset';
 | |
| 
 | |
| #
 | |
| # Syntax. Valid forms. Line wrap, leading, mid, trailing space.
 | |
| #
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6
 | |
|                 EXECUTE 2 HIT_LIMIT 3';
 | |
| SET DEBUG_SYNC='   p0 SIGNAL s1 WAIT_FOR s2';
 | |
| SET DEBUG_SYNC='p0    SIGNAL    s1    WAIT_FOR    s2';
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2   ';
 | |
| SET DEBUG_SYNC='   p0 SIGNAL s1 WAIT_FOR s2   ';
 | |
| SET DEBUG_SYNC='   p0    SIGNAL    s1    WAIT_FOR    s2   ';
 | |
| 
 | |
| #
 | |
| # Syntax. Invalid forms.
 | |
| #
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC=' ';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0                                          EXECUTE 2';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0                                TIMEOUT 6 EXECUTE 2';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0                                TIMEOUT 6';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR s2 SIGNAL s1';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR s2 SIGNAL s1           EXECUTE 2';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR s2 SIGNAL s1 TIMEOUT 6 EXECUTE 2';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR s2 SIGNAL s1 TIMEOUT 6';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR s2 TIMEOUT 6 SIGNAL s1 EXECUTE 2';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR s2 TIMEOUT 6 SIGNAL s1';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 TIMEOUT 6 WAIT_FOR s2 EXECUTE 2';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 TIMEOUT 6 WAIT_FOR s2';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0                  SIGNAL s1 TIMEOUT 6 EXECUTE 2';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0                  SIGNAL s1 TIMEOUT 6';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 EXECUTE 2 SIGNAL s1 TIMEOUT 6';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 TIMEOUT 6 SIGNAL s1';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 EXECUTE 2 TIMEOUT 6 SIGNAL s1';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 CLEAR HIT_LIMIT 3';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='CLEAR';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 CLEAR p0';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='TEST';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 TEST p0';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 RESET';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='RESET p0';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 RESET p0';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 SIGNAL ';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR ';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 EXECUTE ';
 | |
| 
 | |
| #
 | |
| # Syntax. Invalid keywords used.
 | |
| #
 | |
| --error ER_UNKNOWN_SYSTEM_VARIABLE
 | |
| SET DEBUG_SYNCx='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6 EXECUTE 2 HIT_LIMIT 3';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 SIGNAx s1 WAIT_FOR s2 TIMEOUT 6 EXECUTE 2 HIT_LIMIT 3';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOx s2 TIMEOUT 6 EXECUTE 2 HIT_LIMIT 3';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUx 0 EXECUTE 2 HIT_LIMIT 3';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6 EXECUTx 2 HIT_LIMIT 3';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 SIGNAL s1 WAIT_FOR s2 TIMEOUT 6 EXECUTE 2 HIT_LIMIx 3';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 CLEARx';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 TESTx';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='RESETx';
 | |
| 
 | |
| #
 | |
| # Syntax. Invalid numbers. Decimal only.
 | |
| #
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR s2 TIMEOUT 0x6 EXECUTE 2 HIT_LIMIT 3';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR s2 TIMEOUT 6 EXECUTE 0x2 HIT_LIMIT 3';
 | |
| --error ER_PARSE_ERROR
 | |
| SET DEBUG_SYNC='p0 WAIT_FOR s2 TIMEOUT 7 EXECUTE 2 HIT_LIMIT 0x3';
 | |
| 
 | |
| #
 | |
| # Syntax. Invalid value type.
 | |
| #
 | |
| --error ER_WRONG_TYPE_FOR_VAR
 | |
| SET DEBUG_SYNC= 7;
 | |
| 
 | |
| #
 | |
| # Syntax. DEBUG_SYNC is a SESSION-only variable.
 | |
| #
 | |
| --error ER_LOCAL_VARIABLE
 | |
| SET GLOBAL DEBUG_SYNC= 'p0 CLEAR';
 | |
| 
 | |
| #
 | |
| # Syntax. The variable value does not need to be a string literal.
 | |
| #
 | |
| SET @myvar= 'now SIGNAL from_myvar';
 | |
| SET DEBUG_SYNC= @myvar;
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| #
 | |
| SET DEBUG_SYNC= LEFT('now SIGNAL from_function_cut_here', 24);
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| 
 | |
| #
 | |
| # Functional tests.
 | |
| #
 | |
| # NOTE: There is the special synchronization point 'now'. It is placed
 | |
| #       immediately after setting of the DEBUG_SYNC variable.
 | |
| #       So it is executed before the SET statement ends.
 | |
| #
 | |
| # NOTE: There is only one global signal (say "signal post" or "flag mast").
 | |
| #       A SIGNAL action writes its signal into it ("sets a flag").
 | |
| #       The signal persists until explicitly overwritten.
 | |
| #       To avoid confusion for later tests, it is recommended to clear
 | |
| #       the signal by signalling "empty" ("setting the 'empty' flag"):
 | |
| #       SET DEBUG_SYNC= 'now SIGNAL empty';
 | |
| #       Preferably you can reset the whole facility with:
 | |
| #       SET DEBUG_SYNC= 'RESET';
 | |
| #       The signal is then '' (really empty) which connot be done otherwise.
 | |
| #
 | |
| 
 | |
| #
 | |
| # Time out immediately. This gives just a warning.
 | |
| #
 | |
| SET DEBUG_SYNC= 'now SIGNAL something';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| # Suppress warning number
 | |
| --replace_column 2 ####
 | |
| SET DEBUG_SYNC= 'now WAIT_FOR nothing TIMEOUT 0';
 | |
| #
 | |
| # If signal is present already, TIMEOUT 0 does not give a warning.
 | |
| #
 | |
| SET DEBUG_SYNC= 'now SIGNAL nothing';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| SET DEBUG_SYNC= 'now WAIT_FOR nothing TIMEOUT 0';
 | |
| 
 | |
| #
 | |
| # EXECUTE 0 is effectively a no-op.
 | |
| #
 | |
| SET DEBUG_SYNC= 'now SIGNAL something EXECUTE 0';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| SET DEBUG_SYNC= 'now WAIT_FOR anotherthing TIMEOUT 0 EXECUTE 0';
 | |
| 
 | |
| #
 | |
| # Run into HIT_LIMIT. This gives an error.
 | |
| #
 | |
| --error ER_DEBUG_SYNC_HIT_LIMIT
 | |
| SET DEBUG_SYNC= 'now HIT_LIMIT 1';
 | |
| 
 | |
| #
 | |
| # Many actions. Watch the array growing and shrinking in the debug trace:
 | |
| # egrep 'query:|debug_sync_action:' mysql-test/var/log/master.trace
 | |
| #
 | |
| SET DEBUG_SYNC= 'RESET';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| SET DEBUG_SYNC= 'p1abcd   SIGNAL s1 EXECUTE 2';
 | |
| SET DEBUG_SYNC= 'p2abc    SIGNAL s2 EXECUTE 2';
 | |
| SET DEBUG_SYNC= 'p9abcdef SIGNAL s9 EXECUTE 2';
 | |
| SET DEBUG_SYNC= 'p4a      SIGNAL s4 EXECUTE 2';
 | |
| SET DEBUG_SYNC= 'p5abcde  SIGNAL s5 EXECUTE 2';
 | |
| SET DEBUG_SYNC= 'p6ab     SIGNAL s6 EXECUTE 2';
 | |
| SET DEBUG_SYNC= 'p7       SIGNAL s7 EXECUTE 2';
 | |
| SET DEBUG_SYNC= 'p8abcdef SIGNAL s8 EXECUTE 2';
 | |
| SET DEBUG_SYNC= 'p3abcdef SIGNAL s3 EXECUTE 2';
 | |
| #
 | |
| # Execute some actions to show they exist. Each sets a distinct signal.
 | |
| #
 | |
| SET DEBUG_SYNC= 'p4a      TEST';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| SET DEBUG_SYNC= 'p1abcd   TEST';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| SET DEBUG_SYNC= 'p7       TEST';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| SET DEBUG_SYNC= 'p9abcdef TEST';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| SET DEBUG_SYNC= 'p3abcdef TEST';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| #
 | |
| # Clear the actions.
 | |
| #
 | |
| SET DEBUG_SYNC= 'p1abcd   CLEAR';
 | |
| SET DEBUG_SYNC= 'p2abc    CLEAR';
 | |
| SET DEBUG_SYNC= 'p5abcde  CLEAR';
 | |
| SET DEBUG_SYNC= 'p6ab     CLEAR';
 | |
| SET DEBUG_SYNC= 'p8abcdef CLEAR';
 | |
| SET DEBUG_SYNC= 'p9abcdef CLEAR';
 | |
| SET DEBUG_SYNC= 'p3abcdef CLEAR';
 | |
| SET DEBUG_SYNC= 'p4a      CLEAR';
 | |
| SET DEBUG_SYNC= 'p7       CLEAR';
 | |
| #
 | |
| # Execute some actions to show they have gone.
 | |
| #
 | |
| SET DEBUG_SYNC= 'p1abcd   TEST';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| SET DEBUG_SYNC= 'p7       TEST';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| SET DEBUG_SYNC= 'p9abcdef TEST';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| #
 | |
| # Now cleanup. Actions are clear already, but signal needs to be cleared.
 | |
| #
 | |
| SET DEBUG_SYNC= 'RESET';
 | |
| SHOW VARIABLES LIKE 'DEBUG_SYNC';
 | |
| 
 | |
| #
 | |
| # Facility requires SUPER privilege.
 | |
| #
 | |
| CREATE USER mysqltest_1@localhost;
 | |
| GRANT SUPER ON *.* TO mysqltest_1@localhost;
 | |
| --echo connection con1, mysqltest_1
 | |
| connect (con1,localhost,mysqltest_1,,);
 | |
| SET DEBUG_SYNC= 'RESET';
 | |
| disconnect con1;
 | |
| --echo connection default
 | |
| connection default;
 | |
| DROP USER mysqltest_1@localhost;
 | |
| #
 | |
| CREATE USER mysqltest_2@localhost;
 | |
| GRANT ALL ON *.* TO mysqltest_2@localhost;
 | |
| REVOKE SUPER ON *.* FROM mysqltest_2@localhost;
 | |
| --echo connection con1, mysqltest_2
 | |
| connect (con1,localhost,mysqltest_2,,);
 | |
| --error ER_SPECIFIC_ACCESS_DENIED_ERROR
 | |
| SET DEBUG_SYNC= 'RESET';
 | |
| disconnect con1;
 | |
| --echo connection default
 | |
| connection default;
 | |
| DROP USER mysqltest_2@localhost;
 | |
| 
 | |
| #
 | |
| # Example 1.
 | |
| #
 | |
| # Preparative cleanup.
 | |
| --disable_warnings
 | |
| SET DEBUG_SYNC= 'RESET';
 | |
| DROP TABLE IF EXISTS t1;
 | |
| --enable_warnings
 | |
| #
 | |
| # Test.
 | |
| CREATE TABLE t1 (c1 INT);
 | |
|     --echo connection con1
 | |
|     connect (con1,localhost,root,,);
 | |
|     SET DEBUG_SYNC= 'before_lock_tables_takes_lock
 | |
|       SIGNAL opened WAIT_FOR flushed';
 | |
|     send INSERT INTO t1 VALUES(1);
 | |
| --echo connection default
 | |
| connection default;
 | |
| SET DEBUG_SYNC= 'now WAIT_FOR opened';
 | |
| SET DEBUG_SYNC= 'after_flush_unlock SIGNAL flushed';
 | |
| FLUSH TABLE t1;
 | |
|     --echo connection con1
 | |
|     connection con1;
 | |
|     reap;
 | |
|     disconnect con1;
 | |
| --echo connection default
 | |
| connection default;
 | |
| DROP TABLE t1;
 | |
| 
 | |
| #
 | |
| # Example 2.
 | |
| #
 | |
| # Preparative cleanup.
 | |
| --disable_warnings
 | |
| SET DEBUG_SYNC= 'RESET';
 | |
| DROP TABLE IF EXISTS t1;
 | |
| --enable_warnings
 | |
| #
 | |
| # Test.
 | |
| CREATE TABLE t1 (c1 INT);
 | |
| LOCK TABLE t1 WRITE;
 | |
|     --echo connection con1
 | |
|     connect (con1,localhost,root,,);
 | |
|     # Retain action after use. First used by general_log.
 | |
|     SET DEBUG_SYNC= 'wait_for_lock SIGNAL locked EXECUTE 2';
 | |
|     send INSERT INTO t1 VALUES (1);
 | |
| --echo connection default
 | |
| connection default;
 | |
| # Wait until INSERT waits for lock.
 | |
| SET DEBUG_SYNC= 'now WAIT_FOR locked';
 | |
| # let INSERT continue.
 | |
| UNLOCK TABLES;
 | |
|     --echo connection con1
 | |
|     connection con1;
 | |
|     --echo retrieve INSERT result.
 | |
|     reap;
 | |
|     disconnect con1;
 | |
| --echo connection default
 | |
| connection default;
 | |
| DROP TABLE t1;
 | |
| 
 | |
| #
 | |
| # Cleanup after test case.
 | |
| # Otherwise signal would contain 'flushed' here,
 | |
| # which could confuse the next test.
 | |
| #
 | |
| SET DEBUG_SYNC= 'RESET';
 | |
| 
 |