Merge branch 10.3 into 10.4

This commit is contained in:
Julius Goryavsky 2021-12-25 12:13:03 +01:00
commit 681b7784b6
46 changed files with 733 additions and 341 deletions

View file

@ -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:

View file

@ -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);

View file

@ -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)|

View file

@ -0,0 +1 @@
--character-set-server=utf8mb4,latin1 --collation-server=utf8mb4_unicode_ci

View 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
#

View 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 #

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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
# #
# #

View file

@ -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 #

View file

@ -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))

View file

@ -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 #

View file

@ -1 +0,0 @@
cacert.pem

View 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-----

View file

@ -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-----

View file

@ -1 +0,0 @@
cacert.pem

View 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-----

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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);

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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 #

View file

@ -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
}

View file

@ -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

View file

@ -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 &

View file

@ -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)

View file

@ -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)

View file

@ -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;
} }

View file

@ -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);

View file

@ -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;

View file

@ -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;
} }

View file

@ -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
; ;

View file

@ -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
; ;

View file

@ -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;

View file

@ -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 {

View file

@ -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)

View file

@ -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,