1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Merge 10.6 into 10.11

This commit is contained in:
Marko Mäkelä
2025-05-21 07:36:35 +03:00
71 changed files with 810 additions and 446 deletions

1
.gitignore vendored
View File

@@ -134,6 +134,7 @@ scripts/mysqld_safe
scripts/mysqldumpslow
scripts/mysqlhotcopy
scripts/mytop
scripts/print_ddl_recovery_log.pl
scripts/wsrep_sst_backup
scripts/wsrep_sst_common
scripts/wsrep_sst_mysqldump

View File

@@ -898,6 +898,9 @@ static int disable_binlog()
}
/* Ok as mysqlcheck is not multi threaded */
PRAGMA_DISABLE_CHECK_STACK_FRAME
static int handle_request_for_tables(char *tables, size_t length,
my_bool view, my_bool dont_quote)
{
@@ -1029,9 +1032,6 @@ static void insert_table_name(DYNAMIC_ARRAY *arr, char *in, size_t dblen)
insert_dynamic(arr, (uchar*) buf);
}
/* Ok as mysqlcheck is not multi threaded */
PRAGMA_DISABLE_CHECK_STACK_FRAME
static void __attribute__((noinline)) print_result()
{
MYSQL_RES *res;

View File

@@ -430,6 +430,8 @@ int main(int argc, char **argv)
return 0;
}
PRAGMA_DISABLE_CHECK_STACK_FRAME
void concurrency_loop(MYSQL *mysql, uint current, option_string *eptr)
{
unsigned int x;
@@ -525,6 +527,7 @@ void concurrency_loop(MYSQL *mysql, uint current, option_string *eptr)
my_free(head_sptr);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
static struct my_option my_long_options[] =
@@ -2297,6 +2300,7 @@ statement_cleanup(statement *stmt)
}
}
PRAGMA_DISABLE_CHECK_STACK_FRAME
int
slap_connect(MYSQL *mysql)
@@ -2330,3 +2334,4 @@ slap_connect(MYSQL *mysql)
return 0;
}
PRAGMA_REENABLE_CHECK_STACK_FRAME

View File

@@ -41,6 +41,7 @@ SET(MY_WARNING_FLAGS
-Wvla
-Wwrite-strings
-Wcast-function-type-strict
-Wframe-larger-than=16384
)
# Warning flags that are in testing before moving

View File

@@ -209,7 +209,10 @@ xb_fil_cur_open(
cursor->buf_size = XB_FIL_CUR_PAGES * cursor->page_size;
cursor->buf = static_cast<byte*>(aligned_malloc(cursor->buf_size,
srv_page_size));
cursor->tmp_page = static_cast<byte*>(aligned_malloc(srv_page_size,
srv_page_size));
cursor->tmp_frame = static_cast<byte*>(aligned_malloc(srv_page_size,
srv_page_size));
cursor->buf_read = 0;
cursor->buf_npages = 0;
cursor->buf_offset = 0;
@@ -237,15 +240,10 @@ xb_fil_cur_open(
return(XB_FIL_CUR_SUCCESS);
}
/* Stack usage 131224 with clang */
PRAGMA_DISABLE_CHECK_STACK_FRAME
static bool page_is_corrupted(const byte *page, ulint page_no,
const xb_fil_cur_t *cursor,
const fil_space_t *space)
{
byte tmp_frame[UNIV_PAGE_SIZE_MAX];
byte tmp_page[UNIV_PAGE_SIZE_MAX];
const ulint page_size = cursor->page_size;
uint16_t page_type = fil_page_get_type(page);
@@ -308,42 +306,43 @@ static bool page_is_corrupted(const byte *page, ulint page_no,
&& !opt_extended_validation)
return false;
memcpy(tmp_page, page, page_size);
memcpy(cursor->tmp_page, page, page_size);
if (!space->crypt_data
|| space->crypt_data->type == CRYPT_SCHEME_UNENCRYPTED
|| !fil_space_decrypt(space, tmp_frame, tmp_page)) {
|| !fil_space_decrypt(space, cursor->tmp_frame,
cursor->tmp_page)) {
return true;
}
if (page_type != FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) {
return buf_page_is_corrupted(false, tmp_page,
return buf_page_is_corrupted(false, cursor->tmp_page,
space->flags);
}
}
if (page_type == FIL_PAGE_PAGE_COMPRESSED) {
memcpy(tmp_page, page, page_size);
memcpy(cursor->tmp_page, page, page_size);
}
if (page_type == FIL_PAGE_PAGE_COMPRESSED
|| page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) {
ulint decomp = fil_page_decompress(tmp_frame, tmp_page,
ulint decomp = fil_page_decompress(cursor->tmp_frame,
cursor->tmp_page,
space->flags);
page_type = fil_page_get_type(tmp_page);
page_type = fil_page_get_type(cursor->tmp_page);
return (!decomp
|| (decomp != srv_page_size
&& cursor->zip_size)
|| page_type == FIL_PAGE_PAGE_COMPRESSED
|| page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED
|| buf_page_is_corrupted(false, tmp_page,
|| buf_page_is_corrupted(false, cursor->tmp_page,
space->flags));
}
return buf_page_is_corrupted(false, page, space->flags);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/** Reads and verifies the next block of pages from the source
file. Positions the cursor after the last read non-corrupted page.
@@ -507,7 +506,11 @@ xb_fil_cur_close(
xb_fil_cur_t *cursor) /*!< in/out: source file cursor */
{
aligned_free(cursor->buf);
aligned_free(cursor->tmp_page);
aligned_free(cursor->tmp_frame);
cursor->buf = NULL;
cursor->tmp_page = NULL;
cursor->tmp_frame = NULL;
if (cursor->node != NULL) {
xb_fil_node_close_file(cursor->node);

View File

@@ -46,7 +46,9 @@ struct xb_fil_cur_t {
xb_read_filt_t* read_filter; /*!< read filter */
xb_read_filt_ctxt_t read_filter_ctxt;
/*!< read filter context */
byte* buf; /*!< read buffer */
byte* buf; /*!< read buffer of XB_FIL_CUR_PAGES */
byte* tmp_page; /*!< buffer for decrypting a page */
byte* tmp_frame; /*!< buffer for decompressing a page */
size_t buf_size; /*!< buffer size in bytes */
size_t buf_read; /*!< number of read bytes in buffer
after the last cursor read */

View File

@@ -1186,6 +1186,7 @@ static void backup_file_op_fail(uint32_t space_id, int type,
const byte* name, ulint len,
const byte* new_name, ulint new_len)
{
const char *error= "";
bool fail = false;
const std::string spacename{filename_to_spacename(name, len)};
switch (type) {
@@ -1193,6 +1194,7 @@ static void backup_file_op_fail(uint32_t space_id, int type,
msg("DDL tracking : create %" PRIu32 " \"%.*s\"",
space_id, int(len), name);
fail = !check_if_skip_table(spacename.c_str());
error= "create";
break;
case FILE_MODIFY:
break;
@@ -1202,12 +1204,14 @@ static void backup_file_op_fail(uint32_t space_id, int type,
fail = !check_if_skip_table(spacename.c_str())
|| !check_if_skip_table(
filename_to_spacename(new_name, new_len).c_str());
error= "rename";
break;
case FILE_DELETE:
fail = !check_if_skip_table(spacename.c_str())
&& !check_if_fts_table(spacename.c_str());
msg("DDL tracking : delete %" PRIu32 " \"%.*s\"",
space_id, int(len), name);
error= "delete";
break;
default:
ut_ad(0);
@@ -1215,9 +1219,14 @@ static void backup_file_op_fail(uint32_t space_id, int type,
}
if (fail) {
ut_a(opt_no_lock);
die("DDL operation detected in the late phase of backup."
"Backup is inconsistent. Remove --no-lock option to fix.");
if (opt_no_lock)
die("DDL operation detected in the late phase of backup while "
"executing %s on %s. "
"Backup is inconsistent. Remove --no-lock option to fix.",
error, name);
die("Unexpected DDL operation detected in the late phase of backup "
"while executing %s on %s. Backup is inconsistent.",
error, name);
}
}

View File

@@ -83,13 +83,13 @@
/* Define pragmas to disable warnings for stack frame checking */
#if defined(__clang__)
#ifdef __GNUC__
#define PRAGMA_DISABLE_CHECK_STACK_FRAME \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wframe-larger-than=\"")
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wframe-larger-than=\"")
#define PRAGMA_REENABLE_CHECK_STACK_FRAME \
_Pragma("clang diagnostic pop")
_Pragma("GCC diagnostic pop")
#else
#define PRAGMA_DISABLE_CHECK_STACK_FRAME

View File

@@ -453,5 +453,56 @@ SELECT * FROM t1 WHERE f LIKE '2023%';
f
DROP TABLE t1;
#
# MDEV-36536 Add option to not collect statistics for long char/varchars
#
select @@session.analyze_max_length;
@@session.analyze_max_length
4294967295
create table t1 (c0 char(2), c1 char(16), c2 char(64), v1 varchar(16), v2 varchar(1000), b1 blob, i1 int)
character set utf8mb4 COLLATE utf8mb4_bin;
insert into t1 values ("A", "A","A","A","A","A",1), ("B","B","B","B","B","B",1);
ANALYZE TABLE t1 PERSISTENT FOR ALL;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'b1'
test.t1 analyze status OK
select column_name from mysql.column_stats where table_name = 't1';
column_name
c0
c1
c2
i1
v1
v2
set @@session.analyze_max_length= 64;
truncate table mysql.column_stats;
ANALYZE TABLE t1 PERSISTENT FOR ALL;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze Warning Engine-independent statistics are not collected for column 'c2'
test.t1 analyze Warning Engine-independent statistics are not collected for column 'v2'
test.t1 analyze Warning Engine-independent statistics are not collected for column 'b1'
test.t1 analyze status Table is already up to date
select column_name from mysql.column_stats where table_name = 't1';
column_name
c0
c1
i1
v1
truncate table mysql.column_stats;
ANALYZE TABLE t1 PERSISTENT for COLUMNS (c0,c2,v1,v2,i1) INDEXES ALL;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
select column_name from mysql.column_stats where table_name = 't1';
column_name
c0
c2
i1
v1
v2
set @@session.analyze_max_length= default;
drop table t1;
#
# End of 10.6 tests
#

View File

@@ -306,6 +306,26 @@ ANALYZE TABLE t1 PERSISTENT FOR ALL;
SELECT * FROM t1 WHERE f LIKE '2023%';
DROP TABLE t1;
--echo #
--echo # MDEV-36536 Add option to not collect statistics for long char/varchars
--echo #
select @@session.analyze_max_length;
create table t1 (c0 char(2), c1 char(16), c2 char(64), v1 varchar(16), v2 varchar(1000), b1 blob, i1 int)
character set utf8mb4 COLLATE utf8mb4_bin;
insert into t1 values ("A", "A","A","A","A","A",1), ("B","B","B","B","B","B",1);
ANALYZE TABLE t1 PERSISTENT FOR ALL;
select column_name from mysql.column_stats where table_name = 't1';
set @@session.analyze_max_length= 64;
truncate table mysql.column_stats;
ANALYZE TABLE t1 PERSISTENT FOR ALL;
select column_name from mysql.column_stats where table_name = 't1';
truncate table mysql.column_stats;
ANALYZE TABLE t1 PERSISTENT for COLUMNS (c0,c2,v1,v2,i1) INDEXES ALL;
select column_name from mysql.column_stats where table_name = 't1';
set @@session.analyze_max_length= default;
drop table t1;
--echo #
--echo # End of 10.6 tests
--echo #

View File

@@ -16,6 +16,10 @@ The following specify which files/extra groups are read (specified before remain
--alter-algorithm[=name]
Specify the alter table algorithm. One of: DEFAULT, COPY,
INPLACE, NOCOPY, INSTANT
--analyze-max-length=#
Fields which length in bytes more than this are skipped
by ANALYZE TABLE PERSISTENT unless explicitly listed in
the FOR COLUMNS () clause
--analyze-sample-percentage=#
Percentage of rows from the table ANALYZE TABLE will
sample to collect table statistics. Set to 0 to let

View File

@@ -20,7 +20,7 @@ exec $MYSQLD_BOOTSTRAP_CMD --symbolic-links=0 --log-bin=foo --lower-case-table-n
perl;
# Variables which we don't want to display in the result file since
# their paths may vary:
# their paths may vary or they may use a default of 4294967295 :
@skipvars=qw/basedir open-files-limit general-log-file log plugin-dir plugin-maturity
log-slow-queries pid-file slow-query-log-file log-basename
log-slow-query-file
@@ -30,7 +30,7 @@ perl;
table-open-cache table-open-cache-instances max-connections
server-uid tls-version version.* password-reuse-check
provider-bzip2 provider-lzma provider-lzo
password-reuse-check-interval/;
password-reuse-check-interval analyze-max-length/;
# Plugins which may or may not be there:
@plugins=qw/innodb archive blackhole federated partition s3

View File

@@ -1,26 +1,87 @@
Certificate:
Data:
Version: 1 (0x0)
Serial Number: 4096 (0x1000)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=FI, ST=Helsinki, L=Helsinki, O=MariaDB, CN=Galera CA
Validity
Not Before: May 20 01:31:39 2025 GMT
Not After : May 20 01:31:39 2125 GMT
Subject:
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:a5:04:b1:45:03:ef:44:cb:1f:31:0c:5d:87:60:
82:25:a8:f7:62:1f:a9:ed:82:06:67:23:6a:b0:0c:
59:3e:b7:c9:ec:17:16:e2:0b:55:06:49:26:82:e9:
d0:bb:82:a4:79:08:6d:93:2f:6b:a2:40:73:3a:77:
a0:e8:47:99:40:27:fa:d7:39:33:26:9c:3d:c5:0b:
82:ba:ea:48:71:53:18:0f:f6:47:a5:02:89:80:16:
68:77:33:d1:a2:bb:34:7f:38:ae:c4:cd:85:f1:8d:
84:e4:e3:dc:23:93:be:b3:93:bc:de:db:bb:67:6a:
ec:55:f6:6a:c0:bd:b5:18:6e:2e:15:06:a1:b9:f2:
fc:72:12:4d:fc:c1:5a:38:b2:30:17:c0:de:83:19:
4c:fc:9c:c5:0f:c2:b1:86:57:30:88:82:07:f7:ff:
96:68:1e:55:7c:18:3f:53:5e:40:20:06:02:a1:6e:
f7:03:4b:82:ea:9e:4f:07:97:03:33:d0:bf:1c:de:
b8:17:bf:7d:4c:3a:48:2d:41:ed:82:e6:3a:2c:6f:
4f:fd:b1:2d:33:ed:d6:36:8c:bc:f2:ff:52:af:aa:
32:9b:cf:87:45:f3:b3:61:d1:20:7d:03:a3:2f:1f:
6c:1d:f9:b8:41:e9:88:04:c1:ae:b9:23:36:80:59:
d1:4f
Exponent: 65537 (0x10001)
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
a1:d1:8e:b3:3f:47:3a:4a:2c:f0:bf:34:72:69:99:f2:fa:a9:
a0:72:3c:7e:7a:69:c1:d6:97:4f:bd:44:ac:92:79:46:e4:8e:
62:c0:cd:41:e9:55:a7:29:33:d6:f6:e7:e5:13:e9:5a:a1:83:
85:16:cb:e2:38:9a:55:b1:57:51:ea:cc:ca:5c:46:ab:1d:a5:
73:d6:d6:df:57:e8:7c:40:16:63:17:75:b2:13:ac:31:eb:96:
85:3b:fb:92:d6:69:4d:ab:e2:1d:22:82:0f:71:66:8d:b0:a9:
56:a2:77:5e:f8:56:90:22:1f:ee:e7:79:33:37:c7:9f:a1:06:
01:35:fe:13:12:75:2e:d9:2a:04:e5:8f:21:4a:20:de:a5:07:
89:aa:0c:c2:d2:ec:a1:47:d6:f6:87:f7:ed:29:f9:69:c6:83:
f6:18:8d:7e:7e:3a:53:c7:b3:91:bd:9a:b8:e3:ac:66:de:57:
b8:2d:c5:d5:54:61:1b:27:96:e8:34:0d:a9:88:4f:03:5a:27:
e0:5f:b5:90:97:9f:57:39:f5:a9:9d:c6:b6:77:1a:bb:86:57:
57:0c:79:6e:66:5f:93:c1:f7:df:c8:06:3c:df:c5:f8:ef:b3:
e3:61:8b:15:8a:45:4f:db:1d:7f:2b:eb:c9:54:ba:6e:c8:b8:
40:ca:de:10:93:a9:a4:8c:17:56:50:37:9c:6b:ba:9c:b0:5f:
4c:49:a7:9c:ba:3c:81:37:e3:a2:b3:6a:71:b9:f6:a6:bb:81:
f3:5c:40:ae:f5:e1:68:32:e3:af:22:5b:88:aa:df:2e:3b:5d:
e2:63:ab:c7:01:a3:c8:3a:e1:06:9f:2f:d1:9f:b4:06:c4:11:
83:c2:99:4a:de:f0:c2:32:04:b8:65:26:e9:57:3f:7d:52:d7:
d8:1c:6e:2c:55:53:d3:81:1d:b9:9e:0a:c1:34:a6:6a:48:af:
3b:d9:6e:84:16:30:33:a6:10:17:36:b4:30:68:fd:95:e9:3e:
35:c3:95:71:7a:86:26:a7:46:66:09:95:91:c6:c2:ba:a6:61:
c2:a5:b6:38:8e:34:a0:14:f1:d7:0c:11:93:0a:a4:d3:f8:b7:
32:fd:12:38:64:9f:68:fe:3d:a1:f6:28:c1:c8:9f:1f:ea:a5:
e2:77:fd:ad:d9:21:22:40:b2:9e:8e:81:3f:79:0e:13:19:1e:
70:0f:4a:4b:81:ea:92:c5:fa:4f:80:e9:8f:5e:ac:dc:09:74:
70:e1:7b:23:68:0c:18:c7:7f:07:4a:39:42:29:d6:c3:62:16:
ec:15:73:02:93:a6:a3:5f:21:90:59:8e:e6:b1:0a:be:32:cf:
6d:4e:7e:56:3d:87:13:0f
-----BEGIN CERTIFICATE-----
MIIDWTCCAkGgAwIBAgIJAIlW4JmZGnU4MA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV
BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
Q29tcGFueSBMdGQwIBcNMTQxMDI0MDc1MTU1WhgPMzAxNDAyMjQwNzUxNTVaMEIx
CzAJBgNVBAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0Rl
ZmF1bHQgQ29tcGFueSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQDDzU6xLZDD5rZENsOpTpTmqS8YisBaefU3ZeN7VJepZZ/7unM/1YLGJtuRh2Qa
MyTkvyjzf7bSFsDt9L5lfQwBBblVeWkrCvGnQmHDQQYB7JrSmFDPz9W9Mxf9Q2BW
B3lcoKXXJgMnWw0WGrt0lEdFp9gWbq8H9hwJdjpyyk4ZTIuucSOD4JUP3QFEhYU5
kdcIbDRVw81J4eAZ6EdvbjDN05S7qWjW7rJTnCHAHEd18hcsMGwjpwhjEaSdhMrM
mhOeL8kuQV0fI8v2xfYBliIn9xBZGOVzySPzwFmQceORlW6F3V5w6mwFkmuXqXWX
Qo98swTu7mb89qVYmR71d3L3AgMBAAGjUDBOMB0GA1UdDgQWBBRdWet/kGNTyvXK
wuBdP/eSldOgWjAfBgNVHSMEGDAWgBRdWet/kGNTyvXKwuBdP/eSldOgWjAMBgNV
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCcJpP+DR4AJxVelNTSZa+V38c+
jgrMD2Ku2eU8NQlsjgMfNEU5Md/g7FpP8aCFzVf0kAAT7DxZmSE3uWXQbMXyVJmy
bF+qXinf71QzdWULm6sASoshC6wbHnXL9ZjWQ3gh1nqVgo3MmLQYrb3eJfKaaLoc
wpjhYxVxGFOx1ITN3jED64lUfoLHvR6NFbESYKAuAAzSNqX4HOQ3uGk2THM8JocZ
oH2+38d81Kd4HQ7DDDKS/isG0+rR60Ti1cMgu7OT7p1dZCwT/KQuI5eGjE9lubkc
yAJjaod4rVLdBri3XVvtySfS2+/75qUgv2TF7d/s7mxMq4DDt29yeKSUhZCs
MIID0DCCAbgCAhAAMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNVBAYTAkZJMREwDwYD
VQQIDAhIZWxzaW5raTERMA8GA1UEBwwISGVsc2lua2kxEDAOBgNVBAoMB01hcmlh
REIxEjAQBgNVBAMMCUdhbGVyYSBDQTAgFw0yNTA1MjAwMTMxMzlaGA8yMTI1MDUy
MDAxMzEzOVowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKUEsUUD
70TLHzEMXYdggiWo92Ifqe2CBmcjarAMWT63yewXFuILVQZJJoLp0LuCpHkIbZMv
a6JAczp3oOhHmUAn+tc5MyacPcULgrrqSHFTGA/2R6UCiYAWaHcz0aK7NH84rsTN
hfGNhOTj3COTvrOTvN7bu2dq7FX2asC9tRhuLhUGobny/HISTfzBWjiyMBfA3oMZ
TPycxQ/CsYZXMIiCB/f/lmgeVXwYP1NeQCAGAqFu9wNLguqeTweXAzPQvxzeuBe/
fUw6SC1B7YLmOixvT/2xLTPt1jaMvPL/Uq+qMpvPh0Xzs2HRIH0Doy8fbB35uEHp
iATBrrkjNoBZ0U8CAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAodGOsz9HOkos8L80
cmmZ8vqpoHI8fnppwdaXT71ErJJ5RuSOYsDNQelVpykz1vbn5RPpWqGDhRbL4jia
VbFXUerMylxGqx2lc9bW31fofEAWYxd1shOsMeuWhTv7ktZpTaviHSKCD3FmjbCp
VqJ3XvhWkCIf7ud5MzfHn6EGATX+ExJ1LtkqBOWPIUog3qUHiaoMwtLsoUfW9of3
7Sn5acaD9hiNfn46U8ezkb2auOOsZt5XuC3F1VRhGyeW6DQNqYhPA1on4F+1kJef
Vzn1qZ3Gtncau4ZXVwx5bmZfk8H338gGPN/F+O+z42GLFYpFT9sdfyvryVS6bsi4
QMreEJOppIwXVlA3nGu6nLBfTEmnnLo8gTfjorNqcbn2pruB81xArvXhaDLjryJb
iKrfLjtd4mOrxwGjyDrhBp8v0Z+0BsQRg8KZSt7wwjIEuGUm6Vc/fVLX2BxuLFVT
04EduZ4KwTSmakivO9luhBYwM6YQFza0MGj9lek+NcOVcXqGJqdGZgmVkcbCuqZh
wqW2OI40oBTx1wwRkwqk0/i3Mv0SOGSfaP49ofYowcifH+ql4nf9rdkhIkCyno6B
P3kOExkecA9KS4HqksX6T4Dpj16s3Al0cOF7I2gMGMd/B0o5QinWw2IW7BVzApOm
o18hkFmO5rEKvjLPbU5+Vj2HEw8=
-----END CERTIFICATE-----
-----BEGIN DH PARAMETERS-----
MIGHAoGBAJWyvKjE+s7OP4Lj1jXKGlJGWT4Vd5YaxPljihTsRe1aXkWAgsuwISXk
/TQ8Rx5Zmze7rtwtU0PoYxvuam9FMXYqhw2dVe4qRdeSX78DSiL/YBkQzaxlfWVy
RE9+9dzHbCtRVDlN7K1kA+mGWH4/r7NAu4Qm/003V0NTtMwQSqebAgEC
-----END DH PARAMETERS-----

View File

@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDDzU6xLZDD5rZE
NsOpTpTmqS8YisBaefU3ZeN7VJepZZ/7unM/1YLGJtuRh2QaMyTkvyjzf7bSFsDt
9L5lfQwBBblVeWkrCvGnQmHDQQYB7JrSmFDPz9W9Mxf9Q2BWB3lcoKXXJgMnWw0W
Grt0lEdFp9gWbq8H9hwJdjpyyk4ZTIuucSOD4JUP3QFEhYU5kdcIbDRVw81J4eAZ
6EdvbjDN05S7qWjW7rJTnCHAHEd18hcsMGwjpwhjEaSdhMrMmhOeL8kuQV0fI8v2
xfYBliIn9xBZGOVzySPzwFmQceORlW6F3V5w6mwFkmuXqXWXQo98swTu7mb89qVY
mR71d3L3AgMBAAECggEBAIMT0UdZSp1quL/nrYqNGa9kuSuDz4uCM3+3jNcGZVU4
vCYHxpmINLi0UK8W5ROJA3zC4AZKjDgOlW93NXK5iKyyiUTIN3hiJi4jiVDuGbh2
DZtH7mmAKAU1zCx2y2osLLmurfbe8qOJF7ShhrZfgWsHFujFhhUdU92dsTkhZ7EU
2NF8ScxCo4PbOJoHC3j0ApfwCMxUMAKZF5+08EeKYqK7OAXI79HeIvEbHn3cUDGm
bvg6ykwlz2UUO4sg+xdCmn1Bt36HF/4e973Y5fkE/vd9mryHIlu9t7GJgWyUiPr8
BGEoAWDSpPOMd/b9ivtxh9Gd+LW/uitMuBIfrRPgz9kCgYEA+JqeeD2xqF2IzZyq
i1UqgKe3su2U2zhkgbu1h/1M/reNIZGylF0wFs3P+kNIB2NavmHjXcgSjdJzqRL9
XEWfFJRmeARo9RTEQEVd8zp1Eo8ISeiksGgvbL4rrNIRR5V5MZytfISRiGCWN6jx
ulJ6EieQk5EcvknGlWpJY/bBsQ0CgYEAyaCLqrR38gVl2Z0t6YlhW/HWAwGt+lf4
apN1AS4uykx7wRW2B0y9QUDfsrYeVlbbeRPP4UzPmJez+J2cweoIIeFFyo3KP2L7
79E3EVYywjXhPg52F7OjFA4Bp970XclIC5Al7kDufSgwZmWdceSx4Jjc5ixyQEC8
Ad0ThgP6yxMCgYAvC4OFmZcvF1Q2JLmZWGqMojB/KbqLqaZLbqwxqduSMEYC3kF/
FgttpVEAOQ8+ZqzbbkbKjnwEXpkIm9FaTsqF6HdjquH5zw48Y2QeDSfudSbKZb4U
rAKdf3dgYvhmJYEjxFSIRcYMmsqSieQEsGrtWJNheYqI8AkmaVCuHBoXWQKBgQCj
daelNffD2wJuQNI28axfiRjSiSsNuQHpDTCfS1ydnxH5QGu5UUphO4HfdWv03SfC
6f/vDIGEmQBLvyOVxfDf3qzhAMCFUO8kxj1ZrcMq1dmMoNa2cmj0WkKXYNZFrmfd
D/jgRf3Ss6FBcoIJErnudp8nb8MUOibxb9RjIpjQxwKBgEliKaGN+/QkPTNJ4vXz
609CIilxpE+YVTzlv3YeZP5HqsJTJPS2ARIUr/Pjpbl3LHfYNeeGDCwgkJIK0JJH
iA1M51q6t3zG2y9gKmC15FF0jShoZkRgqBxqrSHAnrCo5t2C48ElxJ3FEU8T75sz
dlGTbkmR0Wm43Kh++dWICJ3g
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQClBLFFA+9Eyx8x
DF2HYIIlqPdiH6ntggZnI2qwDFk+t8nsFxbiC1UGSSaC6dC7gqR5CG2TL2uiQHM6
d6DoR5lAJ/rXOTMmnD3FC4K66khxUxgP9kelAomAFmh3M9GiuzR/OK7EzYXxjYTk
49wjk76zk7ze27tnauxV9mrAvbUYbi4VBqG58vxyEk38wVo4sjAXwN6DGUz8nMUP
wrGGVzCIggf3/5ZoHlV8GD9TXkAgBgKhbvcDS4Lqnk8HlwMz0L8c3rgXv31MOkgt
Qe2C5josb0/9sS0z7dY2jLzy/1KvqjKbz4dF87Nh0SB9A6MvH2wd+bhB6YgEwa65
IzaAWdFPAgMBAAECggEAT55ae46g8MPCWnN5YvqNAOer6IOXhPlh5nx/ms5yduDN
Q6SGTW0jSmOb+bkflYE8owsOd1//YisPjauvjrMQ/ZPsotA93kivQvXBTzb/2fG6
H+V3fuWg+xSUtcLiSE5jz2hFZr40/K2H67oG+oFsFw/Wpn5FRuofeoBo1HMTv+OO
8JvDGOC3jNBxqvajf2+YTpHkS2Bm0CujlspMv+LYYJm4kjlmaE+PEKGAqp+WT+rK
10HXYQGsOLld3DVfO0aHJQ+ji5WskTtmJxi/Gutra2BL7upiPByvdInCBFL5WObw
1gQCYZeUgD0Djofmk4Jst8M7fU/v8HDTgyMzy544EQKBgQDOVXuS3wkxz5QqKAt9
js8nAb+M9w84cCn89hLZN60IBBWb933EtRun5M6Izy7PWRnSUH4Oeao9cGU1GsKQ
AuTLJKfbNVCrYo5dTpRDpK1zgRaiT2IPn8Wi337qP89dcb0NPXpWkzrkmhZJ3C6t
YkvDp8jhunudCpisWsA5cDGmcQKBgQDMvUyI7wyukMt+VDIi1tnzJgJlezXRRCCH
MO1qMSAn0UIIp/9nR41mdj9gQJby1uc+eL5eLY/KTjZgU9NTOhJ3ZT/GkvoR9xQt
yZfWz8117OXoJxMgfUITKijtlQSCY4i3kAcA+bEerFIW+6xtNXzte5Q+LH/knmbh
HmC689hTvwKBgERRwa0L9LtthB3BTKyyUJ0V0xsV4xBI814zDGKoML7qu0z9UcOE
RDf/ZvOdxl4Znpco19RrLJdTU++VgL62dpNc+8d1i9RzubfjgOw05snMAHaV2l5a
BNK9NgTSRBMoyfRMWum3rlRrQN4L7dizJ2sNb1JusOd6zrqjAesC3y3BAoGAAdlz
54jBRJJqRCneihIGxfuB6gjC47EJ2i7G9j6bW8C4J/vcgsJStKo8yFHNC0SFsjrE
/XTL57ftJdGcBxRvNkTj3pdVSvRAaml3xaj64iXRrdcshQ6cmi+3Tu4ZrFPZ2E6k
wY1/3BcSZsK/O/1Ps5V6MVWVkiscIsxzczzgp2ECgYAqC6yFmIbw1Ui/YIqprj8c
nb5xl5KGj47ZGFIWeoNIZKOwUZu+POu+WZ4kOvySP276xvLfjLjWl+HHjN73AMaT
RvW2+xwSEfGR4d5wqGGxk5TnJOzi0vd21tGUCGdc+AAYDE/M00skdW8AfK1fUuVm
qkpHixGjosFWeZn9IGyu0g==
-----END PRIVATE KEY-----

View File

@@ -1,40 +1,32 @@
-----BEGIN CERTIFICATE-----
MIIDWTCCAkGgAwIBAgIJAIlW4JmZGnU4MA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV
BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
Q29tcGFueSBMdGQwIBcNMTQxMDI0MDc1MTU1WhgPMzAxNDAyMjQwNzUxNTVaMEIx
CzAJBgNVBAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0Rl
ZmF1bHQgQ29tcGFueSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQDDzU6xLZDD5rZENsOpTpTmqS8YisBaefU3ZeN7VJepZZ/7unM/1YLGJtuRh2Qa
MyTkvyjzf7bSFsDt9L5lfQwBBblVeWkrCvGnQmHDQQYB7JrSmFDPz9W9Mxf9Q2BW
B3lcoKXXJgMnWw0WGrt0lEdFp9gWbq8H9hwJdjpyyk4ZTIuucSOD4JUP3QFEhYU5
kdcIbDRVw81J4eAZ6EdvbjDN05S7qWjW7rJTnCHAHEd18hcsMGwjpwhjEaSdhMrM
mhOeL8kuQV0fI8v2xfYBliIn9xBZGOVzySPzwFmQceORlW6F3V5w6mwFkmuXqXWX
Qo98swTu7mb89qVYmR71d3L3AgMBAAGjUDBOMB0GA1UdDgQWBBRdWet/kGNTyvXK
wuBdP/eSldOgWjAfBgNVHSMEGDAWgBRdWet/kGNTyvXKwuBdP/eSldOgWjAMBgNV
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCcJpP+DR4AJxVelNTSZa+V38c+
jgrMD2Ku2eU8NQlsjgMfNEU5Md/g7FpP8aCFzVf0kAAT7DxZmSE3uWXQbMXyVJmy
bF+qXinf71QzdWULm6sASoshC6wbHnXL9ZjWQ3gh1nqVgo3MmLQYrb3eJfKaaLoc
wpjhYxVxGFOx1ITN3jED64lUfoLHvR6NFbESYKAuAAzSNqX4HOQ3uGk2THM8JocZ
oH2+38d81Kd4HQ7DDDKS/isG0+rR60Ti1cMgu7OT7p1dZCwT/KQuI5eGjE9lubkc
yAJjaod4rVLdBri3XVvtySfS2+/75qUgv2TF7d/s7mxMq4DDt29yeKSUhZCs
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----

View File

@@ -1,20 +1,87 @@
Certificate:
Data:
Version: 1 (0x0)
Serial Number: 4097 (0x1001)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=FI, ST=Helsinki, L=Helsinki, O=MariaDB, CN=Galera CA
Validity
Not Before: May 20 01:32:38 2025 GMT
Not After : May 20 01:32:38 2125 GMT
Subject:
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c9:0e:e9:9d:eb:8f:8d:7f:79:aa:55:7f:2d:c0:
be:92:10:77:46:78:31:63:38:82:01:91:91:4c:c1:
49:85:04:d3:28:0a:49:80:81:1f:3c:3c:00:6f:aa:
e1:ad:d1:44:0a:72:2a:82:39:72:12:5e:3d:0e:be:
43:f8:11:98:6a:cb:35:a8:f5:05:e1:1b:b1:9f:14:
ee:59:9d:4a:34:cc:92:0d:9b:cf:23:db:ba:5e:68:
b3:de:2f:37:04:41:c7:84:b0:62:fb:5d:7a:b9:6e:
0d:f8:f9:82:23:24:8c:0e:f6:34:b7:93:fe:82:f6:
fc:56:45:46:67:63:b1:a7:18:2d:2b:7a:90:92:9c:
a0:cc:11:18:68:f1:9d:24:a5:77:40:cc:c3:ae:df:
ed:c9:1c:cb:e1:66:0c:04:3e:93:2b:4f:ad:31:c1:
33:64:a4:27:7d:27:da:40:bb:bb:d9:a1:f1:b0:bc:
43:de:52:22:78:0d:21:ac:20:e0:62:15:4b:60:a4:
60:77:34:44:75:76:1f:57:00:23:15:dd:51:29:b2:
5e:75:99:b0:72:0b:49:21:31:1f:5f:a4:b9:ef:c4:
f1:1e:4c:0d:1f:4b:2d:f1:71:f9:b1:df:3f:9c:01:
7e:cd:66:ef:07:e6:e7:9a:95:eb:86:ba:44:05:84:
42:2b
Exponent: 65537 (0x10001)
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
90:67:64:33:70:bd:c8:15:10:8d:8c:f3:09:48:c8:12:8d:58:
25:b6:a7:a5:2f:54:4e:a3:8e:4c:8d:e7:bb:60:2e:1c:1d:0f:
c1:62:78:d3:47:18:a0:c6:55:4c:69:38:07:e4:86:7a:c6:35:
f3:bd:05:1b:a4:67:ea:d9:ed:72:e5:37:df:7f:97:2f:76:4e:
d8:7a:df:de:7f:35:15:de:cd:e0:e3:c2:e1:96:15:79:3f:88:
5f:d1:f1:b4:f1:41:21:f1:6a:cd:92:3d:4c:14:fc:5b:17:d0:
ec:7d:12:88:18:74:ec:5c:2a:d3:e7:7b:c4:69:53:51:37:71:
d1:f8:2a:70:80:e3:b7:b5:00:a6:df:d4:9b:d4:65:5e:e2:53:
6e:98:6d:76:26:cd:19:cd:08:ec:81:8b:54:50:53:9b:06:f3:
65:83:a9:1b:9c:f0:ed:12:88:c5:0c:f2:02:d4:3f:09:fb:43:
f9:1e:13:12:05:c4:e7:47:e7:9e:bf:c0:6a:70:17:3e:f4:29:
92:77:a8:1b:d9:1c:3c:e3:ae:5d:c8:98:a6:4b:3d:22:a8:cd:
46:8e:8b:4e:b2:0c:a3:3e:9e:fe:98:a1:2c:36:10:f9:b6:63:
d4:ae:bb:a8:f3:e8:cd:2f:0e:06:a2:e9:e1:41:3f:25:8b:ec:
a1:65:56:ec:d6:98:4b:b3:fc:d1:8f:21:1e:55:3d:28:10:c3:
55:30:54:0a:92:f5:33:7e:c6:68:fb:7d:b3:5f:5a:a2:65:4f:
25:53:93:3a:11:4a:23:5b:26:59:8e:5d:c5:56:c9:35:f5:55:
45:f1:0c:f0:b3:98:62:3f:42:f3:44:17:81:fd:41:80:e5:6e:
45:76:19:f0:34:f6:9a:13:76:5e:2e:08:66:71:e0:5d:f8:aa:
f9:ef:4b:1d:23:bc:c7:a7:e4:09:61:df:e6:b7:9a:7f:d2:8c:
25:f3:26:e2:38:36:1a:1e:23:a9:10:60:08:59:22:52:cf:64:
47:68:a0:04:31:33:f7:14:ec:33:87:76:f2:84:d1:37:07:fc:
1a:fa:23:94:2a:7e:72:f8:bb:45:17:49:d7:57:46:c1:aa:4c:
d2:04:dc:82:7b:33:b9:44:ee:d2:bb:4c:60:f0:93:7b:68:19:
77:65:7b:ce:65:d2:16:2d:0b:3d:0b:7d:62:96:86:29:c2:01:
57:26:02:15:67:cb:97:5b:2e:a6:65:60:b9:4f:53:ce:3a:6a:
35:06:50:d9:1b:be:5b:a0:0e:0a:b4:66:40:a5:6a:40:d1:37:
fd:f9:0a:63:22:b4:08:7d:5f:1a:ed:cb:6f:74:17:b6:a3:56:
54:24:38:8f:c4:6a:cf:46
-----BEGIN CERTIFICATE-----
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
CH1fGu3Lb3QXtqNWVCQ4j8Rqz0Y=
-----END CERTIFICATE-----

View File

@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDUOVzO0jNKeAZ5
NQWJuP0Znhk7vwBKmBjJJm/8NEhWf/eFsXjVlEP/q4mVvmt/VHt+kWy6ttc0MPF5
qntv8bPZdJDL3oNubRJuwVJm21X9HZa2VPVZ/mf2LHpEuqEpJuCc/IvZ+wNrG1mH
a7LAYkReHBcW13Hd14ij+1iK8N+XlNyy/Q2dljxWDRugFE/4USdF4k51Jrksuf5A
k3Zdr7C61ssd7SEjqG4pRdTZhR4F+DKTWdaiXnbjVlQMKAOyhpbyvZh4k0eY0id3
fARFuoWAUexHg3X4C1zKt+f+5BKP3OtM878+nnUqmNZ/+CPGNc9uK7kN7nSpnj5T
iejbQQg7AgMBAAECggEBAJ4m7VG3db+uOGzFJY5fzEX1+qn6ibYNKJNmUJfrQmkr
zgLUoc7QQehbJhnwoN1v0OQebZ+rOC7NtnZLpNdkkPmhk3JKLTnykIT3DnhWRftt
vG2+XGUnYMQkmy1ywz0Omt6CmZnlJMQByrNPgBM8Z+SWHGLKRTHkOBCz82T/YjDr
wqug1Yv6W0wMNM/cikgoBldVG7hABCJuShjffIbUgVysK3dEPNywNAC78neoGECm
evPZOaIkWEr86SpAlwA6Yh+zTQZ03CXATcGonJdWJ015DvlKRv6QyRR0Q/Y1ONwb
f115kll15MJBEspFdSyhlMcVJlwO8WMaZ2qIzlQZmdECgYEA//P469QzX00L/urK
7IRvtSVu5CP/A/Wui90U4KoP7XgXIeExnEtzLVs1K7vjuzdpTyq+68XuC40gPcJW
RvoX229m6gRV8nC53UiV71jM8IvkyEqFYT/gfZC9KQCMSRJLtVnDMpZ3gMxAY6/5
p20o616Au8DKFFetQV0aD4Hj1/MCgYEA1ENV1WkgvN6yItB77E9kN/vbKLRh0hrg
9xj0SmMXGYyDM9NpjbgbgJIZo3ukkBtp3kEY8P9JQZRcd1EcnnSrwTB7ChdInWkR
m/LpIZBEMqNQbeu4QSzZYYS6z4tcGGx43aHqzzNBZdnQnqhYL1CvlLwhkgX6oQCo
woXqyfMNKJkCgYEA63gD1NGPwWkcVBSlQxpDup8JeZE0Fux6++kUP+u0Y39LqLuH
7IXtHBkAvY9JXv8HPvHQWw/og2/97VNQFFQYhqPiRgBfIX9bPpx8c4l6YQISI8GL
G4CsglgZ7hK2/LJ8PAascWnD3xYJVqyaPNFMB90VCaW/Qx+2IKAKTaHtfskCgYBu
1f5C4pMqrCpeTXj4Cvis1wE4PwB5QnnH7SrakOVl/N4huLn8O2948lEa8Zwbd4UP
ffR1Gwh4iuzBjQQhpZBt30/QFBphv5RnVy7uzLMfsfF0hEqBFdcoubMGXqGnSzTN
nhfLO9thQJxTzFnH0xzr0FTDOAYH/h0g/eZ8r0JmuQKBgQDjhXM+hJ3Pkwua+Fnl
nZfY5MeSzkJki/9iwVo8rSDwmZS9Nsc83oZnddM7c2x63t+zYOAcMxsVCiByMDzo
5IB781HWRBGcU8TnW1b0bAnZimjKp/qsZ/Szr38rvImqG8TjzbcSD7w0SpyRQ/Ot
A7SZFkWYfem8/q/VImjU/CNbOQ==
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJDumd64+Nf3mq
VX8twL6SEHdGeDFjOIIBkZFMwUmFBNMoCkmAgR88PABvquGt0UQKciqCOXISXj0O
vkP4EZhqyzWo9QXhG7GfFO5ZnUo0zJINm88j27peaLPeLzcEQceEsGL7XXq5bg34
+YIjJIwO9jS3k/6C9vxWRUZnY7GnGC0repCSnKDMERho8Z0kpXdAzMOu3+3JHMvh
ZgwEPpMrT60xwTNkpCd9J9pAu7vZofGwvEPeUiJ4DSGsIOBiFUtgpGB3NER1dh9X
ACMV3VEpsl51mbByC0khMR9fpLnvxPEeTA0fSy3xcfmx3z+cAX7NZu8H5uealeuG
ukQFhEIrAgMBAAECggEALOBrPJhrfkXJvj8/F9NBthB+zvfc7iyauAbpy5wI8OvW
xcUmCszHUAaEgmg93zIqYbqByndQAtGOB1Bok2I6Bvw8ie3G1iv8RWnCmbYF7isL
HoZ8gaB1xMTSAPHA8e5Mvk0wirKexezOqZfneDicGmrR8XfTAyBlykvEHyeda5IQ
O5P5OIseevBSOYujV/pYohLIlIJmaxtlyLktIos2TvNxcomULhQ+b+xLc2YZespE
9Tvolin3czzS8UUACFIVDkmWRzEyEH+PXOBFiwbI3SeL1V+iJx+YcEkrNZpLkV45
DxvNqDMfgi7iZ5Re9/QIuoz79drokiC6yHW/V5EWoQKBgQD3RcvbaaWkCpC0mHer
K3+5I9OtBxFenG3h5v8jXVC4LwKoqeN5CpMBnltohiRWOxfjuJ15MHkIywuDYslU
ySEA2GvZZZIJxa9dNiQiCPlEH5GN0+9U9FDTYj3bvcjKkxrYBsdF3Yt3kkmlkdiZ
ANpo4iWHWkWC0EDXLqlM1dc8vQKBgQDQJ40pkMXczHFjklnwOtm1ftjXPtIUA2t8
Wgs+IVua0z+j5G1BiHisRct5pQDgLbMCtRzMvi8a/BrH+LMn9eGBnifJfOMZi7JR
6AYIjYzUVqJNgBLPTCLFjRSGOfLgG3XnS++E5OleftOvXZRuhzgng7ED8dU5KRfh
kjqwz3wNBwKBgAUleryyUjQ71A8uLS9u1FWyHTG4t+/UKaVN/Xlq88chk1iXUJiw
U6bw+M4QHKl+yVx/9ycSjzJTp4WwhKgzF3DBEF2R85wodSHngpECxs1YKttc0dpe
y1/a55avOIKe1Swx1+voVILElKvRgUSN8/3C1y0d/9xdITxZSETFHpmxAoGAK+qc
Us+znzEXHz3qcc/IzQ0VLNyZMBXEoLjStGoPTKwTOj3gezoS063qDyEr/SBHK2QQ
znW1tIjKEbS7/8tVp6Y5mL4bn/EkTzmXxEgxFT+uAJHr5gaXM3zffq5NOtEwX/ta
bnxpbEFv4gjpXyRySYv0VfO429V6r2HNti4gaxMCgYEA0EYdaBjLb+eHsT4aBFa4
uQg7N/F4JPNFpb7L6u0gCxkPGkmolCJyPMBS26ciDIiGIx9VBxvWsuzLU96nphG9
xgczWAzbYXeHN6UZw2ASWMyW+ffYqgLlE3it5qj0JiCkWxsjSiStLKm675WkqkxM
LBW22SFBcrXvQLb6CEC5mQQ=
-----END PRIVATE KEY-----

View File

@@ -8,6 +8,8 @@ connection node_2;
connection node_3;
connection node_4;
connection node_1;
SET SESSION wsrep_on = ON;
SET SESSION wsrep_sync_wait = 15;
CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY);
CREATE PROCEDURE p1(IN max INT)
BEGIN
@@ -48,6 +50,8 @@ CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
SET SESSION wsrep_on = ON;
INSERT INTO t2 VALUES (DEFAULT);
CALL p1(130);
connection node_2;
connection node_3;
connection node_1;
SET GLOBAL debug = "+d,sync.wsrep_sst_donor_after_donation";
Restarting server 4
@@ -58,8 +62,6 @@ SET SESSION DEBUG_SYNC = "now SIGNAL signal.wsrep_sst_donor_after_donation_conti
SET GLOBAL debug = "";
SET DEBUG_SYNC='RESET';
Waiting for server 4 to leave the cluster
SET SESSION wsrep_on = ON;
SET SESSION wsrep_sync_wait = 15;
connection node_2;
SET SESSION wsrep_on = ON;
SET SESSION wsrep_sync_wait = 15;
@@ -69,10 +71,18 @@ SET SESSION wsrep_sync_wait = 15;
connection node_4;
Server 4 left the cluster, killing it...
Killed server 4...
connection node_1;
connection node_4;
Restarting server 4...
connection node_1;
SET SESSION wsrep_on = ON;
SET SESSION wsrep_sync_wait = 15;
connection node_2;
SET SESSION wsrep_on = ON;
SET SESSION wsrep_sync_wait = 15;
connection node_3;
SET SESSION wsrep_on = ON;
SET SESSION wsrep_sync_wait = 15;
connection node_1;
SELECT count(*) AS expect1_390 FROM t1;
expect1_390

View File

@@ -5,7 +5,7 @@ loose-galera-ssl-cipher=1
wsrep-debug=1
[mysqld.1]
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
[mysqld.2]
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'

View File

@@ -5,7 +5,7 @@ loose-galera-ssl-upgrade=1
wsrep-debug=1
[mysqld.1]
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
[mysqld.2]
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'

View File

@@ -20,6 +20,10 @@ source ../wsrep/include/check_galera_version.inc;
# create table t1 and procedure p1 to generate wirtesets
--connection node_1
--let $members = 4
--source include/wsrep_wait_membership.inc
CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY);
DELIMITER |;
@@ -39,11 +43,17 @@ DELIMITER ;|
CALL p1(130);
--connection node_4
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 130 FROM t1;
--source include/wait_condition.inc
--echo Shutting down server 4...
--let $node_4_server_id= `SELECT @@server_id`
--let $node_4_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$node_4_server_id.expect
--let $node_4_pid_file= `SELECT @@pid_file`
--source include/shutdown_mysqld.inc
--source include/wait_until_disconnected.inc
# Wait for node #4 to leave cluster
--let $members = 3
@@ -65,16 +75,23 @@ CALL p1(130);
SET SESSION wsrep_on = OFF;
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
SET SESSION wsrep_on = ON;
--source include/wait_until_ready.inc
--connection node_2
--let $wait_condition = SELECT COUNT(*) = 260 FROM t1;
--source include/wait_condition.inc
SET SESSION wsrep_on = OFF;
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
SET SESSION wsrep_on = ON;
--source include/wait_until_ready.inc
--connection node_3
--let $wait_condition = SELECT COUNT(*) = 260 FROM t1;
--source include/wait_condition.inc
SET SESSION wsrep_on = OFF;
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
SET SESSION wsrep_on = ON;
--source include/wait_until_ready.inc
# This should cause error during IST
INSERT INTO t2 VALUES (DEFAULT);
@@ -82,6 +99,13 @@ INSERT INTO t2 VALUES (DEFAULT);
# make sure nodes 1,2,3 progress far enough for commit cut update
CALL p1(130);
--connection node_2
--let $wait_condition = SELECT COUNT(*) = 390 FROM t1;
--source include/wait_condition.inc
--connection node_3
--let $wait_condition = SELECT COUNT(*) = 390 FROM t1;
--source include/wait_condition.inc
--connection node_1
# prepare to stop SST donor thread when it receives a request from starting node #4
SET GLOBAL debug = "+d,sync.wsrep_sst_donor_after_donation";
@@ -96,14 +120,12 @@ SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_sst_donor_after_donation_reach
SET SESSION DEBUG_SYNC = "now SIGNAL signal.wsrep_sst_donor_after_donation_continue";
SET GLOBAL debug = "";
SET DEBUG_SYNC='RESET';
#
# After this point node #4 shall proceed to IST and bail out
#
--echo Waiting for server 4 to leave the cluster
--let $members = 3
--source include/wsrep_wait_membership.inc
--connection node_2
--source include/wsrep_wait_membership.inc
--connection node_3
@@ -124,14 +146,27 @@ SET DEBUG_SYNC='RESET';
EOF
--echo Killed server 4...
--source include/wait_until_disconnected.inc
--connection node_1
--source include/wait_until_ready.inc
--let $wait_condition = SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
--let $wait_condition_on_error_output = SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
--source include/wait_condition_with_debug.inc
--connection node_4
--echo Restarting server 4...
--source include/start_mysqld.inc
--source include/galera_wait_ready.inc
# Confirm node #4 has rejoined
--connection node_1
--let $members = 4
--source include/wsrep_wait_membership.inc
--connection node_2
--source include/wsrep_wait_membership.inc
--connection node_3
--source include/wsrep_wait_membership.inc
# Confirm that all is good and all nodes have identical data
@@ -148,6 +183,10 @@ SELECT count(*) AS expect3_390 FROM t1;
SELECT count(*) AS expect3_1 FROM t2;
--connection node_4
--let $wait_condition = SELECT COUNT(*) = 390 FROM t1;
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 1 FROM t2;
--source include/wait_condition.inc
SELECT count(*) AS expect4_390 FROM t1;
SELECT count(*) AS expect4_1 FROM t2;

View File

@@ -5,7 +5,7 @@ wsrep_sst_method=rsync
[mysqld.1]
wsrep_node_name='node.1'
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
[mysqld.2]
wsrep_node_name='node.2'
@@ -13,4 +13,4 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#gale
[mysqld.3]
wsrep_node_name='node.3'
wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'

View File

@@ -50,7 +50,7 @@ SELECT COUNT(*) = 1 FROM t1;
# Restart node with SSL enabled
--source include/shutdown_mysqld.inc
--let $restart_noprint = 1
--let $restart_parameters = --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1 --wsrep_provider_options=base_port=$NODE_GALERAPORT_2;socket.ssl=yes;socket.ssl_ca=$MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_cert=$MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=$MYSQL_TEST_DIR/std_data/galera-key.pem
--let $restart_parameters = --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1 --wsrep_provider_options=base_port=$NODE_GALERAPORT_2;socket.ssl=yes;socket.ssl_ca=$MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=$MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=$MYSQL_TEST_DIR/std_data/galera-key.pem
--source include/start_mysqld.inc
--source include/galera_wait_ready.inc

View File

@@ -81,8 +81,7 @@ SET @saved_debug_dbug = @@SESSION.debug_dbug;
SET SESSION debug_dbug="+d,ib_export_io_write_failure_1";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -91,8 +90,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_2";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -101,8 +99,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_3";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -111,8 +108,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_4";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -121,8 +117,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_5";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -131,8 +126,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_6";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -141,8 +135,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_7";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -151,8 +144,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_8";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -161,8 +153,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_10";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -171,8 +162,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_11";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;
@@ -181,8 +171,7 @@ INSERT INTO t1 VALUES (1);
SET SESSION debug_dbug="+d,ib_export_io_write_failure_12";
FLUSH TABLES t1 FOR EXPORT;
Warnings:
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed
Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed
Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor")
UNLOCK TABLES;
SET SESSION debug_dbug=@saved_debug_dbug;
DROP TABLE t1;

View File

@@ -32,6 +32,16 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ANALYZE_MAX_LENGTH
VARIABLE_SCOPE SESSION
VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Fields which length in bytes more than this are skipped by ANALYZE TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause
NUMERIC_MIN_VALUE 32
NUMERIC_MAX_VALUE 4294967295
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ANALYZE_SAMPLE_PERCENTAGE
VARIABLE_SCOPE SESSION
VARIABLE_TYPE DOUBLE

View File

@@ -32,6 +32,16 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ANALYZE_MAX_LENGTH
VARIABLE_SCOPE SESSION
VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Fields which length in bytes more than this are skipped by ANALYZE TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause
NUMERIC_MIN_VALUE 32
NUMERIC_MAX_VALUE 4294967295
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ANALYZE_SAMPLE_PERCENTAGE
VARIABLE_SCOPE SESSION
VARIABLE_TYPE DOUBLE

View File

@@ -272,7 +272,7 @@ IF(WIN32)
# The resulting files will have .pl extension (those are perl scripts)
# Input files with pl.in extension
SET(PLIN_FILES mysql_config)
SET(PLIN_FILES mysql_config print_ddl_recovery_log)
# Input files with .sh extension
SET(SH_FILES mysql_convert_table_format mysqld_multi mysqldumpslow
@@ -331,6 +331,8 @@ ELSE()
# Configure this one, for testing, but do not install it.
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_config.pl.in
${CMAKE_CURRENT_BINARY_DIR}/mysql_config.pl ESCAPE_QUOTES @ONLY)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/print_ddl_recovery_log.pl.in
${CMAKE_CURRENT_BINARY_DIR}/print_ddl_recovery_log.pl ESCAPE_QUOTES @ONLY)
# On Unix, most of the files end up in the bin directory
SET(BIN_SCRIPTS
msql2mysql

View File

@@ -0,0 +1,120 @@
#!@PERL_PATH@
use warnings;
use Fcntl qw(:seek);
use Getopt::Long;
# Constants based on the source
use constant {
BLOCK_SIZE => 4096,
DDL_LOG_ACTION_TYPE_POS => 1,
DDL_LOG_PHASE_POS => 2,
DDL_LOG_NEXT_ENTRY_POS => 4,
DDL_LOG_FLAG_POS => 8,
DDL_LOG_XID_POS => 10,
DDL_LOG_UUID_POS => 18,
MY_UUID_SIZE => 16,
DDL_LOG_ID_POS => 34,
DDL_LOG_END_POS => 42,
NAME_START_POS => 56,
};
package main;
my @log_entrys= ("Unknown", "EXECUTE", "ENTRY", "IGNORED" );
my @log_actions= ("Unknown", "DELETE_FRM", "RENAME_FRM", "REPLACE", "EXCHANGE",
"RENAME_TABLE", "RENAME_VIEW", "DROP_INIT", "DROP_TABLE",
"DROP_VIEW", "DROP_TRIGGER", "DROP_DB", "CREATE_TABLE",
"CREATE_VIEW", "DELETE_TMP_FILE", "CREATE_TRIGGER",
"ALTER_TABLE", "STORE_QUERY");
$opt_skip_not_used= undef;
$opt_skip_ignored= undef;
sub usage
{
print <<EOF;
Usage $0 [OPTIONS] path-to-MariaDB-ddl_recovery.log
Print the content of the MariaDB ddl_recovery.log.
One can also just provide the directory for the ddl_recover.log.
Options:
--skip-not-used\tSkip not used ddl log entries
--skip-ignored\tSkip ignored ddl log entries
EOF
exit 0;
}
GetOptions("skip-not-used", "skip-ignored") or usage();
my $file = shift;
my $fh;
if (!defined($file))
{
usage();
}
if (-d $file)
{
$file= $file . "/ddl_recovery.log";
}
open $fh, '<:raw', $file or die "Cannot open $file: $!";
# Skip header block
exit 0 if (!read($fh, my $block, BLOCK_SIZE));
my $entry_num = 1;
while (read($fh, my $block, BLOCK_SIZE)) {
my $entry_type = unpack("C", substr($block, 0, 1));
my $action_type = unpack("C", substr($block, DDL_LOG_ACTION_TYPE_POS, 1));
my $phase = unpack("C", substr($block, DDL_LOG_PHASE_POS, 1));
my $next_entry = unpack("V", substr($block, DDL_LOG_NEXT_ENTRY_POS, 4));
my $flags = unpack("v", substr($block, DDL_LOG_FLAG_POS, 2));
my $xid = unpack("Q<", substr($block, DDL_LOG_XID_POS, 8));
my $uuid_bin = substr($block, DDL_LOG_UUID_POS, MY_UUID_SIZE);
my $unique_id = unpack("Q<", substr($block, DDL_LOG_ID_POS, 8));
my $uuid = unpack("H8H4H4H4H12", $uuid_bin);
$uuid = join('-', $uuid =~ /(.{8})(.{4})(.{4})(.{4})(.{12})/);
my $pos = NAME_START_POS;
my @strings;
for (1..7) {
my ($str, $len);
$len = unpack("v", substr($block, $pos, 2));
$pos += 2;
last if ($pos + $len > BLOCK_SIZE);
$str = substr($block, $pos, $len);
$pos += $len+1;
push @strings, $str;
}
print "\n" if ($entry_num > 1);
print "=== DDL Log Entry $entry_num ===\n";
$entry_num++;
print "Entry Type : $log_entrys[$entry_type]\n";
next if ($opt_skip_not_used && $entry_type == 0);
next if ($opt_skip_ignored && $entry_type >= 3);
print "Action Type : $log_actions[$action_type]\n";
print "Phase : $phase\n";
print "Next Entry : $next_entry\n";
print "Flags : $flags\n";
print "XID : $xid\n";
print "UUID : $uuid\n";
print "Unique ID : $unique_id\n";
print "Handler Name : $strings[0]\n";
print "DB : $strings[1]\n";
print "Name : $strings[2]\n";
print "From Handler : $strings[3]\n";
print "From DB : $strings[4]\n";
print "From Name : $strings[5]\n";
print "Temp/Extra : $strings[6]\n";
}
close $fh;

View File

@@ -51,6 +51,7 @@ TYPELIB backup_stage_names=
static MDL_ticket *backup_flush_ticket;
static File volatile backup_log= -1;
static int backup_log_error= 0;
static backup_stages backup_stage;
static bool backup_start(THD *thd);
static bool backup_flush(THD *thd);
@@ -68,6 +69,7 @@ void backup_init()
backup_flush_ticket= 0;
backup_log= -1;
backup_log_error= 0;
backup_stage= BACKUP_FINISHED;
}
bool run_backup_stage(THD *thd, backup_stages stage)
@@ -140,6 +142,7 @@ bool run_backup_stage(THD *thd, backup_stages stage)
my_error(ER_BACKUP_STAGE_FAILED, MYF(0), stage_names[(uint) stage]);
DBUG_RETURN(1);
}
backup_stage= next_stage;
next_stage= (backup_stages) ((uint) next_stage + 1);
} while ((uint) next_stage <= (uint) stage);
@@ -174,6 +177,7 @@ static bool backup_start(THD *thd)
/* this will be reset if this stage fails */
thd->current_backup_stage= BACKUP_START;
backup_stage= BACKUP_START;
/*
Wait for old backup to finish and block ddl's so that we can start the
@@ -456,6 +460,7 @@ bool backup_end(THD *thd)
// This is needed as we may call backup_end without backup_block_commit
stop_ddl_logging();
backup_flush_ticket= 0;
backup_stage= BACKUP_FINISHED;
thd->current_backup_stage= BACKUP_FINISHED;
thd->mdl_context.release_lock(old_ticket);
#ifdef WITH_WSREP
@@ -513,7 +518,7 @@ bool backup_reset_alter_copy_lock(THD *thd)
bool res= 0;
MDL_ticket *ticket= thd->mdl_backup_ticket;
/* Ticket maybe NULL in case of LOCK TABLES or for temporary tables*/
/* Ticket maybe NULL in case of LOCK TABLES or for temporary tables */
if (ticket)
res= thd->mdl_context.upgrade_shared_lock(ticket, MDL_BACKUP_DDL,
thd->variables.lock_wait_timeout);
@@ -638,6 +643,13 @@ static char *add_bool_to_buffer(char *ptr, bool value) {
void backup_log_ddl(const backup_log_info *info)
{
/*
We should not get any backup_log_ddl request after BACKUP_WAIT_FOR_FLUSH
has been executed.
*/
DBUG_ASSERT(backup_stage <= BACKUP_WAIT_FOR_FLUSH ||
backup_stage >= BACKUP_END);
if (backup_log >= 0 && backup_log_error == 0)
{
mysql_mutex_lock(&LOCK_backup_log);

View File

@@ -2030,13 +2030,24 @@ class Grant_tables
{
DBUG_ENTER("Grant_tables::open_and_lock");
TABLE_LIST tables[USER_TABLE+1], *first= NULL;
TABLE_LIST *first= nullptr, *tables=
static_cast<TABLE_LIST*>(my_malloc(PSI_NOT_INSTRUMENTED,
(USER_TABLE + 1) * sizeof *tables,
MYF(MY_WME)));
int res= -1;
if (!tables)
DBUG_RETURN(res);
if (build_table_list(thd, &first, which_tables, lock_type, tables))
DBUG_RETURN(-1);
{
func_exit:
my_free(tables);
DBUG_RETURN(res);
}
uint counter;
int res= really_open(thd, first, &counter);
res= really_open(thd, first, &counter);
/* if User_table_json wasn't found, let's try User_table_tabular */
if (!res && (which_tables & Table_user) && !tables[USER_TABLE].table)
@@ -2062,12 +2073,15 @@ class Grant_tables
}
}
if (res)
DBUG_RETURN(res);
goto func_exit;
if (lock_tables(thd, first, counter,
MYSQL_LOCK_IGNORE_TIMEOUT |
MYSQL_OPEN_IGNORE_LOGGING_FORMAT))
DBUG_RETURN(-1);
{
res= -1;
goto func_exit;
}
p_user_table->set_table(tables[USER_TABLE].table);
m_db_table.set_table(tables[DB_TABLE].table);
@@ -2077,7 +2091,7 @@ class Grant_tables
m_procs_priv_table.set_table(tables[PROCS_PRIV_TABLE].table);
m_proxies_priv_table.set_table(tables[PROXIES_PRIV_TABLE].table);
m_roles_mapping_table.set_table(tables[ROLES_MAPPING_TABLE].table);
DBUG_RETURN(0);
goto func_exit;
}
inline const User_table& user_table() const

View File

@@ -987,8 +987,9 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
types here.
*/
enum enum_field_types type= field->type();
if (type < MYSQL_TYPE_TINY_BLOB ||
type > MYSQL_TYPE_BLOB)
if ((type < MYSQL_TYPE_TINY_BLOB ||
type > MYSQL_TYPE_BLOB) &&
field->field_length <= thd->variables.analyze_max_length)
{
field->register_field_in_read_map();
bitmap_set_bit(&tab->has_value_set, field->field_index);

View File

@@ -4734,6 +4734,7 @@ restart:
goto error;
error= FALSE;
std::this_thread::yield();
goto restart;
}
goto error;
@@ -4799,6 +4800,7 @@ restart:
error= FALSE;
sroutine_to_open= &thd->lex->sroutines_list.first;
std::this_thread::yield();
goto restart;
}
/*

View File

@@ -20,6 +20,7 @@
/* Classes in mysql */
#include <atomic>
#include <thread>
#include "dur_prop.h"
#include <waiting_threads.h>
#include "sql_const.h"
@@ -736,6 +737,7 @@ typedef struct system_variables
ha_rows select_limit;
ha_rows max_join_size;
ha_rows expensive_subquery_limit;
uint analyze_max_length;
ulong auto_increment_increment, auto_increment_offset;
#ifdef WITH_WSREP
/*

View File

@@ -6495,6 +6495,7 @@ extern "C" MYSQL *mysql_real_connect_local(MYSQL *mysql)
new_thd->variables.wsrep_on= 0;
new_thd->client_capabilities= client_flag;
new_thd->variables.sql_log_bin= 0;
new_thd->affected_rows= 0;
new_thd->set_binlog_bit();
/*
TOSO: decide if we should turn the auditing off

View File

@@ -264,6 +264,7 @@ index_stat_def= {INDEX_STAT_N_FIELDS, index_stat_fields, 4, index_stat_pk_col};
Open all statistical tables and lock them
*/
ATTRIBUTE_NOINLINE
static int open_stat_tables(THD *thd, TABLE_LIST *tables, bool for_write)
{
int rc;
@@ -2902,9 +2903,6 @@ int collect_statistics_for_table(THD *thd, TABLE *table)
After having been updated the statistical system tables are closed.
*/
/* Stack usage 20248 from clang */
PRAGMA_DISABLE_CHECK_STACK_FRAME
int update_statistics_for_table(THD *thd, TABLE *table)
{
TABLE_LIST tables[STATISTICS_TABLES];
@@ -2933,9 +2931,13 @@ int update_statistics_for_table(THD *thd, TABLE *table)
save_binlog_format= thd->set_current_stmt_binlog_format_stmt();
char statbuf[sizeof(Index_stat)];
static_assert(sizeof(statbuf) >= sizeof(Table_stat), "");
static_assert(sizeof(statbuf) >= sizeof(Column_stat), "");
/* Update the statistical table table_stats */
stat_table= tables[TABLE_STAT].table;
Table_stat table_stat(stat_table, table);
Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, table);
restore_record(stat_table, s->default_values);
table_stat.set_key_fields();
err= table_stat.update_stat();
@@ -2944,7 +2946,7 @@ int update_statistics_for_table(THD *thd, TABLE *table)
/* Update the statistical table colum_stats */
stat_table= tables[COLUMN_STAT].table;
Column_stat column_stat(stat_table, table);
Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, table);
for (Field **field_ptr= table->field; *field_ptr; field_ptr++)
{
Field *table_field= *field_ptr;
@@ -2961,7 +2963,7 @@ int update_statistics_for_table(THD *thd, TABLE *table)
stat_table= tables[INDEX_STAT].table;
uint key;
key_map::Iterator it(table->keys_in_use_for_query);
Index_stat index_stat(stat_table, table);
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, table);
while ((key= it++) != key_map::Iterator::BITMAP_END)
{
@@ -2989,7 +2991,6 @@ int update_statistics_for_table(THD *thd, TABLE *table)
new_trans.restore_old_transaction();
DBUG_RETURN(rc);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/**
@@ -3073,14 +3074,17 @@ read_statistics_for_table(THD *thd, TABLE *table,
/* Read statistics from the statistical table table_stats */
Table_statistics *read_stats= new_stats_cb->table_stats;
stat_table= stat_tables[TABLE_STAT].table;
Table_stat table_stat(stat_table, table);
char statbuf[sizeof(Index_stat)];
static_assert(sizeof(statbuf) >= sizeof(Table_stat), "");
static_assert(sizeof(statbuf) >= sizeof(Column_stat), "");
Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, table);
table_stat.set_key_fields();
if (table_stat.get_stat_values(new_stats_cb->table_stats))
new_stats_cb->stats_available|= TABLE_STAT_TABLE;
/* Read statistics from the statistical table column_stats */
stat_table= stat_tables[COLUMN_STAT].table;
Column_stat column_stat(stat_table, table);
Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, table);
Column_statistics *column_statistics= new_stats_cb->table_stats->column_stats;
for (field_ptr= table_share->field;
*field_ptr;
@@ -3102,7 +3106,7 @@ read_statistics_for_table(THD *thd, TABLE *table,
/* Read statistics from the statistical table index_stats */
stat_table= stat_tables[INDEX_STAT].table;
Index_stat index_stat(stat_table, table);
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, table);
Index_statistics *index_statistics= new_stats_cb->table_stats->index_stats;
for (key_info= table_share->key_info,
key_info_end= key_info + table_share->keys;
@@ -3397,9 +3401,6 @@ end:
The function is called when executing the statement DROP TABLE 'tab'.
*/
/* Stack size 20248 with clang */
PRAGMA_DISABLE_CHECK_STACK_FRAME
int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
const LEX_CSTRING *tab)
{
@@ -3423,7 +3424,10 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
/* Delete statistics on table from the statistical table index_stats */
stat_table= tables[INDEX_STAT].table;
Index_stat index_stat(stat_table, db, tab);
char statbuf[sizeof(Index_stat)];
static_assert(sizeof(statbuf) >= sizeof(Table_stat), "");
static_assert(sizeof(statbuf) >= sizeof(Column_stat), "");
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, db, tab);
index_stat.set_full_table_name();
while (index_stat.find_next_stat_for_prefix(2))
{
@@ -3434,7 +3438,7 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
/* Delete statistics on table from the statistical table column_stats */
stat_table= tables[COLUMN_STAT].table;
Column_stat column_stat(stat_table, db, tab);
Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, db, tab);
column_stat.set_full_table_name();
while (column_stat.find_next_stat_for_prefix(2))
{
@@ -3445,7 +3449,7 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
/* Delete statistics on table from the statistical table table_stats */
stat_table= tables[TABLE_STAT].table;
Table_stat table_stat(stat_table, db, tab);
Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, db, tab);
table_stat.set_key_fields();
if (table_stat.find_stat())
{
@@ -3468,7 +3472,6 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
new_trans.restore_old_transaction();
DBUG_RETURN(rc);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/**
@@ -3837,7 +3840,6 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab,
int rc= 0;
uint duplicate_counter= 0;
List_iterator<Alter_info::RENAME_INDEX_STAT_PARAMS> it(*indexes);
Alter_info::RENAME_INDEX_STAT_PARAMS *index;
char tmp_name_buffer[32];
LEX_CSTRING tmp_name= {tmp_name_buffer, 0};
DBUG_ENTER("rename_indexes_in_stat_tables");
@@ -3858,15 +3860,16 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab,
/* Rename index in the statistical table index_stat */
stat_table= tables.table;
char statbuf[sizeof(Index_stat)];
/*
Loop over all indexes and rename to new name or temp name in case of
conflicts
*/
while ((index= it++))
while (Alter_info::RENAME_INDEX_STAT_PARAMS *index= it++)
{
Index_stat index_stat(stat_table, tab);
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, tab);
uint found= 0;
/* We have to make a loop as one index may have many entries */
@@ -3934,12 +3937,11 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab,
the final name.
*/
Alter_info::RENAME_INDEX_STAT_PARAMS *index;
it.rewind();
Index_stat index_stat(stat_table, tab);
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, tab);
stat_table->file->ha_index_init(index_stat.stat_key_idx, 0);
while ((index= it++))
while (Alter_info::RENAME_INDEX_STAT_PARAMS *index= it++)
{
int err __attribute__((unused));
@@ -4013,9 +4015,6 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab,
The function is called when executing any statement that renames a table
*/
/* Stack size 20968 with clang */
PRAGMA_DISABLE_CHECK_STACK_FRAME
int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
const LEX_CSTRING *tab,
const LEX_CSTRING *new_db,
@@ -4040,10 +4039,15 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
/* Rename table in the statistical table index_stats */
stat_table= tables[INDEX_STAT].table;
Index_stat index_stat(stat_table, db, tab);
index_stat.set_full_table_name();
char statbuf[sizeof(Index_stat)];
static_assert(sizeof(statbuf) >= sizeof(Table_stat), "");
static_assert(sizeof(statbuf) >= sizeof(Column_stat), "");
Stat_table_write_iter index_iter(&index_stat);
Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, db, tab);
index_stat.set_full_table_name();
char ibuf[sizeof(Stat_table_write_iter)];
auto &index_iter= *new(ibuf) Stat_table_write_iter(&index_stat);
if (index_iter.init(2))
rc= 1;
while (!index_iter.get_next_row())
@@ -4057,9 +4061,9 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
/* Rename table in the statistical table column_stats */
stat_table= tables[COLUMN_STAT].table;
Column_stat column_stat(stat_table, db, tab);
Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, db, tab);
column_stat.set_full_table_name();
Stat_table_write_iter column_iter(&column_stat);
auto &column_iter= *new(ibuf) Stat_table_write_iter(&column_stat);
if (column_iter.init(2))
rc= 1;
while (!column_iter.get_next_row())
@@ -4073,7 +4077,7 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
/* Rename table in the statistical table table_stats */
stat_table= tables[TABLE_STAT].table;
Table_stat table_stat(stat_table, db, tab);
Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, db, tab);
table_stat.set_key_fields();
if (table_stat.find_stat())
{
@@ -4093,7 +4097,6 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
new_trans.restore_old_transaction();
DBUG_RETURN(rc);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/**

View File

@@ -8011,7 +8011,7 @@ static bool mysql_inplace_alter_table(THD *thd,
if (table->file->ha_prepare_inplace_alter_table(altered_table,
ha_alter_info))
goto rollback;
goto rollback_no_restore_lock;
debug_crash_here("ddl_log_alter_after_prepare_inplace");
@@ -8067,21 +8067,17 @@ static bool mysql_inplace_alter_table(THD *thd,
res= table->file->ha_inplace_alter_table(altered_table, ha_alter_info);
thd->abort_on_warning= false;
if (start_alter_id && wait_for_master(thd))
goto rollback;
if (res)
goto rollback;
if (res || (start_alter_id && wait_for_master(thd)))
goto rollback_no_restore_lock;
DEBUG_SYNC(thd, "alter_table_inplace_before_lock_upgrade");
// Upgrade to EXCLUSIVE before commit.
if (wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_RENAME))
goto rollback;
goto rollback_no_restore_lock;
/* Set MDL_BACKUP_DDL */
if (backup_reset_alter_copy_lock(thd))
goto rollback;
goto rollback_no_restore_lock;
/* Crashing here should cause the original table to be used */
debug_crash_here("ddl_log_alter_after_copy");
@@ -8110,7 +8106,7 @@ static bool mysql_inplace_alter_table(THD *thd,
if (!(table->file->partition_ht()->flags &
HTON_REQUIRES_NOTIFY_TABLEDEF_CHANGED_AFTER_COMMIT) &&
notify_tabledef_changed(table_list))
goto rollback;
goto rollback_restore_lock;
{
TR_table trt(thd, true);
@@ -8123,17 +8119,17 @@ static bool mysql_inplace_alter_table(THD *thd,
if (!TR_table::use_transaction_registry)
{
my_error(ER_VERS_TRT_IS_DISABLED, MYF(0));
goto rollback;
goto rollback_restore_lock;
}
if (trt.update(trx_start_id, trx_end_id))
goto rollback;
goto rollback_restore_lock;
}
}
if (table->file->ha_commit_inplace_alter_table(altered_table,
ha_alter_info,
true))
goto rollback;
goto rollback_restore_lock;
DEBUG_SYNC(thd, "alter_table_inplace_after_commit");
}
@@ -8230,7 +8226,11 @@ static bool mysql_inplace_alter_table(THD *thd,
DBUG_RETURN(commit_succeded_with_error);
rollback:
rollback_restore_lock:
/* Wait for backup if it is running */
backup_reset_alter_copy_lock(thd);
rollback_no_restore_lock:
table->file->ha_commit_inplace_alter_table(altered_table,
ha_alter_info,
false);
@@ -12414,7 +12414,7 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
if (unlikely(mysql_trans_commit_alter_copy_data(thd)))
error= 1;
err:
end:
if (bulk_insert_started)
(void) to->file->ha_end_bulk_insert();
@@ -12445,6 +12445,10 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore,
error= 1;
thd_progress_end(thd);
DBUG_RETURN(error > 0 ? -1 : 0);
err:
backup_reset_alter_copy_lock(thd);
goto end;
}

View File

@@ -445,6 +445,19 @@ static Sys_var_double Sys_analyze_sample_percentage(
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 100),
DEFAULT(100));
/*
The max length have to be UINT_MAX32 to not remove GEOMETRY fields
from analyze.
*/
static Sys_var_uint Sys_analyze_max_length(
"analyze_max_length",
"Fields which length in bytes more than this are skipped by ANALYZE "
"TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause",
SESSION_VAR(analyze_max_length),
CMD_LINE(REQUIRED_ARG), VALID_RANGE(32, UINT_MAX32),
DEFAULT(UINT_MAX32), BLOCK_SIZE(1));
static Sys_var_ulong Sys_auto_increment_increment(
"auto_increment_increment",
"Auto-increment columns are incremented by this",

View File

@@ -901,6 +901,7 @@ retry:
{
mysql_mutex_unlock(&element->LOCK_table_share);
lf_hash_search_unpin(thd->tdc_hash_pins);
std::this_thread::yield();
goto retry;
}
lf_hash_search_unpin(thd->tdc_hash_pins);

View File

@@ -715,6 +715,10 @@ static void stop_timer(pool_timer_t *timer)
@return a ready connection, or NULL on shutdown
*/
/* ev[MAX_EVENTS] may bloat the stack frame beyond 16 KiB */
PRAGMA_DISABLE_CHECK_STACK_FRAME
static TP_connection_generic * listener(worker_thread_t *current_thread,
thread_group_t *thread_group)
{
@@ -830,6 +834,7 @@ static TP_connection_generic * listener(worker_thread_t *current_thread,
DBUG_RETURN(retval);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/**
Adjust thread counters in group or global
@@ -1157,6 +1162,9 @@ static bool too_many_threads(thread_group_t *thread_group)
NULL is returned if timeout has expired,or on shutdown.
*/
/* ev[MAX_EVENTS] may bloat the stack frame beyond 16 KiB */
PRAGMA_DISABLE_CHECK_STACK_FRAME
TP_connection_generic *get_event(worker_thread_t *current_thread,
thread_group_t *thread_group, struct timespec *abstime)
{
@@ -1262,6 +1270,7 @@ TP_connection_generic *get_event(worker_thread_t *current_thread,
DBUG_RETURN(connection);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME

View File

@@ -2291,6 +2291,8 @@ str_to_offset(const char *str, uint length, long *offset)
specification or other error.
*/
PRAGMA_DISABLE_CHECK_STACK_FRAME
Time_zone *
my_tz_find(THD *thd, const String *name)
{
@@ -2359,6 +2361,7 @@ my_tz_find(THD *thd, const String *name)
DBUG_RETURN(result_tz);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/**

View File

@@ -1819,9 +1819,9 @@ static void *allowlist_check_thread(void *param)
Allowlist_check_arg *arg= (Allowlist_check_arg *) param;
my_thread_init();
THD thd(0);
thd.thread_stack= (char *) &thd;
wsrep_init_thd_for_schema(&thd);
THD *thd= new THD(0);
thd->thread_stack= (char *) thd;
wsrep_init_thd_for_schema(thd);
int error;
TABLE *allowlist_table= 0;
@@ -1835,8 +1835,8 @@ static void *allowlist_check_thread(void *param)
/*
* Read allowlist table
*/
Wsrep_schema_impl::init_stmt(&thd);
if (Wsrep_schema_impl::open_for_read(&thd, allowlist_table_str.c_str(),
Wsrep_schema_impl::init_stmt(thd);
if (Wsrep_schema_impl::open_for_read(thd, allowlist_table_str.c_str(),
&allowlist_table_l) ||
(allowlist_table= allowlist_table_l.table,
Wsrep_schema_impl::init_for_scan(allowlist_table)))
@@ -1877,9 +1877,10 @@ static void *allowlist_check_thread(void *param)
{
goto out;
}
Wsrep_schema_impl::finish_stmt(&thd);
(void) trans_commit(&thd);
Wsrep_schema_impl::finish_stmt(thd);
(void) trans_commit(thd);
out:
delete thd;
my_thread_end();
arg->response = match_found_or_empty;
return 0;

View File

@@ -7019,9 +7019,6 @@ PRAGMA_REENABLE_CHECK_STACK_FRAME
- user has file privilege
*/
/* Stack size 16664 in clang */
PRAGMA_DISABLE_CHECK_STACK_FRAME
bool ha_connect::FileExists(const char *fn, bool bf)
{
if (!fn || !*fn)
@@ -7057,10 +7054,9 @@ bool ha_connect::FileExists(const char *fn, bool bf)
if (n < 0) {
if (errno != ENOENT) {
char buf[_MAX_PATH + 20];
snprintf(buf, sizeof(buf), "Error %d for file %s", errno, filename);
push_warning(table->in_use, Sql_condition::WARN_LEVEL_WARN, ER_UNKNOWN_ERROR, buf);
push_warning_printf(table->in_use, Sql_condition::WARN_LEVEL_WARN,
ER_UNKNOWN_ERROR,
"Error %d for file %s", errno, filename);
return true;
} else
return false;
@@ -7072,7 +7068,6 @@ bool ha_connect::FileExists(const char *fn, bool bf)
return true;
} // end of FileExists
PRAGMA_REENABLE_CHECK_STACK_FRAME
// Called by SameString and NoFieldOptionChange
bool ha_connect::CheckString(PCSZ str1, PCSZ str2)

View File

@@ -164,16 +164,16 @@ Warnings:
Note 1105 xt1: 1 affected rows
SELECT * FROM t1;
id msg
4 four
7 sept
1 one
8 eight
40 forty
10 ten
11 eleven
35 thirty five
72 big
4 four
40 forty
60 big
7 sept
72 big
8 eight
81 big
DELETE FROM t1 WHERE id in (60,72);
Warnings:
@@ -181,14 +181,14 @@ Note 1105 xt3: 2 affected rows
Note 1105 xt3: 0 affected rows
SELECT * FROM t1;
id msg
4 four
7 sept
1 one
8 eight
40 forty
10 ten
11 eleven
35 thirty five
4 four
40 forty
7 sept
8 eight
81 big
DROP TABLE t1;
CREATE TABLE t1 (

View File

@@ -75,11 +75,14 @@ SELECT * FROM t1 WHERE id = 7;
SELECT * FROM t1 WHERE id = 35;
UPDATE t1 SET msg = 'number' WHERE id in (60,72);
UPDATE t1 SET msg = 'soixante' WHERE id = 60;
--sorted_result
SELECT * FROM t1 WHERE id > 50;
UPDATE t1 SET msg = 'big' WHERE id > 50;
UPDATE t1 SET msg = 'sept' WHERE id = 7;
--sorted_result
SELECT * FROM t1;
DELETE FROM t1 WHERE id in (60,72);
--sorted_result
SELECT * FROM t1;
DROP TABLE t1;

View File

@@ -425,9 +425,6 @@ row_quiesce_write_header(
Write the table meta data after quiesce.
@return DB_SUCCESS or error code */
/* Stack size 20904 with clang */
PRAGMA_DISABLE_CHECK_STACK_FRAME
static MY_ATTRIBUTE((nonnull, warn_unused_result))
dberr_t
row_quiesce_write_cfg(
@@ -445,9 +442,10 @@ row_quiesce_write_cfg(
FILE* file = fopen(name, "w+b");
if (file == NULL) {
ib_errf(thd, IB_LOG_LEVEL_WARN, ER_CANT_CREATE_FILE,
name, errno, strerror(errno));
if (!file) {
fail:
ib_senderrf(thd, IB_LOG_LEVEL_WARN, ER_CANT_CREATE_FILE,
name, errno, strerror(errno));
err = DB_IO_ERROR;
} else {
@@ -461,31 +459,18 @@ row_quiesce_write_cfg(
err = row_quiesce_write_indexes(table, file, thd);
}
if (fflush(file) != 0) {
char msg[BUFSIZ];
snprintf(msg, sizeof(msg), "%s flush() failed", name);
ib_senderrf(
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
(ulong) errno, strerror(errno), msg);
if (fflush(file)) {
std::ignore = fclose(file);
goto fail;
}
if (fclose(file) != 0) {
char msg[BUFSIZ];
snprintf(msg, sizeof(msg), "%s flose() failed", name);
ib_senderrf(
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
(ulong) errno, strerror(errno), msg);
if (fclose(file)) {
goto fail;
}
}
return(err);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/*********************************************************************//**
Check whether a table has an FTS index defined on it.

View File

@@ -1077,6 +1077,7 @@ static void trx_purge_close_tables(purge_node_t *node, THD *thd) noexcept
void purge_sys_t::wait_FTS(bool also_sys)
{
std::this_thread::yield();
for (const uint32_t mask= also_sys ? ~0U : ~PAUSED_SYS; m_FTS_paused & mask;)
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}

View File

@@ -3601,9 +3601,6 @@ static my_bool translog_is_LSN_chunk(uchar type)
@retval 1 Error
*/
/* Stack size 26120 from clang */
PRAGMA_DISABLE_CHECK_STACK_FRAME
my_bool translog_init_with_table(const char *directory,
uint32 log_file_max_size,
uint32 server_version,
@@ -3857,6 +3854,7 @@ my_bool translog_init_with_table(const char *directory,
if (logs_found)
{
TRANSLOG_PAGE_SIZE_BUFF psize_buff;
TRANSLOG_ADDRESS current_page= sure_page;
my_bool pageok;
@@ -3897,7 +3895,6 @@ my_bool translog_init_with_table(const char *directory,
do
{
TRANSLOG_VALIDATOR_DATA data;
TRANSLOG_PAGE_SIZE_BUFF psize_buff;
uchar *page;
data.addr= &current_page;
if ((page= translog_get_page(&data, psize_buff.buffer, NULL)) == NULL)
@@ -3946,7 +3943,6 @@ my_bool translog_init_with_table(const char *directory,
if (logs_found && !old_log_was_recovered && old_flags == flags)
{
TRANSLOG_VALIDATOR_DATA data;
TRANSLOG_PAGE_SIZE_BUFF psize_buff;
uchar *page;
uint16 chunk_offset;
data.addr= &last_valid_page;
@@ -4237,7 +4233,6 @@ err:
ma_message_no_user(0, "log initialization failed");
DBUG_RETURN(1);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/*

View File

@@ -1558,7 +1558,7 @@ uint _ma_state_info_write(MARIA_SHARE *share, uint pWrite)
@retval 1 Error
*/
/* Stack size 26376 from clang */
/* MARIA_STATE_INFO_SIZE + MARIA_STATE_EXTRA_SIZE == 25559 */
PRAGMA_DISABLE_CHECK_STACK_FRAME
uint _ma_state_info_write_sub(File file, MARIA_STATE_INFO *state, uint pWrite)

View File

@@ -4913,6 +4913,7 @@ static int flush_cached_blocks(PAGECACHE *pagecache,
@retval PCFLUSH_PINNED Pinned blocks was met and skipped.
@retval PCFLUSH_PINNED_AND_ERROR PCFLUSH_ERROR and PCFLUSH_PINNED.
*/
PRAGMA_DISABLE_CHECK_STACK_FRAME
static int flush_pagecache_blocks_int(PAGECACHE *pagecache,
PAGECACHE_FILE *file,
@@ -5242,6 +5243,7 @@ int flush_pagecache_blocks_with_filter(PAGECACHE *pagecache,
pagecache_pthread_mutex_unlock(&pagecache->cache_lock);
DBUG_RETURN(res);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/*

View File

@@ -277,6 +277,7 @@ int maria_recovery_from_log(void)
@retval 0 OK
@retval !=0 Error
*/
PRAGMA_DISABLE_CHECK_STACK_FRAME
int maria_apply_log(LSN from_lsn, LSN end_redo_lsn, LSN end_undo_lsn,
enum maria_apply_log_way apply,
@@ -562,6 +563,7 @@ end:
*/
DBUG_RETURN(error);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
/* very basic info about the record's header */

View File

@@ -49,6 +49,14 @@ if(MSVC)
message(FATAL_ERROR ${MRN_OLD_MSVC_MESSAGE})
endif()
endif()
else()
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
MY_CHECK_AND_SET_COMPILER_FLAG(-Wframe-larger-than=49152)
endif()
if(MRN_BUNDLED)

View File

@@ -2459,6 +2459,10 @@ grn_proc_call(grn_ctx *ctx, grn_obj *proc, int nargs, grn_obj *caller)
} \
} while (0)
#ifdef __GNUC__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wframe-larger-than="
#endif
inline static void
grn_expr_exec_get_member_vector(grn_ctx *ctx,
grn_obj *expr,
@@ -3834,6 +3838,9 @@ exit :
}
GRN_API_RETURN(val);
}
#ifdef __GNUC__
# pragma GCC diagnostic pop
#endif
grn_obj *
grn_expr_get_value(grn_ctx *ctx, grn_obj *expr, int offset)

View File

@@ -86,8 +86,6 @@ void test_no_instruments()
cleanup_instruments();
}
PRAGMA_DISABLE_CHECK_STACK_FRAME
void test_no_instances()
{
int rc;
@@ -218,7 +216,7 @@ void test_no_instances()
ok(file == NULL, "no file");
ok(global_file_container.m_lost == 4, "lost 4");
char long_file_name[10000];
char long_file_name[5000];
int size= sizeof(long_file_name);
memset(long_file_name, 'X', size);
@@ -247,7 +245,6 @@ void test_no_instances()
cleanup_file_hash();
cleanup_instruments();
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
void test_with_instances()
{

View File

@@ -9,6 +9,13 @@ SET(CPACK_RPM_rocksdb-engine_PACKAGE_SUMMARY "RocksDB storage engine for MariaDB
SET(CPACK_RPM_rocksdb-engine_PACKAGE_DESCRIPTION "The RocksDB storage engine is a high performance storage engine, aimed
at maximising storage efficiency while maintaining InnoDB-like performance." PARENT_SCOPE)
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" ""
CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
MY_CHECK_AND_SET_COMPILER_FLAG(-Wframe-larger-than=32768)
MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-range-loop-construct)
MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-effc++ DEBUG RELWITHDEBINFO)

View File

@@ -232,20 +232,6 @@ a b date_format(c, '%Y-%m-%d %H:%i:%s')
4 i 2003-10-30 05:01:03
5 h 2001-10-31 23:59:59
select sql_calc_found_rows
connection master_1;
SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
ORDER BY a LIMIT 4;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 f 2008-07-01 10:21:39
2 g 2000-02-01 00:00:00
3 j 2007-05-04 20:03:11
4 i 2003-10-30 05:01:03
connection master_1;
SELECT found_rows();
found_rows()
5
select high_priority
connection master_1;
SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l

View File

@@ -847,52 +847,6 @@ if ($USE_CHILD_GROUP2)
}
}
--echo
--echo select sql_calc_found_rows
if ($USE_CHILD_GROUP2)
{
if (!$OUTPUT_CHILD_GROUP2)
{
--disable_query_log
--disable_result_log
}
--connection child2_1
if ($USE_GENERAL_LOG)
{
TRUNCATE TABLE mysql.general_log;
}
if (!$OUTPUT_CHILD_GROUP2)
{
--enable_query_log
--enable_result_log
}
}
--connection master_1
SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
ORDER BY a LIMIT 4;
if ($USE_CHILD_GROUP2)
{
if (!$OUTPUT_CHILD_GROUP2)
{
--disable_query_log
--disable_result_log
}
--connection child2_1
if ($USE_GENERAL_LOG)
{
SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
}
if (!$OUTPUT_CHILD_GROUP2)
{
--enable_query_log
--enable_result_log
}
}
--connection master_1
--disable_ps2_protocol
SELECT found_rows();
--enable_ps2_protocol
--echo
--echo select high_priority
if ($USE_CHILD_GROUP2)

View File

@@ -43,8 +43,6 @@ let $CHILD2_1_CREATE_TABLES=
PRIMARY KEY(a,b)
) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES
let $CHILD2_1_SELECT_TABLES=
SELECT pkey, txt FROM tbl_a ORDER BY pkey;
let $CHILD2_1_SELECT_TABLES=
SELECT a, b, c FROM ta_r2 ORDER BY a $STR_SEMICOLON
SELECT a, b, c FROM ta_r3 ORDER BY a;

View File

@@ -58,25 +58,33 @@ TRUNCATE TABLE mysql.general_log;
--connection master_1
--disable_ps2_protocol
--disable_view_protocol
SELECT a, b, c FROM tbl_a PARTITION (pt2) WHERE b = 'c';
--enable_view_protocol
SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2);
--disable_view_protocol
SELECT a, b, c FROM tbl_a PARTITION (pt3) WHERE b = 'c';
--enable_view_protocol
SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2);
--disable_view_protocol
SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c';
--enable_view_protocol
SELECT a, b, c FROM tbl_a PARTITION (pt1,pt3);
--disable_view_protocol
SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c';
--enable_view_protocol
SELECT a, b, c FROM tbl_a PARTITION (pt2,pt3);
--enable_ps2_protocol
--connection child2_1
--disable_ps2_protocol
--disable_view_protocol
--disable_ps2_protocol
eval $CHILD2_1_SELECT_ARGUMENT1;
--enable_view_protocol
--enable_ps2_protocol
--disable_ps_protocol
eval $CHILD2_1_SELECT_TABLES;
--enable_ps_protocol
--enable_view_protocol
--echo
--echo deinit

View File

@@ -85,10 +85,10 @@ SET NAMES utf8;
--disable_ps2_protocol
eval $CHILD2_1_SELECT_ARGUMENT1;
--enable_ps2_protocol
--enable_view_protocol
--disable_ps_protocol
eval $CHILD2_1_SELECT_TABLES;
--enable_ps_protocol
--enable_view_protocol
--echo
--echo deinit

View File

@@ -4,7 +4,9 @@ FLUSH TABLES WITH READ LOCK;
--error ER_CANT_UPDATE_WITH_READLOCK
CREATE FUNCTION spider_bg_direct_sql RETURNS INT SONAME 'ha_spider.so';
--disable_view_protocol
SELECT * FROM t;
--enable_view_protocol
--source include/restart_mysqld.inc

View File

@@ -4,8 +4,10 @@
INSTALL SONAME 'ha_spider';
SET character_set_connection=ucs2;
--disable_view_protocol
--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
SELECT SPIDER_DIRECT_SQL('SELECT SLEEP(1)', '', 'srv "dummy", port "3307"');
--enable_view_protocol
--disable_query_log
--source ../../include/clean_up_spider.inc
--enable_query_log

View File

@@ -9,6 +9,7 @@ OPTIONS (SOCKET "$MASTER_1_MYSOCK", DATABASE '',user 'Spider', password 'foo');
CREATE TABLE tSpider (a INT) ENGINE=Spider COMMENT='WRAPPER "mysql",SRV "srv",TABLE "t"';
CREATE TABLE t2 (c INT,c2 CHAR(1)) ENGINE=Spider COMMENT='WRAPPER "mysql",SRV "srv",TABLE "t"';
XA START 'a';
--disable_view_protocol
--disable_result_log
--error 0,ER_CONNECT_TO_FOREIGN_DATA_SOURCE
SELECT * FROM information_schema.table_constraints;
@@ -22,6 +23,7 @@ SELECT * FROM t2;
SELECT SLEEP (1);
--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
SELECT * FROM t2;
--enable_view_protocol
xa end 'a';
xa rollback 'a';
drop table tSpider, t2;

View File

@@ -7,8 +7,10 @@ enable_query_log;
--echo # MDEV-33031 Assertion failure upon reading from performance schema with binlog enabled
--echo #
connect foo,localhost,root;
--disable_view_protocol
select variable_name, variable_value from performance_schema.status_by_thread
where variable_name like '%spider_direct_aggregate%';
--enable_view_protocol
disconnect foo;
connection default;

View File

@@ -232,20 +232,6 @@ a b date_format(c, '%Y-%m-%d %H:%i:%s')
4 i 2003-10-30 05:01:03
5 h 2001-10-31 23:59:59
select sql_calc_found_rows
connection master_1;
SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
ORDER BY a LIMIT 4;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 f 2008-07-01 10:21:39
2 g 2000-02-01 00:00:00
3 j 2007-05-04 20:03:11
4 i 2003-10-30 05:01:03
connection master_1;
SELECT found_rows();
found_rows()
5
select high_priority
connection master_1;
SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l

View File

@@ -60,6 +60,7 @@ INSERT INTO tbl_b (bkey,akey) VALUES (0,0),(1,1),(2,2),(3,3),(4,4),(5,4),(6,3),(
--connection child2_1
TRUNCATE TABLE mysql.general_log;
--disable_view_protocol
--connection master_1
--disable_ps2_protocol
SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5;
@@ -67,11 +68,10 @@ SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5;
--connection child2_1
--disable_ps_protocol
--disable_view_protocol
eval $CHILD2_1_SELECT_ARGUMENT1;
--enable_view_protocol
eval $CHILD2_1_SELECT_TABLES;
--enable_ps_protocol
--enable_view_protocol
--echo
--echo deinit

View File

@@ -69,8 +69,8 @@ SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5;
--disable_ps_protocol
--disable_view_protocol
eval $CHILD2_1_SELECT_ARGUMENT1;
--enable_view_protocol
eval $CHILD2_1_SELECT_TABLES;
--enable_view_protocol
--enable_ps_protocol
--echo

View File

@@ -847,52 +847,6 @@ if ($USE_CHILD_GROUP2)
}
}
--echo
--echo select sql_calc_found_rows
if ($USE_CHILD_GROUP2)
{
if (!$OUTPUT_CHILD_GROUP2)
{
--disable_query_log
--disable_result_log
}
--connection child2_1
if ($USE_GENERAL_LOG)
{
TRUNCATE TABLE mysql.general_log;
}
if (!$OUTPUT_CHILD_GROUP2)
{
--enable_query_log
--enable_result_log
}
}
--connection master_1
SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
ORDER BY a LIMIT 4;
if ($USE_CHILD_GROUP2)
{
if (!$OUTPUT_CHILD_GROUP2)
{
--disable_query_log
--disable_result_log
}
--connection child2_1
if ($USE_GENERAL_LOG)
{
SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
}
if (!$OUTPUT_CHILD_GROUP2)
{
--enable_query_log
--enable_result_log
}
}
--connection master_1
--disable_ps2_protocol
SELECT found_rows();
--enable_ps2_protocol
--echo
--echo select high_priority
if ($USE_CHILD_GROUP2)

View File

@@ -9329,6 +9329,7 @@ error:
DBUG_RETURN(error_num);
}
PRAGMA_DISABLE_CHECK_STACK_FRAME
bool spider_db_conn_is_network_error(
int error_num
) {
@@ -9345,3 +9346,4 @@ bool spider_db_conn_is_network_error(
}
DBUG_RETURN(FALSE);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME

View File

@@ -8897,12 +8897,13 @@ int spider_mbase_handler::append_key_select_part(
default:
DBUG_RETURN(0);
}
error_num = append_key_select(str, idx);
error_num = append_key_select(str, sql_type, idx);
DBUG_RETURN(error_num);
}
int spider_mbase_handler::append_key_select(
spider_string *str,
ulong sql_type,
uint idx
) {
st_select_lex *select_lex = NULL;
@@ -8951,6 +8952,7 @@ int spider_mbase_handler::append_key_select(
str->q_append(SPIDER_SQL_COMMA_STR, SPIDER_SQL_COMMA_LEN);
}
str->length(str->length() - SPIDER_SQL_COMMA_LEN);
DBUG_RETURN(append_from(str, sql_type, first_link_idx));
} else {
table_name_pos = str->length() + mysql_share->key_select_pos[idx];
if (str->append(mysql_share->key_select[idx]))

View File

@@ -877,6 +877,7 @@ public:
) override;
int append_key_select(
spider_string *str,
ulong sql_type,
uint idx
);
int append_minimum_select_part(

View File

@@ -24,7 +24,7 @@
#include "m_ctype.h"
#include "ctype-uca.h"
PRAGMA_DISABLE_CHECK_STACK_FRAME
#define MAX_ALLOWED_CODE 0x10FFFF
@@ -398,7 +398,7 @@ static const char *pname_prefix[]= {"_p", "_p", "_p"};
static const char *pname_suffix[]= {"", "_secondary", "_tertiary"};
void usage(const char *prog)
static void usage(const char *prog)
{
printf("Usage:\n");
printf("%s [options] filename\n", prog);
@@ -411,7 +411,7 @@ static inline int lstrncmp(const char *str, const LEX_CSTRING lstr)
}
int process_option(OPT *options, const char *opt)
static int process_option(OPT *options, const char *opt)
{
static const LEX_CSTRING opt_name_prefix= {STRING_WITH_LEN("--name-prefix=")};
static const LEX_CSTRING opt_levels= {STRING_WITH_LEN("--levels=")};
@@ -458,7 +458,7 @@ int process_option(OPT *options, const char *opt)
}
int process_options(OPT *options, int ac, char **av)
static int process_options(OPT *options, int ac, char **av)
{
int i;
for (i= 1; i < ac; i++)
@@ -484,7 +484,7 @@ int process_options(OPT *options, int ac, char **av)
}
FILE *open_file(const char *name)
static FILE *open_file(const char *name)
{
if (!strcmp(name, "-"))
return stdin;
@@ -492,14 +492,14 @@ FILE *open_file(const char *name)
}
void close_file(FILE *file)
static void close_file(FILE *file)
{
if (file != stdin)
fclose(file);
}
char *strrtrim(char *str)
static char *strrtrim(char *str)
{
char *end= str + strlen(str);
for ( ; str < end; end--)
@@ -524,7 +524,7 @@ char *strrtrim(char *str)
of them at the moment, it was easier to write these routines in ctype-uca.h
manually. So @implicitweights lines are ignored here.
*/
my_bool parse_at_line(MY_DUCET *ducet, const char *str)
static my_bool parse_at_line(MY_DUCET *ducet, const char *str)
{
static const LEX_CSTRING version= {STRING_WITH_LEN("@version ")};
if (!lstrncmp(str, version))
@@ -994,3 +994,4 @@ int main(int ac, char **av)
return 0;
}
PRAGMA_REENABLE_CHECK_STACK_FRAME