mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	Post merge fixes. In sys_vars tests suite, whenever we use LOCK TABLE WRITE, adjust to lock the subject table indirecty via a view, to ensure that there the desired lock conflict in thr_lock.c is still taking place. If locked directly in LOCK TABLES list, thr_lock.c does not get involved. Adjust the thread wait state names in information_schema.processlist.
		
			
				
	
	
		
			122 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
DROP TABLE IF EXISTS t1;
 | 
						|
## Creating new table ##
 | 
						|
CREATE TABLE t1
 | 
						|
(
 | 
						|
name VARCHAR(30)
 | 
						|
);
 | 
						|
'#--------------------FN_DYNVARS_018_01-------------------------#'
 | 
						|
SET @start_value= @@global.concurrent_insert;
 | 
						|
## Setting initial value of variable to 1 ##
 | 
						|
SET @@global.concurrent_insert = 1;
 | 
						|
INSERT INTO t1(name) VALUES('Record_1');
 | 
						|
INSERT INTO t1(name) VALUES('Record_2');
 | 
						|
INSERT INTO t1(name) VALUES('Record_3');
 | 
						|
## locking table ##
 | 
						|
LOCK TABLE t1 READ LOCAL;
 | 
						|
## Creating new connection to insert some rows in table ##
 | 
						|
connection test_con1;
 | 
						|
## New records should come at the end of all rows ##
 | 
						|
INSERT INTO t1(name) VALUES('Record_4');
 | 
						|
SELECT * FROM t1;
 | 
						|
name
 | 
						|
Record_1
 | 
						|
Record_2
 | 
						|
Record_3
 | 
						|
Record_4
 | 
						|
## unlocking tables ##
 | 
						|
connection default;
 | 
						|
UNLOCK TABLES;
 | 
						|
## deleting record to create hole in table ##
 | 
						|
DELETE FROM t1 WHERE name ='Record_2';
 | 
						|
'#--------------------FN_DYNVARS_018_02-------------------------#'
 | 
						|
LOCK TABLE t1 READ LOCAL;
 | 
						|
connection test_con1;
 | 
						|
SET @@global.concurrent_insert=1;
 | 
						|
## send INSERT which should be blocked until unlock of the table ##
 | 
						|
INSERT INTO t1(name) VALUES('Record_7');
 | 
						|
connection default;
 | 
						|
## show processlist info and state ##
 | 
						|
SELECT state,info FROM INFORMATION_SCHEMA.PROCESSLIST
 | 
						|
WHERE state= "Table lock" AND info LIKE "INSERT INTO t1%";
 | 
						|
state	info
 | 
						|
Table lock	INSERT INTO t1(name) VALUES('Record_7')
 | 
						|
## table contents befor UNLOCK ##
 | 
						|
SELECT * FROM t1;
 | 
						|
name
 | 
						|
Record_1
 | 
						|
Record_3
 | 
						|
Record_4
 | 
						|
UNLOCK TABLES;
 | 
						|
## table contens after UNLOCK ##
 | 
						|
SELECT * FROM t1;
 | 
						|
name
 | 
						|
Record_1
 | 
						|
Record_7
 | 
						|
Record_3
 | 
						|
Record_4
 | 
						|
INSERT INTO t1(name) VALUES('Record_6');
 | 
						|
connection test_con1;
 | 
						|
SELECT * FROM t1;
 | 
						|
name
 | 
						|
Record_1
 | 
						|
Record_7
 | 
						|
Record_3
 | 
						|
Record_4
 | 
						|
Record_6
 | 
						|
connection default;
 | 
						|
'#--------------------FN_DYNVARS_018_03-------------------------#'
 | 
						|
## lock table and connect with connection1 ##
 | 
						|
LOCK TABLE t1 READ LOCAL;
 | 
						|
connection test_con1;
 | 
						|
## setting value of concurrent_insert to 2 ##
 | 
						|
SET @@global.concurrent_insert=2;
 | 
						|
## Inserting record in table, record should go at the end of the table ##
 | 
						|
INSERT INTO t1(name) VALUES('Record_5');
 | 
						|
SELECT * FROM t1;
 | 
						|
name
 | 
						|
Record_1
 | 
						|
Record_7
 | 
						|
Record_3
 | 
						|
Record_4
 | 
						|
Record_6
 | 
						|
Record_5
 | 
						|
SELECT @@concurrent_insert;
 | 
						|
@@concurrent_insert
 | 
						|
ALWAYS
 | 
						|
connection default;
 | 
						|
## Unlocking table ##
 | 
						|
UNLOCK TABLES;
 | 
						|
SELECT * FROM t1;
 | 
						|
name
 | 
						|
Record_1
 | 
						|
Record_7
 | 
						|
Record_3
 | 
						|
Record_4
 | 
						|
Record_6
 | 
						|
Record_5
 | 
						|
## Inserting new row, this should go in the hole ##
 | 
						|
INSERT INTO t1(name) VALUES('Record_6');
 | 
						|
SELECT * FROM t1;
 | 
						|
name
 | 
						|
Record_1
 | 
						|
Record_7
 | 
						|
Record_3
 | 
						|
Record_4
 | 
						|
Record_6
 | 
						|
Record_5
 | 
						|
Record_6
 | 
						|
## connection test_con1 ##
 | 
						|
DELETE FROM t1 WHERE name ='Record_3';
 | 
						|
SELECT * FROM t1;
 | 
						|
name
 | 
						|
Record_1
 | 
						|
Record_7
 | 
						|
Record_4
 | 
						|
Record_6
 | 
						|
Record_5
 | 
						|
Record_6
 | 
						|
## Dropping table ##
 | 
						|
DROP TABLE t1;
 | 
						|
## Disconnecting connection ##
 | 
						|
SET @@global.concurrent_insert= @start_value;
 |