mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 92b2a911e5
			
		
	
	
	92b2a911e5
	
	
	
		
			
			In MDEV-515, we enabled an optimization where an insert into an
empty table will use table-level locking and undo logging.
This may break applications that expect row-level locking.
The SQL statements created by the mysqldump utility will include the
following:
    SET unique_checks=0, foreign_key_checks=0;
We will use these flags to enable the table-level locked and logged
insert. Unless the parameters are set, INSERT will be executed in
the old way, with row-level undo logging and implicit record locks.
		
	
			
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
| -- connect (con1,localhost,root,,)
 | |
| -- connect (con2,localhost,root,,)
 | |
| 
 | |
| -- connection con1
 | |
| # Enable MDEV-515 table-level undo logging for insert into empty table
 | |
| SET foreign_key_checks=0, unique_checks=0;
 | |
| SET autocommit=0;
 | |
| SELECT * FROM t1 FOR UPDATE;
 | |
| -- if ($con1_extra_sql_present) {
 | |
| 	-- eval $con1_extra_sql
 | |
| -- }
 | |
| 
 | |
| -- connection con2
 | |
| # Enable MDEV-515 table-level undo logging for insert into empty table
 | |
| SET foreign_key_checks=0, unique_checks=0;
 | |
| SET autocommit=0;
 | |
| SELECT * FROM t2 FOR UPDATE;
 | |
| -- if ($con2_extra_sql_present) {
 | |
| 	-- eval $con2_extra_sql
 | |
| -- }
 | |
| 
 | |
| -- if ($con1_should_be_rolledback) {
 | |
| 	-- connection con1
 | |
| 	-- send
 | |
| 	INSERT INTO t2 VALUES (0);
 | |
| 
 | |
| 	-- connection con2
 | |
| 	INSERT INTO t1 VALUES (0);
 | |
| 	ROLLBACK;
 | |
| 
 | |
| 	-- connection con1
 | |
| 	-- error ER_LOCK_DEADLOCK
 | |
| 	-- reap
 | |
| -- }
 | |
| # else
 | |
| -- if (!$con1_should_be_rolledback) {
 | |
| 	-- connection con2
 | |
| 	-- send
 | |
| 	INSERT INTO t1 VALUES (0);
 | |
| 
 | |
| 	-- connection con1
 | |
| 	INSERT INTO t2 VALUES (0);
 | |
| 	ROLLBACK;
 | |
| 
 | |
| 	-- connection con2
 | |
| 	-- error ER_LOCK_DEADLOCK
 | |
| 	-- reap
 | |
| -- }
 | |
| 
 | |
| -- connection default
 | |
| 
 | |
| DELETE FROM t5_nontrans;
 | |
| 
 | |
| -- disconnect con1
 | |
| -- disconnect con2
 |