56 changed files with 1313 additions and 274 deletions
-
4cmake/cpack_rpm.cmake
-
146mysql-test/main/derived_cond_pushdown.result
-
22mysql-test/main/derived_cond_pushdown.test
-
2mysql-test/main/derived_view.result
-
72mysql-test/main/insert.result
-
56mysql-test/main/insert.test
-
2mysql-test/main/insert_returning.result
-
2mysql-test/main/insert_returning.test
-
129mysql-test/main/insert_select.result
-
56mysql-test/main/insert_select.test
-
12mysql-test/main/lowercase_view.result
-
12mysql-test/main/lowercase_view.test
-
17mysql-test/main/merge.result
-
17mysql-test/main/merge.test
-
20mysql-test/main/multi_update.result
-
28mysql-test/main/multi_update.test
-
23mysql-test/main/query_cache.result
-
22mysql-test/main/query_cache.test
-
2mysql-test/main/sp-no-valgrind.test
-
20mysql-test/main/subselect.result
-
10mysql-test/main/subselect.test
-
12mysql-test/main/subselect_elimination.result
-
7mysql-test/main/subselect_elimination.test
-
20mysql-test/main/subselect_no_exists_to_in.result
-
20mysql-test/main/subselect_no_mat.result
-
20mysql-test/main/subselect_no_opts.result
-
20mysql-test/main/subselect_no_scache.result
-
20mysql-test/main/subselect_no_semijoin.result
-
49mysql-test/main/view.result
-
30mysql-test/main/view.test
-
1mysql-test/suite/galera/r/galera_as_slave_nonprim.result
-
80mysql-test/suite/galera/r/galera_toi_ddl_nonconflicting.result
-
6mysql-test/suite/galera/r/galera_var_replicate_myisam_on.result
-
6mysql-test/suite/galera/t/galera_as_slave_nonprim.test
-
60mysql-test/suite/galera/t/galera_toi_ddl_nonconflicting.test
-
39mysql-test/suite/galera/t/galera_var_ignore_apply_errors.test
-
64mysql-test/suite/galera/t/galera_var_replicate_myisam_on.test
-
1mysql-test/suite/sql_sequence/other.result
-
1mysql-test/suite/sql_sequence/other.test
-
12sql/item.h
-
24sql/item_subselect.cc
-
1sql/item_subselect.h
-
9sql/mysqld.cc
-
80sql/sql_base.cc
-
2sql/sql_base.h
-
2sql/sql_cache.cc
-
98sql/sql_insert.cc
-
2sql/sql_insert.h
-
45sql/sql_lex.cc
-
4sql/sql_lex.h
-
4sql/sql_prepare.cc
-
3sql/sql_update.cc
-
2sql/table.h
-
5support-files/mariadb.service.in
-
5support-files/mariadb@.service.in
-
159tests/mysql_client_test.c
@ -1,29 +1,69 @@ |
|||
connection node_2; |
|||
connection node_1; |
|||
connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; |
|||
connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; |
|||
connection node_1; |
|||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 INTEGER); |
|||
INSERT INTO t1(f2) SELECT seq FROM seq_1_to_1000; |
|||
connection node_2a; |
|||
SET SESSION wsrep_sync_wait=0; |
|||
connection node_1a; |
|||
# Block the applier on node_1 and issue a ddl from node_2 |
|||
SET SESSION wsrep_sync_wait=0; |
|||
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; |
|||
connection node_2; |
|||
ALTER TABLE t1 ADD COLUMN f3 INTEGER; INSERT INTO t1 (f1, f2) VALUES (DEFAULT, 123);; |
|||
# DDL 1 |
|||
ALTER TABLE t1 ADD COLUMN f3 INTEGER; INSERT INTO t1 VALUES (NULL, 10000, 10000);; |
|||
connection node_1a; |
|||
SET SESSION wsrep_on = 0; |
|||
SET SESSION wsrep_on = 1; |
|||
SET GLOBAL wsrep_provider_options = 'dbug='; |
|||
# This will block on acquiring total order isolation |
|||
connection node_1; |
|||
# DDL 2 |
|||
CREATE UNIQUE INDEX i1 ON t1(f2);; |
|||
connection node_1a; |
|||
# Signal DDL 1 |
|||
SET GLOBAL wsrep_provider_options = 'dbug='; |
|||
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; |
|||
connection node_2; |
|||
connection node_1; |
|||
connection node_2; |
|||
INSERT INTO t1 (f1, f2) VALUES (DEFAULT, 234); |
|||
SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
COUNT(*) = 3 |
|||
1 |
|||
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
COUNT(*) = 2 |
|||
1 |
|||
SELECT COUNT(*) = 2 FROM t1; |
|||
COUNT(*) = 2 |
|||
1 |
|||
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
EXPECT_3 |
|||
3 |
|||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
EXPECT_2 |
|||
2 |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`f1` int(11) NOT NULL AUTO_INCREMENT, |
|||
`f2` int(11) DEFAULT NULL, |
|||
`f3` int(11) DEFAULT NULL, |
|||
PRIMARY KEY (`f1`), |
|||
UNIQUE KEY `i1` (`f2`) |
|||
) ENGINE=InnoDB AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci |
|||
SELECT COUNT(*) AS EXPECT_1001 FROM t1; |
|||
EXPECT_1001 |
|||
1001 |
|||
connection node_1; |
|||
SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
COUNT(*) = 3 |
|||
1 |
|||
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
COUNT(*) = 2 |
|||
1 |
|||
SELECT COUNT(*) = 2 FROM t1; |
|||
COUNT(*) = 2 |
|||
1 |
|||
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
EXPECT_3 |
|||
3 |
|||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
EXPECT_2 |
|||
2 |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`f1` int(11) NOT NULL AUTO_INCREMENT, |
|||
`f2` int(11) DEFAULT NULL, |
|||
`f3` int(11) DEFAULT NULL, |
|||
PRIMARY KEY (`f1`), |
|||
UNIQUE KEY `i1` (`f2`) |
|||
) ENGINE=InnoDB AUTO_INCREMENT=2047 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci |
|||
SELECT COUNT(*) AS EXPECT_1001 FROM t1; |
|||
EXPECT_1001 |
|||
1001 |
|||
DROP TABLE t1; |
@ -1,43 +1,81 @@ |
|||
--source include/galera_cluster.inc |
|||
--source include/have_innodb.inc |
|||
--source include/have_sequence.inc |
|||
--source include/have_debug.inc |
|||
--source include/have_debug_sync.inc |
|||
--source include/galera_have_debug_sync.inc |
|||
|
|||
# |
|||
# In this test, we simultaneously send two non-conflicting ALTER TABLE statements |
|||
# |
|||
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 |
|||
--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 |
|||
|
|||
--connection node_1 |
|||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 INTEGER); |
|||
INSERT INTO t1(f2) SELECT seq FROM seq_1_to_1000; |
|||
|
|||
--connection node_2 |
|||
--connection node_2a |
|||
SET SESSION wsrep_sync_wait=0; |
|||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t1'; |
|||
--source include/wait_condition.inc |
|||
--send ALTER TABLE t1 ADD COLUMN f3 INTEGER; INSERT INTO t1 (f1, f2) VALUES (DEFAULT, 123); |
|||
--let $wait_condition = SELECT COUNT(*) = 1000 FROM t1; |
|||
--source include/wait_condition.inc |
|||
|
|||
--connection node_1a |
|||
--echo # Block the applier on node_1 and issue a ddl from node_2 |
|||
SET SESSION wsrep_sync_wait=0; |
|||
--let $galera_sync_point = apply_monitor_slave_enter_sync |
|||
--source include/galera_set_sync_point.inc |
|||
|
|||
--connection node_2 |
|||
--echo # DDL 1 |
|||
--send ALTER TABLE t1 ADD COLUMN f3 INTEGER; INSERT INTO t1 VALUES (NULL, 10000, 10000); |
|||
|
|||
--connection node_1a |
|||
--source include/galera_wait_sync_point.inc |
|||
--source include/galera_clear_sync_point.inc |
|||
|
|||
--echo # This will block on acquiring total order isolation |
|||
--connection node_1 |
|||
--echo # DDL 2 |
|||
--send CREATE UNIQUE INDEX i1 ON t1(f2); |
|||
|
|||
--connection node_1a |
|||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'acquiring total order%' or STATE LIKE 'Waiting for table metadata%' |
|||
--source include/wait_condition.inc |
|||
|
|||
--echo # Signal DDL 1 |
|||
--source include/galera_clear_sync_point.inc |
|||
--let $galera_sync_point = apply_monitor_slave_enter_sync |
|||
--source include/galera_signal_sync_point.inc |
|||
|
|||
--connection node_2 |
|||
--reap |
|||
INSERT INTO t1 (f1, f2) VALUES (DEFAULT, 234); |
|||
|
|||
--connection node_1 |
|||
--reap |
|||
|
|||
--connection node_2 |
|||
--let $wait_condition = SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
--source include/wait_condition.inc |
|||
--let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
--source include/wait_condition.inc |
|||
|
|||
SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
SELECT COUNT(*) = 2 FROM t1; |
|||
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
SHOW CREATE TABLE t1; |
|||
SELECT COUNT(*) AS EXPECT_1001 FROM t1; |
|||
|
|||
--connection node_1 |
|||
--reap |
|||
|
|||
--let $wait_condition = SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
--source include/wait_condition.inc |
|||
--let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
--source include/wait_condition.inc |
|||
|
|||
SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
SELECT COUNT(*) = 2 FROM t1; |
|||
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; |
|||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1'; |
|||
SHOW CREATE TABLE t1; |
|||
SELECT COUNT(*) AS EXPECT_1001 FROM t1; |
|||
|
|||
DROP TABLE t1; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue