mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
cb6cb742f3
Problem was that partitioning cached the table flags. These flags could change due to TRANSACTION LEVEL changes. Solution was to remove the cache and always return the table flags from the first partition (if the handler was initialized).
48 lines
999 B
Text
48 lines
999 B
Text
# connection default
|
|
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
CREATE TABLE t1
|
|
(
|
|
id SMALLINT NOT NULL,
|
|
PRIMARY KEY (id)
|
|
) ENGINE=innodb
|
|
PARTITION BY RANGE (id)
|
|
(
|
|
PARTITION p1 VALUES LESS THAN (2),
|
|
PARTITION p2 VALUES LESS THAN (4),
|
|
PARTITION p3 VALUES LESS THAN (10)
|
|
);
|
|
INSERT INTO t1 VALUES (1),(2),(3);
|
|
# Test READ COMMITTED -> REPEATABLE READ
|
|
FLUSH TABLES;
|
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
BEGIN;
|
|
SELECT * FROM t1;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
#connection con1
|
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
BEGIN;
|
|
INSERT INTO t1 VALUES(7);
|
|
COMMIT;
|
|
# connection default
|
|
COMMIT;
|
|
FLUSH TABLES;
|
|
# Test REPEATABLE READ -> READ COMMITTED
|
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
BEGIN;
|
|
SELECT * FROM t1;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
7
|
|
# connection con1
|
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
BEGIN;
|
|
INSERT INTO t1 VALUES(9);
|
|
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
|
|
COMMIT;
|
|
COMMIT;
|
|
DROP TABLE t1;
|