mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-24 07:13:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| source include/master-slave.inc;
 | |
| 
 | |
| create table t1(n int);
 | |
| insert into t1 values(get_lock("lock",2));
 | |
| dirty_close master;
 | |
| connection master1;
 | |
| select get_lock("lock",2);
 | |
| 
 | |
| select release_lock("lock");
 | |
| #ignore 
 | |
| disable_query_log;
 | |
| let $1=2000;
 | |
| while ($1)
 | |
| {
 | |
|   do get_lock("lock",2);
 | |
|   do release_lock("lock");
 | |
|   dec $1;
 | |
| }
 | |
| enable_query_log;
 | |
| save_master_pos;
 | |
| connection slave;
 | |
| sync_with_master;
 | |
| select get_lock("lock",3);
 | |
| select * from t1;
 | |
| # There is no point in testing REPLICATIION of the IS_*_LOCK
 | |
| # functions; slave does not run with the same concurrency context as
 | |
| # master (generally in slave we can't know that on master this lock
 | |
| # was already held by another connection and so that the the
 | |
| # get_lock() we're replicating timed out on master hence returned 0,
 | |
| # or that the is_free_lock() we're playing returned 0 etc.
 | |
| # But here all we do is test these functions outside of replication.
 | |
| select is_free_lock("lock"), is_used_lock("lock") = connection_id();
 | |
| explain extended select is_free_lock("lock"), is_used_lock("lock");
 | |
| # Check lock functions
 | |
| select is_free_lock("lock2");
 | |
| select is_free_lock(NULL);
 | |
| connection master1;
 | |
| drop table t1;
 | |
| save_master_pos;
 | |
| connection slave;
 | |
| sync_with_master;
 | |
| 
 | |
| # End of 4.1 tests
 | 
