mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
Merge branch 10.3 into 10.4
This commit is contained in:
commit
681b7784b6
46 changed files with 733 additions and 341 deletions
|
@ -6,6 +6,10 @@ init:
|
||||||
|
|
||||||
version: build-{build}~branch-{branch}
|
version: build-{build}~branch-{branch}
|
||||||
|
|
||||||
|
cache:
|
||||||
|
- C:\ProgramData\chocolatey\bin -> appveyor.yml
|
||||||
|
- C:\ProgramData\chocolatey\lib -> appveyor.yml
|
||||||
|
|
||||||
clone_depth: 1
|
clone_depth: 1
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
|
|
|
@ -99,8 +99,8 @@ extern "C" {
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#define HAVE_READLINE
|
#define HAVE_READLINE
|
||||||
#define USE_POPEN
|
|
||||||
#endif
|
#endif
|
||||||
|
#define USE_POPEN
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_VIDATTR
|
#ifdef HAVE_VIDATTR
|
||||||
|
@ -4193,11 +4193,6 @@ com_nopager(String *buffer __attribute__((unused)),
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Sorry, you can't send the result to an editor in Win32
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef USE_POPEN
|
#ifdef USE_POPEN
|
||||||
static int
|
static int
|
||||||
com_edit(String *buffer,char *line __attribute__((unused)))
|
com_edit(String *buffer,char *line __attribute__((unused)))
|
||||||
|
@ -4218,7 +4213,7 @@ com_edit(String *buffer,char *line __attribute__((unused)))
|
||||||
|
|
||||||
if (!(editor = (char *)getenv("EDITOR")) &&
|
if (!(editor = (char *)getenv("EDITOR")) &&
|
||||||
!(editor = (char *)getenv("VISUAL")))
|
!(editor = (char *)getenv("VISUAL")))
|
||||||
editor = "vi";
|
editor = IF_WIN("notepad","vi");
|
||||||
strxmov(buff,editor," ",filename,NullS);
|
strxmov(buff,editor," ",filename,NullS);
|
||||||
if ((error= system(buff)))
|
if ((error= system(buff)))
|
||||||
{
|
{
|
||||||
|
@ -4233,7 +4228,7 @@ com_edit(String *buffer,char *line __attribute__((unused)))
|
||||||
if ((fd = my_open(filename,O_RDONLY, MYF(MY_WME))) < 0)
|
if ((fd = my_open(filename,O_RDONLY, MYF(MY_WME))) < 0)
|
||||||
goto err;
|
goto err;
|
||||||
(void) buffer->alloc((uint) stat_arg.st_size);
|
(void) buffer->alloc((uint) stat_arg.st_size);
|
||||||
if ((tmp=read(fd,(char*) buffer->ptr(),buffer->alloced_length())) >= 0L)
|
if ((tmp=(int)my_read(fd,(uchar*) buffer->ptr(),buffer->alloced_length(),MYF(0))) >= 0)
|
||||||
buffer->length((uint) tmp);
|
buffer->length((uint) tmp);
|
||||||
else
|
else
|
||||||
buffer->length(0);
|
buffer->length(0);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# MDEV-5317 Compound statement / anonymous blocks
|
# MDEV-5317 Compound statement / anonymous blocks
|
||||||
#
|
#
|
||||||
source include/have_log_bin.inc;
|
source include/have_binlog_format_mixed_or_statement.inc;
|
||||||
delimiter |;
|
delimiter |;
|
||||||
|
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY)|
|
CREATE TABLE t1 (a INT PRIMARY KEY)|
|
||||||
|
|
1
mysql-test/main/ctype_utf8mb4_unicode_ci_def.opt
Normal file
1
mysql-test/main/ctype_utf8mb4_unicode_ci_def.opt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
--character-set-server=utf8mb4,latin1 --collation-server=utf8mb4_unicode_ci
|
11
mysql-test/main/ctype_utf8mb4_unicode_ci_def.result
Normal file
11
mysql-test/main/ctype_utf8mb4_unicode_ci_def.result
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#
|
||||||
|
# Start of 10.3 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# MDEV-27195 SIGSEGV in Table_scope_and_contents_source_st::vers_check_system_fields
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ENGINE=MyISAM WITH SYSTEM VERSIONING AS SELECT 0;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of 10.3 tests
|
||||||
|
#
|
15
mysql-test/main/ctype_utf8mb4_unicode_ci_def.test
Normal file
15
mysql-test/main/ctype_utf8mb4_unicode_ci_def.test
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 10.3 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-27195 SIGSEGV in Table_scope_and_contents_source_st::vers_check_system_fields
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 ENGINE=MyISAM WITH SYSTEM VERSIONING AS SELECT 0;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.3 tests
|
||||||
|
--echo #
|
|
@ -16,4 +16,3 @@ mysql_embedded : Bug#12561297 2011-05-14 Anitha Dependent on PB2 chang
|
||||||
#show_explain : Psergey: random timeout in range-checked-for-each record query.
|
#show_explain : Psergey: random timeout in range-checked-for-each record query.
|
||||||
file_contents : MDEV-6526 these files are not installed anymore
|
file_contents : MDEV-6526 these files are not installed anymore
|
||||||
max_statement_time : cannot possibly work, depends on timing
|
max_statement_time : cannot possibly work, depends on timing
|
||||||
partition_open_files_limit : open_files_limit check broken by MDEV-18360
|
|
||||||
|
|
|
@ -198,5 +198,28 @@ id id
|
||||||
1 NULL
|
1 NULL
|
||||||
2 1
|
2 1
|
||||||
3 3
|
3 3
|
||||||
|
#
|
||||||
|
# MDEV-27270: Wrong query plan with Range Checked for Each Record and ORDER BY ... LIMIT
|
||||||
|
#
|
||||||
|
# This must NOT have "Range checked for each record" without any
|
||||||
|
# provisions to produce rows in the required ordering:
|
||||||
|
explain
|
||||||
|
select
|
||||||
|
t1.id,t2.id
|
||||||
|
from
|
||||||
|
t1 left join
|
||||||
|
t2 on t2.id2 = t1.id and
|
||||||
|
t2.id = (select dd.id
|
||||||
|
from t2 dd
|
||||||
|
where
|
||||||
|
dd.id2 = t1.id and
|
||||||
|
d1 > '2019-02-06 00:00:00'
|
||||||
|
order by
|
||||||
|
dd.d1, dd.d2, dd.id limit 1
|
||||||
|
);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 index NULL PRIMARY 4 NULL # Using index
|
||||||
|
1 PRIMARY t2 eq_ref PRIMARY,id2 PRIMARY 4 func # Using where
|
||||||
|
2 DEPENDENT SUBQUERY dd range id2,for_latest_sort for_latest_sort 6 NULL # Using where
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
|
|
|
@ -184,6 +184,28 @@ from
|
||||||
order by
|
order by
|
||||||
dd.d1 desc, dd.d2 desc, dd.id desc limit 1
|
dd.d1 desc, dd.d2 desc, dd.id desc limit 1
|
||||||
);
|
);
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-27270: Wrong query plan with Range Checked for Each Record and ORDER BY ... LIMIT
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo # This must NOT have "Range checked for each record" without any
|
||||||
|
--echo # provisions to produce rows in the required ordering:
|
||||||
|
--replace_column 9 #
|
||||||
|
explain
|
||||||
|
select
|
||||||
|
t1.id,t2.id
|
||||||
|
from
|
||||||
|
t1 left join
|
||||||
|
t2 on t2.id2 = t1.id and
|
||||||
|
t2.id = (select dd.id
|
||||||
|
from t2 dd
|
||||||
|
where
|
||||||
|
dd.id2 = t1.id and
|
||||||
|
d1 > '2019-02-06 00:00:00'
|
||||||
|
order by
|
||||||
|
dd.d1, dd.d2, dd.id limit 1
|
||||||
|
);
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
DROP TABLE IF EXISTS `t1`;
|
DROP TABLE IF EXISTS `t1`;
|
||||||
|
call mtr.add_suppression("option 'table_open_cache'");
|
||||||
|
call mtr.add_suppression("option 'max_connections'");
|
||||||
# Bug#46922: crash when adding partitions and open_files_limit is reached
|
# Bug#46922: crash when adding partitions and open_files_limit is reached
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY)
|
CREATE TABLE t1 (a INT PRIMARY KEY)
|
||||||
ENGINE=MyISAM PARTITION BY KEY () PARTITIONS 1;
|
ENGINE=MyISAM PARTITION BY KEY () PARTITIONS 1;
|
||||||
|
|
|
@ -5573,6 +5573,19 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# MDEV-21866: Assertion `!result' failed in convert_const_to_int upon 2nd execution of PS
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a BIGINT DEFAULT -1);
|
||||||
|
CREATE VIEW v1 AS SELECT DISTINCT a FROM t1;
|
||||||
|
PREPARE stmt FROM 'SELECT * FROM v1 WHERE a <=> NULL';
|
||||||
|
EXECUTE stmt;
|
||||||
|
a
|
||||||
|
EXECUTE stmt;
|
||||||
|
a
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1;
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
|
@ -4990,6 +4990,22 @@ EXECUTE stmt;
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-21866: Assertion `!result' failed in convert_const_to_int upon 2nd execution of PS
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a BIGINT DEFAULT -1);
|
||||||
|
CREATE VIEW v1 AS SELECT DISTINCT a FROM t1;
|
||||||
|
PREPARE stmt FROM 'SELECT * FROM v1 WHERE a <=> NULL';
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
|
|
@ -3100,6 +3100,48 @@ select * from (values (3),(7),(1) union values (2),(4) order by 1 limit 2) as dt
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-23182: Server crashes in
|
||||||
|
# Item::fix_fields_if_needed / table_value_constr::prepare upon 2nd execution of PS
|
||||||
|
#
|
||||||
|
SET @save_in_predicate_conversion_threshold=@@in_predicate_conversion_threshold;
|
||||||
|
SET in_predicate_conversion_threshold=2;
|
||||||
|
CREATE TABLE t1 (c VARCHAR(10)) DEFAULT CHARSET=utf8;
|
||||||
|
PREPARE stmt FROM "SELECT * FROM t1 WHERE c IN ('10','20')";
|
||||||
|
EXECUTE stmt;
|
||||||
|
c
|
||||||
|
# Without the patch second execution of the prepared statement 'stmt'
|
||||||
|
# results in crash.
|
||||||
|
EXECUTE stmt;
|
||||||
|
c
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP TABLE t1;
|
||||||
|
# Check that the query without conversion doesn't crash server
|
||||||
|
CREATE TABLE t1 (c VARCHAR(10));
|
||||||
|
PREPARE stmt FROM "SELECT * FROM t1 WHERE c IN ('10','20')";
|
||||||
|
EXECUTE stmt;
|
||||||
|
c
|
||||||
|
EXECUTE stmt;
|
||||||
|
c
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP TABLE t1;
|
||||||
|
# Test case for a row expression in the left part of the IN clause
|
||||||
|
CREATE TABLE t1 (a VARCHAR(3), b VARCHAR(3)) DEFAULT CHARSET=utf8;
|
||||||
|
PREPARE stmt FROM "SELECT * FROM t1 WHERE (a, b) IN (('10', '10'), ('20', '20'))";
|
||||||
|
EXECUTE stmt;
|
||||||
|
a b
|
||||||
|
EXECUTE stmt;
|
||||||
|
a b
|
||||||
|
DROP TABLE t1;
|
||||||
|
# Check that the query without conversion is handled successfully
|
||||||
|
CREATE TABLE t1 (a VARCHAR(3), b VARCHAR(3));
|
||||||
|
PREPARE stmt FROM "SELECT * FROM t1 WHERE (a, b) IN (('10', '10'), ('20', '20'))";
|
||||||
|
EXECUTE stmt;
|
||||||
|
a b
|
||||||
|
EXECUTE stmt;
|
||||||
|
a b
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@in_predicate_conversion_threshold = @save_in_predicate_conversion_threshold;
|
||||||
End of 10.3 tests
|
End of 10.3 tests
|
||||||
#
|
#
|
||||||
# MDEV-22610 Crash in INSERT INTO t1 (VALUES (DEFAULT) UNION VALUES (DEFAULT))
|
# MDEV-22610 Crash in INSERT INTO t1 (VALUES (DEFAULT) UNION VALUES (DEFAULT))
|
||||||
|
|
|
@ -1650,6 +1650,52 @@ select * from (values (3),(7),(1) union values (2),(4) order by 1 limit 2) as dt
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-23182: Server crashes in
|
||||||
|
--echo # Item::fix_fields_if_needed / table_value_constr::prepare upon 2nd execution of PS
|
||||||
|
--echo #
|
||||||
|
SET @save_in_predicate_conversion_threshold=@@in_predicate_conversion_threshold;
|
||||||
|
SET in_predicate_conversion_threshold=2;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (c VARCHAR(10)) DEFAULT CHARSET=utf8;
|
||||||
|
PREPARE stmt FROM "SELECT * FROM t1 WHERE c IN ('10','20')";
|
||||||
|
EXECUTE stmt;
|
||||||
|
--echo # Without the patch second execution of the prepared statement 'stmt'
|
||||||
|
--echo # results in crash.
|
||||||
|
EXECUTE stmt;
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo # Check that the query without conversion doesn't crash server
|
||||||
|
CREATE TABLE t1 (c VARCHAR(10));
|
||||||
|
PREPARE stmt FROM "SELECT * FROM t1 WHERE c IN ('10','20')";
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo # Test case for a row expression in the left part of the IN clause
|
||||||
|
CREATE TABLE t1 (a VARCHAR(3), b VARCHAR(3)) DEFAULT CHARSET=utf8;
|
||||||
|
PREPARE stmt FROM "SELECT * FROM t1 WHERE (a, b) IN (('10', '10'), ('20', '20'))";
|
||||||
|
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo # Check that the query without conversion is handled successfully
|
||||||
|
CREATE TABLE t1 (a VARCHAR(3), b VARCHAR(3));
|
||||||
|
PREPARE stmt FROM "SELECT * FROM t1 WHERE (a, b) IN (('10', '10'), ('20', '20'))";
|
||||||
|
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET @@in_predicate_conversion_threshold = @save_in_predicate_conversion_threshold;
|
||||||
|
|
||||||
--echo End of 10.3 tests
|
--echo End of 10.3 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
cacert.pem
|
|
79
mysql-test/std_data/capath/3106f582.0
Normal file
79
mysql-test/std_data/capath/3106f582.0
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
Certificate:
|
||||||
|
Data:
|
||||||
|
Version: 3 (0x2)
|
||||||
|
Serial Number:
|
||||||
|
d0:4d:23:85:ee:59:b3:fa
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
Issuer: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
|
||||||
|
Validity
|
||||||
|
Not Before: Jan 27 10:11:10 2019 GMT
|
||||||
|
Not After : Jan 22 10:11:10 2039 GMT
|
||||||
|
Subject: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
|
||||||
|
Subject Public Key Info:
|
||||||
|
Public Key Algorithm: rsaEncryption
|
||||||
|
Public-Key: (2048 bit)
|
||||||
|
Modulus:
|
||||||
|
00:e8:0e:a7:84:d3:75:30:06:30:b2:10:b9:d1:88:
|
||||||
|
36:2b:5e:f8:c8:44:57:cb:67:72:ab:96:95:33:d5:
|
||||||
|
88:d1:8f:23:50:98:ba:6d:20:00:80:bd:35:d5:c1:
|
||||||
|
bf:98:49:c4:0a:15:4a:34:a6:21:9b:2e:8c:15:09:
|
||||||
|
f0:63:81:02:c2:7c:e2:53:e0:f7:a1:1a:40:5e:8f:
|
||||||
|
41:4a:4c:56:d4:20:f1:d5:a7:c1:53:2e:ff:7e:37:
|
||||||
|
17:cc:7e:74:bd:e2:22:33:ce:8c:77:62:a4:c5:3f:
|
||||||
|
44:35:7b:7e:b9:f5:7d:8c:7a:27:58:fd:2c:42:86:
|
||||||
|
2e:e7:6b:01:99:7b:fe:7d:a7:a1:4f:3e:39:39:54:
|
||||||
|
1f:61:de:74:66:d1:77:4f:43:1b:66:70:29:85:de:
|
||||||
|
fc:8f:8e:1b:7b:a2:66:48:26:7f:9b:a6:fd:4a:e4:
|
||||||
|
dc:eb:ed:bd:f8:e3:f1:57:98:13:6f:f1:a3:2a:e3:
|
||||||
|
73:bd:8d:7c:6f:4b:59:35:bc:b5:42:3e:99:a7:13:
|
||||||
|
8d:be:2e:5c:9a:c6:5b:ab:ae:bf:00:e9:c8:ee:05:
|
||||||
|
22:8e:d5:67:1a:47:9a:6d:9c:f9:42:3e:15:34:f8:
|
||||||
|
31:ec:b4:7e:d3:92:95:b0:b8:f9:66:f3:bd:1d:31:
|
||||||
|
2c:b1:90:62:a1:f8:4e:a6:5d:26:22:f0:e1:fe:16:
|
||||||
|
2b:69
|
||||||
|
Exponent: 65537 (0x10001)
|
||||||
|
X509v3 extensions:
|
||||||
|
X509v3 Subject Key Identifier:
|
||||||
|
CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
|
||||||
|
X509v3 Authority Key Identifier:
|
||||||
|
keyid:CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
|
||||||
|
|
||||||
|
X509v3 Basic Constraints:
|
||||||
|
CA:TRUE
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
df:fd:74:29:5b:5e:9a:8b:09:02:40:59:73:cb:71:47:3f:97:
|
||||||
|
3d:a9:fd:c4:8c:01:29:c9:86:b8:71:55:ff:72:0e:50:dc:c8:
|
||||||
|
b5:e6:91:41:52:47:21:30:cc:4d:e7:3b:4b:db:55:ea:7d:46:
|
||||||
|
eb:53:e0:b7:1b:80:7c:b1:0c:d3:d1:bc:a0:73:ae:96:1f:fd:
|
||||||
|
05:52:7e:54:d5:03:52:69:7b:34:5f:27:d7:98:da:98:76:73:
|
||||||
|
e6:bb:50:59:2a:94:90:67:03:1c:a4:76:2f:ee:ef:59:60:09:
|
||||||
|
48:33:03:2b:52:ed:83:42:f8:71:19:7f:d8:be:40:ed:20:01:
|
||||||
|
90:3c:7e:1c:8b:d2:9f:f3:2f:09:1f:50:c8:10:e1:8a:d9:a5:
|
||||||
|
49:9c:0b:74:17:b9:2b:68:f6:1e:73:c2:73:10:38:b3:35:e2:
|
||||||
|
87:91:1b:a1:d1:9b:81:9d:1b:32:cc:03:6e:4c:82:95:81:11:
|
||||||
|
42:56:e2:16:2b:22:65:db:40:2c:ca:dc:03:f4:d5:07:cf:f5:
|
||||||
|
13:b2:cf:51:5b:24:cd:c7:d1:9b:42:8e:f9:df:5d:1e:5a:09:
|
||||||
|
a3:4f:a9:0b:f4:21:c5:bb:ff:02:93:67:e8:2d:ee:ab:d9:59:
|
||||||
|
76:03:2c:a1:bd:fb:dc:af:b6:82:94:71:85:53:a8:18:0d:3a:
|
||||||
|
9e:42:eb:59
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDfzCCAmegAwIBAgIJANBNI4XuWbP6MA0GCSqGSIb3DQEBCwUAMFYxDzANBgNV
|
||||||
|
BAMMBmNhY2VydDELMAkGA1UEBhMCRkkxETAPBgNVBAgMCEhlbHNpbmtpMREwDwYD
|
||||||
|
VQQHDAhIZWxzaW5raTEQMA4GA1UECgwHTWFyaWFEQjAeFw0xOTAxMjcxMDExMTBa
|
||||||
|
Fw0zOTAxMjIxMDExMTBaMFYxDzANBgNVBAMMBmNhY2VydDELMAkGA1UEBhMCRkkx
|
||||||
|
ETAPBgNVBAgMCEhlbHNpbmtpMREwDwYDVQQHDAhIZWxzaW5raTEQMA4GA1UECgwH
|
||||||
|
TWFyaWFEQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOgOp4TTdTAG
|
||||||
|
MLIQudGINite+MhEV8tncquWlTPViNGPI1CYum0gAIC9NdXBv5hJxAoVSjSmIZsu
|
||||||
|
jBUJ8GOBAsJ84lPg96EaQF6PQUpMVtQg8dWnwVMu/343F8x+dL3iIjPOjHdipMU/
|
||||||
|
RDV7frn1fYx6J1j9LEKGLudrAZl7/n2noU8+OTlUH2HedGbRd09DG2ZwKYXe/I+O
|
||||||
|
G3uiZkgmf5um/Urk3Ovtvfjj8VeYE2/xoyrjc72NfG9LWTW8tUI+macTjb4uXJrG
|
||||||
|
W6uuvwDpyO4FIo7VZxpHmm2c+UI+FTT4Mey0ftOSlbC4+WbzvR0xLLGQYqH4TqZd
|
||||||
|
JiLw4f4WK2kCAwEAAaNQME4wHQYDVR0OBBYEFMpxmYnwcqt1ZrtlagMEcqV7laaT
|
||||||
|
MB8GA1UdIwQYMBaAFMpxmYnwcqt1ZrtlagMEcqV7laaTMAwGA1UdEwQFMAMBAf8w
|
||||||
|
DQYJKoZIhvcNAQELBQADggEBAN/9dClbXpqLCQJAWXPLcUc/lz2p/cSMASnJhrhx
|
||||||
|
Vf9yDlDcyLXmkUFSRyEwzE3nO0vbVep9RutT4LcbgHyxDNPRvKBzrpYf/QVSflTV
|
||||||
|
A1JpezRfJ9eY2ph2c+a7UFkqlJBnAxykdi/u71lgCUgzAytS7YNC+HEZf9i+QO0g
|
||||||
|
AZA8fhyL0p/zLwkfUMgQ4YrZpUmcC3QXuSto9h5zwnMQOLM14oeRG6HRm4GdGzLM
|
||||||
|
A25MgpWBEUJW4hYrImXbQCzK3AP01QfP9ROyz1FbJM3H0ZtCjvnfXR5aCaNPqQv0
|
||||||
|
IcW7/wKTZ+gt7qvZWXYDLKG9+9yvtoKUcYVTqBgNOp5C61k=
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -1,79 +0,0 @@
|
||||||
Certificate:
|
|
||||||
Data:
|
|
||||||
Version: 3 (0x2)
|
|
||||||
Serial Number:
|
|
||||||
d0:4d:23:85:ee:59:b3:fa
|
|
||||||
Signature Algorithm: sha256WithRSAEncryption
|
|
||||||
Issuer: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
|
|
||||||
Validity
|
|
||||||
Not Before: Jan 27 10:11:10 2019 GMT
|
|
||||||
Not After : Jan 22 10:11:10 2039 GMT
|
|
||||||
Subject: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
|
|
||||||
Subject Public Key Info:
|
|
||||||
Public Key Algorithm: rsaEncryption
|
|
||||||
Public-Key: (2048 bit)
|
|
||||||
Modulus:
|
|
||||||
00:e8:0e:a7:84:d3:75:30:06:30:b2:10:b9:d1:88:
|
|
||||||
36:2b:5e:f8:c8:44:57:cb:67:72:ab:96:95:33:d5:
|
|
||||||
88:d1:8f:23:50:98:ba:6d:20:00:80:bd:35:d5:c1:
|
|
||||||
bf:98:49:c4:0a:15:4a:34:a6:21:9b:2e:8c:15:09:
|
|
||||||
f0:63:81:02:c2:7c:e2:53:e0:f7:a1:1a:40:5e:8f:
|
|
||||||
41:4a:4c:56:d4:20:f1:d5:a7:c1:53:2e:ff:7e:37:
|
|
||||||
17:cc:7e:74:bd:e2:22:33:ce:8c:77:62:a4:c5:3f:
|
|
||||||
44:35:7b:7e:b9:f5:7d:8c:7a:27:58:fd:2c:42:86:
|
|
||||||
2e:e7:6b:01:99:7b:fe:7d:a7:a1:4f:3e:39:39:54:
|
|
||||||
1f:61:de:74:66:d1:77:4f:43:1b:66:70:29:85:de:
|
|
||||||
fc:8f:8e:1b:7b:a2:66:48:26:7f:9b:a6:fd:4a:e4:
|
|
||||||
dc:eb:ed:bd:f8:e3:f1:57:98:13:6f:f1:a3:2a:e3:
|
|
||||||
73:bd:8d:7c:6f:4b:59:35:bc:b5:42:3e:99:a7:13:
|
|
||||||
8d:be:2e:5c:9a:c6:5b:ab:ae:bf:00:e9:c8:ee:05:
|
|
||||||
22:8e:d5:67:1a:47:9a:6d:9c:f9:42:3e:15:34:f8:
|
|
||||||
31:ec:b4:7e:d3:92:95:b0:b8:f9:66:f3:bd:1d:31:
|
|
||||||
2c:b1:90:62:a1:f8:4e:a6:5d:26:22:f0:e1:fe:16:
|
|
||||||
2b:69
|
|
||||||
Exponent: 65537 (0x10001)
|
|
||||||
X509v3 extensions:
|
|
||||||
X509v3 Subject Key Identifier:
|
|
||||||
CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
|
|
||||||
X509v3 Authority Key Identifier:
|
|
||||||
keyid:CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
|
|
||||||
|
|
||||||
X509v3 Basic Constraints:
|
|
||||||
CA:TRUE
|
|
||||||
Signature Algorithm: sha256WithRSAEncryption
|
|
||||||
df:fd:74:29:5b:5e:9a:8b:09:02:40:59:73:cb:71:47:3f:97:
|
|
||||||
3d:a9:fd:c4:8c:01:29:c9:86:b8:71:55:ff:72:0e:50:dc:c8:
|
|
||||||
b5:e6:91:41:52:47:21:30:cc:4d:e7:3b:4b:db:55:ea:7d:46:
|
|
||||||
eb:53:e0:b7:1b:80:7c:b1:0c:d3:d1:bc:a0:73:ae:96:1f:fd:
|
|
||||||
05:52:7e:54:d5:03:52:69:7b:34:5f:27:d7:98:da:98:76:73:
|
|
||||||
e6:bb:50:59:2a:94:90:67:03:1c:a4:76:2f:ee:ef:59:60:09:
|
|
||||||
48:33:03:2b:52:ed:83:42:f8:71:19:7f:d8:be:40:ed:20:01:
|
|
||||||
90:3c:7e:1c:8b:d2:9f:f3:2f:09:1f:50:c8:10:e1:8a:d9:a5:
|
|
||||||
49:9c:0b:74:17:b9:2b:68:f6:1e:73:c2:73:10:38:b3:35:e2:
|
|
||||||
87:91:1b:a1:d1:9b:81:9d:1b:32:cc:03:6e:4c:82:95:81:11:
|
|
||||||
42:56:e2:16:2b:22:65:db:40:2c:ca:dc:03:f4:d5:07:cf:f5:
|
|
||||||
13:b2:cf:51:5b:24:cd:c7:d1:9b:42:8e:f9:df:5d:1e:5a:09:
|
|
||||||
a3:4f:a9:0b:f4:21:c5:bb:ff:02:93:67:e8:2d:ee:ab:d9:59:
|
|
||||||
76:03:2c:a1:bd:fb:dc:af:b6:82:94:71:85:53:a8:18:0d:3a:
|
|
||||||
9e:42:eb:59
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDfzCCAmegAwIBAgIJANBNI4XuWbP6MA0GCSqGSIb3DQEBCwUAMFYxDzANBgNV
|
|
||||||
BAMMBmNhY2VydDELMAkGA1UEBhMCRkkxETAPBgNVBAgMCEhlbHNpbmtpMREwDwYD
|
|
||||||
VQQHDAhIZWxzaW5raTEQMA4GA1UECgwHTWFyaWFEQjAeFw0xOTAxMjcxMDExMTBa
|
|
||||||
Fw0zOTAxMjIxMDExMTBaMFYxDzANBgNVBAMMBmNhY2VydDELMAkGA1UEBhMCRkkx
|
|
||||||
ETAPBgNVBAgMCEhlbHNpbmtpMREwDwYDVQQHDAhIZWxzaW5raTEQMA4GA1UECgwH
|
|
||||||
TWFyaWFEQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOgOp4TTdTAG
|
|
||||||
MLIQudGINite+MhEV8tncquWlTPViNGPI1CYum0gAIC9NdXBv5hJxAoVSjSmIZsu
|
|
||||||
jBUJ8GOBAsJ84lPg96EaQF6PQUpMVtQg8dWnwVMu/343F8x+dL3iIjPOjHdipMU/
|
|
||||||
RDV7frn1fYx6J1j9LEKGLudrAZl7/n2noU8+OTlUH2HedGbRd09DG2ZwKYXe/I+O
|
|
||||||
G3uiZkgmf5um/Urk3Ovtvfjj8VeYE2/xoyrjc72NfG9LWTW8tUI+macTjb4uXJrG
|
|
||||||
W6uuvwDpyO4FIo7VZxpHmm2c+UI+FTT4Mey0ftOSlbC4+WbzvR0xLLGQYqH4TqZd
|
|
||||||
JiLw4f4WK2kCAwEAAaNQME4wHQYDVR0OBBYEFMpxmYnwcqt1ZrtlagMEcqV7laaT
|
|
||||||
MB8GA1UdIwQYMBaAFMpxmYnwcqt1ZrtlagMEcqV7laaTMAwGA1UdEwQFMAMBAf8w
|
|
||||||
DQYJKoZIhvcNAQELBQADggEBAN/9dClbXpqLCQJAWXPLcUc/lz2p/cSMASnJhrhx
|
|
||||||
Vf9yDlDcyLXmkUFSRyEwzE3nO0vbVep9RutT4LcbgHyxDNPRvKBzrpYf/QVSflTV
|
|
||||||
A1JpezRfJ9eY2ph2c+a7UFkqlJBnAxykdi/u71lgCUgzAytS7YNC+HEZf9i+QO0g
|
|
||||||
AZA8fhyL0p/zLwkfUMgQ4YrZpUmcC3QXuSto9h5zwnMQOLM14oeRG6HRm4GdGzLM
|
|
||||||
A25MgpWBEUJW4hYrImXbQCzK3AP01QfP9ROyz1FbJM3H0ZtCjvnfXR5aCaNPqQv0
|
|
||||||
IcW7/wKTZ+gt7qvZWXYDLKG9+9yvtoKUcYVTqBgNOp5C61k=
|
|
||||||
-----END CERTIFICATE-----
|
|
|
@ -1 +0,0 @@
|
||||||
cacert.pem
|
|
79
mysql-test/std_data/capath/ed1f42db.0
Normal file
79
mysql-test/std_data/capath/ed1f42db.0
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
Certificate:
|
||||||
|
Data:
|
||||||
|
Version: 3 (0x2)
|
||||||
|
Serial Number:
|
||||||
|
d0:4d:23:85:ee:59:b3:fa
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
Issuer: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
|
||||||
|
Validity
|
||||||
|
Not Before: Jan 27 10:11:10 2019 GMT
|
||||||
|
Not After : Jan 22 10:11:10 2039 GMT
|
||||||
|
Subject: CN=cacert, C=FI, ST=Helsinki, L=Helsinki, O=MariaDB
|
||||||
|
Subject Public Key Info:
|
||||||
|
Public Key Algorithm: rsaEncryption
|
||||||
|
Public-Key: (2048 bit)
|
||||||
|
Modulus:
|
||||||
|
00:e8:0e:a7:84:d3:75:30:06:30:b2:10:b9:d1:88:
|
||||||
|
36:2b:5e:f8:c8:44:57:cb:67:72:ab:96:95:33:d5:
|
||||||
|
88:d1:8f:23:50:98:ba:6d:20:00:80:bd:35:d5:c1:
|
||||||
|
bf:98:49:c4:0a:15:4a:34:a6:21:9b:2e:8c:15:09:
|
||||||
|
f0:63:81:02:c2:7c:e2:53:e0:f7:a1:1a:40:5e:8f:
|
||||||
|
41:4a:4c:56:d4:20:f1:d5:a7:c1:53:2e:ff:7e:37:
|
||||||
|
17:cc:7e:74:bd:e2:22:33:ce:8c:77:62:a4:c5:3f:
|
||||||
|
44:35:7b:7e:b9:f5:7d:8c:7a:27:58:fd:2c:42:86:
|
||||||
|
2e:e7:6b:01:99:7b:fe:7d:a7:a1:4f:3e:39:39:54:
|
||||||
|
1f:61:de:74:66:d1:77:4f:43:1b:66:70:29:85:de:
|
||||||
|
fc:8f:8e:1b:7b:a2:66:48:26:7f:9b:a6:fd:4a:e4:
|
||||||
|
dc:eb:ed:bd:f8:e3:f1:57:98:13:6f:f1:a3:2a:e3:
|
||||||
|
73:bd:8d:7c:6f:4b:59:35:bc:b5:42:3e:99:a7:13:
|
||||||
|
8d:be:2e:5c:9a:c6:5b:ab:ae:bf:00:e9:c8:ee:05:
|
||||||
|
22:8e:d5:67:1a:47:9a:6d:9c:f9:42:3e:15:34:f8:
|
||||||
|
31:ec:b4:7e:d3:92:95:b0:b8:f9:66:f3:bd:1d:31:
|
||||||
|
2c:b1:90:62:a1:f8:4e:a6:5d:26:22:f0:e1:fe:16:
|
||||||
|
2b:69
|
||||||
|
Exponent: 65537 (0x10001)
|
||||||
|
X509v3 extensions:
|
||||||
|
X509v3 Subject Key Identifier:
|
||||||
|
CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
|
||||||
|
X509v3 Authority Key Identifier:
|
||||||
|
keyid:CA:71:99:89:F0:72:AB:75:66:BB:65:6A:03:04:72:A5:7B:95:A6:93
|
||||||
|
|
||||||
|
X509v3 Basic Constraints:
|
||||||
|
CA:TRUE
|
||||||
|
Signature Algorithm: sha256WithRSAEncryption
|
||||||
|
df:fd:74:29:5b:5e:9a:8b:09:02:40:59:73:cb:71:47:3f:97:
|
||||||
|
3d:a9:fd:c4:8c:01:29:c9:86:b8:71:55:ff:72:0e:50:dc:c8:
|
||||||
|
b5:e6:91:41:52:47:21:30:cc:4d:e7:3b:4b:db:55:ea:7d:46:
|
||||||
|
eb:53:e0:b7:1b:80:7c:b1:0c:d3:d1:bc:a0:73:ae:96:1f:fd:
|
||||||
|
05:52:7e:54:d5:03:52:69:7b:34:5f:27:d7:98:da:98:76:73:
|
||||||
|
e6:bb:50:59:2a:94:90:67:03:1c:a4:76:2f:ee:ef:59:60:09:
|
||||||
|
48:33:03:2b:52:ed:83:42:f8:71:19:7f:d8:be:40:ed:20:01:
|
||||||
|
90:3c:7e:1c:8b:d2:9f:f3:2f:09:1f:50:c8:10:e1:8a:d9:a5:
|
||||||
|
49:9c:0b:74:17:b9:2b:68:f6:1e:73:c2:73:10:38:b3:35:e2:
|
||||||
|
87:91:1b:a1:d1:9b:81:9d:1b:32:cc:03:6e:4c:82:95:81:11:
|
||||||
|
42:56:e2:16:2b:22:65:db:40:2c:ca:dc:03:f4:d5:07:cf:f5:
|
||||||
|
13:b2:cf:51:5b:24:cd:c7:d1:9b:42:8e:f9:df:5d:1e:5a:09:
|
||||||
|
a3:4f:a9:0b:f4:21:c5:bb:ff:02:93:67:e8:2d:ee:ab:d9:59:
|
||||||
|
76:03:2c:a1:bd:fb:dc:af:b6:82:94:71:85:53:a8:18:0d:3a:
|
||||||
|
9e:42:eb:59
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDfzCCAmegAwIBAgIJANBNI4XuWbP6MA0GCSqGSIb3DQEBCwUAMFYxDzANBgNV
|
||||||
|
BAMMBmNhY2VydDELMAkGA1UEBhMCRkkxETAPBgNVBAgMCEhlbHNpbmtpMREwDwYD
|
||||||
|
VQQHDAhIZWxzaW5raTEQMA4GA1UECgwHTWFyaWFEQjAeFw0xOTAxMjcxMDExMTBa
|
||||||
|
Fw0zOTAxMjIxMDExMTBaMFYxDzANBgNVBAMMBmNhY2VydDELMAkGA1UEBhMCRkkx
|
||||||
|
ETAPBgNVBAgMCEhlbHNpbmtpMREwDwYDVQQHDAhIZWxzaW5raTEQMA4GA1UECgwH
|
||||||
|
TWFyaWFEQjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOgOp4TTdTAG
|
||||||
|
MLIQudGINite+MhEV8tncquWlTPViNGPI1CYum0gAIC9NdXBv5hJxAoVSjSmIZsu
|
||||||
|
jBUJ8GOBAsJ84lPg96EaQF6PQUpMVtQg8dWnwVMu/343F8x+dL3iIjPOjHdipMU/
|
||||||
|
RDV7frn1fYx6J1j9LEKGLudrAZl7/n2noU8+OTlUH2HedGbRd09DG2ZwKYXe/I+O
|
||||||
|
G3uiZkgmf5um/Urk3Ovtvfjj8VeYE2/xoyrjc72NfG9LWTW8tUI+macTjb4uXJrG
|
||||||
|
W6uuvwDpyO4FIo7VZxpHmm2c+UI+FTT4Mey0ftOSlbC4+WbzvR0xLLGQYqH4TqZd
|
||||||
|
JiLw4f4WK2kCAwEAAaNQME4wHQYDVR0OBBYEFMpxmYnwcqt1ZrtlagMEcqV7laaT
|
||||||
|
MB8GA1UdIwQYMBaAFMpxmYnwcqt1ZrtlagMEcqV7laaTMAwGA1UdEwQFMAMBAf8w
|
||||||
|
DQYJKoZIhvcNAQELBQADggEBAN/9dClbXpqLCQJAWXPLcUc/lz2p/cSMASnJhrhx
|
||||||
|
Vf9yDlDcyLXmkUFSRyEwzE3nO0vbVep9RutT4LcbgHyxDNPRvKBzrpYf/QVSflTV
|
||||||
|
A1JpezRfJ9eY2ph2c+a7UFkqlJBnAxykdi/u71lgCUgzAytS7YNC+HEZf9i+QO0g
|
||||||
|
AZA8fhyL0p/zLwkfUMgQ4YrZpUmcC3QXuSto9h5zwnMQOLM14oeRG6HRm4GdGzLM
|
||||||
|
A25MgpWBEUJW4hYrImXbQCzK3AP01QfP9ROyz1FbJM3H0ZtCjvnfXR5aCaNPqQv0
|
||||||
|
IcW7/wKTZ+gt7qvZWXYDLKG9+9yvtoKUcYVTqBgNOp5C61k=
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -1,4 +1,3 @@
|
||||||
-- source include/have_log_bin.inc
|
|
||||||
|
|
||||||
# We change binlog format inside the test, so no need to re-run with
|
# We change binlog format inside the test, so no need to re-run with
|
||||||
# more than one binlog_format.
|
# more than one binlog_format.
|
||||||
|
@ -9,13 +8,9 @@
|
||||||
|
|
||||||
# save status
|
# save status
|
||||||
|
|
||||||
let $oblf=`select @@SESSION.BINLOG_FORMAT`;
|
|
||||||
let $otfc=`select @@log_bin_trust_function_creators`;
|
let $otfc=`select @@log_bin_trust_function_creators`;
|
||||||
|
|
||||||
set global log_bin_trust_function_creators=0;
|
set global log_bin_trust_function_creators=0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# fail *on definition*
|
# fail *on definition*
|
||||||
|
|
||||||
set binlog_format=STATEMENT;
|
set binlog_format=STATEMENT;
|
||||||
|
@ -186,6 +181,7 @@ drop function fn16456;
|
||||||
# restore status
|
# restore status
|
||||||
|
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
eval set binlog_format=$oblf;
|
set binlog_format=STATEMENT;
|
||||||
eval set global log_bin_trust_function_creators=$otfc;
|
eval set global log_bin_trust_function_creators=$otfc;
|
||||||
|
reset master;
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
|
|
@ -37,5 +37,4 @@ mysql-wsrep#198 : MDEV-24446: galera.mysql-wsrep#198 MTR failed: query 'reap' fa
|
||||||
partition : MDEV-19958 Galera test failure on galera.partition
|
partition : MDEV-19958 Galera test failure on galera.partition
|
||||||
query_cache: MDEV-15805 Test failure on galera.query_cache
|
query_cache: MDEV-15805 Test failure on galera.query_cache
|
||||||
versioning_trx_id: MDEV-18590: galera.versioning_trx_id: Test failure: mysqltest: Result content mismatch
|
versioning_trx_id: MDEV-18590: galera.versioning_trx_id: Test failure: mysqltest: Result content mismatch
|
||||||
galera_ssl_mode_server : Certificate CA mismatch
|
|
||||||
galera_bf_abort_at_after_statement : Unstable
|
galera_bf_abort_at_after_statement : Unstable
|
||||||
|
|
|
@ -15,6 +15,14 @@ galera_gtid_2_cluster : MDEV-23775 Galera test failure on galera_3nodes.galera_g
|
||||||
galera_ist_gcache_rollover : MDEV-23578 WSREP: exception caused by message: {v=0,t=1,ut=255,o=4,s=0,sr=0,as=1,f=6,src=50524cfe,srcvid=view_id(REG,50524cfe,4),insvid=view_id(UNKNOWN,00000000,0),ru=00000000,r=[-1,-1],fs=75,nl=(}
|
galera_ist_gcache_rollover : MDEV-23578 WSREP: exception caused by message: {v=0,t=1,ut=255,o=4,s=0,sr=0,as=1,f=6,src=50524cfe,srcvid=view_id(REG,50524cfe,4),insvid=view_id(UNKNOWN,00000000,0),ru=00000000,r=[-1,-1],fs=75,nl=(}
|
||||||
galera_load_data_ist : MDEV-24639 galera_3nodes.galera_load_data_ist MTR failed with SIGABRT: query 'reap' failed: 2013: Lost connection to MySQL server during query
|
galera_load_data_ist : MDEV-24639 galera_3nodes.galera_load_data_ist MTR failed with SIGABRT: query 'reap' failed: 2013: Lost connection to MySQL server during query
|
||||||
galera_load_data_ist : MDEV-24639 galera_3nodes.galera_load_data_ist MTR failed with SIGABRT: query 'reap' failed: 2013: Lost connection to MySQL server during query
|
galera_load_data_ist : MDEV-24639 galera_3nodes.galera_load_data_ist MTR failed with SIGABRT: query 'reap' failed: 2013: Lost connection to MySQL server during query
|
||||||
|
galera_pc_bootstrap : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
||||||
galera_safe_to_bootstrap : MDEV-24097 galera_3nodes.galera_safe_to_bootstrap MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
galera_safe_to_bootstrap : MDEV-24097 galera_3nodes.galera_safe_to_bootstrap MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
||||||
galera_slave_options_do : MDEV-8798
|
galera_slave_options_do : MDEV-8798
|
||||||
galera_slave_options_ignore : MDEV-8798
|
galera_slave_options_ignore : MDEV-8798
|
||||||
|
galera_ipv6_mariabackup : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
||||||
|
galera_ipv6_mariabackup_section : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
||||||
|
galera_ipv6_rsync : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
||||||
|
galera_ipv6_rsync_section : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
||||||
|
galera_ssl_reload : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
||||||
|
galera_toi_vote : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
||||||
|
galera_wsrep_schema_init : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed
|
||||||
|
|
|
@ -8,10 +8,10 @@ CREATE TABLE t1 (f1 INTEGER PRIMARY KEY);
|
||||||
INSERT INTO t1 VALUES (01), (02), (03), (04), (05);
|
INSERT INTO t1 VALUES (01), (02), (03), (04), (05);
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Unloading wsrep provider ...
|
Unloading wsrep provider ...
|
||||||
SET GLOBAL wsrep_provider = 'none';
|
SET GLOBAL wsrep_cluster_address = '';
|
||||||
connection node_3;
|
connection node_3;
|
||||||
Unloading wsrep provider ...
|
Unloading wsrep provider ...
|
||||||
SET GLOBAL wsrep_provider = 'none';
|
SET GLOBAL wsrep_cluster_address = '';
|
||||||
connection node_1;
|
connection node_1;
|
||||||
INSERT INTO t1 VALUES (11), (12), (13), (14), (15);
|
INSERT INTO t1 VALUES (11), (12), (13), (14), (15);
|
||||||
INSERT INTO t1 VALUES (21), (22), (23), (24), (25);
|
INSERT INTO t1 VALUES (21), (22), (23), (24), (25);
|
||||||
|
|
|
@ -29,9 +29,11 @@ INSERT INTO t1 VALUES (01), (02), (03), (04), (05);
|
||||||
|
|
||||||
# Disconnect nodes #2 and #3
|
# Disconnect nodes #2 and #3
|
||||||
--connection node_2
|
--connection node_2
|
||||||
|
--let $wsrep_cluster_address_orig2 = `select @@wsrep_cluster_address`
|
||||||
--source suite/galera/include/galera_stop_replication.inc
|
--source suite/galera/include/galera_stop_replication.inc
|
||||||
|
|
||||||
--connection node_3
|
--connection node_3
|
||||||
|
--let $wsrep_cluster_address_orig3 = `select @@wsrep_cluster_address`
|
||||||
--source suite/galera/include/galera_stop_replication.inc
|
--source suite/galera/include/galera_stop_replication.inc
|
||||||
|
|
||||||
--connection node_1
|
--connection node_1
|
||||||
|
@ -51,8 +53,8 @@ INSERT INTO t1 VALUES (21), (22), (23), (24), (25);
|
||||||
# ... and restart providers to force IST
|
# ... and restart providers to force IST
|
||||||
--connection node_2
|
--connection node_2
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
--eval SET GLOBAL wsrep_provider = '$wsrep_provider_orig';
|
SET GLOBAL wsrep_cluster_address='';
|
||||||
--eval SET GLOBAL wsrep_cluster_address = '$wsrep_cluster_address_orig';
|
--eval SET GLOBAL wsrep_cluster_address = '$wsrep_cluster_address_orig2';
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
|
||||||
--connection node_1
|
--connection node_1
|
||||||
|
@ -60,8 +62,8 @@ INSERT INTO t1 VALUES (31), (32), (33), (34), (35);
|
||||||
|
|
||||||
--connection node_3
|
--connection node_3
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
--eval SET GLOBAL wsrep_provider = '$wsrep_provider_orig';
|
SET GLOBAL wsrep_cluster_address='';
|
||||||
--eval SET GLOBAL wsrep_cluster_address = '$wsrep_cluster_address_orig';
|
--eval SET GLOBAL wsrep_cluster_address = '$wsrep_cluster_address_orig3';
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
|
||||||
--connection node_1
|
--connection node_1
|
||||||
|
|
|
@ -16,7 +16,6 @@ WHERE engine = 'innodb'
|
||||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||||
FOUND 1 /File .path.to.non-existent.*ib_logfile101: 'create' returned OS error \d+/ in mysqld.1.err
|
FOUND 1 /File .path.to.non-existent.*ib_logfile101: 'create' returned OS error \d+/ in mysqld.1.err
|
||||||
# Remove ibdata1 & ibdata2
|
|
||||||
# Successfully let InnoDB create tablespaces
|
# Successfully let InnoDB create tablespaces
|
||||||
# restart: --innodb-log-files-in-group=3 --innodb-log-group-home-dir=MYSQLTEST_VARDIR/tmp/log_file --innodb-data-home-dir=MYSQLTEST_VARDIR/tmp/log_file --innodb-undo-directory=MYSQLTEST_VARDIR/tmp/log_file --innodb-undo-logs=20 --innodb-undo-tablespaces=3 --innodb-data-file-path=ibdata1:16M;ibdata2:10M:autoextend
|
# restart: --innodb-log-files-in-group=3 --innodb-log-group-home-dir=MYSQLTEST_VARDIR/tmp/log_file --innodb-data-home-dir=MYSQLTEST_VARDIR/tmp/log_file --innodb-undo-directory=MYSQLTEST_VARDIR/tmp/log_file --innodb-undo-logs=20 --innodb-undo-tablespaces=3 --innodb-data-file-path=ibdata1:16M;ibdata2:10M:autoextend
|
||||||
SELECT COUNT(*) `1` FROM INFORMATION_SCHEMA.ENGINES
|
SELECT COUNT(*) `1` FROM INFORMATION_SCHEMA.ENGINES
|
||||||
|
|
|
@ -66,6 +66,13 @@ SELECT * FROM t;
|
||||||
a
|
a
|
||||||
3
|
3
|
||||||
20
|
20
|
||||||
|
#
|
||||||
|
# MDEV-27332 SIGSEGV in fetch_data_into_cache
|
||||||
|
#
|
||||||
|
BEGIN;
|
||||||
|
SELECT trx_state FROM information_schema.innodb_trx;
|
||||||
|
trx_state
|
||||||
|
COMMIT;
|
||||||
# restart
|
# restart
|
||||||
SELECT * FROM t;
|
SELECT * FROM t;
|
||||||
a
|
a
|
||||||
|
|
|
@ -138,6 +138,7 @@ show tables;
|
||||||
Tables_in_test
|
Tables_in_test
|
||||||
create temporary table t1 (keyc int, c1 char(100), c2 char(100)) engine = innodb;
|
create temporary table t1 (keyc int, c1 char(100), c2 char(100)) engine = innodb;
|
||||||
ERROR HY000: Can't create table `test`.`t1` (errno: 165 "Table is read only")
|
ERROR HY000: Can't create table `test`.`t1` (errno: 165 "Table is read only")
|
||||||
|
SET GLOBAL innodb_encrypt_tables=DEFAULT;
|
||||||
# test various bad start-up parameters
|
# test various bad start-up parameters
|
||||||
FOUND 2 /InnoDB: Unable to create temporary file/ in mysqld.1.err
|
FOUND 2 /InnoDB: Unable to create temporary file/ in mysqld.1.err
|
||||||
# restart: --innodb_data_file_path=ibdata1:12M:autoextend --innodb_temp_data_file_path=ibdata1:12M:autoextend
|
# restart: --innodb_data_file_path=ibdata1:12M:autoextend --innodb_temp_data_file_path=ibdata1:12M:autoextend
|
||||||
|
|
|
@ -67,9 +67,6 @@ eval $check_no_innodb;
|
||||||
let SEARCH_PATTERN=File .path.to.non-existent.*ib_logfile101: 'create' returned OS error \d+;
|
let SEARCH_PATTERN=File .path.to.non-existent.*ib_logfile101: 'create' returned OS error \d+;
|
||||||
--source include/search_pattern_in_file.inc
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
--echo # Remove ibdata1 & ibdata2
|
|
||||||
--remove_file $bugdir/ibdata1
|
|
||||||
--remove_file $bugdir/ibdata2
|
|
||||||
--list_files $bugdir
|
--list_files $bugdir
|
||||||
|
|
||||||
--echo # Successfully let InnoDB create tablespaces
|
--echo # Successfully let InnoDB create tablespaces
|
||||||
|
|
|
@ -78,6 +78,13 @@ SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||||
SELECT * FROM t;
|
SELECT * FROM t;
|
||||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
SELECT * FROM t;
|
SELECT * FROM t;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-27332 SIGSEGV in fetch_data_into_cache
|
||||||
|
--echo #
|
||||||
|
BEGIN;
|
||||||
|
SELECT trx_state FROM information_schema.innodb_trx;
|
||||||
|
COMMIT;
|
||||||
--let $restart_parameters=
|
--let $restart_parameters=
|
||||||
--source include/restart_mysqld.inc
|
--source include/restart_mysqld.inc
|
||||||
SELECT * FROM t;
|
SELECT * FROM t;
|
||||||
|
|
|
@ -121,6 +121,8 @@ show tables;
|
||||||
--error ER_CANT_CREATE_TABLE
|
--error ER_CANT_CREATE_TABLE
|
||||||
create temporary table t1 (keyc int, c1 char(100), c2 char(100)) engine = innodb;
|
create temporary table t1 (keyc int, c1 char(100), c2 char(100)) engine = innodb;
|
||||||
|
|
||||||
|
SET GLOBAL innodb_encrypt_tables=DEFAULT;
|
||||||
|
|
||||||
--echo # test various bad start-up parameters
|
--echo # test various bad start-up parameters
|
||||||
|
|
||||||
let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
#rpl_get_master_version_and_clock : Bug#11766137 Jan 05 2011 joro Valgrind warnings
|
|
||||||
rpl_partition_archive : MDEV-5077 2013-09-27 svoj Cannot exchange partition with archive table
|
rpl_partition_archive : MDEV-5077 2013-09-27 svoj Cannot exchange partition with archive table
|
||||||
rpl_row_binlog_max_cache_size : MDEV-11092
|
rpl_row_binlog_max_cache_size : MDEV-11092
|
||||||
rpl_row_index_choice : MDEV-11666
|
rpl_row_index_choice : MDEV-11666
|
||||||
|
|
|
@ -754,6 +754,15 @@ explain partitions select * from t1;
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 pn # NULL NULL NULL NULL # #
|
1 SIMPLE t1 pn # NULL NULL NULL NULL # #
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-27244 Table corruption upon adding serial data type
|
||||||
|
#
|
||||||
|
create table t1 (f int, key(f)) with system versioning
|
||||||
|
partition by system_time limit 10 (partition p0 history, partition pn current);
|
||||||
|
alter table t1 add x serial;
|
||||||
|
alter table t1 add partition (partition p1 history);
|
||||||
|
alter table t1 add partition (partition p2 history);
|
||||||
|
drop table t1;
|
||||||
# End of 10.3 tests
|
# End of 10.3 tests
|
||||||
#
|
#
|
||||||
# MDEV-22283 Server crashes in key_copy or unexpected error 156: The table already existed in the storage engine
|
# MDEV-22283 Server crashes in key_copy or unexpected error 156: The table already existed in the storage engine
|
||||||
|
|
|
@ -718,6 +718,16 @@ explain partitions select * from t1 for system_time as of '2000-01-01 02:00:00';
|
||||||
explain partitions select * from t1;
|
explain partitions select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-27244 Table corruption upon adding serial data type
|
||||||
|
--echo #
|
||||||
|
create table t1 (f int, key(f)) with system versioning
|
||||||
|
partition by system_time limit 10 (partition p0 history, partition pn current);
|
||||||
|
alter table t1 add x serial;
|
||||||
|
alter table t1 add partition (partition p1 history);
|
||||||
|
alter table t1 add partition (partition p2 history);
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo # End of 10.3 tests
|
--echo # End of 10.3 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
# This is a common command line parser to be sourced by other SST scripts
|
# This is a common command line parser to be sourced by other SST scripts
|
||||||
|
|
||||||
set -u
|
set -ue
|
||||||
|
|
||||||
# Setting the path for some utilities on CentOS
|
# Setting the path for some utilities on CentOS
|
||||||
export PATH="$PATH:/usr/sbin:/usr/bin:/sbin:/bin"
|
export PATH="$PATH:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
@ -879,9 +879,9 @@ fi
|
||||||
|
|
||||||
wsrep_cleanup_progress_file()
|
wsrep_cleanup_progress_file()
|
||||||
{
|
{
|
||||||
[ -n "$SST_PROGRESS_FILE" -a \
|
if [ -n "$SST_PROGRESS_FILE" -a -f "$SST_PROGRESS_FILE" ]; then
|
||||||
-f "$SST_PROGRESS_FILE" ] && \
|
|
||||||
rm -f "$SST_PROGRESS_FILE" 2>/dev/null || :
|
rm -f "$SST_PROGRESS_FILE" 2>/dev/null || :
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
wsrep_check_program()
|
wsrep_check_program()
|
||||||
|
@ -897,13 +897,10 @@ wsrep_check_program()
|
||||||
wsrep_check_programs()
|
wsrep_check_programs()
|
||||||
{
|
{
|
||||||
local ret=0
|
local ret=0
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
while [ $# -gt 0 ]
|
|
||||||
do
|
|
||||||
wsrep_check_program "$1" || ret=$?
|
wsrep_check_program "$1" || ret=$?
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
return $ret
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1028,11 +1025,11 @@ check_sockets_utils()
|
||||||
#
|
#
|
||||||
check_port()
|
check_port()
|
||||||
{
|
{
|
||||||
local pid="$1"
|
local pid="${1:-0}"
|
||||||
local port="$2"
|
local port="$2"
|
||||||
local utils="$3"
|
local utils="$3"
|
||||||
|
|
||||||
[ -z "$pid" ] || [ $pid -eq 0 ] && pid='[0-9]+'
|
[ $pid -le 0 ] && pid='[0-9]+'
|
||||||
|
|
||||||
local rc=1
|
local rc=1
|
||||||
|
|
||||||
|
@ -1070,9 +1067,15 @@ check_for_dhparams()
|
||||||
if [ ! -r "$ssl_dhparams" ]; then
|
if [ ! -r "$ssl_dhparams" ]; then
|
||||||
get_openssl
|
get_openssl
|
||||||
if [ -n "$OPENSSL_BINARY" ]; then
|
if [ -n "$OPENSSL_BINARY" ]; then
|
||||||
wsrep_log_info "Could not find dhparams file, creating $ssl_dhparams"
|
wsrep_log_info \
|
||||||
if ! "$OPENSSL_BINARY" dhparam -out "$ssl_dhparams" 2048 >/dev/null 2>&1
|
"Could not find dhparams file, creating $ssl_dhparams"
|
||||||
then
|
local bug=0
|
||||||
|
local errmsg
|
||||||
|
errmsg=$("$OPENSSL_BINARY" \
|
||||||
|
dhparam -out "$ssl_dhparams" 2048 2>&1) || bug=1
|
||||||
|
if [ $bug -ne 0 ]; then
|
||||||
|
wsrep_log_info "run: \"$OPENSSL_BINARY\" dhparam -out \"$ssl_dhparams\" 2048"
|
||||||
|
wsrep_log_info "output: $errmsg"
|
||||||
wsrep_log_error "******** ERROR *****************************************"
|
wsrep_log_error "******** ERROR *****************************************"
|
||||||
wsrep_log_error "* Could not create the dhparams.pem file with OpenSSL. *"
|
wsrep_log_error "* Could not create the dhparams.pem file with OpenSSL. *"
|
||||||
wsrep_log_error "********************************************************"
|
wsrep_log_error "********************************************************"
|
||||||
|
@ -1099,6 +1102,16 @@ verify_ca_matches_cert()
|
||||||
local ca="$2"
|
local ca="$2"
|
||||||
local cap="$3"
|
local cap="$3"
|
||||||
|
|
||||||
|
local readable=1; [ ! -r "$cert" ] && readable=0
|
||||||
|
[ -n "$ca" -a ! -r "$ca" ] && readable=0
|
||||||
|
[ -n "$cap" -a ! -r "$cap" ] && readable=0
|
||||||
|
|
||||||
|
if [ $readable -eq 0 ]; then
|
||||||
|
wsrep_log_error \
|
||||||
|
"Both PEM file and CA file (or path) must be readable"
|
||||||
|
exit 22
|
||||||
|
fi
|
||||||
|
|
||||||
# If the openssl utility is not installed, then
|
# If the openssl utility is not installed, then
|
||||||
# we will not do this certificate check:
|
# we will not do this certificate check:
|
||||||
get_openssl
|
get_openssl
|
||||||
|
@ -1107,16 +1120,6 @@ verify_ca_matches_cert()
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local readable=1; [ ! -r "$cert" ] && readable=0
|
|
||||||
[ -n "$ca" ] && [ ! -r "$ca" ] && readable=0
|
|
||||||
[ -n "$cap" ] && [ ! -r "$cap" ] && readable=0
|
|
||||||
|
|
||||||
if [ readable -eq 0 ]; then
|
|
||||||
wsrep_log_error \
|
|
||||||
"Both PEM file and CA file (or path) must be readable"
|
|
||||||
exit 22
|
|
||||||
fi
|
|
||||||
|
|
||||||
local not_match=0
|
local not_match=0
|
||||||
local errmsg
|
local errmsg
|
||||||
errmsg=$("$OPENSSL_BINARY" verify -verbose \
|
errmsg=$("$OPENSSL_BINARY" verify -verbose \
|
||||||
|
@ -1158,6 +1161,7 @@ verify_cert_matches_key()
|
||||||
# If the diff utility is not installed, then
|
# If the diff utility is not installed, then
|
||||||
# we will not do this certificate check:
|
# we will not do this certificate check:
|
||||||
if [ -z "$(commandex diff)" ]; then
|
if [ -z "$(commandex diff)" ]; then
|
||||||
|
wsrep_log_info "diff utility not found"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1165,6 +1169,7 @@ verify_cert_matches_key()
|
||||||
# we will not do this certificate check:
|
# we will not do this certificate check:
|
||||||
get_openssl
|
get_openssl
|
||||||
if [ -z "$OPENSSL_BINARY" ]; then
|
if [ -z "$OPENSSL_BINARY" ]; then
|
||||||
|
wsrep_log_info "openssl utility not found"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1253,18 +1258,18 @@ check_pid()
|
||||||
{
|
{
|
||||||
local pid_file="$1"
|
local pid_file="$1"
|
||||||
if [ -r "$pid_file" ]; then
|
if [ -r "$pid_file" ]; then
|
||||||
local pid=$(cat "$pid_file" 2>/dev/null)
|
local pid=$(cat "$pid_file" 2>/dev/null || :)
|
||||||
if [ -n "$pid" ]; then
|
if [ -n "$pid" ]; then
|
||||||
if [ $pid -ne 0 ]; then
|
if [ $pid -gt 0 ]; then
|
||||||
if ps -p "$pid" >/dev/null 2>&1; then
|
if ps -p $pid >/dev/null 2>&1; then
|
||||||
CHECK_PID=$pid
|
CHECK_PID=$pid
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
local remove=${2:-0}
|
local remove=${2:-0}
|
||||||
if [ $remove -eq 1 ]; then
|
if [ $remove -ne 0 ]; then
|
||||||
rm -f "$pid_file"
|
rm -f "$pid_file" || :
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
CHECK_PID=0
|
CHECK_PID=0
|
||||||
|
@ -1289,7 +1294,7 @@ cleanup_pid()
|
||||||
local pid_file="${2:-}"
|
local pid_file="${2:-}"
|
||||||
local config="${3:-}"
|
local config="${3:-}"
|
||||||
|
|
||||||
if [ $pid -ne 0 ]; then
|
if [ $pid -gt 0 ]; then
|
||||||
if ps -p $pid >/dev/null 2>&1; then
|
if ps -p $pid >/dev/null 2>&1; then
|
||||||
if kill $pid >/dev/null 2>&1; then
|
if kill $pid >/dev/null 2>&1; then
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
|
@ -1302,7 +1307,7 @@ cleanup_pid()
|
||||||
if [ $force -eq 0 ]; then
|
if [ $force -eq 0 ]; then
|
||||||
round=8
|
round=8
|
||||||
force=1
|
force=1
|
||||||
kill -9 $pid >/dev/null 2>&1
|
kill -9 $pid >/dev/null 2>&1 || :
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
|
@ -1316,8 +1321,8 @@ cleanup_pid()
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$pid_file" ] && [ -f "$pid_file" ] && rm -f "$pid_file"
|
[ -n "$pid_file" -a -f "$pid_file" ] && rm -f "$pid_file" || :
|
||||||
[ -n "$config" ] && [ -f "$config" ] && rm -f "$config"
|
[ -n "$config" -a -f "$config" ] && rm -f "$config" || :
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -1339,3 +1344,46 @@ get_proc()
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_server_ssl_config()
|
||||||
|
{
|
||||||
|
# backward-compatible behavior:
|
||||||
|
tcert=$(parse_cnf 'sst' 'tca')
|
||||||
|
tcap=$(parse_cnf 'sst' 'tcapath')
|
||||||
|
tpem=$(parse_cnf 'sst' 'tcert')
|
||||||
|
tkey=$(parse_cnf 'sst' 'tkey')
|
||||||
|
# reading new ssl configuration options:
|
||||||
|
local tcert2=$(parse_cnf "$encgroups" 'ssl-ca')
|
||||||
|
local tcap2=$(parse_cnf "$encgroups" 'ssl-capath')
|
||||||
|
local tpem2=$(parse_cnf "$encgroups" 'ssl-cert')
|
||||||
|
local tkey2=$(parse_cnf "$encgroups" 'ssl-key')
|
||||||
|
# if there are no old options, then we take new ones:
|
||||||
|
if [ -z "$tcert" -a -z "$tcap" -a -z "$tpem" -a -z "$tkey" ]; then
|
||||||
|
tcert="$tcert2"
|
||||||
|
tcap="$tcap2"
|
||||||
|
tpem="$tpem2"
|
||||||
|
tkey="$tkey2"
|
||||||
|
# checking for presence of the new-style SSL configuration:
|
||||||
|
elif [ -n "$tcert2" -o -n "$tcap2" -o -n "$tpem2" -o -n "$tkey2" ]; then
|
||||||
|
if [ "$tcert" != "$tcert2" -o \
|
||||||
|
"$tcap" != "$tcap2" -o \
|
||||||
|
"$tpem" != "$tpem2" -o \
|
||||||
|
"$tkey" != "$tkey2" ]
|
||||||
|
then
|
||||||
|
wsrep_log_info \
|
||||||
|
"new ssl configuration options (ssl-ca[path], ssl-cert" \
|
||||||
|
"and ssl-key) are ignored by SST due to presence" \
|
||||||
|
"of the tca[path], tcert and/or tkey in the [sst] section"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$tcert" ]; then
|
||||||
|
tcert=$(trim_string "$tcert")
|
||||||
|
if [ "${tcert%/}" != "$tcert" -o -d "$tcert" ]; then
|
||||||
|
tcap="$tcert"
|
||||||
|
tcert=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$tcap" ]; then
|
||||||
|
tcap=$(trim_string "$tcap")
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
|
@ -30,7 +30,6 @@ eformat=""
|
||||||
ekey=""
|
ekey=""
|
||||||
ekeyfile=""
|
ekeyfile=""
|
||||||
encrypt=0
|
encrypt=0
|
||||||
ecode=0
|
|
||||||
ssyslog=""
|
ssyslog=""
|
||||||
ssystag=""
|
ssystag=""
|
||||||
BACKUP_PID=""
|
BACKUP_PID=""
|
||||||
|
@ -465,49 +464,6 @@ adjust_progress()
|
||||||
|
|
||||||
encgroups='--mysqld|sst|xtrabackup'
|
encgroups='--mysqld|sst|xtrabackup'
|
||||||
|
|
||||||
check_server_ssl_config()
|
|
||||||
{
|
|
||||||
# backward-compatible behavior:
|
|
||||||
tcert=$(parse_cnf 'sst' 'tca')
|
|
||||||
tcap=$(parse_cnf 'sst' 'tcapath')
|
|
||||||
tpem=$(parse_cnf 'sst' 'tcert')
|
|
||||||
tkey=$(parse_cnf 'sst' 'tkey')
|
|
||||||
# reading new ssl configuration options:
|
|
||||||
local tcert2=$(parse_cnf "$encgroups" 'ssl-ca')
|
|
||||||
local tcap2=$(parse_cnf "$encgroups" 'ssl-capath')
|
|
||||||
local tpem2=$(parse_cnf "$encgroups" 'ssl-cert')
|
|
||||||
local tkey2=$(parse_cnf "$encgroups" 'ssl-key')
|
|
||||||
# if there are no old options, then we take new ones:
|
|
||||||
if [ -z "$tcert" -a -z "$tcap" -a -z "$tpem" -a -z "$tkey" ]; then
|
|
||||||
tcert="$tcert2"
|
|
||||||
tcap="$tcap2"
|
|
||||||
tpem="$tpem2"
|
|
||||||
tkey="$tkey2"
|
|
||||||
# checking for presence of the new-style SSL configuration:
|
|
||||||
elif [ -n "$tcert2" -o -n "$tcap2" -o -n "$tpem2" -o -n "$tkey2" ]; then
|
|
||||||
if [ "$tcert" != "$tcert2" -o \
|
|
||||||
"$tcap" != "$tcap2" -o \
|
|
||||||
"$tpem" != "$tpem2" -o \
|
|
||||||
"$tkey" != "$tkey2" ]
|
|
||||||
then
|
|
||||||
wsrep_log_info \
|
|
||||||
"new ssl configuration options (ssl-ca[path], ssl-cert" \
|
|
||||||
"and ssl-key) are ignored by SST due to presence" \
|
|
||||||
"of the tca[path], tcert and/or tkey in the [sst] section"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -n "$tcert" ]; then
|
|
||||||
tcert=$(trim_string "$tcert")
|
|
||||||
if [ "${tcert%/}" != "$tcert" ] || [ -d "$tcert" ]; then
|
|
||||||
tcap="$tcert"
|
|
||||||
tcert=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -n "$tcap" ]; then
|
|
||||||
tcap=$(trim_string "$tcap")
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
read_cnf()
|
read_cnf()
|
||||||
{
|
{
|
||||||
sfmt=$(parse_cnf sst streamfmt 'mbstream')
|
sfmt=$(parse_cnf sst streamfmt 'mbstream')
|
||||||
|
@ -647,7 +603,7 @@ cleanup_at_exit()
|
||||||
cleanup_pid $CHECK_PID "$BACKUP_PID"
|
cleanup_pid $CHECK_PID "$BACKUP_PID"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
[ -f "$DATA/$IST_FILE" ] && rm -f "$DATA/$IST_FILE"
|
[ -f "$DATA/$IST_FILE" ] && rm -f "$DATA/$IST_FILE" || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$progress" -a -p "$progress" ]; then
|
if [ -n "$progress" -a -p "$progress" ]; then
|
||||||
|
@ -658,19 +614,18 @@ cleanup_at_exit()
|
||||||
wsrep_log_info "Cleaning up temporary directories"
|
wsrep_log_info "Cleaning up temporary directories"
|
||||||
|
|
||||||
if [ "$WSREP_SST_OPT_ROLE" = 'joiner' ]; then
|
if [ "$WSREP_SST_OPT_ROLE" = 'joiner' ]; then
|
||||||
if [ -n "$STATDIR" ]; then
|
[ -n "$STATDIR" -a -d "$STATDIR" ] && rm -rf "$STATDIR" || :
|
||||||
[ -d "$STATDIR" ] && rm -rf "$STATDIR"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
[ -n "$xtmpdir" -a -d "$xtmpdir" ] && rm -rf "$xtmpdir" || :
|
[ -n "$xtmpdir" -a -d "$xtmpdir" ] && rm -rf "$xtmpdir" || :
|
||||||
[ -n "$itmpdir" -a -d "$itmpdir" ] && rm -rf "$itmpdir" || :
|
[ -n "$itmpdir" -a -d "$itmpdir" ] && rm -rf "$itmpdir" || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Final cleanup
|
# Final cleanup
|
||||||
pgid=$(ps -o pgid= $$ | grep -o '[0-9]*')
|
pgid=$(ps -o pgid= $$ 2>/dev/null | grep -o '[0-9]*' || :)
|
||||||
|
|
||||||
# This means no setsid done in mysqld.
|
# This means no setsid done in mysqld.
|
||||||
# We don't want to kill mysqld here otherwise.
|
# We don't want to kill mysqld here otherwise.
|
||||||
|
if [ -n "$pgid" ]; then
|
||||||
if [ $$ -eq $pgid ]; then
|
if [ $$ -eq $pgid ]; then
|
||||||
# This means a signal was delivered to the process.
|
# This means a signal was delivered to the process.
|
||||||
# So, more cleanup.
|
# So, more cleanup.
|
||||||
|
@ -678,6 +633,11 @@ cleanup_at_exit()
|
||||||
kill -KILL -- -$$ || :
|
kill -KILL -- -$$ || :
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${SST_PID:-}" ]; then
|
||||||
|
[ -f "$SST_PID" ] && rm -f "$SST_PID" || :
|
||||||
|
fi
|
||||||
|
|
||||||
exit $estatus
|
exit $estatus
|
||||||
}
|
}
|
||||||
|
@ -967,7 +927,7 @@ setup_commands()
|
||||||
fi
|
fi
|
||||||
INNOAPPLY="$BACKUP_BIN --prepare$disver$recovery${iapts:+ }$iapts$INNOEXTRA --target-dir='$DATA' --datadir='$DATA'$mysqld_args $INNOAPPLY"
|
INNOAPPLY="$BACKUP_BIN --prepare$disver$recovery${iapts:+ }$iapts$INNOEXTRA --target-dir='$DATA' --datadir='$DATA'$mysqld_args $INNOAPPLY"
|
||||||
INNOMOVE="$BACKUP_BIN$WSREP_SST_OPT_CONF --move-back$disver${impts:+ }$impts --force-non-empty-directories --target-dir='$DATA' --datadir='${TDATA:-$DATA}' $INNOMOVE"
|
INNOMOVE="$BACKUP_BIN$WSREP_SST_OPT_CONF --move-back$disver${impts:+ }$impts --force-non-empty-directories --target-dir='$DATA' --datadir='${TDATA:-$DATA}' $INNOMOVE"
|
||||||
INNOBACKUP="$BACKUP_BIN$WSREP_SST_OPT_CONF --backup$disver${iopts:+ }$iopts $tmpopts$INNOEXTRA --galera-info --stream=$sfmt --target-dir='$itmpdir' --datadir='$DATA'$mysqld_args $INNOBACKUP"
|
INNOBACKUP="$BACKUP_BIN$WSREP_SST_OPT_CONF --backup$disver${iopts:+ }$iopts$tmpopts$INNOEXTRA --galera-info --stream=$sfmt --target-dir='$itmpdir' --datadir='$DATA'$mysqld_args $INNOBACKUP"
|
||||||
}
|
}
|
||||||
|
|
||||||
get_stream
|
get_stream
|
||||||
|
@ -995,7 +955,7 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
wsrep_log_info "Using '$xtmpdir' as mariabackup temporary directory"
|
wsrep_log_info "Using '$xtmpdir' as mariabackup temporary directory"
|
||||||
tmpopts="--tmpdir='$xtmpdir'"
|
tmpopts=" --tmpdir='$xtmpdir'"
|
||||||
|
|
||||||
itmpdir="$(mktemp -d)"
|
itmpdir="$(mktemp -d)"
|
||||||
wsrep_log_info "Using '$itmpdir' as mariabackup working directory"
|
wsrep_log_info "Using '$itmpdir' as mariabackup working directory"
|
||||||
|
@ -1161,10 +1121,23 @@ then
|
||||||
impts="--parallel=$backup_threads${impts:+ }$impts"
|
impts="--parallel=$backup_threads${impts:+ }$impts"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
stagemsg='Joiner-Recv'
|
SST_PID="$WSREP_SST_OPT_DATA/wsrep_sst.pid"
|
||||||
|
|
||||||
sencrypted=1
|
# give some time for previous SST to complete:
|
||||||
nthreads=1
|
check_round=0
|
||||||
|
while check_pid "$SST_PID" 0; do
|
||||||
|
wsrep_log_info "previous SST is not completed, waiting for it to exit"
|
||||||
|
check_round=$(( check_round + 1 ))
|
||||||
|
if [ $check_round -eq 10 ]; then
|
||||||
|
wsrep_log_error "previous SST script still running."
|
||||||
|
exit 114 # EALREADY
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo $$ > "$SST_PID"
|
||||||
|
|
||||||
|
stagemsg='Joiner-Recv'
|
||||||
|
|
||||||
MODULE="xtrabackup_sst"
|
MODULE="xtrabackup_sst"
|
||||||
|
|
||||||
|
@ -1208,7 +1181,7 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
get_keys
|
get_keys
|
||||||
if [ $encrypt -eq 1 -a $sencrypted -eq 1 ]; then
|
if [ $encrypt -eq 1 ]; then
|
||||||
strmcmd="$ecmd | $strmcmd"
|
strmcmd="$ecmd | $strmcmd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1263,13 +1236,15 @@ then
|
||||||
|
|
||||||
if [ -n "$WSREP_SST_OPT_BINLOG" ]; then
|
if [ -n "$WSREP_SST_OPT_BINLOG" ]; then
|
||||||
binlog_dir=$(dirname "$WSREP_SST_OPT_BINLOG")
|
binlog_dir=$(dirname "$WSREP_SST_OPT_BINLOG")
|
||||||
|
if [ -d "$binlog_dir" ]; then
|
||||||
cd "$binlog_dir"
|
cd "$binlog_dir"
|
||||||
wsrep_log_info "Cleaning the binlog directory $binlog_dir as well"
|
wsrep_log_info "Cleaning the binlog directory $binlog_dir as well"
|
||||||
rm -fv "$WSREP_SST_OPT_BINLOG".[0-9]* 1>&2 \+ || :
|
rm -fv "$WSREP_SST_OPT_BINLOG".[0-9]* 1>&2 \+ || :
|
||||||
[ -f "$WSREP_SST_OPT_BINLOG_INDEX" ] && \
|
[ -f "$WSREP_SST_OPT_BINLOG_INDEX" ] && \
|
||||||
rm -fv "$WSREP_SST_OPT_BINLOG_INDEX" 1>&2 \+ || :
|
rm -fv "$WSREP_SST_OPT_BINLOG_INDEX" 1>&2 \+
|
||||||
cd "$OLD_PWD"
|
cd "$OLD_PWD"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
TDATA="$DATA"
|
TDATA="$DATA"
|
||||||
DATA="$DATA/.sst"
|
DATA="$DATA/.sst"
|
||||||
|
@ -1285,7 +1260,7 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Compact backups are not supported by mariabackup
|
# Compact backups are not supported by mariabackup
|
||||||
if grep -q -F 'compact = 1' "$DATA/xtrabackup_checkpoints"; then
|
if grep -qw -F 'compact = 1' "$DATA/xtrabackup_checkpoints"; then
|
||||||
wsrep_log_info "Index compaction detected"
|
wsrep_log_info "Index compaction detected"
|
||||||
wsrel_log_error "Compact backups are not supported by mariabackup"
|
wsrel_log_error "Compact backups are not supported by mariabackup"
|
||||||
exit 2
|
exit 2
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston
|
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston
|
||||||
# MA 02110-1335 USA.
|
# MA 02110-1335 USA.
|
||||||
|
|
||||||
# This is a reference script for rsync-based state snapshot tansfer
|
# This is a reference script for rsync-based state snapshot transfer
|
||||||
|
|
||||||
RSYNC_REAL_PID=0 # rsync process id
|
RSYNC_REAL_PID=0 # rsync process id
|
||||||
STUNNEL_REAL_PID=0 # stunnel process id
|
STUNNEL_REAL_PID=0 # stunnel process id
|
||||||
|
@ -41,7 +41,7 @@ cleanup_joiner()
|
||||||
if cleanup_pid $STUNNEL_REAL_PID "$STUNNEL_PID" "$STUNNEL_CONF"; then
|
if cleanup_pid $STUNNEL_REAL_PID "$STUNNEL_PID" "$STUNNEL_CONF"; then
|
||||||
if [ $RSYNC_REAL_PID -eq 0 ]; then
|
if [ $RSYNC_REAL_PID -eq 0 ]; then
|
||||||
if [ -r "$RSYNC_PID" ]; then
|
if [ -r "$RSYNC_PID" ]; then
|
||||||
RSYNC_REAL_PID=$(cat "$RSYNC_PID" 2>/dev/null)
|
RSYNC_REAL_PID=$(cat "$RSYNC_PID" 2>/dev/null || :)
|
||||||
if [ -z "$RSYNC_REAL_PID" ]; then
|
if [ -z "$RSYNC_REAL_PID" ]; then
|
||||||
RSYNC_REAL_PID=0
|
RSYNC_REAL_PID=0
|
||||||
fi
|
fi
|
||||||
|
@ -79,7 +79,7 @@ check_pid_and_port()
|
||||||
|
|
||||||
local utils='rsync|stunnel'
|
local utils='rsync|stunnel'
|
||||||
|
|
||||||
if ! check_port "$pid" "$port" "$utils"; then
|
if ! check_port $pid "$port" "$utils"; then
|
||||||
local port_info
|
local port_info
|
||||||
local busy=0
|
local busy=0
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ check_pid_and_port()
|
||||||
grep -q -E "[[:space:]](\\*|\\[?::\\]?):$port[[:space:]]" && busy=1
|
grep -q -E "[[:space:]](\\*|\\[?::\\]?):$port[[:space:]]" && busy=1
|
||||||
else
|
else
|
||||||
local filter='([^[:space:]]+[[:space:]]+){4}[^[:space:]]+'
|
local filter='([^[:space:]]+[[:space:]]+){4}[^[:space:]]+'
|
||||||
if [ $sockstat_available -eq 1 ]; then
|
if [ $sockstat_available -ne 0 ]; then
|
||||||
local opts='-p'
|
local opts='-p'
|
||||||
if [ "$OS" = 'FreeBSD' ]; then
|
if [ "$OS" = 'FreeBSD' ]; then
|
||||||
# sockstat on FreeBSD requires the "-s" option
|
# sockstat on FreeBSD requires the "-s" option
|
||||||
|
@ -110,18 +110,20 @@ check_pid_and_port()
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $busy -eq 0 ]; then
|
if [ $busy -eq 0 ]; then
|
||||||
if echo "$port_info" | grep -qw -F "[$addr]:$port" || \
|
if ! echo "$port_info" | grep -qw -F "[$addr]:$port" && \
|
||||||
echo "$port_info" | grep -qw -F -- "$addr:$port"
|
! echo "$port_info" | grep -qw -F -- "$addr:$port"
|
||||||
then
|
then
|
||||||
busy=1
|
if ! ps -p $pid >/dev/null 2>&1; then
|
||||||
|
wsrep_log_error \
|
||||||
|
"rsync or stunnel daemon (PID: $pid)" \
|
||||||
|
"terminated unexpectedly."
|
||||||
|
exit 16 # EBUSY
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $busy -eq 0 ]; then
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if ! check_port "$pid" "$port" "$utils"; then
|
if ! check_port $pid "$port" "$utils"; then
|
||||||
wsrep_log_error "rsync or stunnel daemon port '$port'" \
|
wsrep_log_error "rsync or stunnel daemon port '$port'" \
|
||||||
"has been taken by another program"
|
"has been taken by another program"
|
||||||
exit 16 # EBUSY
|
exit 16 # EBUSY
|
||||||
|
@ -197,60 +199,16 @@ INNODB_UNDO_DIR=$(pwd -P)
|
||||||
|
|
||||||
cd "$OLD_PWD"
|
cd "$OLD_PWD"
|
||||||
|
|
||||||
# Old filter - include everything except selected
|
encgroups='--mysqld|sst'
|
||||||
# FILTER=(--exclude '*.err' --exclude '*.pid' --exclude '*.sock' \
|
|
||||||
# --exclude '*.conf' --exclude core --exclude 'galera.*' \
|
|
||||||
# --exclude grastate.txt --exclude '*.pem' \
|
|
||||||
# --exclude '*.[0-9][0-9][0-9][0-9][0-9][0-9]' --exclude '*.index')
|
|
||||||
|
|
||||||
# New filter - exclude everything except dirs (schemas) and innodb files
|
check_server_ssl_config
|
||||||
FILTER="-f '- /lost+found'
|
|
||||||
-f '- /.zfs'
|
|
||||||
-f '- /.fseventsd'
|
|
||||||
-f '- /.Trashes'
|
|
||||||
-f '- /.pid'
|
|
||||||
-f '- /.conf'
|
|
||||||
-f '+ /wsrep_sst_binlog.tar'
|
|
||||||
-f '- $INNODB_DATA_HOME_DIR/ib_lru_dump'
|
|
||||||
-f '- $INNODB_DATA_HOME_DIR/ibdata*'
|
|
||||||
-f '+ $INNODB_UNDO_DIR/undo*'
|
|
||||||
-f '+ /*/'
|
|
||||||
-f '- /*'"
|
|
||||||
|
|
||||||
# old-style SSL config
|
SSTKEY="$tkey"
|
||||||
SSTKEY=$(parse_cnf 'sst' 'tkey')
|
SSTCERT="$tpem"
|
||||||
SSTCERT=$(parse_cnf 'sst' 'tcert')
|
SSTCA="$tcert"
|
||||||
SSTCA=$(parse_cnf 'sst' 'tca')
|
SSTCAP="$tcap"
|
||||||
SSTCAP=$(parse_cnf 'sst' 'tcapath')
|
|
||||||
|
|
||||||
SST_SECTIONS="--mysqld|sst"
|
SSLMODE=$(parse_cnf "$encgroups" 'ssl-mode' | tr [:lower:] [:upper:])
|
||||||
|
|
||||||
check_server_ssl_config()
|
|
||||||
{
|
|
||||||
SSTKEY=$(parse_cnf "$SST_SECTIONS" 'ssl-key')
|
|
||||||
SSTCERT=$(parse_cnf "$SST_SECTIONS" 'ssl-cert')
|
|
||||||
SSTCA=$(parse_cnf "$SST_SECTIONS" 'ssl-ca')
|
|
||||||
SSTCAP=$(parse_cnf "$SST_SECTIONS" 'ssl-capath')
|
|
||||||
}
|
|
||||||
|
|
||||||
SSLMODE=$(parse_cnf "$SST_SECTIONS" 'ssl-mode' | tr [:lower:] [:upper:])
|
|
||||||
|
|
||||||
# no old-style SSL config in [sst], check for new one:
|
|
||||||
if [ -z "$SSTKEY" -a -z "$SSTCERT" -a -z "$SSTCA" -a -z "$SSTCAP" ]; then
|
|
||||||
check_server_ssl_config
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$SSTCA" ]; then
|
|
||||||
SSTCA=$(trim_string "$SSTCA")
|
|
||||||
if [ "${SSTCA%/}" != "$SSTCA" ] || [ -d "$SSTCA" ]; then
|
|
||||||
SSTCAP="$SSTCA"
|
|
||||||
SSTCA=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$SSTCAP" ]; then
|
|
||||||
SSTCAP=$(trim_string "$SSTCAP")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$SSLMODE" ]; then
|
if [ -z "$SSLMODE" ]; then
|
||||||
# Implicit verification if CA is set and the SSL mode
|
# Implicit verification if CA is set and the SSL mode
|
||||||
|
@ -266,7 +224,7 @@ if [ -z "$SSLMODE" ]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$SSTCERT" -a -n "$SSTKEY" ]; then
|
if [ -n "$SSTKEY" -a -n "$SSTCERT" ]; then
|
||||||
verify_cert_matches_key "$SSTCERT" "$SSTKEY"
|
verify_cert_matches_key "$SSTCERT" "$SSTKEY"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -287,8 +245,7 @@ fi
|
||||||
VERIFY_OPT=""
|
VERIFY_OPT=""
|
||||||
CHECK_OPT=""
|
CHECK_OPT=""
|
||||||
CHECK_OPT_LOCAL=""
|
CHECK_OPT_LOCAL=""
|
||||||
if [ "${SSLMODE#VERIFY}" != "$SSLMODE" ]
|
if [ "${SSLMODE#VERIFY}" != "$SSLMODE" ]; then
|
||||||
then
|
|
||||||
case "$SSLMODE" in
|
case "$SSLMODE" in
|
||||||
'VERIFY_IDENTITY')
|
'VERIFY_IDENTITY')
|
||||||
VERIFY_OPT='verifyPeer = yes'
|
VERIFY_OPT='verifyPeer = yes'
|
||||||
|
@ -364,8 +321,9 @@ EOF
|
||||||
[ -f "$STUNNEL_CONF" ] && rm -f "$STUNNEL_CONF"
|
[ -f "$STUNNEL_CONF" ] && rm -f "$STUNNEL_CONF"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $WSREP_SST_OPT_BYPASS -eq 0 ]
|
RC=0
|
||||||
then
|
|
||||||
|
if [ $WSREP_SST_OPT_BYPASS -eq 0 ]; then
|
||||||
|
|
||||||
FLUSHED="$WSREP_SST_OPT_DATA/tables_flushed"
|
FLUSHED="$WSREP_SST_OPT_DATA/tables_flushed"
|
||||||
ERROR="$WSREP_SST_OPT_DATA/sst_error"
|
ERROR="$WSREP_SST_OPT_DATA/sst_error"
|
||||||
|
@ -380,11 +338,11 @@ EOF
|
||||||
# (b) Cluster state ID & wsrep_gtid_domain_id to be written to the file, OR
|
# (b) Cluster state ID & wsrep_gtid_domain_id to be written to the file, OR
|
||||||
# (c) ERROR file, in case flush tables operation failed.
|
# (c) ERROR file, in case flush tables operation failed.
|
||||||
|
|
||||||
while [ ! -r "$FLUSHED" ] && ! grep -q -F ':' "$FLUSHED" >/dev/null 2>&1
|
while [ ! -r "$FLUSHED" ] && \
|
||||||
|
! grep -q -F ':' '--' "$FLUSHED" >/dev/null 2>&1
|
||||||
do
|
do
|
||||||
# Check whether ERROR file exists.
|
# Check whether ERROR file exists.
|
||||||
if [ -f "$ERROR" ]
|
if [ -f "$ERROR" ]; then
|
||||||
then
|
|
||||||
# Flush tables operation failed.
|
# Flush tables operation failed.
|
||||||
rm -f "$ERROR"
|
rm -f "$ERROR"
|
||||||
exit 255
|
exit 255
|
||||||
|
@ -397,7 +355,7 @@ EOF
|
||||||
|
|
||||||
sync
|
sync
|
||||||
|
|
||||||
if [ -n "$WSREP_SST_OPT_BINLOG" ]
|
if [ -n "$WSREP_SST_OPT_BINLOG" -a -d "${BINLOG_DIRNAME:-}" ]
|
||||||
then
|
then
|
||||||
# Prepare binlog files
|
# Prepare binlog files
|
||||||
cd "$BINLOG_DIRNAME"
|
cd "$BINLOG_DIRNAME"
|
||||||
|
@ -405,16 +363,14 @@ EOF
|
||||||
binlog_files_full=$(tail -n $BINLOG_N_FILES \
|
binlog_files_full=$(tail -n $BINLOG_N_FILES \
|
||||||
"$WSREP_SST_OPT_BINLOG_INDEX")
|
"$WSREP_SST_OPT_BINLOG_INDEX")
|
||||||
binlog_files=""
|
binlog_files=""
|
||||||
for ii in $binlog_files_full
|
for file in $binlog_files_full; do
|
||||||
do
|
binlog_file=$(basename "$file")
|
||||||
binlog_file=$(basename "$ii")
|
binlog_files="$binlog_files${binlog_files:+ }'$binlog_file'"
|
||||||
binlog_files="$binlog_files $binlog_file"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -n "$binlog_files" ]
|
if [ -n "$binlog_files" ]; then
|
||||||
then
|
|
||||||
wsrep_log_info "Preparing binlog files for transfer:"
|
wsrep_log_info "Preparing binlog files for transfer:"
|
||||||
tar -cvf "$BINLOG_TAR_FILE" $binlog_files >&2
|
eval tar -cvf "'$BINLOG_TAR_FILE'" $binlog_files >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd "$OLD_PWD"
|
cd "$OLD_PWD"
|
||||||
|
@ -427,9 +383,28 @@ EOF
|
||||||
WHOLE_FILE_OPT="--whole-file"
|
WHOLE_FILE_OPT="--whole-file"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Old filter - include everything except selected
|
||||||
|
# FILTER=(--exclude '*.err' --exclude '*.pid' --exclude '*.sock' \
|
||||||
|
# --exclude '*.conf' --exclude core --exclude 'galera.*' \
|
||||||
|
# --exclude grastate.txt --exclude '*.pem' \
|
||||||
|
# --exclude '*.[0-9][0-9][0-9][0-9][0-9][0-9]' --exclude '*.index')
|
||||||
|
|
||||||
|
# New filter - exclude everything except dirs (schemas) and innodb files
|
||||||
|
FILTER="-f '- /lost+found'
|
||||||
|
-f '- /.zfs'
|
||||||
|
-f '- /.fseventsd'
|
||||||
|
-f '- /.Trashes'
|
||||||
|
-f '- /.pid'
|
||||||
|
-f '- /.conf'
|
||||||
|
-f '+ /wsrep_sst_binlog.tar'
|
||||||
|
-f '- $INNODB_DATA_HOME_DIR/ib_lru_dump'
|
||||||
|
-f '- $INNODB_DATA_HOME_DIR/ibdata*'
|
||||||
|
-f '+ $INNODB_UNDO_DIR/undo*'
|
||||||
|
-f '+ /*/'
|
||||||
|
-f '- /*'"
|
||||||
|
|
||||||
# first, the normal directories, so that we can detect
|
# first, the normal directories, so that we can detect
|
||||||
# incompatible protocol:
|
# incompatible protocol:
|
||||||
RC=0
|
|
||||||
eval rsync ${STUNNEL:+"--rsh='$STUNNEL'"} \
|
eval rsync ${STUNNEL:+"--rsh='$STUNNEL'"} \
|
||||||
--owner --group --perms --links --specials \
|
--owner --group --perms --links --specials \
|
||||||
--ignore-times --inplace --dirs --delete --quiet \
|
--ignore-times --inplace --dirs --delete --quiet \
|
||||||
|
@ -484,7 +459,7 @@ EOF
|
||||||
|
|
||||||
cd "$WSREP_SST_OPT_DATA"
|
cd "$WSREP_SST_OPT_DATA"
|
||||||
|
|
||||||
backup_threads=$(parse_cnf "--mysqld|sst" 'backup-threads')
|
backup_threads=$(parse_cnf '--mysqld|sst' 'backup-threads')
|
||||||
if [ -z "$backup_threads" ]; then
|
if [ -z "$backup_threads" ]; then
|
||||||
get_proc
|
get_proc
|
||||||
backup_threads=$nproc
|
backup_threads=$nproc
|
||||||
|
@ -527,7 +502,12 @@ EOF
|
||||||
|
|
||||||
rsync ${STUNNEL:+--rsh="$STUNNEL"} \
|
rsync ${STUNNEL:+--rsh="$STUNNEL"} \
|
||||||
--archive --quiet --checksum "$MAGIC_FILE" \
|
--archive --quiet --checksum "$MAGIC_FILE" \
|
||||||
"rsync://$WSREP_SST_OPT_ADDR"
|
"rsync://$WSREP_SST_OPT_ADDR" >&2 || RC=$?
|
||||||
|
|
||||||
|
if [ $RC -ne 0 ]; then
|
||||||
|
wsrep_log_error "rsync $MAGIC_FILE returned code $RC:"
|
||||||
|
exit 255 # unknown error
|
||||||
|
fi
|
||||||
|
|
||||||
echo "done $STATE"
|
echo "done $STATE"
|
||||||
|
|
||||||
|
@ -540,12 +520,11 @@ elif [ "$WSREP_SST_OPT_ROLE" = 'joiner' ]
|
||||||
then
|
then
|
||||||
check_sockets_utils
|
check_sockets_utils
|
||||||
|
|
||||||
SST_PID="$WSREP_SST_OPT_DATA/wsrep_rsync_sst.pid"
|
SST_PID="$WSREP_SST_OPT_DATA/wsrep_sst.pid"
|
||||||
|
|
||||||
# give some time for previous SST to complete:
|
# give some time for previous SST to complete:
|
||||||
check_round=0
|
check_round=0
|
||||||
while check_pid "$SST_PID" 0
|
while check_pid "$SST_PID" 0 'wsrep_sst_'; do
|
||||||
do
|
|
||||||
wsrep_log_info "previous SST is not completed, waiting for it to exit"
|
wsrep_log_info "previous SST is not completed, waiting for it to exit"
|
||||||
check_round=$(( check_round + 1 ))
|
check_round=$(( check_round + 1 ))
|
||||||
if [ $check_round -eq 10 ]; then
|
if [ $check_round -eq 10 ]; then
|
||||||
|
@ -555,10 +534,11 @@ then
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
|
echo $$ > "$SST_PID"
|
||||||
|
|
||||||
# give some time for stunnel from the previous SST to complete:
|
# give some time for stunnel from the previous SST to complete:
|
||||||
check_round=0
|
check_round=0
|
||||||
while check_pid "$STUNNEL_PID" 1
|
while check_pid "$STUNNEL_PID" 1; do
|
||||||
do
|
|
||||||
wsrep_log_info "Lingering stunnel daemon found at startup," \
|
wsrep_log_info "Lingering stunnel daemon found at startup," \
|
||||||
"waiting for it to exit"
|
"waiting for it to exit"
|
||||||
check_round=$(( check_round + 1 ))
|
check_round=$(( check_round + 1 ))
|
||||||
|
@ -575,8 +555,7 @@ then
|
||||||
|
|
||||||
# give some time for rsync from the previous SST to complete:
|
# give some time for rsync from the previous SST to complete:
|
||||||
check_round=0
|
check_round=0
|
||||||
while check_pid "$RSYNC_PID" 1
|
while check_pid "$RSYNC_PID" 1; do
|
||||||
do
|
|
||||||
wsrep_log_info "Lingering rsync daemon found at startup," \
|
wsrep_log_info "Lingering rsync daemon found at startup," \
|
||||||
"waiting for it to exit"
|
"waiting for it to exit"
|
||||||
check_round=$(( check_round + 1 ))
|
check_round=$(( check_round + 1 ))
|
||||||
|
@ -590,7 +569,7 @@ then
|
||||||
[ -f "$MAGIC_FILE" ] && rm -f "$MAGIC_FILE"
|
[ -f "$MAGIC_FILE" ] && rm -f "$MAGIC_FILE"
|
||||||
[ -f "$BINLOG_TAR_FILE" ] && rm -f "$BINLOG_TAR_FILE"
|
[ -f "$BINLOG_TAR_FILE" ] && rm -f "$BINLOG_TAR_FILE"
|
||||||
|
|
||||||
[ -z "$STUNNEL" ] && [ -f "$STUNNEL_CONF" ] && rm -f "$STUNNEL_CONF"
|
[ -z "$STUNNEL" -a -f "$STUNNEL_CONF" ] && rm -f "$STUNNEL_CONF"
|
||||||
|
|
||||||
ADDR="$WSREP_SST_OPT_ADDR"
|
ADDR="$WSREP_SST_OPT_ADDR"
|
||||||
RSYNC_PORT="$WSREP_SST_OPT_PORT"
|
RSYNC_PORT="$WSREP_SST_OPT_PORT"
|
||||||
|
@ -639,8 +618,6 @@ EOF
|
||||||
RSYNC_ADDR="*"
|
RSYNC_ADDR="*"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $$ > "$SST_PID"
|
|
||||||
|
|
||||||
if [ -z "$STUNNEL" ]; then
|
if [ -z "$STUNNEL" ]; then
|
||||||
rsync --daemon --no-detach --port "$RSYNC_PORT" \
|
rsync --daemon --no-detach --port "$RSYNC_PORT" \
|
||||||
--config "$RSYNC_CONF" $RSYNC_EXTRA_ARGS &
|
--config "$RSYNC_CONF" $RSYNC_EXTRA_ARGS &
|
||||||
|
|
|
@ -390,6 +390,7 @@ ADD_CUSTOM_TARGET(
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
|
${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.cc
|
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.cc
|
||||||
)
|
)
|
||||||
|
ADD_DEPENDENCIES(sql GenServerSource)
|
||||||
|
|
||||||
IF(WIN32 OR HAVE_DLOPEN AND NOT DISABLE_SHARED)
|
IF(WIN32 OR HAVE_DLOPEN AND NOT DISABLE_SHARED)
|
||||||
ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def)
|
ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def)
|
||||||
|
|
|
@ -7585,8 +7585,7 @@ bool Table_scope_and_contents_source_st::vers_check_system_fields(
|
||||||
{
|
{
|
||||||
List_iterator<Create_field> dup_it(alter_info->create_list);
|
List_iterator<Create_field> dup_it(alter_info->create_list);
|
||||||
for (Create_field *dup= dup_it++; !is_dup && dup != f; dup= dup_it++)
|
for (Create_field *dup= dup_it++; !is_dup && dup != f; dup= dup_it++)
|
||||||
is_dup= my_strcasecmp(default_charset_info,
|
is_dup= Lex_ident(dup->field_name).streq(f->field_name);
|
||||||
dup->field_name.str, f->field_name.str) == 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(f->flags & VERS_UPDATE_UNVERSIONED_FLAG) && !is_dup)
|
if (!(f->flags & VERS_UPDATE_UNVERSIONED_FLAG) && !is_dup)
|
||||||
|
|
|
@ -551,8 +551,8 @@ int main(int argc, char **argv)
|
||||||
if (WaitForSingleObject(mysqld_process, 0) != WAIT_TIMEOUT)
|
if (WaitForSingleObject(mysqld_process, 0) != WAIT_TIMEOUT)
|
||||||
die("mysqld.exe did not start");
|
die("mysqld.exe did not start");
|
||||||
|
|
||||||
if (run_tool(P_WAIT, mysqladmin_path, "--protocol=pipe",
|
if (run_tool(P_WAIT, mysqladmin_path, "--protocol=pipe", socket_param,
|
||||||
socket_param, "ping", NULL) == 0)
|
"ping", "--no-beep", NULL) == 0)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1343,12 +1343,13 @@ struct my_rnd_struct sql_rand; ///< used by sql_class.cc:THD::THD()
|
||||||
|
|
||||||
#ifndef EMBEDDED_LIBRARY
|
#ifndef EMBEDDED_LIBRARY
|
||||||
MYSQL_SOCKET unix_sock, base_ip_sock, extra_ip_sock;
|
MYSQL_SOCKET unix_sock, base_ip_sock, extra_ip_sock;
|
||||||
|
C_MODE_START
|
||||||
|
#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
|
||||||
/**
|
/**
|
||||||
Error reporter that buffer log messages.
|
Error reporter that buffer log messages.
|
||||||
@param level log message level
|
@param level log message level
|
||||||
@param format log message format string
|
@param format log message format string
|
||||||
*/
|
*/
|
||||||
C_MODE_START
|
|
||||||
static void buffered_option_error_reporter(enum loglevel level,
|
static void buffered_option_error_reporter(enum loglevel level,
|
||||||
const char *format, ...)
|
const char *format, ...)
|
||||||
{
|
{
|
||||||
|
@ -1360,6 +1361,7 @@ static void buffered_option_error_reporter(enum loglevel level,
|
||||||
va_end(args);
|
va_end(args);
|
||||||
buffered_logs.buffer(level, buffer);
|
buffered_logs.buffer(level, buffer);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5539,7 +5541,7 @@ int mysqld_main(int argc, char **argv)
|
||||||
Initialize the array of performance schema instrument configurations.
|
Initialize the array of performance schema instrument configurations.
|
||||||
*/
|
*/
|
||||||
init_pfs_instrument_array();
|
init_pfs_instrument_array();
|
||||||
#endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */
|
|
||||||
/*
|
/*
|
||||||
Logs generated while parsing the command line
|
Logs generated while parsing the command line
|
||||||
options are buffered and printed later.
|
options are buffered and printed later.
|
||||||
|
@ -5547,7 +5549,7 @@ int mysqld_main(int argc, char **argv)
|
||||||
buffered_logs.init();
|
buffered_logs.init();
|
||||||
my_getopt_error_reporter= buffered_option_error_reporter;
|
my_getopt_error_reporter= buffered_option_error_reporter;
|
||||||
my_charset_error_reporter= buffered_option_error_reporter;
|
my_charset_error_reporter= buffered_option_error_reporter;
|
||||||
#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
|
|
||||||
pfs_param.m_pfs_instrument= const_cast<char*>("");
|
pfs_param.m_pfs_instrument= const_cast<char*>("");
|
||||||
#endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */
|
#endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */
|
||||||
my_timer_init(&sys_timer_info);
|
my_timer_init(&sys_timer_info);
|
||||||
|
|
|
@ -19152,6 +19152,8 @@ create_tmp_table(THD *thd, TMP_TABLE_PARAM *param, List<Item> &fields,
|
||||||
MEM_CHECK_DEFINED(table->record[0], table->s->reclength);
|
MEM_CHECK_DEFINED(table->record[0], table->s->reclength);
|
||||||
MEM_CHECK_DEFINED(share->default_values, table->s->reclength);
|
MEM_CHECK_DEFINED(share->default_values, table->s->reclength);
|
||||||
|
|
||||||
|
empty_record(table);
|
||||||
|
table->status= STATUS_NO_RECORD;
|
||||||
thd->mem_root= mem_root_save;
|
thd->mem_root= mem_root_save;
|
||||||
|
|
||||||
DBUG_RETURN(table);
|
DBUG_RETURN(table);
|
||||||
|
@ -20253,7 +20255,9 @@ bool instantiate_tmp_table(TABLE *table, KEY *keyinfo,
|
||||||
if (create_internal_tmp_table(table, keyinfo, start_recinfo, recinfo,
|
if (create_internal_tmp_table(table, keyinfo, start_recinfo, recinfo,
|
||||||
options))
|
options))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
MEM_CHECK_DEFINED(table->record[0], table->s->reclength);
|
// Make empty record so random data is not written to disk
|
||||||
|
empty_record(table);
|
||||||
|
table->status= STATUS_NO_RECORD;
|
||||||
}
|
}
|
||||||
if (open_tmp_table(table))
|
if (open_tmp_table(table))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -23736,7 +23740,15 @@ check_reverse_order:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (select && select->quick)
|
else if (select && select->quick)
|
||||||
|
{
|
||||||
|
/* Cancel "Range checked for each record" */
|
||||||
|
if (tab->use_quick == 2)
|
||||||
|
{
|
||||||
|
tab->use_quick= 1;
|
||||||
|
tab->read_first_record= join_init_read_record;
|
||||||
|
}
|
||||||
select->quick->need_sorted_output();
|
select->quick->need_sorted_output();
|
||||||
|
}
|
||||||
|
|
||||||
tab->read_record.unlock_row= (tab->type == JT_EQ_REF) ?
|
tab->read_record.unlock_row= (tab->type == JT_EQ_REF) ?
|
||||||
join_read_key_unlock_row : rr_unlock_row;
|
join_read_key_unlock_row : rr_unlock_row;
|
||||||
|
|
|
@ -538,7 +538,10 @@ bool Item_func_in::create_value_list_for_tvc(THD *thd,
|
||||||
|
|
||||||
if (is_list_of_rows)
|
if (is_list_of_rows)
|
||||||
{
|
{
|
||||||
Item_row *row_list= (Item_row *)(args[i]);
|
Item_row *row_list= (Item_row *)(args[i]->build_clone(thd));
|
||||||
|
|
||||||
|
if (!row_list)
|
||||||
|
return true;
|
||||||
|
|
||||||
for (uint j=0; j < row_list->cols(); j++)
|
for (uint j=0; j < row_list->cols(); j++)
|
||||||
{
|
{
|
||||||
|
@ -560,7 +563,8 @@ bool Item_func_in::create_value_list_for_tvc(THD *thd,
|
||||||
sprintf(col_name, "_col_%i", 1);
|
sprintf(col_name, "_col_%i", 1);
|
||||||
args[i]->set_name(thd, col_name, strlen(col_name), thd->charset());
|
args[i]->set_name(thd, col_name, strlen(col_name), thd->charset());
|
||||||
}
|
}
|
||||||
if (tvc_value->push_back(args[i]->real_item()))
|
Item *arg_clone= args[i]->build_clone(thd);
|
||||||
|
if (!arg_clone || tvc_value->push_back(arg_clone))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6738,6 +6738,7 @@ field_type_or_serial:
|
||||||
Lex->last_field->set_handler(&type_handler_longlong);
|
Lex->last_field->set_handler(&type_handler_longlong);
|
||||||
Lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG
|
Lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG
|
||||||
| UNSIGNED_FLAG | UNIQUE_KEY_FLAG;
|
| UNSIGNED_FLAG | UNIQUE_KEY_FLAG;
|
||||||
|
Lex->alter_info.flags|= ALTER_ADD_INDEX;
|
||||||
}
|
}
|
||||||
opt_serial_attribute
|
opt_serial_attribute
|
||||||
;
|
;
|
||||||
|
|
|
@ -6741,6 +6741,7 @@ field_type_or_serial:
|
||||||
Lex->last_field->set_handler(&type_handler_longlong);
|
Lex->last_field->set_handler(&type_handler_longlong);
|
||||||
Lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG
|
Lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG
|
||||||
| UNSIGNED_FLAG | UNIQUE_KEY_FLAG;
|
| UNSIGNED_FLAG | UNIQUE_KEY_FLAG;
|
||||||
|
Lex->alter_info.flags|= ALTER_ADD_INDEX;
|
||||||
}
|
}
|
||||||
opt_serial_attribute
|
opt_serial_attribute
|
||||||
;
|
;
|
||||||
|
|
|
@ -2653,6 +2653,10 @@ void
|
||||||
fil_crypt_set_encrypt_tables(
|
fil_crypt_set_encrypt_tables(
|
||||||
uint val)
|
uint val)
|
||||||
{
|
{
|
||||||
|
if (!fil_crypt_threads_inited) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mutex_enter(&fil_system.mutex);
|
mutex_enter(&fil_system.mutex);
|
||||||
|
|
||||||
srv_encrypt_tables = val;
|
srv_encrypt_tables = val;
|
||||||
|
|
|
@ -418,6 +418,10 @@ create_log_files(
|
||||||
return(DB_READ_ONLY);
|
return(DB_READ_ONLY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!log_set_capacity(srv_log_file_size_requested)) {
|
||||||
|
return(DB_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
/* Crashing after deleting the first file should be
|
/* Crashing after deleting the first file should be
|
||||||
recoverable. The buffer pool was clean, and we can simply
|
recoverable. The buffer pool was clean, and we can simply
|
||||||
create all log files from the scratch. */
|
create all log files from the scratch. */
|
||||||
|
@ -474,9 +478,6 @@ create_log_files(
|
||||||
}
|
}
|
||||||
|
|
||||||
log_sys.log.create(srv_n_log_files);
|
log_sys.log.create(srv_n_log_files);
|
||||||
if (!log_set_capacity(srv_log_file_size_requested)) {
|
|
||||||
return(DB_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
fil_open_log_and_system_tablespace_files();
|
fil_open_log_and_system_tablespace_files();
|
||||||
|
|
||||||
|
@ -1635,6 +1636,12 @@ dberr_t srv_start(bool create_new_db)
|
||||||
logfilename, dirnamelen, flushed_lsn, logfile0);
|
logfilename, dirnamelen, flushed_lsn, logfile0);
|
||||||
|
|
||||||
if (err != DB_SUCCESS) {
|
if (err != DB_SUCCESS) {
|
||||||
|
for (Tablespace::const_iterator
|
||||||
|
i = srv_sys_space.begin();
|
||||||
|
i != srv_sys_space.end(); i++) {
|
||||||
|
os_file_delete(innodb_data_file_key,
|
||||||
|
i->filepath());
|
||||||
|
}
|
||||||
return(srv_init_abort(err));
|
return(srv_init_abort(err));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1271,6 +1271,8 @@ static void fetch_data_into_cache_low(trx_i_s_cache_t *cache, const trx_t *trx)
|
||||||
|
|
||||||
static void fetch_data_into_cache(trx_i_s_cache_t *cache)
|
static void fetch_data_into_cache(trx_i_s_cache_t *cache)
|
||||||
{
|
{
|
||||||
|
const trx_t *const purge_trx= purge_sys.query ? purge_sys.query->trx : NULL;
|
||||||
|
|
||||||
ut_ad(lock_mutex_own());
|
ut_ad(lock_mutex_own());
|
||||||
trx_i_s_cache_clear(cache);
|
trx_i_s_cache_clear(cache);
|
||||||
|
|
||||||
|
@ -1280,7 +1282,7 @@ static void fetch_data_into_cache(trx_i_s_cache_t *cache)
|
||||||
trx != NULL;
|
trx != NULL;
|
||||||
trx= UT_LIST_GET_NEXT(trx_list, trx))
|
trx= UT_LIST_GET_NEXT(trx_list, trx))
|
||||||
{
|
{
|
||||||
if (trx->state != TRX_STATE_NOT_STARTED && trx != purge_sys.query->trx)
|
if (trx != purge_trx && trx->state != TRX_STATE_NOT_STARTED)
|
||||||
{
|
{
|
||||||
mutex_enter(&trx->mutex);
|
mutex_enter(&trx->mutex);
|
||||||
if (trx->state != TRX_STATE_NOT_STARTED)
|
if (trx->state != TRX_STATE_NOT_STARTED)
|
||||||
|
|
|
@ -233,10 +233,29 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
|
||||||
long ssl_ctx_options;
|
long ssl_ctx_options;
|
||||||
DBUG_ENTER("new_VioSSLFd");
|
DBUG_ENTER("new_VioSSLFd");
|
||||||
|
|
||||||
if (ca_file && ! ca_file[0]) ca_file = NULL;
|
/*
|
||||||
if (ca_path && ! ca_path[0]) ca_path = NULL;
|
If some optional parameters indicate empty strings, then
|
||||||
if (crl_file && ! crl_file[0]) crl_file = NULL;
|
for compatibility with SSL libraries, replace them with NULL,
|
||||||
if (crl_path && ! crl_path[0]) crl_path = NULL;
|
otherwise these libraries will try to open files with an empty
|
||||||
|
name, etc., and they will return an error code instead performing
|
||||||
|
the necessary operations:
|
||||||
|
*/
|
||||||
|
if (ca_file && !ca_file[0])
|
||||||
|
{
|
||||||
|
ca_file = NULL;
|
||||||
|
}
|
||||||
|
if (ca_path && !ca_path[0])
|
||||||
|
{
|
||||||
|
ca_path = NULL;
|
||||||
|
}
|
||||||
|
if (crl_file && !crl_file[0])
|
||||||
|
{
|
||||||
|
crl_file = NULL;
|
||||||
|
}
|
||||||
|
if (crl_path && !crl_path[0])
|
||||||
|
{
|
||||||
|
crl_path = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
DBUG_PRINT("enter",
|
DBUG_PRINT("enter",
|
||||||
("key_file: '%s' cert_file: '%s' ca_file: '%s' ca_path: '%s' "
|
("key_file: '%s' cert_file: '%s' ca_file: '%s' ca_path: '%s' "
|
||||||
|
@ -384,10 +403,29 @@ new_VioSSLConnectorFd(const char *key_file, const char *cert_file,
|
||||||
struct st_VioSSLFd *ssl_fd;
|
struct st_VioSSLFd *ssl_fd;
|
||||||
int verify= SSL_VERIFY_PEER;
|
int verify= SSL_VERIFY_PEER;
|
||||||
|
|
||||||
if (ca_file && ! ca_file[0]) ca_file = NULL;
|
/*
|
||||||
if (ca_path && ! ca_path[0]) ca_path = NULL;
|
If some optional parameters indicate empty strings, then
|
||||||
if (crl_file && ! crl_file[0]) crl_file = NULL;
|
for compatibility with SSL libraries, replace them with NULL,
|
||||||
if (crl_path && ! crl_path[0]) crl_path = NULL;
|
otherwise these libraries will try to open files with an empty
|
||||||
|
name, etc., and they will return an error code instead performing
|
||||||
|
the necessary operations:
|
||||||
|
*/
|
||||||
|
if (ca_file && !ca_file[0])
|
||||||
|
{
|
||||||
|
ca_file = NULL;
|
||||||
|
}
|
||||||
|
if (ca_path && !ca_path[0])
|
||||||
|
{
|
||||||
|
ca_path = NULL;
|
||||||
|
}
|
||||||
|
if (crl_file && !crl_file[0])
|
||||||
|
{
|
||||||
|
crl_file = NULL;
|
||||||
|
}
|
||||||
|
if (crl_path && !crl_path[0])
|
||||||
|
{
|
||||||
|
crl_path = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Turn off verification of servers certificate if both
|
Turn off verification of servers certificate if both
|
||||||
|
@ -422,10 +460,29 @@ new_VioSSLAcceptorFd(const char *key_file, const char *cert_file,
|
||||||
struct st_VioSSLFd *ssl_fd;
|
struct st_VioSSLFd *ssl_fd;
|
||||||
int verify= SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE;
|
int verify= SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE;
|
||||||
|
|
||||||
if (ca_file && ! ca_file[0]) ca_file = NULL;
|
/*
|
||||||
if (ca_path && ! ca_path[0]) ca_path = NULL;
|
If some optional parameters indicate empty strings, then
|
||||||
if (crl_file && ! crl_file[0]) crl_file = NULL;
|
for compatibility with SSL libraries, replace them with NULL,
|
||||||
if (crl_path && ! crl_path[0]) crl_path = NULL;
|
otherwise these libraries will try to open files with an empty
|
||||||
|
name, etc., and they will return an error code instead performing
|
||||||
|
the necessary operations:
|
||||||
|
*/
|
||||||
|
if (ca_file && !ca_file[0])
|
||||||
|
{
|
||||||
|
ca_file = NULL;
|
||||||
|
}
|
||||||
|
if (ca_path && !ca_path[0])
|
||||||
|
{
|
||||||
|
ca_path = NULL;
|
||||||
|
}
|
||||||
|
if (crl_file && !crl_file[0])
|
||||||
|
{
|
||||||
|
crl_file = NULL;
|
||||||
|
}
|
||||||
|
if (crl_path && !crl_path[0])
|
||||||
|
{
|
||||||
|
crl_path = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(ssl_fd= new_VioSSLFd(key_file, cert_file, ca_file,
|
if (!(ssl_fd= new_VioSSLFd(key_file, cert_file, ca_file,
|
||||||
ca_path, cipher, FALSE, error,
|
ca_path, cipher, FALSE, error,
|
||||||
|
|
Loading…
Add table
Reference in a new issue