mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 06:44:16 +01:00
2bf61233fa
The problem is that since MyISAM's concurrent_insert is on by default some concurrent SELECT statements might not see changes made by INSERT statements in other connections, even if the INSERT statement has returned. The solution is to disable concurrent_insert so that INSERT statements returns after the data is actually visible to other statements.
56 lines
1.3 KiB
Text
56 lines
1.3 KiB
Text
--source include/have_bug25714.inc
|
|
source include/federated.inc;
|
|
|
|
connection default;
|
|
|
|
# Disable concurrent inserts to avoid test failures when reading
|
|
# data from concurrent connections (insert might return before
|
|
# the data is actually in the table).
|
|
SET @OLD_CONCURRENT_INSERT= @@GLOBAL.CONCURRENT_INSERT;
|
|
SET @@GLOBAL.CONCURRENT_INSERT= 0;
|
|
|
|
connection slave;
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS federated.bug_13118_table;
|
|
--enable_warnings
|
|
|
|
CREATE TABLE federated.t1 (
|
|
`id` int auto_increment primary key,
|
|
`value` int
|
|
) ENGINE=MyISAM;
|
|
INSERT INTO federated.t1 SET value=1;
|
|
INSERT INTO federated.t1 SET value=2;
|
|
INSERT INTO federated.t1 SET value=2;
|
|
|
|
connection master;
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS federated.t1;
|
|
--enable_warnings
|
|
|
|
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
|
eval CREATE TABLE federated.t1 (
|
|
`id` int auto_increment primary key,
|
|
`value` int
|
|
) ENGINE=FEDERATED
|
|
CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1';
|
|
|
|
SELECT * from federated.t1;
|
|
|
|
INSERT INTO federated.t1 SET value=4;
|
|
|
|
SELECT LAST_INSERT_ID();
|
|
|
|
--exec $MYSQL_BUG25714 $SLAVE_MYPORT
|
|
--exec $MYSQL_BUG25714 $MASTER_MYPORT
|
|
|
|
SELECT * from federated.t1;
|
|
|
|
DROP TABLE federated.t1;
|
|
connection slave;
|
|
DROP TABLE federated.t1;
|
|
|
|
source include/federated_cleanup.inc;
|
|
|
|
connection default;
|
|
|
|
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_CONCURRENT_INSERT;
|