MDEV-20008: Galera strict mode
Added new enum variable `wsrep_mode` which can be used to turn on WSREP features which are not part of default behaviour. Added enum `BINLOG_ROW_FORMAT_ONLY`, `REQUIRED_PRIMARY_KEY` and `STRICT_REPLICATION`. `wsrep-mode=STRICT_REPLICATION` behaves like variable `wsrep_strict_ddl`. Variable wsrep_strict_ddl is deprecated and if set we use new wsrep_mode setting instead. Reviewed and improved by: Jan Lindström <jan.lindstrom@mariadb.com>
This commit is contained in:
parent
3f871b3394
commit
95a2bca01f
26
mysql-test/suite/galera/r/galera_var_wsrep_strict_ddl.result
Normal file
26
mysql-test/suite/galera/r/galera_var_wsrep_strict_ddl.result
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
connection node_2;
|
||||||
|
connection node_1;
|
||||||
|
SELECT @@global.wsrep_mode;
|
||||||
|
@@global.wsrep_mode
|
||||||
|
|
||||||
|
SELECT @@global.wsrep_strict_ddl;
|
||||||
|
@@global.wsrep_strict_ddl
|
||||||
|
0
|
||||||
|
SET @@global.wsrep_strict_ddl=ON;
|
||||||
|
Warnings:
|
||||||
|
Warning 1287 '@@wsrep_strict_ddl' is deprecated and will be removed in a future release. Please use '@@wsrep_mode=STRICT_REPLICATION' instead
|
||||||
|
SELECT @@global.wsrep_mode;
|
||||||
|
@@global.wsrep_mode
|
||||||
|
STRICT_REPLICATION
|
||||||
|
SELECT @@global.wsrep_strict_ddl;
|
||||||
|
@@global.wsrep_strict_ddl
|
||||||
|
1
|
||||||
|
SET @@global.wsrep_strict_ddl=OFF;
|
||||||
|
Warnings:
|
||||||
|
Warning 1287 '@@wsrep_strict_ddl' is deprecated and will be removed in a future release. Please use '@@wsrep_mode=STRICT_REPLICATION' instead
|
||||||
|
SELECT @@global.wsrep_mode;
|
||||||
|
@@global.wsrep_mode
|
||||||
|
|
||||||
|
SELECT @@global.wsrep_strict_ddl;
|
||||||
|
@@global.wsrep_strict_ddl
|
||||||
|
0
|
12
mysql-test/suite/galera/r/galera_wsrep_mode.result
Normal file
12
mysql-test/suite/galera/r/galera_wsrep_mode.result
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
connection node_2;
|
||||||
|
connection node_1;
|
||||||
|
SET GLOBAL wsrep_mode = REQUIRED_PRIMARY_KEY;
|
||||||
|
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
|
||||||
|
ERROR HY000: Galera replication not supported
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Error 4165 Galera replication not supported
|
||||||
|
Warning 1290 WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled. Table should have PRIMARY KEY defined.
|
||||||
|
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL wsrep_mode = default;
|
@ -5,33 +5,33 @@ connection node_1;
|
|||||||
SET GLOBAL binlog_format='ROW';
|
SET GLOBAL binlog_format='ROW';
|
||||||
create table before_t1(a int, count int, b int, key(b)) engine=Aria;
|
create table before_t1(a int, count int, b int, key(b)) engine=Aria;
|
||||||
INSERT INTO before_t1 values (1,1,1);
|
INSERT INTO before_t1 values (1,1,1);
|
||||||
set @@global.wsrep_strict_ddl=ON;
|
SET @@global.wsrep_mode=STRICT_REPLICATION;
|
||||||
select @@global.wsrep_strict_ddl;
|
select @@global.wsrep_mode;
|
||||||
@@global.wsrep_strict_ddl
|
@@global.wsrep_mode
|
||||||
1
|
STRICT_REPLICATION
|
||||||
connection node_2;
|
connection node_2;
|
||||||
set @@global.wsrep_strict_ddl=ON;
|
SET @@global.wsrep_mode=STRICT_REPLICATION;
|
||||||
select @@global.wsrep_strict_ddl;
|
select @@global.wsrep_mode;
|
||||||
@@global.wsrep_strict_ddl
|
@@global.wsrep_mode
|
||||||
1
|
STRICT_REPLICATION
|
||||||
connection node_1;
|
connection node_1;
|
||||||
CREATE TABLE t1(a int) engine=Aria;
|
CREATE TABLE t1(a int) engine=Aria;
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SHOW WARNINGS;
|
SHOW WARNINGS;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 4165 DDL-statement is forbidden as table storage engine does not support Galera replication
|
Error 4165 Galera replication not supported
|
||||||
Warning 1031 WSREP: wsrep_strict_ddl=true and storage engine does not support Galera replication.
|
Warning 1031 WSREP: wsrep_mode = STRICT_REPLICATION enabled. Storage engine Aria not supported.
|
||||||
connection node_2;
|
connection node_2;
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||||
connection node_1;
|
connection node_1;
|
||||||
CREATE TABLE t2(a int not null primary key) engine=InnoDB;
|
CREATE TABLE t2(a int not null primary key) engine=InnoDB;
|
||||||
ALTER TABLE t2 engine=MyISAM;
|
ALTER TABLE t2 engine=MyISAM;
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SHOW WARNINGS;
|
SHOW WARNINGS;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Error 4165 DDL-statement is forbidden as table storage engine does not support Galera replication
|
Error 4165 Galera replication not supported
|
||||||
Warning 1031 WSREP: wsrep_strict_ddl=true and storage engine does not support Galera replication.
|
Warning 1031 WSREP: wsrep_mode = STRICT_REPLICATION enabled. Storage engine MyISAM not supported.
|
||||||
SHOW CREATE TABLE t2;
|
SHOW CREATE TABLE t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TABLE `t2` (
|
t2 CREATE TABLE `t2` (
|
||||||
@ -47,7 +47,7 @@ t2 CREATE TABLE `t2` (
|
|||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
connection node_1;
|
connection node_1;
|
||||||
TRUNCATE TABLE before_t1;
|
TRUNCATE TABLE before_t1;
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SELECT * FROM before_t1;
|
SELECT * FROM before_t1;
|
||||||
a count b
|
a count b
|
||||||
1 1 1
|
1 1 1
|
||||||
@ -60,7 +60,7 @@ SELECT * FROM before_t1;
|
|||||||
a count b
|
a count b
|
||||||
connection node_1;
|
connection node_1;
|
||||||
CREATE VIEW x1 AS SELECT * FROM before_t1;
|
CREATE VIEW x1 AS SELECT * FROM before_t1;
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SHOW CREATE VIEW x1;
|
SHOW CREATE VIEW x1;
|
||||||
ERROR 42S02: Table 'test.x1' doesn't exist
|
ERROR 42S02: Table 'test.x1' doesn't exist
|
||||||
connection node_2;
|
connection node_2;
|
||||||
@ -70,7 +70,7 @@ connection node_1;
|
|||||||
CREATE DEFINER=`root`@`localhost` TRIGGER increment_before_t1
|
CREATE DEFINER=`root`@`localhost` TRIGGER increment_before_t1
|
||||||
AFTER INSERT ON before_t1 FOR EACH ROW
|
AFTER INSERT ON before_t1 FOR EACH ROW
|
||||||
UPDATE before_t1 SET before_t1.count = before_t1.count+1;
|
UPDATE before_t1 SET before_t1.count = before_t1.count+1;
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SHOW CREATE TRIGGER increment_before_t1;
|
SHOW CREATE TRIGGER increment_before_t1;
|
||||||
ERROR HY000: Trigger does not exist
|
ERROR HY000: Trigger does not exist
|
||||||
connection node_2;
|
connection node_2;
|
||||||
@ -78,7 +78,7 @@ SHOW CREATE TRIGGER increment_before_t1;
|
|||||||
ERROR HY000: Trigger does not exist
|
ERROR HY000: Trigger does not exist
|
||||||
connection node_1;
|
connection node_1;
|
||||||
CREATE INDEX xx2 ON before_t1(a);
|
CREATE INDEX xx2 ON before_t1(a);
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SHOW CREATE TABLE before_t1;
|
SHOW CREATE TABLE before_t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
before_t1 CREATE TABLE `before_t1` (
|
before_t1 CREATE TABLE `before_t1` (
|
||||||
@ -98,7 +98,7 @@ before_t1 CREATE TABLE `before_t1` (
|
|||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
||||||
connection node_1;
|
connection node_1;
|
||||||
DROP INDEX b ON before_t1;
|
DROP INDEX b ON before_t1;
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SHOW CREATE TABLE before_t1;
|
SHOW CREATE TABLE before_t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
before_t1 CREATE TABLE `before_t1` (
|
before_t1 CREATE TABLE `before_t1` (
|
||||||
@ -118,7 +118,7 @@ before_t1 CREATE TABLE `before_t1` (
|
|||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
||||||
connection node_1;
|
connection node_1;
|
||||||
ALTER TABLE before_t1 ADD COLUMN f int;
|
ALTER TABLE before_t1 ADD COLUMN f int;
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SHOW CREATE TABLE before_t1;
|
SHOW CREATE TABLE before_t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
before_t1 CREATE TABLE `before_t1` (
|
before_t1 CREATE TABLE `before_t1` (
|
||||||
@ -138,7 +138,7 @@ before_t1 CREATE TABLE `before_t1` (
|
|||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
||||||
connection node_1;
|
connection node_1;
|
||||||
RENAME TABLE before_t1 to after_t1;
|
RENAME TABLE before_t1 to after_t1;
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SHOW CREATE TABLE before_t1;
|
SHOW CREATE TABLE before_t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
before_t1 CREATE TABLE `before_t1` (
|
before_t1 CREATE TABLE `before_t1` (
|
||||||
@ -162,7 +162,7 @@ SHOW CREATE TABLE after_t1;
|
|||||||
ERROR 42S02: Table 'test.after_t1' doesn't exist
|
ERROR 42S02: Table 'test.after_t1' doesn't exist
|
||||||
connection node_1;
|
connection node_1;
|
||||||
DROP TABLE before_t1;
|
DROP TABLE before_t1;
|
||||||
ERROR HY000: DDL-statement is forbidden as table storage engine does not support Galera replication
|
ERROR HY000: Galera replication not supported
|
||||||
SHOW CREATE TABLE before_t1;
|
SHOW CREATE TABLE before_t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
before_t1 CREATE TABLE `before_t1` (
|
before_t1 CREATE TABLE `before_t1` (
|
||||||
@ -181,14 +181,14 @@ before_t1 CREATE TABLE `before_t1` (
|
|||||||
KEY `b` (`b`)
|
KEY `b` (`b`)
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
||||||
connection node_1;
|
connection node_1;
|
||||||
set @@global.wsrep_strict_ddl=OFF;
|
set @@global.wsrep_mode=default;
|
||||||
select @@global.wsrep_strict_ddl;
|
select @@global.wsrep_mode;
|
||||||
@@global.wsrep_strict_ddl
|
@@global.wsrep_mode
|
||||||
0
|
|
||||||
connection node_2;
|
connection node_2;
|
||||||
set @@global.wsrep_strict_ddl=OFF;
|
set @@global.wsrep_mode=default;
|
||||||
select @@global.wsrep_strict_ddl;
|
select @@global.wsrep_mode;
|
||||||
@@global.wsrep_strict_ddl
|
@@global.wsrep_mode
|
||||||
0
|
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
DROP TABLE before_t1;
|
DROP TABLE before_t1;
|
13
mysql-test/suite/galera/t/galera_var_wsrep_strict_ddl.test
Normal file
13
mysql-test/suite/galera/t/galera_var_wsrep_strict_ddl.test
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
--source include/galera_cluster.inc
|
||||||
|
|
||||||
|
SELECT @@global.wsrep_mode;
|
||||||
|
SELECT @@global.wsrep_strict_ddl;
|
||||||
|
|
||||||
|
SET @@global.wsrep_strict_ddl=ON;
|
||||||
|
SELECT @@global.wsrep_mode;
|
||||||
|
SELECT @@global.wsrep_strict_ddl;
|
||||||
|
|
||||||
|
SET @@global.wsrep_strict_ddl=OFF;
|
||||||
|
SELECT @@global.wsrep_mode;
|
||||||
|
SELECT @@global.wsrep_strict_ddl;
|
||||||
|
|
17
mysql-test/suite/galera/t/galera_wsrep_mode.test
Normal file
17
mysql-test/suite/galera/t/galera_wsrep_mode.test
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#
|
||||||
|
# Test for different wsrep_mode values
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
# REQUIRED_PRIMARY_KEY
|
||||||
|
SET GLOBAL wsrep_mode = REQUIRED_PRIMARY_KEY;
|
||||||
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
||||||
|
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL wsrep_mode = default;
|
@ -7,12 +7,12 @@ SET GLOBAL binlog_format='ROW';
|
|||||||
create table before_t1(a int, count int, b int, key(b)) engine=Aria;
|
create table before_t1(a int, count int, b int, key(b)) engine=Aria;
|
||||||
INSERT INTO before_t1 values (1,1,1);
|
INSERT INTO before_t1 values (1,1,1);
|
||||||
|
|
||||||
set @@global.wsrep_strict_ddl=ON;
|
SET @@global.wsrep_mode=STRICT_REPLICATION;
|
||||||
select @@global.wsrep_strict_ddl;
|
select @@global.wsrep_mode;
|
||||||
|
|
||||||
--connection node_2
|
--connection node_2
|
||||||
set @@global.wsrep_strict_ddl=ON;
|
SET @@global.wsrep_mode=STRICT_REPLICATION;
|
||||||
select @@global.wsrep_strict_ddl;
|
select @@global.wsrep_mode;
|
||||||
|
|
||||||
--connection node_1
|
--connection node_1
|
||||||
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
--error ER_GALERA_REPLICATION_NOT_SUPPORTED
|
||||||
@ -123,11 +123,11 @@ SHOW CREATE TABLE before_t1;
|
|||||||
#
|
#
|
||||||
|
|
||||||
--connection node_1
|
--connection node_1
|
||||||
set @@global.wsrep_strict_ddl=OFF;
|
set @@global.wsrep_mode=default;
|
||||||
select @@global.wsrep_strict_ddl;
|
select @@global.wsrep_mode;
|
||||||
|
|
||||||
--connectIon node_2
|
--connectIon node_2
|
||||||
set @@global.wsrep_strict_ddl=OFF;
|
set @@global.wsrep_mode=default;
|
||||||
select @@global.wsrep_strict_ddl;
|
select @@global.wsrep_mode;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
DROP TABLE before_t1;
|
DROP TABLE before_t1;
|
@ -331,6 +331,21 @@ ENUM_VALUE_LIST NULL
|
|||||||
READ_ONLY NO
|
READ_ONLY NO
|
||||||
COMMAND_LINE_ARGUMENT REQUIRED
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
GLOBAL_VALUE_PATH NULL
|
GLOBAL_VALUE_PATH NULL
|
||||||
|
VARIABLE_NAME WSREP_MODE
|
||||||
|
SESSION_VALUE NULL
|
||||||
|
GLOBAL_VALUE
|
||||||
|
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||||
|
DEFAULT_VALUE
|
||||||
|
VARIABLE_SCOPE GLOBAL
|
||||||
|
VARIABLE_TYPE SET
|
||||||
|
VARIABLE_COMMENT Set of WSREP features that are enabled.
|
||||||
|
NUMERIC_MIN_VALUE NULL
|
||||||
|
NUMERIC_MAX_VALUE NULL
|
||||||
|
NUMERIC_BLOCK_SIZE NULL
|
||||||
|
ENUM_VALUE_LIST STRICT_REPLICATION,BINLOG_ROW_FORMAT_ONLY,REQUIRED_PRIMARY_KEY
|
||||||
|
READ_ONLY NO
|
||||||
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
|
GLOBAL_VALUE_PATH NULL
|
||||||
VARIABLE_NAME WSREP_MYSQL_REPLICATION_BUNDLE
|
VARIABLE_NAME WSREP_MYSQL_REPLICATION_BUNDLE
|
||||||
SESSION_VALUE NULL
|
SESSION_VALUE NULL
|
||||||
GLOBAL_VALUE 0
|
GLOBAL_VALUE 0
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
#
|
|
||||||
# wsrep_strict_ddl
|
|
||||||
#
|
|
||||||
# save the initial value
|
|
||||||
SET @wsrep_strict_ddl_global_saved = @@global.wsrep_strict_ddl;
|
|
||||||
# default
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
@@global.wsrep_strict_ddl
|
|
||||||
0
|
|
||||||
|
|
||||||
# scope
|
|
||||||
SELECT @@session.wsrep_strict_ddl;
|
|
||||||
ERROR HY000: Variable 'wsrep_strict_ddl' is a GLOBAL variable
|
|
||||||
SET @@global.wsrep_strict_ddl=OFF;
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
@@global.wsrep_strict_ddl
|
|
||||||
0
|
|
||||||
SET @@global.wsrep_strict_ddl=ON;
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
@@global.wsrep_strict_ddl
|
|
||||||
1
|
|
||||||
|
|
||||||
# valid values
|
|
||||||
SET @@global.wsrep_strict_ddl='OFF';
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
@@global.wsrep_strict_ddl
|
|
||||||
0
|
|
||||||
SET @@global.wsrep_strict_ddl=ON;
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
@@global.wsrep_strict_ddl
|
|
||||||
1
|
|
||||||
SET @@global.wsrep_strict_ddl=default;
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
@@global.wsrep_strict_ddl
|
|
||||||
0
|
|
||||||
|
|
||||||
# invalid values
|
|
||||||
SET @@global.wsrep_strict_ddl=NULL;
|
|
||||||
ERROR 42000: Variable 'wsrep_strict_ddl' can't be set to the value of 'NULL'
|
|
||||||
SET @@global.wsrep_strict_ddl='junk';
|
|
||||||
ERROR 42000: Variable 'wsrep_strict_ddl' can't be set to the value of 'junk'
|
|
||||||
|
|
||||||
# restore the initial value
|
|
||||||
SET @@global.wsrep_strict_ddl = @wsrep_strict_ddl_global_saved;
|
|
||||||
# End of test
|
|
@ -1,42 +0,0 @@
|
|||||||
--source include/have_wsrep.inc
|
|
||||||
|
|
||||||
--echo #
|
|
||||||
--echo # wsrep_strict_ddl
|
|
||||||
--echo #
|
|
||||||
|
|
||||||
--echo # save the initial value
|
|
||||||
SET @wsrep_strict_ddl_global_saved = @@global.wsrep_strict_ddl;
|
|
||||||
|
|
||||||
--echo # default
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
|
|
||||||
--echo
|
|
||||||
--echo # scope
|
|
||||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
|
||||||
SELECT @@session.wsrep_strict_ddl;
|
|
||||||
SET @@global.wsrep_strict_ddl=OFF;
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
SET @@global.wsrep_strict_ddl=ON;
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
|
|
||||||
--echo
|
|
||||||
--echo # valid values
|
|
||||||
SET @@global.wsrep_strict_ddl='OFF';
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
SET @@global.wsrep_strict_ddl=ON;
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
SET @@global.wsrep_strict_ddl=default;
|
|
||||||
SELECT @@global.wsrep_strict_ddl;
|
|
||||||
|
|
||||||
--echo
|
|
||||||
--echo # invalid values
|
|
||||||
--error ER_WRONG_VALUE_FOR_VAR
|
|
||||||
SET @@global.wsrep_strict_ddl=NULL;
|
|
||||||
--error ER_WRONG_VALUE_FOR_VAR
|
|
||||||
SET @@global.wsrep_strict_ddl='junk';
|
|
||||||
|
|
||||||
--echo
|
|
||||||
--echo # restore the initial value
|
|
||||||
SET @@global.wsrep_strict_ddl = @wsrep_strict_ddl_global_saved;
|
|
||||||
|
|
||||||
--echo # End of test
|
|
@ -7948,7 +7948,7 @@ ER_WARN_HISTORY_ROW_START_TIME
|
|||||||
ER_PART_STARTS_BEYOND_INTERVAL
|
ER_PART_STARTS_BEYOND_INTERVAL
|
||||||
eng "%`s: STARTS is later than query time, first history partition may exceed INTERVAL value"
|
eng "%`s: STARTS is later than query time, first history partition may exceed INTERVAL value"
|
||||||
ER_GALERA_REPLICATION_NOT_SUPPORTED
|
ER_GALERA_REPLICATION_NOT_SUPPORTED
|
||||||
eng "DDL-statement is forbidden as table storage engine does not support Galera replication"
|
eng "Galera replication not supported"
|
||||||
ER_LOAD_INFILE_CAPABILITY_DISABLED
|
ER_LOAD_INFILE_CAPABILITY_DISABLED
|
||||||
eng "The used command is not allowed because the MariaDB server or client has disabled the local infile capability"
|
eng "The used command is not allowed because the MariaDB server or client has disabled the local infile capability"
|
||||||
rum "Comanda folosită nu este permisă deoarece clientul sau serverul MariaDB a dezactivat această capabilitate"
|
rum "Comanda folosită nu este permisă deoarece clientul sau serverul MariaDB a dezactivat această capabilitate"
|
||||||
|
@ -4430,6 +4430,19 @@ restart:
|
|||||||
else
|
else
|
||||||
tbl->reginfo.lock_type= tables->lock_type;
|
tbl->reginfo.lock_type= tables->lock_type;
|
||||||
}
|
}
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
/*
|
||||||
|
At this point we have SE associated with table so we can check wsrep_mode
|
||||||
|
rules at this point.
|
||||||
|
*/
|
||||||
|
if (WSREP(thd) &&
|
||||||
|
wsrep_thd_is_local(thd) &&
|
||||||
|
!wsrep_check_mode_after_open_table(thd, tbl->file->ht->db_type))
|
||||||
|
{
|
||||||
|
error= TRUE;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
|
@ -3707,6 +3707,11 @@ mysql_execute_command(THD *thd)
|
|||||||
thd->set_query_timer();
|
thd->set_query_timer();
|
||||||
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
|
/* Check wsrep_mode rules before command execution. */
|
||||||
|
if (WSREP(thd) &&
|
||||||
|
wsrep_thd_is_local(thd) && !wsrep_check_mode_before_cmd_execute(thd))
|
||||||
|
goto error;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Always start a new transaction for a wsrep THD unless the
|
Always start a new transaction for a wsrep THD unless the
|
||||||
current command is DDL or explicit BEGIN. This will guarantee that
|
current command is DDL or explicit BEGIN. This will guarantee that
|
||||||
|
@ -325,7 +325,7 @@ do_rename(THD *thd, TABLE_LIST *ren_table, const LEX_CSTRING *new_db,
|
|||||||
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
if (WSREP(thd) && hton && hton != view_pseudo_hton &&
|
if (WSREP(thd) && hton && hton != view_pseudo_hton &&
|
||||||
!wsrep_should_replicate_ddl(thd, hton->db_type))
|
!wsrep_should_replicate_ddl(thd, hton))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2474,7 +2474,7 @@ int mysql_rm_table_no_locks(THD *thd, TABLE_LIST *tables, bool if_exists,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (WSREP(thd) && hton && !wsrep_should_replicate_ddl(thd, hton->db_type))
|
if (WSREP(thd) && hton && !wsrep_should_replicate_ddl(thd, hton))
|
||||||
{
|
{
|
||||||
error= 1;
|
error= 1;
|
||||||
goto err;
|
goto err;
|
||||||
@ -10001,7 +10001,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db,
|
|||||||
(thd->lex->sql_command == SQLCOM_ALTER_TABLE ||
|
(thd->lex->sql_command == SQLCOM_ALTER_TABLE ||
|
||||||
thd->lex->sql_command == SQLCOM_CREATE_INDEX ||
|
thd->lex->sql_command == SQLCOM_CREATE_INDEX ||
|
||||||
thd->lex->sql_command == SQLCOM_DROP_INDEX) &&
|
thd->lex->sql_command == SQLCOM_DROP_INDEX) &&
|
||||||
!wsrep_should_replicate_ddl(thd, table_list->table->s->db_type()->db_type))
|
!wsrep_should_replicate_ddl(thd, table_list->table->s->db_type()))
|
||||||
DBUG_RETURN(true);
|
DBUG_RETURN(true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -551,7 +551,7 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
|
|||||||
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
if (WSREP(thd) &&
|
if (WSREP(thd) &&
|
||||||
!wsrep_should_replicate_ddl(thd, table->s->db_type()->db_type))
|
!wsrep_should_replicate_ddl(thd, table->s->db_type()))
|
||||||
goto wsrep_error_label;
|
goto wsrep_error_label;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -305,7 +305,7 @@ bool Sql_cmd_truncate_table::lock_table(THD *thd, TABLE_LIST *table_ref,
|
|||||||
hton= table->file->ht;
|
hton= table->file->ht;
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
if (WSREP(thd) &&
|
if (WSREP(thd) &&
|
||||||
!wsrep_should_replicate_ddl(thd, hton->db_type))
|
!wsrep_should_replicate_ddl(thd, hton))
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -329,7 +329,7 @@ bool Sql_cmd_truncate_table::lock_table(THD *thd, TABLE_LIST *table_ref,
|
|||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
if (WSREP(thd) &&
|
if (WSREP(thd) &&
|
||||||
hton != view_pseudo_hton &&
|
hton != view_pseudo_hton &&
|
||||||
!wsrep_should_replicate_ddl(thd, hton->db_type))
|
!wsrep_should_replicate_ddl(thd, hton))
|
||||||
{
|
{
|
||||||
tdc_release_share(share);
|
tdc_release_share(share);
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
|
@ -5927,6 +5927,22 @@ static Sys_var_uint Sys_wsrep_sync_wait(
|
|||||||
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
|
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
|
||||||
ON_UPDATE(wsrep_sync_wait_update));
|
ON_UPDATE(wsrep_sync_wait_update));
|
||||||
|
|
||||||
|
static const char *wsrep_mode_names[]=
|
||||||
|
{
|
||||||
|
"STRICT_REPLICATION",
|
||||||
|
"BINLOG_ROW_FORMAT_ONLY",
|
||||||
|
"REQUIRED_PRIMARY_KEY",
|
||||||
|
NullS
|
||||||
|
};
|
||||||
|
static Sys_var_set Sys_wsrep_mode(
|
||||||
|
"wsrep_mode",
|
||||||
|
"Set of WSREP features that are enabled.",
|
||||||
|
GLOBAL_VAR(wsrep_mode), CMD_LINE(REQUIRED_ARG),
|
||||||
|
wsrep_mode_names,
|
||||||
|
DEFAULT(0),
|
||||||
|
NO_MUTEX_GUARD, NOT_IN_BINLOG,
|
||||||
|
ON_CHECK(wsrep_mode_check));
|
||||||
|
|
||||||
static const char *wsrep_OSU_method_names[]= { "TOI", "RSU", NullS };
|
static const char *wsrep_OSU_method_names[]= { "TOI", "RSU", NullS };
|
||||||
static Sys_var_enum Sys_wsrep_OSU_method(
|
static Sys_var_enum Sys_wsrep_OSU_method(
|
||||||
"wsrep_OSU_method", "Method for Online Schema Upgrade",
|
"wsrep_OSU_method", "Method for Online Schema Upgrade",
|
||||||
@ -5943,12 +5959,14 @@ static Sys_var_mybool Sys_wsrep_desync (
|
|||||||
ON_UPDATE(wsrep_desync_update));
|
ON_UPDATE(wsrep_desync_update));
|
||||||
|
|
||||||
static Sys_var_mybool Sys_wsrep_strict_ddl (
|
static Sys_var_mybool Sys_wsrep_strict_ddl (
|
||||||
"wsrep_strict_ddl", "If set, reject DDL on affected tables not supporting Galera replication",
|
"wsrep_strict_ddl",
|
||||||
|
"If set, reject DDL on affected tables not supporting Galera replication",
|
||||||
GLOBAL_VAR(wsrep_strict_ddl),
|
GLOBAL_VAR(wsrep_strict_ddl),
|
||||||
CMD_LINE(OPT_ARG), DEFAULT(FALSE),
|
CMD_LINE(OPT_ARG), DEFAULT(FALSE),
|
||||||
NO_MUTEX_GUARD, NOT_IN_BINLOG,
|
NO_MUTEX_GUARD, NOT_IN_BINLOG,
|
||||||
ON_CHECK(0),
|
ON_CHECK(0),
|
||||||
ON_UPDATE(0));
|
ON_UPDATE(wsrep_strict_ddl_update),
|
||||||
|
DEPRECATED("'@@wsrep_mode=STRICT_REPLICATION'")); // since 10.6.0
|
||||||
|
|
||||||
static const char *wsrep_reject_queries_names[]= { "NONE", "ALL", "ALL_KILL", NullS };
|
static const char *wsrep_reject_queries_names[]= { "NONE", "ALL", "ALL_KILL", NullS };
|
||||||
static Sys_var_enum Sys_wsrep_reject_queries(
|
static Sys_var_enum Sys_wsrep_reject_queries(
|
||||||
|
@ -97,7 +97,8 @@ my_bool wsrep_restart_slave; // Should mysql slave thread be
|
|||||||
// restarted, when node joins back?
|
// restarted, when node joins back?
|
||||||
my_bool wsrep_desync; // De(re)synchronize the node from the
|
my_bool wsrep_desync; // De(re)synchronize the node from the
|
||||||
// cluster
|
// cluster
|
||||||
my_bool wsrep_strict_ddl; // Reject DDL to
|
ulonglong wsrep_mode;
|
||||||
|
my_bool wsrep_strict_ddl; // Deprecated: Reject DDL to
|
||||||
// effected tables not
|
// effected tables not
|
||||||
// supporting Galera replication
|
// supporting Galera replication
|
||||||
bool wsrep_service_started; // If Galera was initialized
|
bool wsrep_service_started; // If Galera was initialized
|
||||||
@ -1167,6 +1168,54 @@ bool wsrep_start_replication()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wsrep_check_mode (enum_wsrep_mode mask)
|
||||||
|
{
|
||||||
|
return wsrep_mode & mask;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wsrep_check_mode_after_open_table (THD *thd, legacy_db_type db_type)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wsrep_check_mode_before_cmd_execute (THD *thd)
|
||||||
|
{
|
||||||
|
bool ret= true;
|
||||||
|
if (wsrep_check_mode(WSREP_MODE_BINLOG_ROW_FORMAT_ONLY) &&
|
||||||
|
!thd->is_current_stmt_binlog_format_row() && is_update_query(thd->lex->sql_command))
|
||||||
|
{
|
||||||
|
my_error(ER_GALERA_REPLICATION_NOT_SUPPORTED, MYF(0));
|
||||||
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
ER_OPTION_PREVENTS_STATEMENT,
|
||||||
|
"WSREP: wsrep_mode = BINLOG_ROW_FORMAT_ONLY enabled. Only ROW binlog format is supported.");
|
||||||
|
ret= false;
|
||||||
|
}
|
||||||
|
if (wsrep_check_mode(WSREP_MODE_REQURIED_PRIMARY_KEY) &&
|
||||||
|
thd->lex->sql_command == SQLCOM_CREATE_TABLE)
|
||||||
|
{
|
||||||
|
Key *key;
|
||||||
|
List_iterator<Key> key_iterator(thd->lex->alter_info.key_list);
|
||||||
|
bool primary_key_found= false;
|
||||||
|
while ((key= key_iterator++))
|
||||||
|
{
|
||||||
|
if (key->type == Key::PRIMARY)
|
||||||
|
{
|
||||||
|
primary_key_found= true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!primary_key_found)
|
||||||
|
{
|
||||||
|
my_error(ER_GALERA_REPLICATION_NOT_SUPPORTED, MYF(0));
|
||||||
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
ER_OPTION_PREVENTS_STATEMENT,
|
||||||
|
"WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled. Table should have PRIMARY KEY defined.");
|
||||||
|
ret= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
bool wsrep_must_sync_wait (THD* thd, uint mask)
|
bool wsrep_must_sync_wait (THD* thd, uint mask)
|
||||||
{
|
{
|
||||||
bool ret= 0;
|
bool ret= 0;
|
||||||
@ -1848,20 +1897,19 @@ bool wsrep_should_replicate_ddl_iterate(THD* thd, const TABLE_LIST* table_list)
|
|||||||
for (const TABLE_LIST* it= table_list; it; it= it->next_global)
|
for (const TABLE_LIST* it= table_list; it; it= it->next_global)
|
||||||
{
|
{
|
||||||
if (it->table &&
|
if (it->table &&
|
||||||
!wsrep_should_replicate_ddl(thd, it->table->s->db_type()->db_type))
|
!wsrep_should_replicate_ddl(thd, it->table->s->db_type()))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wsrep_should_replicate_ddl(THD* thd,
|
bool wsrep_should_replicate_ddl(THD* thd, const handlerton *hton)
|
||||||
const enum legacy_db_type db_type)
|
|
||||||
{
|
{
|
||||||
if (!wsrep_strict_ddl)
|
if (!wsrep_check_mode(WSREP_MODE_STRICT_REPLICATION))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
switch (db_type)
|
switch (hton->db_type)
|
||||||
{
|
{
|
||||||
case DB_TYPE_INNODB:
|
case DB_TYPE_INNODB:
|
||||||
return true;
|
return true;
|
||||||
@ -1880,11 +1928,13 @@ bool wsrep_should_replicate_ddl(THD* thd,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* STRICT, treat as error */
|
/* wsrep_mode = STRICT_REPLICATION, treat as error */
|
||||||
my_error(ER_GALERA_REPLICATION_NOT_SUPPORTED, MYF(0));
|
my_error(ER_GALERA_REPLICATION_NOT_SUPPORTED, MYF(0));
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA,
|
ER_ILLEGAL_HA,
|
||||||
"WSREP: wsrep_strict_ddl=true and storage engine does not support Galera replication.");
|
"WSREP: wsrep_mode = STRICT_REPLICATION enabled. "
|
||||||
|
"Storage engine %s not supported.",
|
||||||
|
ha_resolve_storage_engine_name(hton));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -1915,7 +1965,7 @@ bool wsrep_can_run_in_toi(THD *thd, const char *db, const char *table,
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!wsrep_should_replicate_ddl(thd, create_info->db_type->db_type))
|
if (!wsrep_should_replicate_ddl(thd, create_info->db_type))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1992,7 +2042,7 @@ bool wsrep_can_run_in_toi(THD *thd, const char *db, const char *table,
|
|||||||
break;
|
break;
|
||||||
case SQLCOM_ALTER_TABLE:
|
case SQLCOM_ALTER_TABLE:
|
||||||
if (create_info &&
|
if (create_info &&
|
||||||
!wsrep_should_replicate_ddl(thd, create_info->db_type->db_type))
|
!wsrep_should_replicate_ddl(thd, create_info->db_type))
|
||||||
return false;
|
return false;
|
||||||
/* fallthrough */
|
/* fallthrough */
|
||||||
default:
|
default:
|
||||||
|
@ -100,8 +100,9 @@ extern ulong wsrep_running_applier_threads;
|
|||||||
extern ulong wsrep_running_rollbacker_threads;
|
extern ulong wsrep_running_rollbacker_threads;
|
||||||
extern bool wsrep_new_cluster;
|
extern bool wsrep_new_cluster;
|
||||||
extern bool wsrep_gtid_mode;
|
extern bool wsrep_gtid_mode;
|
||||||
extern my_bool wsrep_strict_ddl;
|
|
||||||
extern uint wsrep_gtid_domain_id;
|
extern uint wsrep_gtid_domain_id;
|
||||||
|
extern ulonglong wsrep_mode;
|
||||||
|
extern my_bool wsrep_strict_ddl;
|
||||||
|
|
||||||
enum enum_wsrep_reject_types {
|
enum enum_wsrep_reject_types {
|
||||||
WSREP_REJECT_NONE, /* nothing rejected */
|
WSREP_REJECT_NONE, /* nothing rejected */
|
||||||
@ -133,6 +134,12 @@ enum enum_wsrep_ignore_apply_error {
|
|||||||
WSREP_IGNORE_ERRORS_MAX= 0x7
|
WSREP_IGNORE_ERRORS_MAX= 0x7
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum enum_wsrep_mode {
|
||||||
|
WSREP_MODE_STRICT_REPLICATION= (1ULL << 0),
|
||||||
|
WSREP_MODE_BINLOG_ROW_FORMAT_ONLY= (1ULL << 1),
|
||||||
|
WSREP_MODE_REQURIED_PRIMARY_KEY= (1ULL << 2)
|
||||||
|
};
|
||||||
|
|
||||||
// Streaming Replication
|
// Streaming Replication
|
||||||
#define WSREP_FRAG_BYTES 0
|
#define WSREP_FRAG_BYTES 0
|
||||||
#define WSREP_FRAG_ROWS 1
|
#define WSREP_FRAG_ROWS 1
|
||||||
@ -209,6 +216,9 @@ extern void wsrep_close_applier_threads(int count);
|
|||||||
extern void wsrep_stop_replication(THD *thd);
|
extern void wsrep_stop_replication(THD *thd);
|
||||||
extern bool wsrep_start_replication();
|
extern bool wsrep_start_replication();
|
||||||
extern void wsrep_shutdown_replication();
|
extern void wsrep_shutdown_replication();
|
||||||
|
extern bool wsrep_check_mode (enum_wsrep_mode mask);
|
||||||
|
extern bool wsrep_check_mode_after_open_table (THD *thd, legacy_db_type db_type);
|
||||||
|
extern bool wsrep_check_mode_before_cmd_execute (THD *thd);
|
||||||
extern bool wsrep_must_sync_wait (THD* thd, uint mask= WSREP_SYNC_WAIT_BEFORE_READ);
|
extern bool wsrep_must_sync_wait (THD* thd, uint mask= WSREP_SYNC_WAIT_BEFORE_READ);
|
||||||
extern bool wsrep_sync_wait (THD* thd, uint mask= WSREP_SYNC_WAIT_BEFORE_READ);
|
extern bool wsrep_sync_wait (THD* thd, uint mask= WSREP_SYNC_WAIT_BEFORE_READ);
|
||||||
extern enum wsrep::provider::status
|
extern enum wsrep::provider::status
|
||||||
@ -369,7 +379,7 @@ int wsrep_to_isolation_begin(THD *thd, const char *db_, const char *table_,
|
|||||||
const wsrep::key_array *fk_tables= nullptr,
|
const wsrep::key_array *fk_tables= nullptr,
|
||||||
const HA_CREATE_INFO* create_info= nullptr);
|
const HA_CREATE_INFO* create_info= nullptr);
|
||||||
|
|
||||||
bool wsrep_should_replicate_ddl(THD* thd, const enum legacy_db_type db_type);
|
bool wsrep_should_replicate_ddl(THD* thd, const handlerton *db_type);
|
||||||
bool wsrep_should_replicate_ddl_iterate(THD* thd, const TABLE_LIST* table_list);
|
bool wsrep_should_replicate_ddl_iterate(THD* thd, const TABLE_LIST* table_list);
|
||||||
|
|
||||||
void wsrep_to_isolation_end(THD *thd);
|
void wsrep_to_isolation_end(THD *thd);
|
||||||
|
@ -891,6 +891,11 @@ bool wsrep_max_ws_size_update(sys_var *self, THD *thd, enum_var_type)
|
|||||||
return refresh_provider_options();
|
return refresh_provider_options();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wsrep_mode_check(sys_var *self, THD* thd, set_var* var)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#if UNUSED /* eaec266eb16c (Sergei Golubchik 2014-09-28) */
|
#if UNUSED /* eaec266eb16c (Sergei Golubchik 2014-09-28) */
|
||||||
static SHOW_VAR wsrep_status_vars[]=
|
static SHOW_VAR wsrep_status_vars[]=
|
||||||
{
|
{
|
||||||
@ -1019,3 +1024,14 @@ bool wsrep_gtid_domain_id_update(sys_var* self, THD *thd, enum_var_type)
|
|||||||
wsrep_gtid_server.domain_id= wsrep_gtid_domain_id;
|
wsrep_gtid_server.domain_id= wsrep_gtid_domain_id;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wsrep_strict_ddl_update(sys_var *self, THD* thd, enum_var_type var_type)
|
||||||
|
{
|
||||||
|
// In case user still sets wsrep_strict_ddl we set new
|
||||||
|
// option to wsrep_mode
|
||||||
|
if (wsrep_strict_ddl)
|
||||||
|
wsrep_mode|= WSREP_MODE_STRICT_REPLICATION;
|
||||||
|
else
|
||||||
|
wsrep_mode&= (~WSREP_MODE_STRICT_REPLICATION);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -106,6 +106,9 @@ extern bool wsrep_debug_update UPDATE_ARGS;
|
|||||||
extern bool wsrep_gtid_seq_no_check CHECK_ARGS;
|
extern bool wsrep_gtid_seq_no_check CHECK_ARGS;
|
||||||
|
|
||||||
extern bool wsrep_gtid_domain_id_update UPDATE_ARGS;
|
extern bool wsrep_gtid_domain_id_update UPDATE_ARGS;
|
||||||
|
|
||||||
|
extern bool wsrep_mode_check CHECK_ARGS;
|
||||||
|
extern bool wsrep_strict_ddl_update UPDATE_ARGS;
|
||||||
#else /* WITH_WSREP */
|
#else /* WITH_WSREP */
|
||||||
|
|
||||||
#define wsrep_provider_init(X)
|
#define wsrep_provider_init(X)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user