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:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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 */
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
#
|
||||
|
@@ -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 #
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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-----
|
||||
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
|
||||
o18hkFmO5rEKvjLPbU5+Vj2HEw8=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN DH PARAMETERS-----
|
||||
MIGHAoGBAJWyvKjE+s7OP4Lj1jXKGlJGWT4Vd5YaxPljihTsRe1aXkWAgsuwISXk
|
||||
/TQ8Rx5Zmze7rtwtU0PoYxvuam9FMXYqhw2dVe4qRdeSX78DSiL/YBkQzaxlfWVy
|
||||
RE9+9dzHbCtRVDlN7K1kA+mGWH4/r7NAu4Qm/003V0NTtMwQSqebAgEC
|
||||
-----END DH PARAMETERS-----
|
||||
|
||||
|
@@ -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-----
|
||||
|
@@ -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-----
|
||||
|
@@ -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-----
|
||||
MIIDVzCCAj+gAwIBAgIJALBO5bqmtlYkMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV
|
||||
BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
|
||||
Q29tcGFueSBMdGQwHhcNMTUwNjI2MDcxMjQ1WhcNMjUwNTA0MDcxMjQ1WjBCMQsw
|
||||
CQYDVQQGEwJGSTEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZh
|
||||
dWx0IENvbXBhbnkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||
1DlcztIzSngGeTUFibj9GZ4ZO78ASpgYySZv/DRIVn/3hbF41ZRD/6uJlb5rf1R7
|
||||
fpFsurbXNDDxeap7b/Gz2XSQy96Dbm0SbsFSZttV/R2WtlT1Wf5n9ix6RLqhKSbg
|
||||
nPyL2fsDaxtZh2uywGJEXhwXFtdx3deIo/tYivDfl5Tcsv0NnZY8Vg0boBRP+FEn
|
||||
ReJOdSa5LLn+QJN2Xa+wutbLHe0hI6huKUXU2YUeBfgyk1nWol5241ZUDCgDsoaW
|
||||
8r2YeJNHmNInd3wERbqFgFHsR4N1+Atcyrfn/uQSj9zrTPO/Pp51KpjWf/gjxjXP
|
||||
biu5De50qZ4+U4no20EIOwIDAQABo1AwTjAdBgNVHQ4EFgQU3kSPGchrOoQJ5gq1
|
||||
mmV2HEra6GswHwYDVR0jBBgwFoAU3kSPGchrOoQJ5gq1mmV2HEra6GswDAYDVR0T
|
||||
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAfoBD64FJ9fAR19+vwueFGmpWNIqF
|
||||
PzN7QmEpCMduV3DXuxYO73q2ikXgrVO5HWFz9IjNvzXbSRmWNzJGaZ3QYZ+Xx1JJ
|
||||
8MrAOUr6djWuyD659f64dh/2jMxiQNoEHrknXm9HSqR5oJVwndFyr/zvSkYSRexE
|
||||
KFciIprb9LOba9G3ZMBYBdqK+f3Ky16BMjaD6XfaTx+xjHk/8peSueXIQl+v2biz
|
||||
zSfpEUa0dKCIxckrzD4JknDHFimTsrzlRftcg8t8piOXwZomFcnVunyGs2bJ/Npj
|
||||
25c2e6sx7XSc5bUgPGuQcSGflZPLg9zWyJ69sVYUNAz+gqfvWfOOJuzPNg==
|
||||
MIID0DCCAbgCAhABMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNVBAYTAkZJMREwDwYD
|
||||
VQQIDAhIZWxzaW5raTERMA8GA1UEBwwISGVsc2lua2kxEDAOBgNVBAoMB01hcmlh
|
||||
REIxEjAQBgNVBAMMCUdhbGVyYSBDQTAgFw0yNTA1MjAwMTMyMzhaGA8yMTI1MDUy
|
||||
MDAxMzIzOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMkO6Z3r
|
||||
j41/eapVfy3AvpIQd0Z4MWM4ggGRkUzBSYUE0ygKSYCBHzw8AG+q4a3RRApyKoI5
|
||||
chJePQ6+Q/gRmGrLNaj1BeEbsZ8U7lmdSjTMkg2bzyPbul5os94vNwRBx4SwYvtd
|
||||
erluDfj5giMkjA72NLeT/oL2/FZFRmdjsacYLSt6kJKcoMwRGGjxnSSld0DMw67f
|
||||
7ckcy+FmDAQ+kytPrTHBM2SkJ30n2kC7u9mh8bC8Q95SIngNIawg4GIVS2CkYHc0
|
||||
RHV2H1cAIxXdUSmyXnWZsHILSSExH1+kue/E8R5MDR9LLfFx+bHfP5wBfs1m7wfm
|
||||
55qV64a6RAWEQisCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAkGdkM3C9yBUQjYzz
|
||||
CUjIEo1YJbanpS9UTqOOTI3nu2AuHB0PwWJ400cYoMZVTGk4B+SGesY1870FG6Rn
|
||||
6tntcuU333+XL3ZO2Hrf3n81Fd7N4OPC4ZYVeT+IX9HxtPFBIfFqzZI9TBT8WxfQ
|
||||
7H0SiBh07Fwq0+d7xGlTUTdx0fgqcIDjt7UApt/Um9RlXuJTbphtdibNGc0I7IGL
|
||||
VFBTmwbzZYOpG5zw7RKIxQzyAtQ/CftD+R4TEgXE50fnnr/AanAXPvQpkneoG9kc
|
||||
POOuXciYpks9IqjNRo6LTrIMoz6e/pihLDYQ+bZj1K67qPPozS8OBqLp4UE/JYvs
|
||||
oWVW7NaYS7P80Y8hHlU9KBDDVTBUCpL1M37GaPt9s19aomVPJVOTOhFKI1smWY5d
|
||||
xVbJNfVVRfEM8LOYYj9C80QXgf1BgOVuRXYZ8DT2mhN2Xi4IZnHgXfiq+e9LHSO8
|
||||
x6fkCWHf5reaf9KMJfMm4jg2Gh4jqRBgCFkiUs9kR2igBDEz9xTsM4d28oTRNwf8
|
||||
GvojlCp+cvi7RRdJ11dGwapM0gTcgnszuUTu0rtMYPCTe2gZd2V7zmXSFi0LPQt9
|
||||
YpaGKcIBVyYCFWfLl1supmVguU9TzjpqNQZQ2Ru+W6AOCrRmQKVqQNE3/fkKYyK0
|
||||
CH1fGu3Lb3QXtqNWVCQ4j8Rqz0Y=
|
||||
-----END CERTIFICATE-----
|
||||
|
@@ -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-----
|
||||
|
@@ -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
|
||||
|
@@ -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'
|
||||
|
@@ -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'
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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'
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
120
scripts/print_ddl_recovery_log.pl.in
Executable file
120
scripts/print_ddl_recovery_log.pl.in
Executable 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;
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
/*
|
||||
|
@@ -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
|
||||
/*
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
||||
/**
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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",
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
||||
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
||||
/**
|
||||
|
@@ -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;
|
||||
|
@@ -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)
|
||||
|
@@ -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 (
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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.
|
||||
|
@@ -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));
|
||||
}
|
||||
|
@@ -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= ¤t_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
|
||||
|
||||
|
||||
/*
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
||||
|
||||
/*
|
||||
|
@@ -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 */
|
||||
|
@@ -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)
|
||||
|
7
storage/mroonga/vendor/groonga/lib/expr.c
vendored
7
storage/mroonga/vendor/groonga/lib/expr.c
vendored
@@ -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)
|
||||
|
@@ -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()
|
||||
{
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -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]))
|
||||
|
@@ -877,6 +877,7 @@ public:
|
||||
) override;
|
||||
int append_key_select(
|
||||
spider_string *str,
|
||||
ulong sql_type,
|
||||
uint idx
|
||||
);
|
||||
int append_minimum_select_part(
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user