mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.8 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 (`SELECT '$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 (`SELECT '$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;
 |