69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | # ==== Purpose ====
 | ||
|  | #
 | ||
|  | # Kill a query in the master connection, and then try to reap the
 | ||
|  | # result of the killed query.
 | ||
|  | #
 | ||
|  | # ==== Usage ====
 | ||
|  | # 
 | ||
|  | # The following variables should be set before sourcing this file.
 | ||
|  | #
 | ||
|  | # $debug_lock: name of the debug user lock, if set, will release/lock
 | ||
|  | #              the specified debug lock accordingly, and before
 | ||
|  | #              sourcing this, connection 'master' should get the user
 | ||
|  | #              lock and run a query in another thread, which will
 | ||
|  | #              block before creating statement event.
 | ||
|  | #
 | ||
|  | # $connection_name: name of the connection that is waiting for the
 | ||
|  | #                   lock, this can not be 'master'
 | ||
|  | #
 | ||
|  | # $connection_id: id of the connection that is waiting for the lock
 | ||
|  | #
 | ||
|  | # Example:
 | ||
|  | # let $debug_lock=;
 | ||
|  | # connection master1;
 | ||
|  | # let $connection_name= master1;
 | ||
|  | # let $connection_id= `SELECT CONNECTION_ID()`;
 | ||
|  | # send CREATE TABLE t1;
 | ||
|  | # source kill_query.inc;
 | ||
|  | #
 | ||
|  | # let $debug_lock= "debug_lock.before_query_log_event";
 | ||
|  | # connection master;
 | ||
|  | # eval SELECT GET_LOCK($debug_lock, 10);
 | ||
|  | # connection master1;
 | ||
|  | # let $connection_name= master1;
 | ||
|  | # let $connection_id= `SELECT CONNECTION_ID()`;
 | ||
|  | # send CREATE TABLE t1;
 | ||
|  | # source kill_query.inc;
 | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo source include/kill_query.inc; | ||
|  | disable_query_log; | ||
|  | disable_result_log; | ||
|  | connection master; | ||
|  | 
 | ||
|  | # kill the query that is waiting
 | ||
|  | eval kill query $connection_id; | ||
|  | 
 | ||
|  | if ($debug_lock) | ||
|  | { | ||
|  |   # release the lock to allow binlog continue
 | ||
|  |   eval SELECT RELEASE_LOCK($debug_lock); | ||
|  | } | ||
|  | 
 | ||
|  | # reap the result of the waiting query
 | ||
|  | connection $connection_name; | ||
|  | error 0, 1317, 1307, 1306, 1334, 1305, 1034; | ||
|  | reap; | ||
|  | 
 | ||
|  | connection master; | ||
|  | 
 | ||
|  | if ($debug_lock) | ||
|  | { | ||
|  |   # get lock again to make the next query wait
 | ||
|  |   eval SELECT GET_LOCK($debug_lock, 10); | ||
|  | } | ||
|  | 
 | ||
|  | connection $connection_name; | ||
|  | enable_query_log; | ||
|  | enable_result_log; |