1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00
Files
mariadb/mysql-test/suite/galera/t/galera_strict_require_primary_key.test
2025-03-28 02:53:59 +01:00

144 lines
4.8 KiB
Plaintext

#
# Write a warning to error log if Galera replicates table with no primary key
#
# For InnoDB
# * push warning to client if wsrep_mode == REQUIRED_PRIMARY_KEY
# * push warning to error log if log_warnings > 1
# For MyIsam
# * push warning to client if wsrep_mode == REQUIRED_PRIMARY_KEY,REPLICATE_MYISAM
# * push warning to error log if log_warnings > 1
# For Aria
# * push warning to client if wsrep_mode == REQUIRED_PRIMARY_KEY,REPLICATE_ARIA
# * push warning to error log if log_warnings > 1
#
# In both cases apply flood control if >= 10 same warning
#
--source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_aria.inc
call mtr.add_suppression("WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled\\. Table ");
CREATE TABLE t1(a int, b varchar(50)) ENGINE=INNODB;
CREATE TABLE t2(a int, b varchar(50)) ENGINE=MYISAM;
CREATE TABLE t3(a int, b varchar(50)) ENGINE=MEMORY;
CREATE TABLE t4(a int, b varchar(50)) ENGINE=ARIA;
SET GLOBAL wsrep_mode = "REQUIRED_PRIMARY_KEY,REPLICATE_MYISAM,REPLICATE_ARIA";
SET GLOBAL log_warnings=2;
INSERT INTO t1 values (1,'test1');
INSERT INTO t2 values (1,'myisam1');
INSERT INTO t3 values (1,'memory1');
INSERT INTO t4 values (1,'aria1');
# these will not replicate
SET GLOBAL wsrep_mode = "REQUIRED_PRIMARY_KEY,REPLICATE_ARIA";
INSERT INTO t2 values (2,'myisam2');
SET GLOBAL wsrep_mode = "REQUIRED_PRIMARY_KEY,REPLICATE_MYISAM";
INSERT INTO t4 values (2,'ARIA2');
# these should not write warning to error log
SET GLOBAL wsrep_mode = "REQUIRED_PRIMARY_KEY,REPLICATE_MYISAM,REPLICATE_ARIA";
SET GLOBAL log_warnings=1;
INSERT INTO t1 values (21,'not1');
INSERT INTO t1 values (22,'not2');
INSERT INTO t2 values (21,'not1');
INSERT INTO t2 values (22,'not2');
INSERT INTO t4 values (21,'not1');
INSERT INTO t4 values (22,'not2');
--let $assert_count = 3
--let $assert_file = $MYSQLTEST_VARDIR/log/mysqld.1.err
--let $assert_text = WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled.
--let $assert_select = WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled.
--source include/assert_grep.inc
# force flood
SET GLOBAL log_warnings=2;
INSERT INTO t1 values (6,'test6');
INSERT INTO t1 values (7,'test7');
INSERT INTO t1 values (8,'test8');
INSERT INTO t1 values (9,'test9');
INSERT INTO t1 values (10,'test10');
INSERT INTO t1 values (11,'test11');
INSERT INTO t1 values (12,'test12');
INSERT INTO t1 values (13,'test13');
INSERT INTO t1 values (33,'test13');
INSERT INTO t1 values (34,'test13');
INSERT INTO t1 values (35,'test13');
INSERT INTO t1 values (36,'test13');
INSERT INTO t1 values (37,'test13');
INSERT INTO t1 values (38,'test13');
INSERT INTO t1 values (39,'test13');
INSERT INTO t2 values (6,'test6');
INSERT INTO t2 values (7,'test7');
INSERT INTO t2 values (8,'test8');
INSERT INTO t2 values (9,'test9');
INSERT INTO t2 values (10,'test10');
INSERT INTO t2 values (11,'test11');
INSERT INTO t2 values (12,'test12');
INSERT INTO t2 values (13,'test13');
INSERT INTO t2 values (33,'test13');
INSERT INTO t2 values (34,'test13');
INSERT INTO t2 values (35,'test13');
INSERT INTO t2 values (36,'test13');
INSERT INTO t2 values (37,'test13');
INSERT INTO t2 values (38,'test13');
INSERT INTO t2 values (39,'test13');
INSERT INTO t4 values (6,'test6');
INSERT INTO t4 values (7,'test7');
INSERT INTO t4 values (8,'test8');
INSERT INTO t4 values (9,'test9');
INSERT INTO t4 values (10,'test10');
INSERT INTO t4 values (11,'test11');
INSERT INTO t4 values (12,'test12');
INSERT INTO t4 values (13,'test13');
INSERT INTO t4 values (33,'test13');
INSERT INTO t4 values (34,'test13');
INSERT INTO t4 values (35,'test13');
INSERT INTO t4 values (36,'test13');
INSERT INTO t4 values (37,'test13');
INSERT INTO t4 values (38,'test13');
INSERT INTO t4 values (39,'test13');
SELECT COUNT(*) AS EXPECT_18 FROM t1;
SELECT COUNT(*) AS EXPECT_19 FROM t2;
SELECT COUNT(*) AS EXPECT_1 FROM t3;
SELECT COUNT(*) AS EXPECT_19 FROM t4;
--connection node_2
SELECT COUNT(*) AS EXPECT_18 FROM t1;
SELECT COUNT(*) AS EXPECT_18 FROM t2;
SELECT COUNT(*) AS EXPECT_0 FROM t3;
SELECT COUNT(*) AS EXPECT_18 FROM t4;
--connection node_1
DROP TABLE t1,t2,t3,t4;
#
# Verify warning is on error log and check that no flood
#
--let $assert_count =
--let $assert_file = $MYSQLTEST_VARDIR/log/mysqld.1.err
--let $assert_text = WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled.
--let $assert_select = WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled.
--let $assert_match = WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled.
--source include/assert_grep.inc
--let $assert_count = 1
--let $assert_text = WSREP: Suppressing warnings of type 'WSREP_REQUIRE_PRIMARY_KEY' for up to 300 seconds because of flooding
--let $assert_select = WSREP: Suppressing warnings of type 'WSREP_REQUIRE_PRIMARY_KEY' for up to 300 seconds because of flooding
--let $assert_match =
--source include/assert_grep.inc
# reset env
--disable_query_log
SET GLOBAL log_warnings=DEFAULT;
SET GLOBAL wsrep_mode=DEFAULT;
--disable_query_log