mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
Merge branch '10.5' into mariadb-10.5.26
This commit is contained in:
commit
662bb50784
45 changed files with 664 additions and 198 deletions
2
VERSION
2
VERSION
|
@ -1,4 +1,4 @@
|
|||
MYSQL_VERSION_MAJOR=10
|
||||
MYSQL_VERSION_MINOR=5
|
||||
MYSQL_VERSION_PATCH=26
|
||||
MYSQL_VERSION_PATCH=27
|
||||
SERVER_MATURITY=stable
|
||||
|
|
|
@ -249,7 +249,6 @@ get_one_option(const struct my_option *opt, const char *argument,
|
|||
#ifdef __WIN__
|
||||
case 'W':
|
||||
opt_protocol = MYSQL_PROTOCOL_PIPE;
|
||||
opt_local_file=1;
|
||||
break;
|
||||
#endif
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
|
|
|
@ -220,8 +220,9 @@ SETA(CPACK_RPM_server_PACKAGE_REQUIRES
|
|||
|
||||
IF(WITH_WSREP)
|
||||
SETA(CPACK_RPM_server_PACKAGE_REQUIRES
|
||||
"galera-4" "rsync" "lsof" "grep" "gawk" "iproute"
|
||||
"galera-4" "rsync" "grep" "gawk" "iproute"
|
||||
"coreutils" "findutils" "tar")
|
||||
SETA(CPACK_RPM_server_PACKAGE_RECOMMENDS "lsof")
|
||||
ENDIF()
|
||||
|
||||
SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh)
|
||||
|
|
|
@ -8,15 +8,17 @@ SET(CONC_WITH_SIGNCODE ${SIGNCODE})
|
|||
SET(SIGN_OPTIONS ${SIGNTOOL_PARAMETERS})
|
||||
SET(CONC_WITH_EXTERNAL_ZLIB ON)
|
||||
|
||||
IF(SSL_DEFINES MATCHES "WOLFSSL")
|
||||
IF(WIN32)
|
||||
SET(CONC_WITH_SSL "SCHANNEL")
|
||||
IF(NOT CONC_WITH_SSL)
|
||||
IF(SSL_DEFINES MATCHES "WOLFSSL")
|
||||
IF(WIN32)
|
||||
SET(CONC_WITH_SSL "SCHANNEL")
|
||||
ELSE()
|
||||
SET(CONC_WITH_SSL "GNUTLS") # that's what debian wants, right?
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(CONC_WITH_SSL "GNUTLS") # that's what debian wants, right?
|
||||
SET(CONC_WITH_SSL "OPENSSL")
|
||||
SET(OPENSSL_FOUND TRUE)
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(CONC_WITH_SSL "OPENSSL")
|
||||
SET(OPENSSL_FOUND TRUE)
|
||||
ENDIF()
|
||||
|
||||
SET(CONC_WITH_CURL OFF)
|
||||
|
|
|
@ -206,7 +206,8 @@ static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
|||
char *s;
|
||||
if (FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL, error, 0, (char *)&s, 0,
|
||||
NULL, error, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
|
||||
(char *) &s, 0,
|
||||
NULL))
|
||||
{
|
||||
char* end = s + strlen(s) - 1;
|
||||
|
|
|
@ -955,3 +955,47 @@ DROP TABLE t;
|
|||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
#
|
||||
# MDEV-23983: Crash caused by query containing constant having clause
|
||||
#
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, a INT, b TEXT, c INT);
|
||||
INSERT INTO t1 VALUES (3, 7, 'b', 1), (4, 7, 'b', 1);
|
||||
SELECT * FROM t1
|
||||
WHERE t1.id = 3
|
||||
GROUP BY t1.a
|
||||
HAVING t1.b = 'b' and t1.c = 1;
|
||||
id a b c
|
||||
3 7 b 1
|
||||
SELECT * FROM t1
|
||||
WHERE t1.id = 3
|
||||
GROUP BY t1.a
|
||||
HAVING t1.b = 'b' and t1.c = 2;
|
||||
id a b c
|
||||
explain SELECT * FROM t1
|
||||
WHERE t1.id = 3
|
||||
GROUP BY t1.a
|
||||
HAVING t1.b = 'b' and t1.c = 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible HAVING noticed after reading const tables
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, b INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (id INT, b TEXT, c INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (3, 'b', 1);
|
||||
SELECT t2.* FROM t2 LEFT JOIN t1 ON t2.id = t1.a
|
||||
GROUP BY t2.id
|
||||
HAVING t2.b = 'b' and t2.c = 1;
|
||||
id b c
|
||||
3 b 1
|
||||
SELECT t2.* FROM t2 LEFT JOIN t1 ON t2.id = t1.a
|
||||
GROUP BY t2.id
|
||||
HAVING t2.b = 'b' and t2.c = 2;
|
||||
id b c
|
||||
explain SELECT t2.* FROM t2 LEFT JOIN t1 ON t2.id = t1.a
|
||||
GROUP BY t2.id
|
||||
HAVING t2.b = 'b' and t2.c = 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible HAVING noticed after reading const tables
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# End of 10.5 tests
|
||||
#
|
||||
|
|
|
@ -1011,3 +1011,48 @@ DROP TABLE t;
|
|||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-23983: Crash caused by query containing constant having clause
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, a INT, b TEXT, c INT);
|
||||
INSERT INTO t1 VALUES (3, 7, 'b', 1), (4, 7, 'b', 1);
|
||||
|
||||
SELECT * FROM t1
|
||||
WHERE t1.id = 3
|
||||
GROUP BY t1.a
|
||||
HAVING t1.b = 'b' and t1.c = 1;
|
||||
|
||||
let $q=
|
||||
SELECT * FROM t1
|
||||
WHERE t1.id = 3
|
||||
GROUP BY t1.a
|
||||
HAVING t1.b = 'b' and t1.c = 2;
|
||||
|
||||
eval $q;
|
||||
eval explain $q;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (id INT, b TEXT, c INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (3, 'b', 1);
|
||||
|
||||
SELECT t2.* FROM t2 LEFT JOIN t1 ON t2.id = t1.a
|
||||
GROUP BY t2.id
|
||||
HAVING t2.b = 'b' and t2.c = 1;
|
||||
|
||||
let $q=
|
||||
SELECT t2.* FROM t2 LEFT JOIN t1 ON t2.id = t1.a
|
||||
GROUP BY t2.id
|
||||
HAVING t2.b = 'b' and t2.c = 2;
|
||||
|
||||
eval $q;
|
||||
eval explain $q;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.5 tests
|
||||
--echo #
|
||||
|
|
|
@ -14,3 +14,17 @@ SELECT * FROM t1 JOIN t2 ON t1.c=t2.c WHERE t1.c<=>5;
|
|||
c c
|
||||
DROP TABLE t1, t2;
|
||||
SET optimizer_switch=default;
|
||||
#
|
||||
# MDEV-34683 Types mismatch when cloning items causes debug assertion
|
||||
#
|
||||
CREATE TABLE t1 (a date);
|
||||
CREATE ALGORITHM=TEMPTABLE VIEW v1 AS SELECT * FROM t1;
|
||||
SELECT a FROM v1 WHERE a IN ('a', 'b', 'c');
|
||||
a
|
||||
CREATE VIEW v2 AS SELECT '' as a;
|
||||
SELECT * FROM v2 WHERE a='' AND CASE '' WHEN '' THEN '' ELSE a END='';
|
||||
a
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1, v2;
|
||||
# End of 10.5 tests
|
||||
|
|
|
@ -13,3 +13,21 @@ SELECT * FROM t1 JOIN t2 ON t1.c=t2.c WHERE t1.c<=>5;
|
|||
DROP TABLE t1, t2;
|
||||
|
||||
SET optimizer_switch=default;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-34683 Types mismatch when cloning items causes debug assertion
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a date);
|
||||
CREATE ALGORITHM=TEMPTABLE VIEW v1 AS SELECT * FROM t1;
|
||||
--disable_warnings
|
||||
SELECT a FROM v1 WHERE a IN ('a', 'b', 'c');
|
||||
--enable_warnings
|
||||
|
||||
CREATE VIEW v2 AS SELECT '' as a;
|
||||
SELECT * FROM v2 WHERE a='' AND CASE '' WHEN '' THEN '' ELSE a END='';
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1, v2;
|
||||
|
||||
--echo # End of 10.5 tests
|
||||
|
|
|
@ -16,5 +16,3 @@ galera_sequences : MDEV-32561 WSREP FSM failure: no such a transition REPLICATIN
|
|||
galera_concurrent_ctas : MDEV-32779 galera_concurrent_ctas: assertion in the galera::ReplicatorSMM::finish_cert()
|
||||
galera_as_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback()
|
||||
galera_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback()
|
||||
galera_sst_mysqldump_with_key : MDEV-32782 galera_sst_mysqldump_with_key test failed
|
||||
galera_var_ignore_apply_errors : MENT-1997 galera_var_ignore_apply_errors test freezes
|
||||
|
|
100
mysql-test/suite/galera/r/MDEV-34647.result
Normal file
100
mysql-test/suite/galera/r/MDEV-34647.result
Normal file
|
@ -0,0 +1,100 @@
|
|||
connection node_2;
|
||||
connection node_1;
|
||||
create table t1(id serial, val varchar(100)) engine=myisam;
|
||||
insert into t1 values(null, 'a');
|
||||
insert into t1 values(null, 'b');
|
||||
insert into t1 select null, 'c';
|
||||
insert into t1 select null, 'd' from t1;
|
||||
select * from t1;
|
||||
id val
|
||||
1 a
|
||||
3 b
|
||||
5 c
|
||||
7 d
|
||||
9 d
|
||||
11 d
|
||||
create table t2(id serial, val varchar(100)) engine=aria;
|
||||
insert into t2 values(null, 'a');
|
||||
insert into t2 values(null, 'b');
|
||||
insert into t2 select null, 'c';
|
||||
insert into t2 select null, 'd' from t2;
|
||||
select * from t2;
|
||||
id val
|
||||
1 a
|
||||
3 b
|
||||
5 c
|
||||
7 d
|
||||
9 d
|
||||
11 d
|
||||
create table t3(id serial, val varchar(100)) engine=innodb;
|
||||
insert into t3 values(null, 'a');
|
||||
insert into t3 values(null, 'b');
|
||||
insert into t3 select null, 'c';
|
||||
insert into t3 select null, 'd' from t3;
|
||||
select * from t3;
|
||||
id val
|
||||
1 a
|
||||
3 b
|
||||
5 c
|
||||
7 d
|
||||
9 d
|
||||
11 d
|
||||
set global wsrep_replicate_myisam=ON;
|
||||
create table t4(id serial, val varchar(100)) engine=myisam;
|
||||
insert into t4 values(null, 'a');
|
||||
insert into t4 values(null, 'b');
|
||||
insert into t4 select null, 'c';
|
||||
insert into t4 select null, 'd' from t4;
|
||||
select * from t4;
|
||||
id val
|
||||
1 a
|
||||
2 b
|
||||
3 c
|
||||
4 d
|
||||
5 d
|
||||
6 d
|
||||
create table t5(id serial, val varchar(100)) engine=myisam;
|
||||
insert into t5 values(null, 'a');
|
||||
insert into t5 values(null, 'b');
|
||||
insert into t5 select null, 'c';
|
||||
insert into t5 select null, 'd' from t5;
|
||||
select * from t2;
|
||||
id val
|
||||
1 a
|
||||
3 b
|
||||
5 c
|
||||
7 d
|
||||
9 d
|
||||
11 d
|
||||
connection node_2;
|
||||
select * from t1;
|
||||
id val
|
||||
select * from t2;
|
||||
id val
|
||||
select * from t3;
|
||||
id val
|
||||
1 a
|
||||
3 b
|
||||
5 c
|
||||
7 d
|
||||
9 d
|
||||
11 d
|
||||
select * from t4;
|
||||
id val
|
||||
1 a
|
||||
2 b
|
||||
3 c
|
||||
4 d
|
||||
5 d
|
||||
6 d
|
||||
select * from t5;
|
||||
id val
|
||||
1 a
|
||||
2 b
|
||||
3 c
|
||||
4 d
|
||||
5 d
|
||||
6 d
|
||||
connection node_1;
|
||||
drop table t1,t2,t3,t4,t5;
|
||||
set global wsrep_replicate_myisam=default;
|
|
@ -7,27 +7,60 @@ SET GLOBAL wsrep_on = OFF;
|
|||
CREATE TABLE t1 (f1 INTEGER);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
DROP TABLE t1;
|
||||
connection node_2;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
connection node_1;
|
||||
SET GLOBAL wsrep_on = OFF;
|
||||
CREATE SCHEMA s1;
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
DROP SCHEMA s1;
|
||||
connection node_2;
|
||||
SHOW SCHEMAS;
|
||||
Database
|
||||
information_schema
|
||||
mtr
|
||||
mysql
|
||||
performance_schema
|
||||
test
|
||||
connection node_1;
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
SET GLOBAL wsrep_on = OFF;
|
||||
CREATE INDEX idx1 ON t1 (f1);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
DROP INDEX idx1 ON t1;
|
||||
connection node_2;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
DROP TABLE t1;
|
||||
connection node_1;
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
SET GLOBAL wsrep_on = OFF;
|
||||
CREATE INDEX idx1 ON t1 (f1);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
ALTER TABLE t1 DROP INDEX idx1;
|
||||
connection node_2;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
DROP TABLE t1;
|
||||
connection node_1;
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
SET GLOBAL wsrep_on = OFF;
|
||||
ALTER TABLE t1 ADD COLUMN f2 INTEGER;
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
ALTER TABLE t1 DROP COLUMN f2;
|
||||
connection node_2;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
DROP TABLE t1;
|
||||
connection node_2;
|
||||
SET GLOBAL wsrep_ignore_apply_errors = 2;
|
||||
|
@ -37,12 +70,11 @@ SET GLOBAL wsrep_on = OFF;
|
|||
INSERT INTO t1 VALUES (1);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
DELETE FROM t1 WHERE f1 = 1;
|
||||
connection node_1;
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
|
@ -57,12 +89,11 @@ INSERT INTO t1 VALUES (3);
|
|||
DELETE FROM t1 WHERE f1 = 1;
|
||||
DELETE FROM t1 WHERE f1 = 2;
|
||||
COMMIT;
|
||||
connection node_1;
|
||||
SELECT COUNT(*) as expect_1 FROM t1;
|
||||
SELECT COUNT(*) AS expect_1 FROM t1;
|
||||
expect_1
|
||||
1
|
||||
connection node_2;
|
||||
SELECT COUNT(*) as expect_1 FROM t1;
|
||||
SELECT COUNT(*) AS expect_1 FROM t1;
|
||||
expect_1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
|
@ -75,14 +106,14 @@ DELETE FROM t1 WHERE f1 = 3;
|
|||
SET SESSION wsrep_on = ON;
|
||||
connection node_1;
|
||||
DELETE FROM t1;
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
VARIABLE_VALUE = 'Primary'
|
||||
1
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT VARIABLE_VALUE expect_Primary FROM performance_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
expect_Primary
|
||||
Primary
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
|
@ -103,14 +134,14 @@ DELETE FROM t1 WHERE f1 = 4;
|
|||
DELETE FROM t1 WHERE f1 = 5;
|
||||
COMMIT;
|
||||
SET AUTOCOMMIT=ON;
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
VARIABLE_VALUE = 'Primary'
|
||||
1
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT VARIABLE_VALUE expect_Primary FROM performance_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
expect_Primary
|
||||
Primary
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
|
@ -126,14 +157,14 @@ DELETE FROM t1 WHERE f1 = 3;
|
|||
SET SESSION wsrep_on = ON;
|
||||
connection node_1;
|
||||
DELETE t1, t2 FROM t1 JOIN t2 WHERE t1.f1 = t2.f1;
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT COUNT(*) expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM performance_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
VARIABLE_VALUE = 'Primary'
|
||||
1
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT COUNT(*) expect_0 FROM t1;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -148,20 +179,20 @@ DELETE FROM child WHERE parent_id = 2;
|
|||
SET SESSION wsrep_on = ON;
|
||||
connection node_1;
|
||||
DELETE FROM parent;
|
||||
SELECT COUNT(*) as expect_0 FROM parent;
|
||||
SELECT COUNT(*) AS expect_0 FROM parent;
|
||||
expect_0
|
||||
0
|
||||
SELECT COUNT(*) as expect_0 FROM child;
|
||||
SELECT COUNT(*) AS expect_0 FROM child;
|
||||
expect_0
|
||||
0
|
||||
connection node_2;
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM performance_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
VARIABLE_VALUE = 'Primary'
|
||||
1
|
||||
SELECT COUNT(*) as expect_0 FROM parent;
|
||||
SELECT COUNT(*) AS expect_0 FROM parent;
|
||||
expect_0
|
||||
0
|
||||
SELECT COUNT(*) as expect_0 FROM child;
|
||||
SELECT COUNT(*) AS expect_0 FROM child;
|
||||
expect_0
|
||||
0
|
||||
DROP TABLE child, parent;
|
||||
|
@ -175,8 +206,10 @@ connection node_1;
|
|||
CREATE TABLE t1 (f1 INTEGER, f2 INTEGER);
|
||||
DROP TABLE t1;
|
||||
connection node_2;
|
||||
SELECT * FROM t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
SET GLOBAL wsrep_ignore_apply_errors = 7;
|
||||
CALL mtr.add_suppression("Can't find record in 't.*'");
|
||||
CALL mtr.add_suppression("Can't find record in ");
|
||||
CALL mtr.add_suppression("Slave SQL: Could not execute Delete_rows event");
|
||||
CALL mtr.add_suppression("Slave SQL: Error 'Unknown table 'test\\.t1'' on query\\. Default database: 'test'\\. Query: 'DROP TABLE t1', Error_code: 1051");
|
||||
CALL mtr.add_suppression("Slave SQL: Error 'Can't drop database 's1'; database doesn't exist' on query\\. Default database: 'test'\\. Query: 'DROP SCHEMA s1', Error_code: 1008");
|
||||
|
|
|
@ -114,7 +114,7 @@ EXPECT_1000
|
|||
1000
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t3;
|
||||
EXPECT_1000
|
||||
1000
|
||||
0
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t4;
|
||||
EXPECT_1000
|
||||
1000
|
||||
|
@ -127,9 +127,9 @@ EXPECT_1000
|
|||
SELECT COUNT(*) AS EXPECT_1000 FROM t7;
|
||||
EXPECT_1000
|
||||
1000
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t8;
|
||||
EXPECT_1000
|
||||
1000
|
||||
SELECT COUNT(*) AS EXPECT_0 FROM t8;
|
||||
EXPECT_0
|
||||
0
|
||||
connection node_1;
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8;
|
||||
# Bigger INSERT INTO ... SELECT test
|
||||
|
@ -182,7 +182,7 @@ EXPECT_1000
|
|||
1000
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t3;
|
||||
EXPECT_1000
|
||||
1000
|
||||
0
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t4;
|
||||
EXPECT_1000
|
||||
1000
|
||||
|
@ -195,9 +195,9 @@ EXPECT_1000
|
|||
SELECT COUNT(*) AS EXPECT_1000 FROM t7;
|
||||
EXPECT_1000
|
||||
1000
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t8;
|
||||
EXPECT_1000
|
||||
1000
|
||||
SELECT COUNT(*) AS EXPECT_0 FROM t8;
|
||||
EXPECT_0
|
||||
0
|
||||
connection node_1;
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8;
|
||||
CREATE TABLE t1(pk int not null primary key) engine=innodb;
|
||||
|
|
53
mysql-test/suite/galera/t/MDEV-34647.test
Normal file
53
mysql-test/suite/galera/t/MDEV-34647.test
Normal file
|
@ -0,0 +1,53 @@
|
|||
--source include/galera_cluster.inc
|
||||
--source include/have_aria.inc
|
||||
|
||||
create table t1(id serial, val varchar(100)) engine=myisam;
|
||||
insert into t1 values(null, 'a');
|
||||
insert into t1 values(null, 'b');
|
||||
insert into t1 select null, 'c';
|
||||
insert into t1 select null, 'd' from t1;
|
||||
select * from t1;
|
||||
|
||||
create table t2(id serial, val varchar(100)) engine=aria;
|
||||
insert into t2 values(null, 'a');
|
||||
insert into t2 values(null, 'b');
|
||||
insert into t2 select null, 'c';
|
||||
insert into t2 select null, 'd' from t2;
|
||||
select * from t2;
|
||||
|
||||
create table t3(id serial, val varchar(100)) engine=innodb;
|
||||
insert into t3 values(null, 'a');
|
||||
insert into t3 values(null, 'b');
|
||||
insert into t3 select null, 'c';
|
||||
insert into t3 select null, 'd' from t3;
|
||||
select * from t3;
|
||||
|
||||
set global wsrep_replicate_myisam=ON;
|
||||
|
||||
create table t4(id serial, val varchar(100)) engine=myisam;
|
||||
insert into t4 values(null, 'a');
|
||||
insert into t4 values(null, 'b');
|
||||
insert into t4 select null, 'c';
|
||||
insert into t4 select null, 'd' from t4;
|
||||
select * from t4;
|
||||
|
||||
create table t5(id serial, val varchar(100)) engine=myisam;
|
||||
insert into t5 values(null, 'a');
|
||||
insert into t5 values(null, 'b');
|
||||
insert into t5 select null, 'c';
|
||||
insert into t5 select null, 'd' from t5;
|
||||
select * from t2;
|
||||
|
||||
|
||||
--connection node_2
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
select * from t3;
|
||||
select * from t4;
|
||||
select * from t5;
|
||||
|
||||
|
||||
--connection node_1
|
||||
drop table t1,t2,t3,t4,t5;
|
||||
set global wsrep_replicate_myisam=default;
|
||||
|
|
@ -3,6 +3,11 @@
|
|||
# We do not set mysqldump-related SST options here because doing so on startup
|
||||
# causes the first MTR connection to be forefully dropped by Galera, which in turn confuses MTR
|
||||
|
||||
[mysqld]
|
||||
wsrep-debug=1
|
||||
wsrep-sync_wait=15
|
||||
loose-galera_sst_mysqldump_with_key=1
|
||||
|
||||
[mysqld.1]
|
||||
wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true'
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_ssl_communication.inc
|
||||
--source include/force_restart.inc
|
||||
|
||||
--source suite/galera/include/galera_sst_set_mysqldump.inc
|
||||
--let $node_1=node_1
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
!include ../galera_2nodes.cnf
|
||||
|
||||
[mysqld.1]
|
||||
wsrep_debug=1
|
||||
|
||||
[mysqld.2]
|
||||
[mysqld]
|
||||
wsrep_debug=1
|
||||
wsrep_sync_wait=15
|
||||
loose-galera-var-ignore-apply-errors=1
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
|
||||
--source include/galera_cluster.inc
|
||||
|
||||
--source include/force_restart.inc
|
||||
|
||||
#
|
||||
# Ignore reconciling DDL errors on node_2
|
||||
|
@ -17,41 +17,55 @@ SET GLOBAL wsrep_ignore_apply_errors = 1;
|
|||
SET GLOBAL wsrep_on = OFF;
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--connection node_2
|
||||
SHOW TABLES;
|
||||
|
||||
# Drop schema that does not exist
|
||||
--connection node_1
|
||||
SET GLOBAL wsrep_on = OFF;
|
||||
CREATE SCHEMA s1;
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
DROP SCHEMA s1;
|
||||
|
||||
--connection node_2
|
||||
SHOW SCHEMAS;
|
||||
|
||||
# Drop index that does not exist using DROP INDEX
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
SET GLOBAL wsrep_on = OFF;
|
||||
CREATE INDEX idx1 ON t1 (f1);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
DROP INDEX idx1 ON t1;
|
||||
|
||||
--connection node_2
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# Drop index that does not exist using ALTER TABLE
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
SET GLOBAL wsrep_on = OFF;
|
||||
CREATE INDEX idx1 ON t1 (f1);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
ALTER TABLE t1 DROP INDEX idx1;
|
||||
|
||||
--connection node_2
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# Drop column that does not exist
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
SET GLOBAL wsrep_on = OFF;
|
||||
ALTER TABLE t1 ADD COLUMN f2 INTEGER;
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
ALTER TABLE t1 DROP COLUMN f2;
|
||||
|
||||
--connection node_2
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
|
@ -68,21 +82,11 @@ CREATE TABLE t1 (f1 INTEGER);
|
|||
SET GLOBAL wsrep_on = OFF;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
DELETE FROM t1 WHERE f1 = 1;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
--connection node_1
|
||||
--let $wait_condition = SELECT COUNT(*) = 0 FROM t1;
|
||||
--source include/wait_condition.inc
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
--connection node_2
|
||||
--source include/galera_wait_ready.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT COUNT(*) = 0 FROM t1;
|
||||
--source include/wait_condition.inc
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# Delete row that does not exist in a multi statement transaction
|
||||
|
@ -92,25 +96,15 @@ INSERT INTO t1 VALUES (2);
|
|||
SET GLOBAL wsrep_on = OFF;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (3);
|
||||
DELETE FROM t1 WHERE f1 = 1;
|
||||
DELETE FROM t1 WHERE f1 = 2;
|
||||
COMMIT;
|
||||
SELECT COUNT(*) AS expect_1 FROM t1;
|
||||
|
||||
--connection node_1
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM t1;
|
||||
--source include/wait_condition.inc
|
||||
SELECT COUNT(*) as expect_1 FROM t1;
|
||||
--connection node_2
|
||||
--source include/galera_wait_ready.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM t1;
|
||||
--source include/wait_condition.inc
|
||||
SELECT COUNT(*) as expect_1 FROM t1;
|
||||
|
||||
SELECT COUNT(*) AS expect_1 FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
|
@ -127,21 +121,16 @@ INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
|||
SET SESSION wsrep_on = OFF;
|
||||
DELETE FROM t1 WHERE f1 = 3;
|
||||
SET SESSION wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
|
||||
--connection node_1
|
||||
DELETE FROM t1;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
--connection node_2
|
||||
--source include/galera_wait_ready.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
--source include/wait_condition.inc
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
--let $wait_condition = SELECT COUNT(*) = 0 FROM t1;
|
||||
--source include/wait_condition.inc
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT VARIABLE_VALUE expect_Primary FROM performance_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
|
@ -158,10 +147,8 @@ INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
|||
SET SESSION wsrep_on = OFF;
|
||||
DELETE FROM t1 WHERE f1 = 3;
|
||||
SET SESSION wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
|
||||
--connection node_1
|
||||
|
||||
SET AUTOCOMMIT=OFF;
|
||||
START TRANSACTION;
|
||||
DELETE FROM t1 WHERE f1 = 1;
|
||||
|
@ -171,18 +158,13 @@ DELETE FROM t1 WHERE f1 = 4;
|
|||
DELETE FROM t1 WHERE f1 = 5;
|
||||
COMMIT;
|
||||
SET AUTOCOMMIT=ON;
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
--connection node_2
|
||||
--source include/galera_wait_ready.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
--source include/wait_condition.inc
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
--let $wait_condition = SELECT COUNT(*) = 0 FROM t1;
|
||||
--source include/wait_condition.inc
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT VARIABLE_VALUE expect_Primary FROM performance_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
SELECT COUNT(*) AS expect_0 FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
|
@ -203,22 +185,16 @@ SET SESSION wsrep_on = OFF;
|
|||
DELETE FROM t2 WHERE f1 = 2;
|
||||
DELETE FROM t1 WHERE f1 = 3;
|
||||
SET SESSION wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
|
||||
--connection node_1
|
||||
DELETE t1, t2 FROM t1 JOIN t2 WHERE t1.f1 = t2.f1;
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT COUNT(*) expect_0 FROM t1;
|
||||
|
||||
--connection node_2
|
||||
--source include/galera_wait_ready.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
--source include/wait_condition.inc
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
--let $wait_condition = SELECT COUNT(*) = 0 FROM t1;
|
||||
--source include/wait_condition.inc
|
||||
SELECT COUNT(*) as expect_0 FROM t1;
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM performance_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
SELECT COUNT(*) expect_0 FROM t1;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
|
@ -238,26 +214,18 @@ INSERT INTO child VALUES (1,1),(2,2),(3,3);
|
|||
SET SESSION wsrep_on = OFF;
|
||||
DELETE FROM child WHERE parent_id = 2;
|
||||
SET SESSION wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
|
||||
--connection node_1
|
||||
DELETE FROM parent;
|
||||
SELECT COUNT(*) as expect_0 FROM parent;
|
||||
SELECT COUNT(*) as expect_0 FROM child;
|
||||
SELECT COUNT(*) AS expect_0 FROM parent;
|
||||
SELECT COUNT(*) AS expect_0 FROM child;
|
||||
|
||||
--connection node_2
|
||||
--source include/galera_wait_ready.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
--source include/wait_condition.inc
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
--let $wait_condition = SELECT COUNT(*) = 0 FROM parent;
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT COUNT(*) = 0 FROM child;
|
||||
--source include/wait_condition.inc
|
||||
SELECT COUNT(*) as expect_0 FROM parent;
|
||||
SELECT COUNT(*) as expect_0 FROM child;
|
||||
SELECT VARIABLE_VALUE = 'Primary' FROM performance_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
SELECT COUNT(*) AS expect_0 FROM parent;
|
||||
SELECT COUNT(*) AS expect_0 FROM child;
|
||||
DROP TABLE child, parent;
|
||||
|
||||
#
|
||||
|
@ -272,15 +240,17 @@ SET GLOBAL wsrep_ignore_apply_errors = 4;
|
|||
SET GLOBAL wsrep_on = OFF;
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
SET GLOBAL wsrep_on = ON;
|
||||
--source include/galera_wait_ready.inc
|
||||
|
||||
--connection node_1
|
||||
CREATE TABLE t1 (f1 INTEGER, f2 INTEGER);
|
||||
DROP TABLE t1;
|
||||
|
||||
--connection node_2
|
||||
--error ER_NO_SUCH_TABLE
|
||||
SELECT * FROM t1;
|
||||
SET GLOBAL wsrep_ignore_apply_errors = 7;
|
||||
|
||||
CALL mtr.add_suppression("Can't find record in 't.*'");
|
||||
CALL mtr.add_suppression("Can't find record in ");
|
||||
CALL mtr.add_suppression("Slave SQL: Could not execute Delete_rows event");
|
||||
CALL mtr.add_suppression("Slave SQL: Error 'Unknown table 'test\\.t1'' on query\\. Default database: 'test'\\. Query: 'DROP TABLE t1', Error_code: 1051");
|
||||
CALL mtr.add_suppression("Slave SQL: Error 'Can't drop database 's1'; database doesn't exist' on query\\. Default database: 'test'\\. Query: 'DROP SCHEMA s1', Error_code: 1008");
|
||||
|
|
|
@ -97,7 +97,7 @@ SELECT COUNT(*) AS EXPECT_1000 FROM t8;
|
|||
--connection node_2
|
||||
--let $wait_condition = SELECT COUNT(*) = 8 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME LIKE 't_'
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT COUNT(*) = 1000 FROM test.t8;
|
||||
--let $wait_condition = SELECT COUNT(*) = 1000 FROM test.t7;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t1;
|
||||
|
@ -107,7 +107,7 @@ SELECT COUNT(*) AS EXPECT_1000 FROM t4;
|
|||
SELECT COUNT(*) AS EXPECT_1000 FROM t5;
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t6;
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t7;
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t8;
|
||||
SELECT COUNT(*) AS EXPECT_0 FROM t8;
|
||||
|
||||
--connection node_1
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8;
|
||||
|
@ -145,7 +145,7 @@ SELECT COUNT(*) AS EXPECT_1000 FROM t8;
|
|||
--connection node_2
|
||||
--let $wait_condition = SELECT COUNT(*) = 8 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME LIKE 't_'
|
||||
--source include/wait_condition.inc
|
||||
--let $wait_condition = SELECT COUNT(*) = 1000 FROM test.t8;
|
||||
--let $wait_condition = SELECT COUNT(*) = 1000 FROM test.t7;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t1;
|
||||
|
@ -155,7 +155,7 @@ SELECT COUNT(*) AS EXPECT_1000 FROM t4;
|
|||
SELECT COUNT(*) AS EXPECT_1000 FROM t5;
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t6;
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t7;
|
||||
SELECT COUNT(*) AS EXPECT_1000 FROM t8;
|
||||
SELECT COUNT(*) AS EXPECT_0 FROM t8;
|
||||
|
||||
--connection node_1
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8;
|
||||
|
|
|
@ -11,7 +11,5 @@
|
|||
##############################################################################
|
||||
|
||||
galera_2_cluster : MDEV-32631 galera_2_cluster: before_rollback(): Assertion `0' failed
|
||||
galera_ssl_reload : MDEV-32778 galera_ssl_reload failed with warning message
|
||||
galera_pc_bootstrap : temporarily disabled at the request of Codership
|
||||
galera_ipv6_mariabackup_section : temporarily disabled at the request of Codership
|
||||
GCF-354 : MDEV-25614 Galera test failure on GCF-354
|
||||
|
|
|
@ -1,17 +1,20 @@
|
|||
connection node_2;
|
||||
connection node_1;
|
||||
connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
|
||||
connection node_1;
|
||||
connection node_2;
|
||||
connection node_3;
|
||||
connection node_2;
|
||||
SET SESSION wsrep_on=OFF;
|
||||
SET wsrep_on=OFF;
|
||||
DROP SCHEMA test;
|
||||
connection node_3;
|
||||
SET SESSION wsrep_on=OFF;
|
||||
SET wsrep_on=OFF;
|
||||
CREATE TABLE test.t1 (f1 INTEGER NOT NULL PRIMARY KEY) engine=innodb;
|
||||
connection node_1;
|
||||
CREATE TABLE test.t1 (f1 INTEGER NOT NULL PRIMARY KEY) engine=innodb;
|
||||
INSERT INTO test.t1 values (1);
|
||||
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
VARIABLE_VALUE
|
||||
1
|
||||
SHOW STATUS LIKE 'wsrep_cluster_status';
|
||||
Variable_name Value
|
||||
wsrep_cluster_status Primary
|
||||
|
|
|
@ -14,3 +14,9 @@ connection node_3;
|
|||
# restart: with restart_parameters
|
||||
connection node_2;
|
||||
FLUSH SSL;
|
||||
connection node_3;
|
||||
call mtr.add_suppression("WSREP: Handshake failed: unexpected eof while reading");
|
||||
connection node_2;
|
||||
call mtr.add_suppression("WSREP: Handshake failed: unexpected eof while reading");
|
||||
connection node_1;
|
||||
call mtr.add_suppression("WSREP: Handshake failed: unexpected eof while reading");
|
||||
|
|
|
@ -3,3 +3,14 @@
|
|||
[mysqld]
|
||||
wsrep-ignore-apply-errors=0
|
||||
wsrep_sync_wait=0
|
||||
loose-gcf-354=0
|
||||
wsrep-debug=1
|
||||
|
||||
[mysqld.1]
|
||||
wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=1G;pc.weight=4'
|
||||
|
||||
[mysqld.2]
|
||||
wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=1G'
|
||||
|
||||
[mysqld.3]
|
||||
wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=1G'
|
||||
|
|
|
@ -2,9 +2,7 @@
|
|||
--source include/have_innodb.inc
|
||||
--source include/force_restart.inc
|
||||
|
||||
--let $galera_connection_name = node_3
|
||||
--let $galera_server_number = 3
|
||||
--source include/galera_connect.inc
|
||||
--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
|
||||
|
||||
# Save original auto_increment_offset values.
|
||||
--let $node_1=node_1
|
||||
|
@ -16,11 +14,11 @@
|
|||
# 1. Create different inconsistencies on nodes 2 and 3
|
||||
#
|
||||
--connection node_2
|
||||
SET SESSION wsrep_on=OFF;
|
||||
SET wsrep_on=OFF;
|
||||
DROP SCHEMA test;
|
||||
|
||||
--connection node_3
|
||||
SET SESSION wsrep_on=OFF;
|
||||
SET wsrep_on=OFF;
|
||||
CREATE TABLE test.t1 (f1 INTEGER NOT NULL PRIMARY KEY) engine=innodb;
|
||||
#
|
||||
# 2. The following should generate different errors on nodes 2 and 3 and
|
||||
|
@ -29,10 +27,10 @@ CREATE TABLE test.t1 (f1 INTEGER NOT NULL PRIMARY KEY) engine=innodb;
|
|||
#
|
||||
--connection node_1
|
||||
CREATE TABLE test.t1 (f1 INTEGER NOT NULL PRIMARY KEY) engine=innodb;
|
||||
INSERT INTO test.t1 values (1);
|
||||
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
|
||||
--source include/wait_condition.inc
|
||||
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'
|
||||
--source include/wait_condition.inc
|
||||
SHOW STATUS LIKE 'wsrep_cluster_status';
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
!include ../galera_3nodes.cnf
|
||||
|
||||
[mysqld]
|
||||
wsrep-debug=1
|
||||
loose-galera-ssl-reload=1
|
||||
|
||||
[mysqld.1]
|
||||
wsrep_provider_options='base_port=@mysqld.1.#galera_port;socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera_certs/galera.root.crt;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera_certs/galera.1.crt;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera_certs/galera.1.key'
|
||||
wsrep_provider_options='base_port=@mysqld.1.#galera_port;socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/cacert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/client-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/client-key.pem'
|
||||
|
||||
[mysqld.2]
|
||||
wsrep_provider_options='base_port=@mysqld.2.#galera_port;socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera_certs/galera.root.crt;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera_certs/galera.1.crt;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera_certs/galera.1.key'
|
||||
wsrep_provider_options='base_port=@mysqld.2.#galera_port;socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/cacert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/client-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/client-key.pem'
|
||||
|
||||
[mysqld.3]
|
||||
wsrep_provider_options='base_port=@mysqld.3.#galera_port;socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera_certs/galera.root.crt;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera_certs/galera.1.crt;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera_certs/galera.1.key'
|
||||
wsrep_provider_options='base_port=@mysqld.3.#galera_port;socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/cacert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/client-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/client-key.pem'
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
--source include/galera_cluster.inc
|
||||
--source include/have_openssl.inc
|
||||
--source include/have_ssl_communication.inc
|
||||
--source include/force_restart.inc
|
||||
|
||||
--let $galera_version=26.4.8
|
||||
source ../../wsrep/include/check_galera_version.inc;
|
||||
|
@ -31,22 +32,22 @@ let $ssl_cert = $MYSQLTEST_VARDIR/tmp/ssl_cert.pem;
|
|||
let $ssl_key = $MYSQLTEST_VARDIR/tmp/ssl_key.pem;
|
||||
let $ssl_ca = $MYSQLTEST_VARDIR/tmp/ssl_ca.pem;
|
||||
|
||||
copy_file std_data/galera_certs/galera.root.crt $ssl_ca;
|
||||
copy_file std_data/galera_certs/galera.1.crt $ssl_cert;
|
||||
copy_file std_data/galera_certs/galera.1.key $ssl_key;
|
||||
copy_file std_data/cacert.pem $ssl_ca;
|
||||
copy_file std_data/client-cert.pem $ssl_cert;
|
||||
copy_file std_data/client-key.pem $ssl_key;
|
||||
|
||||
--connection node_2
|
||||
--source include/shutdown_mysqld.inc
|
||||
--let $restart_noprint=1
|
||||
--let $restart_parameters = --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1 --wsrep_provider_options=base_port=$NODE_GALERAPORT_2;socket.ssl=yes;socket.ssl_ca=$MYSQL_TEST_DIR/std_data/galera_certs/galera.root.crt;socket.ssl_cert=$MYSQLTEST_VARDIR/tmp/ssl_cert.pem;socket.ssl_key=$MYSQLTEST_VARDIR/tmp/ssl_key.pem
|
||||
--let $restart_parameters = --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1 --wsrep_provider_options=base_port=$NODE_GALERAPORT_2;socket.ssl=yes;socket.ssl_ca=$MYSQL_TEST_DIR/std_data/cacert.pem;socket.ssl_cert=$MYSQLTEST_VARDIR/tmp/ssl_cert.pem;socket.ssl_key=$MYSQLTEST_VARDIR/tmp/ssl_key.pem
|
||||
--source include/start_mysqld.inc
|
||||
--source include/galera_wait_ready.inc
|
||||
|
||||
# Set certificate and key and reload by setting directly `wsrep_provider_options`
|
||||
remove_file $ssl_cert;
|
||||
remove_file $ssl_key;
|
||||
copy_file std_data/galera_certs/galera.2.crt $ssl_cert;
|
||||
copy_file std_data/galera_certs/galera.2.key $ssl_key;
|
||||
copy_file std_data/client-cert.pem $ssl_cert;
|
||||
copy_file std_data/client-key.pem $ssl_key;
|
||||
SET GLOBAL wsrep_provider_options = 'socket.ssl_reload=1';
|
||||
|
||||
--connection node_3
|
||||
|
@ -67,5 +68,12 @@ remove_file $ssl_ca;
|
|||
remove_file $ssl_cert;
|
||||
remove_file $ssl_key;
|
||||
|
||||
--connection node_3
|
||||
call mtr.add_suppression("WSREP: Handshake failed: unexpected eof while reading");
|
||||
--connection node_2
|
||||
call mtr.add_suppression("WSREP: Handshake failed: unexpected eof while reading");
|
||||
--connection node_1
|
||||
call mtr.add_suppression("WSREP: Handshake failed: unexpected eof while reading");
|
||||
|
||||
# Restore original auto_increment_offset values.
|
||||
--source ../galera/include/auto_increment_offset_restore.inc
|
||||
|
|
|
@ -521,3 +521,12 @@ COUNT(*)
|
|||
1
|
||||
DROP TABLE t1;
|
||||
# End of 10.4 tests
|
||||
#
|
||||
# MDEV-29010 Table cannot be loaded after instant ALTER
|
||||
#
|
||||
CREATE TABLE t1 (a CHAR(255), b INT,
|
||||
c INT as (b) VIRTUAL)ENGINE=InnoDB CHARACTER SET utf32;
|
||||
ALTER TABLE t1 DROP COLUMN a;
|
||||
ALTER TABLE t1 DROP COLUMN c;
|
||||
DROP TABLE t1;
|
||||
# End of 10.5 tests
|
||||
|
|
|
@ -553,3 +553,14 @@ SELECT COUNT(*) FROM t1;
|
|||
DROP TABLE t1;
|
||||
|
||||
--echo # End of 10.4 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-29010 Table cannot be loaded after instant ALTER
|
||||
--echo #
|
||||
CREATE TABLE t1 (a CHAR(255), b INT,
|
||||
c INT as (b) VIRTUAL)ENGINE=InnoDB CHARACTER SET utf32;
|
||||
ALTER TABLE t1 DROP COLUMN a;
|
||||
ALTER TABLE t1 DROP COLUMN c;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # End of 10.5 tests
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
################################################################################
|
||||
|
||||
|
||||
--source include/have_sequence.inc
|
||||
|
||||
--echo # - UNIQUE KEY
|
||||
--echo # - INDEX
|
||||
--echo # - FULLTEXT INDEX
|
||||
|
@ -231,3 +233,18 @@ CREATE TABLE t1 (
|
|||
DELETE FROM t1 WHERE vc IS NULL ORDER BY pk;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# MDEV-34632 Assertion `table->field[0]->ptr >= table->record[0] &&
|
||||
# table->field[0]->ptr <= table->record[0] + table->s->reclength' failed in
|
||||
# void handler::assert_icp_limitations(uchar*)
|
||||
#
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (a INT GENERATED ALWAYS AS (1) VIRTUAL,KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 SELECT 1 FROM seq_1_to_2 ;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a INT GENERATED ALWAYS AS (1) VIRTUAL,KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 SELECT 1 UNION SELECT 1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -215,6 +215,25 @@ INDEX(vc(32))
|
|||
);
|
||||
DELETE FROM t1 WHERE vc IS NULL ORDER BY pk;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (a INT GENERATED ALWAYS AS (1) VIRTUAL,KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 SELECT 1 FROM seq_1_to_2 ;
|
||||
Warnings:
|
||||
Warning 1906 The value specified for generated column 'a' in table 't1' has been ignored
|
||||
Warning 1906 The value specified for generated column 'a' in table 't1' has been ignored
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT GENERATED ALWAYS AS (1) VIRTUAL,KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 SELECT 1 UNION SELECT 1;
|
||||
Warnings:
|
||||
Warning 1906 The value specified for generated column 'a' in table 't1' has been ignored
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-11737 Failing assertion: block->magic_n == MEM_BLOCK_MAGIC_N
|
||||
#
|
||||
|
|
|
@ -209,6 +209,25 @@ INDEX(vc(32))
|
|||
);
|
||||
DELETE FROM t1 WHERE vc IS NULL ORDER BY pk;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (a INT GENERATED ALWAYS AS (1) VIRTUAL,KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 SELECT 1 FROM seq_1_to_2 ;
|
||||
Warnings:
|
||||
Warning 1906 The value specified for generated column 'a' in table 't1' has been ignored
|
||||
Warning 1906 The value specified for generated column 'a' in table 't1' has been ignored
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT GENERATED ALWAYS AS (1) VIRTUAL,KEY(a)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 SELECT 1 UNION SELECT 1;
|
||||
Warnings:
|
||||
Warning 1906 The value specified for generated column 'a' in table 't1' has been ignored
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Original test
|
||||
#
|
||||
|
|
|
@ -47,12 +47,25 @@ static void *coc_malloc(size_t size, const char *f __attribute__((unused)),
|
|||
return malloc(size);
|
||||
}
|
||||
|
||||
static void *coc_realloc(void *addr, size_t num,
|
||||
const char *file __attribute__((unused)),
|
||||
int line __attribute__((unused)))
|
||||
{
|
||||
return realloc(addr, num);
|
||||
}
|
||||
|
||||
static void coc_free(void *addr, const char *file __attribute__((unused)),
|
||||
int line __attribute__((unused)))
|
||||
{
|
||||
free(addr);
|
||||
}
|
||||
|
||||
int check_openssl_compatibility()
|
||||
{
|
||||
EVP_CIPHER_CTX *evp_ctx;
|
||||
EVP_MD_CTX *md5_ctx;
|
||||
|
||||
if (!CRYPTO_set_mem_functions(coc_malloc, NULL, NULL))
|
||||
if (!CRYPTO_set_mem_functions(coc_malloc, coc_realloc, coc_free))
|
||||
return 0;
|
||||
|
||||
testing= 1;
|
||||
|
|
|
@ -5225,6 +5225,9 @@ public:
|
|||
cached_time.copy_to_mysql_time(ltime);
|
||||
return (null_value= false);
|
||||
}
|
||||
Item *do_get_copy(THD *thd) const override
|
||||
{ return get_item_copy<Item_date_literal_for_invalid_dates>(thd, this); }
|
||||
Item *do_build_clone(THD *thd) const override { return get_copy(thd); }
|
||||
};
|
||||
|
||||
|
||||
|
@ -6699,7 +6702,9 @@ public:
|
|||
description
|
||||
*/
|
||||
bool associate_with_target_field(THD *thd, Item_field *field) override;
|
||||
|
||||
Item *do_get_copy(THD *thd) const override
|
||||
{ return get_item_copy<Item_default_value>(thd, this); }
|
||||
Item* do_build_clone(THD *thd) const override { return get_copy(thd); }
|
||||
private:
|
||||
bool tie_field(THD *thd);
|
||||
};
|
||||
|
|
|
@ -1814,6 +1814,16 @@ longlong Item_func_eq::val_int()
|
|||
}
|
||||
|
||||
|
||||
Item *Item_func_eq::do_build_clone(THD *thd) const
|
||||
{
|
||||
/*
|
||||
Clone the parent and cast to the child class since there is nothing
|
||||
specific for Item_func_eq
|
||||
*/
|
||||
return (Item_func_eq*) Item_bool_rowready_func2::do_build_clone(thd);
|
||||
}
|
||||
|
||||
|
||||
/** Same as Item_func_eq, but NULL = NULL. */
|
||||
|
||||
bool Item_func_equal::fix_length_and_dec()
|
||||
|
|
|
@ -765,6 +765,7 @@ public:
|
|||
friend class Arg_comparator;
|
||||
Item *do_get_copy(THD *thd) const override
|
||||
{ return get_item_copy<Item_func_eq>(thd, this); }
|
||||
Item *do_build_clone(THD *thd) const override;
|
||||
};
|
||||
|
||||
class Item_func_equal final :public Item_bool_rowready_func2
|
||||
|
@ -2324,7 +2325,7 @@ public:
|
|||
Item *do_build_clone(THD *thd) const override
|
||||
{
|
||||
Item_func_case_simple *clone= (Item_func_case_simple *)
|
||||
Item_func_case::build_clone(thd);
|
||||
Item_func_case::do_build_clone(thd);
|
||||
uint ncases= when_count();
|
||||
if (clone && clone->Predicant_to_list_comparator::init_clone(thd, ncases))
|
||||
return NULL;
|
||||
|
|
21
sql/log.cc
21
sql/log.cc
|
@ -9215,6 +9215,25 @@ static void print_buffer_to_nt_eventlog(enum loglevel level, char *buff,
|
|||
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
#ifndef _WIN32
|
||||
#define fprintf_stderr(format, ...) fprintf(stderr, format, __VA_ARGS__)
|
||||
#else
|
||||
/*
|
||||
On Windows, if FILE* is unbuffered, fprintf() writes output byte by byte.
|
||||
This is suboptimal for printing to error log, we want full message at once.
|
||||
*/
|
||||
#define fprintf_stderr(format, ...) \
|
||||
do \
|
||||
{ \
|
||||
char buf[256]; \
|
||||
size_t len= snprintf(buf, sizeof(buf), format, __VA_ARGS__); \
|
||||
if (len >= sizeof(buf)) \
|
||||
fprintf(stderr, format, __VA_ARGS__); \
|
||||
else \
|
||||
fwrite(buf, len, 1, stderr); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
static void print_buffer_to_file(enum loglevel level, const char *buffer,
|
||||
size_t length)
|
||||
{
|
||||
|
@ -9248,7 +9267,7 @@ static void print_buffer_to_file(enum loglevel level, const char *buffer,
|
|||
localtime_r(&skr, &tm_tmp);
|
||||
start=&tm_tmp;
|
||||
|
||||
fprintf(stderr, "%d-%02d-%02d %2d:%02d:%02d %lu [%s] %.*s%.*s\n",
|
||||
fprintf_stderr( "%d-%02d-%02d %2d:%02d:%02d %lu [%s] %.*s%.*s\n",
|
||||
start->tm_year + 1900,
|
||||
start->tm_mon+1,
|
||||
start->tm_mday,
|
||||
|
|
|
@ -4761,7 +4761,13 @@ mysql_execute_command(THD *thd)
|
|||
|
||||
// For !InnoDB we start TOI if it is not yet started and hope for the best
|
||||
if (!is_innodb && !wsrep_toi)
|
||||
WSREP_TO_ISOLATION_BEGIN(first_table->db.str, first_table->table_name.str, NULL);
|
||||
{
|
||||
const legacy_db_type db_type= first_table->table->file->partition_ht()->db_type;
|
||||
|
||||
/* Currently we support TOI for MyISAM only. */
|
||||
if (db_type == DB_TYPE_MYISAM && wsrep_replicate_myisam)
|
||||
WSREP_TO_ISOLATION_BEGIN(first_table->db.str, first_table->table_name.str, NULL);
|
||||
}
|
||||
}
|
||||
#endif /* WITH_WSREP */
|
||||
/*
|
||||
|
|
|
@ -2971,19 +2971,22 @@ int JOIN::optimize_stage2()
|
|||
which do not use aggregate functions. In such case
|
||||
temporary table may not be used and const condition
|
||||
elements may be lost during further having
|
||||
condition transformation in JOIN::exec.
|
||||
condition transformation.
|
||||
*/
|
||||
if (having && const_table_map && !having->with_sum_func())
|
||||
{
|
||||
having->update_used_tables();
|
||||
having= having->remove_eq_conds(thd, &select_lex->having_value, true);
|
||||
if (select_lex->having_value == Item::COND_FALSE)
|
||||
if (having->const_item() && !having->is_expensive())
|
||||
{
|
||||
having= new (thd->mem_root) Item_bool(thd, false);
|
||||
zero_result_cause= "Impossible HAVING noticed after reading const tables";
|
||||
error= 0;
|
||||
select_lex->mark_const_derived(zero_result_cause);
|
||||
goto setup_subq_exit;
|
||||
bool having_value= having->val_int();
|
||||
having= new (thd->mem_root) Item_bool(thd, having_value);
|
||||
if (!having_value)
|
||||
{
|
||||
zero_result_cause= "Impossible HAVING noticed after reading const tables";
|
||||
error= 0;
|
||||
select_lex->mark_const_derived(zero_result_cause);
|
||||
goto setup_subq_exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -181,6 +181,13 @@ inline void dict_table_t::init_instant(const dict_table_t& table)
|
|||
|
||||
auto fixed_len = dict_col_get_fixed_size(
|
||||
f.col, not_redundant());
|
||||
|
||||
/* Long fixed length can be treated as variable
|
||||
length fields that needs external storage */
|
||||
if (fixed_len > DICT_MAX_FIXED_COL_LEN) {
|
||||
fixed_len = 0;
|
||||
}
|
||||
|
||||
field_map_it->set_dropped();
|
||||
if (!f.col->is_nullable()) {
|
||||
field_map_it->set_not_null();
|
||||
|
|
|
@ -721,29 +721,32 @@ static void init_compute_vcols(void *table)
|
|||
|
||||
static int compute_vcols(MI_INFO *info, uchar *record, int keynum)
|
||||
{
|
||||
int error= 0;
|
||||
/* This mutex is needed for parallel repair */
|
||||
mysql_mutex_lock(&info->s->intern_lock);
|
||||
TABLE *table= (TABLE*)(info->external_ref);
|
||||
table->move_fields(table->field, record, table->field[0]->record_ptr());
|
||||
table->move_fields(table->field, record, table->record[0]);
|
||||
if (keynum == -1) // update all vcols
|
||||
{
|
||||
int error= table->update_virtual_fields(table->file, VCOL_UPDATE_FOR_READ);
|
||||
error= table->update_virtual_fields(table->file, VCOL_UPDATE_FOR_READ);
|
||||
if (table->update_virtual_fields(table->file, VCOL_UPDATE_INDEXED))
|
||||
error= 1;
|
||||
mysql_mutex_unlock(&info->s->intern_lock);
|
||||
return error;
|
||||
}
|
||||
// update only one key
|
||||
KEY *key= table->key_info + keynum;
|
||||
KEY_PART_INFO *kp= key->key_part, *end= kp + key->ext_key_parts;
|
||||
for (; kp < end; kp++)
|
||||
else
|
||||
{
|
||||
Field *f= table->field[kp->fieldnr - 1];
|
||||
if (f->vcol_info && !f->vcol_info->stored_in_db)
|
||||
table->update_virtual_field(f, false);
|
||||
// update only one key
|
||||
KEY *key= table->key_info + keynum;
|
||||
KEY_PART_INFO *kp= key->key_part, *end= kp + key->ext_key_parts;
|
||||
for (; kp < end; kp++)
|
||||
{
|
||||
Field *f= table->field[kp->fieldnr - 1];
|
||||
if (f->vcol_info && !f->vcol_info->stored_in_db)
|
||||
table->update_virtual_field(f, false);
|
||||
}
|
||||
}
|
||||
table->move_fields(table->field, table->record[0], record);
|
||||
mysql_mutex_unlock(&info->s->intern_lock);
|
||||
return 0;
|
||||
return error;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1025,16 +1028,6 @@ void ha_myisam::setup_vcols_for_repair(HA_CHECK *param)
|
|||
table->use_all_columns();
|
||||
}
|
||||
|
||||
void ha_myisam::restore_vcos_after_repair()
|
||||
{
|
||||
if (file->s->base.reclength < file->s->vreclength)
|
||||
{
|
||||
table->move_fields(table->field, table->record[0],
|
||||
table->field[0]->record_ptr());
|
||||
table->default_column_bitmaps();
|
||||
}
|
||||
}
|
||||
|
||||
int ha_myisam::check(THD* thd, HA_CHECK_OPT* check_opt)
|
||||
{
|
||||
if (!file) return HA_ADMIN_INTERNAL_ERROR;
|
||||
|
@ -1131,8 +1124,6 @@ int ha_myisam::check(THD* thd, HA_CHECK_OPT* check_opt)
|
|||
file->update |= HA_STATE_CHANGED | HA_STATE_ROW_CHANGED;
|
||||
}
|
||||
|
||||
restore_vcos_after_repair();
|
||||
|
||||
thd_proc_info(thd, old_proc_info);
|
||||
return error ? HA_ADMIN_CORRUPT : HA_ADMIN_OK;
|
||||
}
|
||||
|
@ -1178,8 +1169,6 @@ int ha_myisam::analyze(THD *thd, HA_CHECK_OPT* check_opt)
|
|||
else if (!mi_is_crashed(file) && !thd->killed)
|
||||
mi_mark_crashed(file);
|
||||
|
||||
restore_vcos_after_repair();
|
||||
|
||||
return error ? HA_ADMIN_CORRUPT : HA_ADMIN_OK;
|
||||
}
|
||||
|
||||
|
@ -1229,8 +1218,6 @@ int ha_myisam::repair(THD* thd, HA_CHECK_OPT *check_opt)
|
|||
break;
|
||||
}
|
||||
|
||||
restore_vcos_after_repair();
|
||||
|
||||
if (!error && start_records != file->state->records &&
|
||||
!(check_opt->flags & T_VERY_SILENT))
|
||||
{
|
||||
|
@ -1268,8 +1255,6 @@ int ha_myisam::optimize(THD* thd, HA_CHECK_OPT *check_opt)
|
|||
error= repair(thd,*param,1);
|
||||
}
|
||||
|
||||
restore_vcos_after_repair();
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -1707,8 +1692,6 @@ int ha_myisam::enable_indexes(key_map map, bool persist)
|
|||
}
|
||||
info(HA_STATUS_CONST);
|
||||
thd_proc_info(thd, save_proc_info);
|
||||
|
||||
restore_vcos_after_repair();
|
||||
}
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
|
|
@ -49,7 +49,6 @@ class ha_myisam final : public handler
|
|||
bool can_enable_indexes;
|
||||
int repair(THD *thd, HA_CHECK ¶m, bool optimize);
|
||||
void setup_vcols_for_repair(HA_CHECK *param);
|
||||
void restore_vcos_after_repair();
|
||||
|
||||
public:
|
||||
ha_myisam(handlerton *hton, TABLE_SHARE *table_arg);
|
||||
|
|
19
storage/spider/mysql-test/spider/bugfix/r/mdev_34682.result
Normal file
19
storage/spider/mysql-test/spider/bugfix/r/mdev_34682.result
Normal file
|
@ -0,0 +1,19 @@
|
|||
set @old_aria_encrypt_tables=@@global.aria_encrypt_tables;
|
||||
set global aria_encrypt_tables=ON;
|
||||
CREATE FUNCTION spider_direct_sql RETURNS INT SONAME 'ha_spider.so';
|
||||
call mtr.add_suppression(".*\\[ERROR\\] SPIDER plugin initialization failed at.* by 'Initialization of encryption failed for");
|
||||
call mtr.add_suppression(".*\\[ERROR\\] Plugin 'SPIDER' registration as a STORAGE ENGINE failed.");
|
||||
INSTALL PLUGIN spider SONAME 'ha_spider.so';
|
||||
ERROR HY000: Can't initialize function 'spider'; Plugin initialization function failed.
|
||||
SELECT spider_direct_sql ('SELECT * FROM s','a','srv "b"');
|
||||
ERROR HY000: Can't initialize function 'spider_direct_sql'; Plugin 'SPIDER' is not loaded
|
||||
Warnings:
|
||||
Note 1305 FUNCTION test.spider_flush_table_mon_cache does not exist
|
||||
Warnings:
|
||||
Note 1305 FUNCTION test.spider_copy_tables does not exist
|
||||
Warnings:
|
||||
Note 1305 FUNCTION test.spider_ping_table does not exist
|
||||
Warnings:
|
||||
Note 1305 FUNCTION test.spider_bg_direct_sql does not exist
|
||||
Warnings:
|
||||
Note 1305 SONAME ha_spider.so does not exist
|
14
storage/spider/mysql-test/spider/bugfix/t/mdev_34682.test
Normal file
14
storage/spider/mysql-test/spider/bugfix/t/mdev_34682.test
Normal file
|
@ -0,0 +1,14 @@
|
|||
set @old_aria_encrypt_tables=@@global.aria_encrypt_tables;
|
||||
set global aria_encrypt_tables=ON;
|
||||
|
||||
CREATE FUNCTION spider_direct_sql RETURNS INT SONAME 'ha_spider.so';
|
||||
call mtr.add_suppression(".*\\[ERROR\\] SPIDER plugin initialization failed at.* by 'Initialization of encryption failed for");
|
||||
call mtr.add_suppression(".*\\[ERROR\\] Plugin 'SPIDER' registration as a STORAGE ENGINE failed.");
|
||||
--error ER_CANT_INITIALIZE_UDF
|
||||
INSTALL PLUGIN spider SONAME 'ha_spider.so';
|
||||
--error ER_CANT_INITIALIZE_UDF
|
||||
SELECT spider_direct_sql ('SELECT * FROM s','a','srv "b"');
|
||||
|
||||
--disable_query_log
|
||||
--source ../../include/clean_up_spider.inc
|
||||
set global aria_encrypt_tables=@old_aria_encrypt_tables;
|
|
@ -1,8 +1,8 @@
|
|||
DROP FUNCTION spider_flush_table_mon_cache;
|
||||
DROP FUNCTION spider_copy_tables;
|
||||
DROP FUNCTION spider_ping_table;
|
||||
DROP FUNCTION spider_bg_direct_sql;
|
||||
DROP FUNCTION spider_direct_sql;
|
||||
DROP FUNCTION IF EXISTS spider_flush_table_mon_cache;
|
||||
DROP FUNCTION IF EXISTS spider_copy_tables;
|
||||
DROP FUNCTION IF EXISTS spider_ping_table;
|
||||
DROP FUNCTION IF EXISTS spider_bg_direct_sql;
|
||||
DROP FUNCTION IF EXISTS spider_direct_sql;
|
||||
UNINSTALL SONAME IF EXISTS 'ha_spider';
|
||||
DROP TABLE IF EXISTS mysql.spider_xa;
|
||||
DROP TABLE IF EXISTS mysql.spider_xa_member;
|
||||
|
|
|
@ -6805,6 +6805,7 @@ error_pt_attr_setstate:
|
|||
pthread_attr_destroy(&spider_pt_attr);
|
||||
error_pt_attr_init:
|
||||
#endif
|
||||
spider_hton_ptr= NULL;
|
||||
DBUG_RETURN(error_num);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue