mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 12:56:14 +01:00 
			
		
		
		
	When binlog is disabled, WSREP will not behave correctly when SAVEPOINT ROLLBACK is executed and we will not rollback transaction.
		
			
				
	
	
		
			60 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#
 | 
						|
# SAVEPOINT ROLLBACK can introduce inconsistency in cluster.
 | 
						|
#
 | 
						|
 | 
						|
--source include/galera_cluster.inc
 | 
						|
 | 
						|
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY);
 | 
						|
 | 
						|
START TRANSACTION;
 | 
						|
INSERT INTO t1 VALUES (1);
 | 
						|
SAVEPOINT sp1;
 | 
						|
INSERT INTO t1 VALUES (2);
 | 
						|
ROLLBACK TO SAVEPOINT sp1;
 | 
						|
COMMIT;
 | 
						|
 | 
						|
SELECT COUNT(*) = 1 FROM t1;
 | 
						|
 | 
						|
--connection node_2
 | 
						|
SELECT COUNT(*) = 1 FROM t1;
 | 
						|
 | 
						|
--connection node_1
 | 
						|
DELETE FROM t1;
 | 
						|
 | 
						|
START TRANSACTION;
 | 
						|
SAVEPOINT sp1;
 | 
						|
INSERT INTO t1 VALUES (1);
 | 
						|
SAVEPOINT sp2;
 | 
						|
INSERT INTO t1 VALUES (2);
 | 
						|
ROLLBACK TO SAVEPOINT sp2;
 | 
						|
ROLLBACK TO SAVEPOINT sp1;
 | 
						|
COMMIT;
 | 
						|
 | 
						|
SELECT COUNT(*) = 0 FROM t1;
 | 
						|
--connection node_2
 | 
						|
SELECT COUNT(*) = 0 FROM t1;
 | 
						|
 | 
						|
--connection node_1
 | 
						|
DELETE FROM t1;
 | 
						|
 | 
						|
START TRANSACTION;
 | 
						|
SAVEPOINT sp1;
 | 
						|
INSERT INTO t1 VALUES (1);
 | 
						|
INSERT INTO t1 VALUES (2);
 | 
						|
INSERT INTO t1 VALUES (3);
 | 
						|
INSERT INTO t1 VALUES (4);
 | 
						|
SAVEPOINT sp2;
 | 
						|
INSERT INTO t1 VALUES (5);
 | 
						|
ROLLBACK TO SAVEPOINT sp2;
 | 
						|
INSERT INTO t1 VALUES (6);
 | 
						|
INSERT INTO t1 VALUES (7);
 | 
						|
ROLLBACK TO SAVEPOINT sp1;
 | 
						|
INSERT INTO t1 VALUES (8);
 | 
						|
COMMIT;
 | 
						|
 | 
						|
SELECT COUNT(*) = 1 FROM t1;
 | 
						|
 | 
						|
--connection node_2
 | 
						|
SELECT COUNT(*) = 1 FROM t1;
 | 
						|
 | 
						|
DROP TABLE t1;
 |