mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Bug#44664: valgrind warning for COMMIT_AND_CHAIN and ROLLBACK_AND_CHAIN
The problem is that the internal variable used to specify a transaction with consistent read was being used outside the processing context of a START TRANSACTION WITH CONSISTENT SNAPSHOT statement. The practical consequence was that a consistent snapshot specification could leak to unrelated transactions on the same session. The solution is to ensure a consistent snapshot clause is only relied upon for the START TRANSACTION statement. This is already fixed in a similar way on 6.0.
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
# Establish connection con1 (user=root)
|
||||
# Establish connection con2 (user=root)
|
||||
### Test 1:
|
||||
### - While a consistent snapshot transaction is executed,
|
||||
### no external inserts should be visible to the transaction.
|
||||
# Switch to connection con1
|
||||
CREATE TABLE t1 (a INT) ENGINE=innodb;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
@@ -10,6 +13,9 @@ INSERT INTO t1 VALUES(1);
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
COMMIT;
|
||||
### Test 2:
|
||||
### - For any non-consistent snapshot transaction, external
|
||||
### committed inserts should be visible to the transaction.
|
||||
DELETE FROM t1;
|
||||
START TRANSACTION;
|
||||
# Switch to connection con2
|
||||
@@ -19,5 +25,18 @@ SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
COMMIT;
|
||||
### Test 3:
|
||||
### - Bug#44664: valgrind warning for COMMIT_AND_CHAIN and ROLLBACK_AND_CHAIN
|
||||
### Chaining a transaction does not retain consistency level.
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
DELETE FROM t1;
|
||||
COMMIT WORK AND CHAIN;
|
||||
# Switch to connection con2
|
||||
INSERT INTO t1 VALUES(1);
|
||||
# Switch to connection con1
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
COMMIT;
|
||||
# Switch to connection default + close connections con1 and con2
|
||||
DROP TABLE t1;
|
||||
|
||||
Reference in New Issue
Block a user