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

Merge 10.6 into 10.11

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

1
.gitignore vendored
View File

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

View File

@@ -898,6 +898,9 @@ static int disable_binlog()
} }
/* Ok as mysqlcheck is not multi threaded */
PRAGMA_DISABLE_CHECK_STACK_FRAME
static int handle_request_for_tables(char *tables, size_t length, static int handle_request_for_tables(char *tables, size_t length,
my_bool view, my_bool dont_quote) 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); insert_dynamic(arr, (uchar*) buf);
} }
/* Ok as mysqlcheck is not multi threaded */
PRAGMA_DISABLE_CHECK_STACK_FRAME
static void __attribute__((noinline)) print_result() static void __attribute__((noinline)) print_result()
{ {
MYSQL_RES *res; MYSQL_RES *res;

View File

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

View File

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

View File

@@ -209,7 +209,10 @@ xb_fil_cur_open(
cursor->buf_size = XB_FIL_CUR_PAGES * cursor->page_size; cursor->buf_size = XB_FIL_CUR_PAGES * cursor->page_size;
cursor->buf = static_cast<byte*>(aligned_malloc(cursor->buf_size, cursor->buf = static_cast<byte*>(aligned_malloc(cursor->buf_size,
srv_page_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_read = 0;
cursor->buf_npages = 0; cursor->buf_npages = 0;
cursor->buf_offset = 0; cursor->buf_offset = 0;
@@ -237,15 +240,10 @@ xb_fil_cur_open(
return(XB_FIL_CUR_SUCCESS); 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, static bool page_is_corrupted(const byte *page, ulint page_no,
const xb_fil_cur_t *cursor, const xb_fil_cur_t *cursor,
const fil_space_t *space) 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; const ulint page_size = cursor->page_size;
uint16_t page_type = fil_page_get_type(page); 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) && !opt_extended_validation)
return false; return false;
memcpy(tmp_page, page, page_size); memcpy(cursor->tmp_page, page, page_size);
if (!space->crypt_data if (!space->crypt_data
|| space->crypt_data->type == CRYPT_SCHEME_UNENCRYPTED || 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; return true;
} }
if (page_type != FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { 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); space->flags);
} }
} }
if (page_type == FIL_PAGE_PAGE_COMPRESSED) { 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 if (page_type == FIL_PAGE_PAGE_COMPRESSED
|| page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { || 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); space->flags);
page_type = fil_page_get_type(tmp_page); page_type = fil_page_get_type(cursor->tmp_page);
return (!decomp return (!decomp
|| (decomp != srv_page_size || (decomp != srv_page_size
&& cursor->zip_size) && cursor->zip_size)
|| page_type == FIL_PAGE_PAGE_COMPRESSED || page_type == FIL_PAGE_PAGE_COMPRESSED
|| page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED || page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED
|| buf_page_is_corrupted(false, tmp_page, || buf_page_is_corrupted(false, cursor->tmp_page,
space->flags)); space->flags));
} }
return buf_page_is_corrupted(false, 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 /** Reads and verifies the next block of pages from the source
file. Positions the cursor after the last read non-corrupted page. 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 */ xb_fil_cur_t *cursor) /*!< in/out: source file cursor */
{ {
aligned_free(cursor->buf); aligned_free(cursor->buf);
aligned_free(cursor->tmp_page);
aligned_free(cursor->tmp_frame);
cursor->buf = NULL; cursor->buf = NULL;
cursor->tmp_page = NULL;
cursor->tmp_frame = NULL;
if (cursor->node != NULL) { if (cursor->node != NULL) {
xb_fil_node_close_file(cursor->node); xb_fil_node_close_file(cursor->node);

View File

@@ -46,7 +46,9 @@ struct xb_fil_cur_t {
xb_read_filt_t* read_filter; /*!< read filter */ xb_read_filt_t* read_filter; /*!< read filter */
xb_read_filt_ctxt_t read_filter_ctxt; xb_read_filt_ctxt_t read_filter_ctxt;
/*!< read filter context */ /*!< 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_size; /*!< buffer size in bytes */
size_t buf_read; /*!< number of read bytes in buffer size_t buf_read; /*!< number of read bytes in buffer
after the last cursor read */ after the last cursor read */

View File

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

View File

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

View File

@@ -453,5 +453,56 @@ SELECT * FROM t1 WHERE f LIKE '2023%';
f f
DROP TABLE t1; 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 # End of 10.6 tests
# #

View File

@@ -306,6 +306,26 @@ ANALYZE TABLE t1 PERSISTENT FOR ALL;
SELECT * FROM t1 WHERE f LIKE '2023%'; SELECT * FROM t1 WHERE f LIKE '2023%';
DROP TABLE t1; 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 #
--echo # End of 10.6 tests --echo # End of 10.6 tests
--echo # --echo #

View File

@@ -16,6 +16,10 @@ The following specify which files/extra groups are read (specified before remain
--alter-algorithm[=name] --alter-algorithm[=name]
Specify the alter table algorithm. One of: DEFAULT, COPY, Specify the alter table algorithm. One of: DEFAULT, COPY,
INPLACE, NOCOPY, INSTANT 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=# --analyze-sample-percentage=#
Percentage of rows from the table ANALYZE TABLE will Percentage of rows from the table ANALYZE TABLE will
sample to collect table statistics. Set to 0 to let sample to collect table statistics. Set to 0 to let

View File

@@ -20,7 +20,7 @@ exec $MYSQLD_BOOTSTRAP_CMD --symbolic-links=0 --log-bin=foo --lower-case-table-n
perl; perl;
# Variables which we don't want to display in the result file since # 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 @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-queries pid-file slow-query-log-file log-basename
log-slow-query-file log-slow-query-file
@@ -30,7 +30,7 @@ perl;
table-open-cache table-open-cache-instances max-connections table-open-cache table-open-cache-instances max-connections
server-uid tls-version version.* password-reuse-check server-uid tls-version version.* password-reuse-check
provider-bzip2 provider-lzma provider-lzo 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 which may or may not be there:
@plugins=qw/innodb archive blackhole federated partition s3 @plugins=qw/innodb archive blackhole federated partition s3

View File

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

View File

@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY----- -----BEGIN PRIVATE KEY-----
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
dlGTbkmR0Wm43Kh++dWICJ3g qkpHixGjosFWeZn9IGyu0g==
-----END PRIVATE KEY----- -----END PRIVATE KEY-----

View File

@@ -1,40 +1,32 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE----- XKdj8vKLmXYl/adm467ECLwGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
-----BEGIN CERTIFICATE----- BQADggIBACm8QeUNhuAbwsOA7uImSFyatA7+kSC0heVQyV0B2AC4smca3yQQfnF7
MIIDVzCCAj+gAwIBAgIJALBO5bqmtlYkMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV ttnloEfOQJ/HEKUw67jFPLjf+ZdrV4WGJJFlUpUcOgTBgtPze3Cc8JdJTAsA12cz
BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg rxCKNf7d9Ob1xzXsGmWG0fjPqJpFMDTDdJcuWBdKOjKg8qP3L3anfQBPiVzc6Wyz
Q29tcGFueSBMdGQwHhcNMTUwNjI2MDcxMjQ1WhcNMjUwNTA0MDcxMjQ1WjBCMQsw IIs7LUQRAYtN05JE8jzDecNKZIbDbGQ3qb4uqyfQOebaP4g63osNMugBPRQpcgLk
CQYDVQQGEwJGSTEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZh o2F0q3iC1GnJD8RCl1P0IpLHtVIC8GbamL0WVD5XWYk6esGHpqzeWZGUl+GVUCJ+
dWx0IENvbXBhbnkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA QOlqnLD0UPnBo/o3d+lrzeRUeGVu+k8u3TeJZyzOyuh7ZPZtNQ7h1Rzxa5LD4tGX
1DlcztIzSngGeTUFibj9GZ4ZO78ASpgYySZv/DRIVn/3hbF41ZRD/6uJlb5rf1R7 SeFtyS8dYiVC27Vyu2LAFcbZUO3VTOpusXy3iq5jz7MzuTHaV8MiYPDuQ3xhrUo9
fpFsurbXNDDxeap7b/Gz2XSQy96Dbm0SbsFSZttV/R2WtlT1Wf5n9ix6RLqhKSbg kGWXKiTd+Vr1V6iBig7wWDSwMyFbbDzv3N86TpHjO2ynXNHXPg6VEDOP+zOcI7KO
nPyL2fsDaxtZh2uywGJEXhwXFtdx3deIo/tYivDfl5Tcsv0NnZY8Vg0boBRP+FEn cgQWqhR8Zr58Yo1tRI8ync9zeUF5cD1EnkP0QRelnmhR0IEPAIxW2YCIO4+jAZOE
ReJOdSa5LLn+QJN2Xa+wutbLHe0hI6huKUXU2YUeBfgyk1nWol5241ZUDCgDsoaW 5bKPyJwjWzfJR0U2fFi73qpXoMXubcrPFMdiYTMnRjwO+WVLNWCQbe6zE9xh/ZKx
8r2YeJNHmNInd3wERbqFgFHsR4N1+Atcyrfn/uQSj9zrTPO/Pp51KpjWf/gjxjXP JCYjqvyKIrbtrS4exkRkXDX+gknrdYcfSw/7i9DKkzfowKYVrTQd
biu5De50qZ4+U4no20EIOwIDAQABo1AwTjAdBgNVHQ4EFgQU3kSPGchrOoQJ5gq1
mmV2HEra6GswHwYDVR0jBBgwFoAU3kSPGchrOoQJ5gq1mmV2HEra6GswDAYDVR0T
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAfoBD64FJ9fAR19+vwueFGmpWNIqF
PzN7QmEpCMduV3DXuxYO73q2ikXgrVO5HWFz9IjNvzXbSRmWNzJGaZ3QYZ+Xx1JJ
8MrAOUr6djWuyD659f64dh/2jMxiQNoEHrknXm9HSqR5oJVwndFyr/zvSkYSRexE
KFciIprb9LOba9G3ZMBYBdqK+f3Ky16BMjaD6XfaTx+xjHk/8peSueXIQl+v2biz
zSfpEUa0dKCIxckrzD4JknDHFimTsrzlRftcg8t8piOXwZomFcnVunyGs2bJ/Npj
25c2e6sx7XSc5bUgPGuQcSGflZPLg9zWyJ69sVYUNAz+gqfvWfOOJuzPNg==
-----END CERTIFICATE----- -----END CERTIFICATE-----

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -20,6 +20,10 @@ source ../wsrep/include/check_galera_version.inc;
# create table t1 and procedure p1 to generate wirtesets # create table t1 and procedure p1 to generate wirtesets
--connection node_1 --connection node_1
--let $members = 4
--source include/wsrep_wait_membership.inc
CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY); CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY);
DELIMITER |; DELIMITER |;
@@ -39,11 +43,17 @@ DELIMITER ;|
CALL p1(130); CALL p1(130);
--connection node_4 --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... --echo Shutting down server 4...
--let $node_4_server_id= `SELECT @@server_id` --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_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$node_4_server_id.expect
--let $node_4_pid_file= `SELECT @@pid_file` --let $node_4_pid_file= `SELECT @@pid_file`
--source include/shutdown_mysqld.inc --source include/shutdown_mysqld.inc
--source include/wait_until_disconnected.inc
# Wait for node #4 to leave cluster # Wait for node #4 to leave cluster
--let $members = 3 --let $members = 3
@@ -65,16 +75,23 @@ CALL p1(130);
SET SESSION wsrep_on = OFF; SET SESSION wsrep_on = OFF;
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY); CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
SET SESSION wsrep_on = ON; SET SESSION wsrep_on = ON;
--source include/wait_until_ready.inc
--connection node_2 --connection node_2
--let $wait_condition = SELECT COUNT(*) = 260 FROM t1;
--source include/wait_condition.inc
SET SESSION wsrep_on = OFF; SET SESSION wsrep_on = OFF;
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY); CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
SET SESSION wsrep_on = ON; SET SESSION wsrep_on = ON;
--source include/wait_until_ready.inc
--connection node_3 --connection node_3
--let $wait_condition = SELECT COUNT(*) = 260 FROM t1;
--source include/wait_condition.inc
SET SESSION wsrep_on = OFF; SET SESSION wsrep_on = OFF;
CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY); CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY);
SET SESSION wsrep_on = ON; SET SESSION wsrep_on = ON;
--source include/wait_until_ready.inc
# This should cause error during IST # This should cause error during IST
INSERT INTO t2 VALUES (DEFAULT); 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 # make sure nodes 1,2,3 progress far enough for commit cut update
CALL p1(130); 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 --connection node_1
# prepare to stop SST donor thread when it receives a request from starting node #4 # 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"; 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 SESSION DEBUG_SYNC = "now SIGNAL signal.wsrep_sst_donor_after_donation_continue";
SET GLOBAL debug = ""; SET GLOBAL debug = "";
SET DEBUG_SYNC='RESET'; SET DEBUG_SYNC='RESET';
# #
# After this point node #4 shall proceed to IST and bail out # After this point node #4 shall proceed to IST and bail out
# #
--echo Waiting for server 4 to leave the cluster --echo Waiting for server 4 to leave the cluster
--let $members = 3 --let $members = 3
--source include/wsrep_wait_membership.inc
--connection node_2 --connection node_2
--source include/wsrep_wait_membership.inc --source include/wsrep_wait_membership.inc
--connection node_3 --connection node_3
@@ -124,14 +146,27 @@ SET DEBUG_SYNC='RESET';
EOF EOF
--echo Killed server 4... --echo Killed server 4...
--source include/wait_until_disconnected.inc --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... --echo Restarting server 4...
--source include/start_mysqld.inc --source include/start_mysqld.inc
--source include/galera_wait_ready.inc --source include/galera_wait_ready.inc
# Confirm node #4 has rejoined # Confirm node #4 has rejoined
--connection node_1 --connection node_1
--let $members = 4 --let $members = 4
--source include/wsrep_wait_membership.inc --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 # 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; SELECT count(*) AS expect3_1 FROM t2;
--connection node_4 --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_390 FROM t1;
SELECT count(*) AS expect4_1 FROM t2; SELECT count(*) AS expect4_1 FROM t2;

View File

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

View File

@@ -50,7 +50,7 @@ SELECT COUNT(*) = 1 FROM t1;
# Restart node with SSL enabled # Restart node with SSL enabled
--source include/shutdown_mysqld.inc --source include/shutdown_mysqld.inc
--let $restart_noprint = 1 --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/start_mysqld.inc
--source include/galera_wait_ready.inc --source include/galera_wait_ready.inc

View File

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

View File

@@ -32,6 +32,16 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT
READ_ONLY NO READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL 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_NAME ANALYZE_SAMPLE_PERCENTAGE
VARIABLE_SCOPE SESSION VARIABLE_SCOPE SESSION
VARIABLE_TYPE DOUBLE VARIABLE_TYPE DOUBLE

View File

@@ -32,6 +32,16 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT
READ_ONLY NO READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL 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_NAME ANALYZE_SAMPLE_PERCENTAGE
VARIABLE_SCOPE SESSION VARIABLE_SCOPE SESSION
VARIABLE_TYPE DOUBLE VARIABLE_TYPE DOUBLE

View File

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

View File

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

View File

@@ -51,6 +51,7 @@ TYPELIB backup_stage_names=
static MDL_ticket *backup_flush_ticket; static MDL_ticket *backup_flush_ticket;
static File volatile backup_log= -1; static File volatile backup_log= -1;
static int backup_log_error= 0; static int backup_log_error= 0;
static backup_stages backup_stage;
static bool backup_start(THD *thd); static bool backup_start(THD *thd);
static bool backup_flush(THD *thd); static bool backup_flush(THD *thd);
@@ -68,6 +69,7 @@ void backup_init()
backup_flush_ticket= 0; backup_flush_ticket= 0;
backup_log= -1; backup_log= -1;
backup_log_error= 0; backup_log_error= 0;
backup_stage= BACKUP_FINISHED;
} }
bool run_backup_stage(THD *thd, backup_stages stage) 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]); my_error(ER_BACKUP_STAGE_FAILED, MYF(0), stage_names[(uint) stage]);
DBUG_RETURN(1); DBUG_RETURN(1);
} }
backup_stage= next_stage;
next_stage= (backup_stages) ((uint) next_stage + 1); next_stage= (backup_stages) ((uint) next_stage + 1);
} while ((uint) next_stage <= (uint) stage); } while ((uint) next_stage <= (uint) stage);
@@ -174,6 +177,7 @@ static bool backup_start(THD *thd)
/* this will be reset if this stage fails */ /* this will be reset if this stage fails */
thd->current_backup_stage= BACKUP_START; 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 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 // This is needed as we may call backup_end without backup_block_commit
stop_ddl_logging(); stop_ddl_logging();
backup_flush_ticket= 0; backup_flush_ticket= 0;
backup_stage= BACKUP_FINISHED;
thd->current_backup_stage= BACKUP_FINISHED; thd->current_backup_stage= BACKUP_FINISHED;
thd->mdl_context.release_lock(old_ticket); thd->mdl_context.release_lock(old_ticket);
#ifdef WITH_WSREP #ifdef WITH_WSREP
@@ -513,7 +518,7 @@ bool backup_reset_alter_copy_lock(THD *thd)
bool res= 0; bool res= 0;
MDL_ticket *ticket= thd->mdl_backup_ticket; 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) if (ticket)
res= thd->mdl_context.upgrade_shared_lock(ticket, MDL_BACKUP_DDL, res= thd->mdl_context.upgrade_shared_lock(ticket, MDL_BACKUP_DDL,
thd->variables.lock_wait_timeout); 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) 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) if (backup_log >= 0 && backup_log_error == 0)
{ {
mysql_mutex_lock(&LOCK_backup_log); mysql_mutex_lock(&LOCK_backup_log);

View File

@@ -2030,13 +2030,24 @@ class Grant_tables
{ {
DBUG_ENTER("Grant_tables::open_and_lock"); 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)) if (build_table_list(thd, &first, which_tables, lock_type, tables))
DBUG_RETURN(-1); {
func_exit:
my_free(tables);
DBUG_RETURN(res);
}
uint counter; 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 User_table_json wasn't found, let's try User_table_tabular */
if (!res && (which_tables & Table_user) && !tables[USER_TABLE].table) if (!res && (which_tables & Table_user) && !tables[USER_TABLE].table)
@@ -2062,12 +2073,15 @@ class Grant_tables
} }
} }
if (res) if (res)
DBUG_RETURN(res); goto func_exit;
if (lock_tables(thd, first, counter, if (lock_tables(thd, first, counter,
MYSQL_LOCK_IGNORE_TIMEOUT | MYSQL_LOCK_IGNORE_TIMEOUT |
MYSQL_OPEN_IGNORE_LOGGING_FORMAT)) MYSQL_OPEN_IGNORE_LOGGING_FORMAT))
DBUG_RETURN(-1); {
res= -1;
goto func_exit;
}
p_user_table->set_table(tables[USER_TABLE].table); p_user_table->set_table(tables[USER_TABLE].table);
m_db_table.set_table(tables[DB_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_procs_priv_table.set_table(tables[PROCS_PRIV_TABLE].table);
m_proxies_priv_table.set_table(tables[PROXIES_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); m_roles_mapping_table.set_table(tables[ROLES_MAPPING_TABLE].table);
DBUG_RETURN(0); goto func_exit;
} }
inline const User_table& user_table() const inline const User_table& user_table() const

View File

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

View File

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

View File

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

View File

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

View File

@@ -264,6 +264,7 @@ index_stat_def= {INDEX_STAT_N_FIELDS, index_stat_fields, 4, index_stat_pk_col};
Open all statistical tables and lock them Open all statistical tables and lock them
*/ */
ATTRIBUTE_NOINLINE
static int open_stat_tables(THD *thd, TABLE_LIST *tables, bool for_write) static int open_stat_tables(THD *thd, TABLE_LIST *tables, bool for_write)
{ {
int rc; 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. 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) int update_statistics_for_table(THD *thd, TABLE *table)
{ {
TABLE_LIST tables[STATISTICS_TABLES]; 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(); 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 */ /* Update the statistical table table_stats */
stat_table= tables[TABLE_STAT].table; 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); restore_record(stat_table, s->default_values);
table_stat.set_key_fields(); table_stat.set_key_fields();
err= table_stat.update_stat(); err= table_stat.update_stat();
@@ -2944,7 +2946,7 @@ int update_statistics_for_table(THD *thd, TABLE *table)
/* Update the statistical table colum_stats */ /* Update the statistical table colum_stats */
stat_table= tables[COLUMN_STAT].table; 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++) for (Field **field_ptr= table->field; *field_ptr; field_ptr++)
{ {
Field *table_field= *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; stat_table= tables[INDEX_STAT].table;
uint key; uint key;
key_map::Iterator it(table->keys_in_use_for_query); 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) 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(); new_trans.restore_old_transaction();
DBUG_RETURN(rc); 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 */ /* Read statistics from the statistical table table_stats */
Table_statistics *read_stats= new_stats_cb->table_stats; Table_statistics *read_stats= new_stats_cb->table_stats;
stat_table= stat_tables[TABLE_STAT].table; 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(); table_stat.set_key_fields();
if (table_stat.get_stat_values(new_stats_cb->table_stats)) if (table_stat.get_stat_values(new_stats_cb->table_stats))
new_stats_cb->stats_available|= TABLE_STAT_TABLE; new_stats_cb->stats_available|= TABLE_STAT_TABLE;
/* Read statistics from the statistical table column_stats */ /* Read statistics from the statistical table column_stats */
stat_table= stat_tables[COLUMN_STAT].table; 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; Column_statistics *column_statistics= new_stats_cb->table_stats->column_stats;
for (field_ptr= table_share->field; for (field_ptr= table_share->field;
*field_ptr; *field_ptr;
@@ -3102,7 +3106,7 @@ read_statistics_for_table(THD *thd, TABLE *table,
/* Read statistics from the statistical table index_stats */ /* Read statistics from the statistical table index_stats */
stat_table= stat_tables[INDEX_STAT].table; 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; Index_statistics *index_statistics= new_stats_cb->table_stats->index_stats;
for (key_info= table_share->key_info, for (key_info= table_share->key_info,
key_info_end= key_info + table_share->keys; key_info_end= key_info + table_share->keys;
@@ -3397,9 +3401,6 @@ end:
The function is called when executing the statement DROP TABLE 'tab'. 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, int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db,
const LEX_CSTRING *tab) 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 */ /* Delete statistics on table from the statistical table index_stats */
stat_table= tables[INDEX_STAT].table; 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(); index_stat.set_full_table_name();
while (index_stat.find_next_stat_for_prefix(2)) 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 */ /* Delete statistics on table from the statistical table column_stats */
stat_table= tables[COLUMN_STAT].table; 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(); column_stat.set_full_table_name();
while (column_stat.find_next_stat_for_prefix(2)) 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 */ /* Delete statistics on table from the statistical table table_stats */
stat_table= tables[TABLE_STAT].table; 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(); table_stat.set_key_fields();
if (table_stat.find_stat()) 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(); new_trans.restore_old_transaction();
DBUG_RETURN(rc); 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; int rc= 0;
uint duplicate_counter= 0; uint duplicate_counter= 0;
List_iterator<Alter_info::RENAME_INDEX_STAT_PARAMS> it(*indexes); List_iterator<Alter_info::RENAME_INDEX_STAT_PARAMS> it(*indexes);
Alter_info::RENAME_INDEX_STAT_PARAMS *index;
char tmp_name_buffer[32]; char tmp_name_buffer[32];
LEX_CSTRING tmp_name= {tmp_name_buffer, 0}; LEX_CSTRING tmp_name= {tmp_name_buffer, 0};
DBUG_ENTER("rename_indexes_in_stat_tables"); 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 */ /* Rename index in the statistical table index_stat */
stat_table= tables.table; stat_table= tables.table;
char statbuf[sizeof(Index_stat)];
/* /*
Loop over all indexes and rename to new name or temp name in case of Loop over all indexes and rename to new name or temp name in case of
conflicts 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; uint found= 0;
/* We have to make a loop as one index may have many entries */ /* 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. the final name.
*/ */
Alter_info::RENAME_INDEX_STAT_PARAMS *index;
it.rewind(); 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); 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)); 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 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, int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db,
const LEX_CSTRING *tab, const LEX_CSTRING *tab,
const LEX_CSTRING *new_db, 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 */ /* Rename table in the statistical table index_stats */
stat_table= tables[INDEX_STAT].table; stat_table= tables[INDEX_STAT].table;
Index_stat index_stat(stat_table, db, tab); char statbuf[sizeof(Index_stat)];
index_stat.set_full_table_name(); 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)) if (index_iter.init(2))
rc= 1; rc= 1;
while (!index_iter.get_next_row()) 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 */ /* Rename table in the statistical table column_stats */
stat_table= tables[COLUMN_STAT].table; 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(); 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)) if (column_iter.init(2))
rc= 1; rc= 1;
while (!column_iter.get_next_row()) 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 */ /* Rename table in the statistical table table_stats */
stat_table= tables[TABLE_STAT].table; 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(); table_stat.set_key_fields();
if (table_stat.find_stat()) 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(); new_trans.restore_old_transaction();
DBUG_RETURN(rc); DBUG_RETURN(rc);
} }
PRAGMA_REENABLE_CHECK_STACK_FRAME
/** /**

View File

@@ -8011,7 +8011,7 @@ static bool mysql_inplace_alter_table(THD *thd,
if (table->file->ha_prepare_inplace_alter_table(altered_table, if (table->file->ha_prepare_inplace_alter_table(altered_table,
ha_alter_info)) ha_alter_info))
goto rollback; goto rollback_no_restore_lock;
debug_crash_here("ddl_log_alter_after_prepare_inplace"); 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); res= table->file->ha_inplace_alter_table(altered_table, ha_alter_info);
thd->abort_on_warning= false; thd->abort_on_warning= false;
if (start_alter_id && wait_for_master(thd)) if (res || (start_alter_id && wait_for_master(thd)))
goto rollback; goto rollback_no_restore_lock;
if (res)
goto rollback;
DEBUG_SYNC(thd, "alter_table_inplace_before_lock_upgrade"); DEBUG_SYNC(thd, "alter_table_inplace_before_lock_upgrade");
// Upgrade to EXCLUSIVE before commit. // Upgrade to EXCLUSIVE before commit.
if (wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_RENAME)) if (wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_RENAME))
goto rollback; goto rollback_no_restore_lock;
/* Set MDL_BACKUP_DDL */ /* Set MDL_BACKUP_DDL */
if (backup_reset_alter_copy_lock(thd)) if (backup_reset_alter_copy_lock(thd))
goto rollback; goto rollback_no_restore_lock;
/* Crashing here should cause the original table to be used */ /* Crashing here should cause the original table to be used */
debug_crash_here("ddl_log_alter_after_copy"); 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 & if (!(table->file->partition_ht()->flags &
HTON_REQUIRES_NOTIFY_TABLEDEF_CHANGED_AFTER_COMMIT) && HTON_REQUIRES_NOTIFY_TABLEDEF_CHANGED_AFTER_COMMIT) &&
notify_tabledef_changed(table_list)) notify_tabledef_changed(table_list))
goto rollback; goto rollback_restore_lock;
{ {
TR_table trt(thd, true); TR_table trt(thd, true);
@@ -8123,17 +8119,17 @@ static bool mysql_inplace_alter_table(THD *thd,
if (!TR_table::use_transaction_registry) if (!TR_table::use_transaction_registry)
{ {
my_error(ER_VERS_TRT_IS_DISABLED, MYF(0)); my_error(ER_VERS_TRT_IS_DISABLED, MYF(0));
goto rollback; goto rollback_restore_lock;
} }
if (trt.update(trx_start_id, trx_end_id)) 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, if (table->file->ha_commit_inplace_alter_table(altered_table,
ha_alter_info, ha_alter_info,
true)) true))
goto rollback; goto rollback_restore_lock;
DEBUG_SYNC(thd, "alter_table_inplace_after_commit"); 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); 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, table->file->ha_commit_inplace_alter_table(altered_table,
ha_alter_info, ha_alter_info,
false); 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))) if (unlikely(mysql_trans_commit_alter_copy_data(thd)))
error= 1; error= 1;
err: end:
if (bulk_insert_started) if (bulk_insert_started)
(void) to->file->ha_end_bulk_insert(); (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; error= 1;
thd_progress_end(thd); thd_progress_end(thd);
DBUG_RETURN(error > 0 ? -1 : 0); DBUG_RETURN(error > 0 ? -1 : 0);
err:
backup_reset_alter_copy_lock(thd);
goto end;
} }

View File

@@ -445,6 +445,19 @@ static Sys_var_double Sys_analyze_sample_percentage(
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 100), CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 100),
DEFAULT(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( static Sys_var_ulong Sys_auto_increment_increment(
"auto_increment_increment", "auto_increment_increment",
"Auto-increment columns are incremented by this", "Auto-increment columns are incremented by this",

View File

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

View File

@@ -715,6 +715,10 @@ static void stop_timer(pool_timer_t *timer)
@return a ready connection, or NULL on shutdown @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, static TP_connection_generic * listener(worker_thread_t *current_thread,
thread_group_t *thread_group) thread_group_t *thread_group)
{ {
@@ -830,6 +834,7 @@ static TP_connection_generic * listener(worker_thread_t *current_thread,
DBUG_RETURN(retval); DBUG_RETURN(retval);
} }
PRAGMA_REENABLE_CHECK_STACK_FRAME
/** /**
Adjust thread counters in group or global 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. 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, TP_connection_generic *get_event(worker_thread_t *current_thread,
thread_group_t *thread_group, struct timespec *abstime) 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); DBUG_RETURN(connection);
} }
PRAGMA_REENABLE_CHECK_STACK_FRAME

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -49,6 +49,14 @@ if(MSVC)
message(FATAL_ERROR ${MRN_OLD_MSVC_MESSAGE}) message(FATAL_ERROR ${MRN_OLD_MSVC_MESSAGE})
endif() endif()
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() endif()
if(MRN_BUNDLED) if(MRN_BUNDLED)

View File

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

View File

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

View File

@@ -9,6 +9,13 @@ SET(CPACK_RPM_rocksdb-engine_PACKAGE_SUMMARY "RocksDB storage engine for MariaDB
SET(CPACK_RPM_rocksdb-engine_PACKAGE_DESCRIPTION "The RocksDB storage engine is a high performance storage engine, aimed 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) 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-range-loop-construct)
MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-effc++ DEBUG RELWITHDEBINFO) MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-effc++ DEBUG RELWITHDEBINFO)

View File

@@ -232,20 +232,6 @@ a b date_format(c, '%Y-%m-%d %H:%i:%s')
4 i 2003-10-30 05:01:03 4 i 2003-10-30 05:01:03
5 h 2001-10-31 23:59:59 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 select high_priority
connection master_1; connection master_1;
SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l

View File

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

View File

@@ -43,8 +43,6 @@ let $CHILD2_1_CREATE_TABLES=
PRIMARY KEY(a,b) PRIMARY KEY(a,b)
) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES --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= let $CHILD2_1_SELECT_TABLES=
SELECT a, b, c FROM ta_r2 ORDER BY a $STR_SEMICOLON SELECT a, b, c FROM ta_r2 ORDER BY a $STR_SEMICOLON
SELECT a, b, c FROM ta_r3 ORDER BY a; SELECT a, b, c FROM ta_r3 ORDER BY a;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -232,20 +232,6 @@ a b date_format(c, '%Y-%m-%d %H:%i:%s')
4 i 2003-10-30 05:01:03 4 i 2003-10-30 05:01:03
5 h 2001-10-31 23:59:59 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 select high_priority
connection master_1; connection master_1;
SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -24,7 +24,7 @@
#include "m_ctype.h" #include "m_ctype.h"
#include "ctype-uca.h" #include "ctype-uca.h"
PRAGMA_DISABLE_CHECK_STACK_FRAME
#define MAX_ALLOWED_CODE 0x10FFFF #define MAX_ALLOWED_CODE 0x10FFFF
@@ -398,7 +398,7 @@ static const char *pname_prefix[]= {"_p", "_p", "_p"};
static const char *pname_suffix[]= {"", "_secondary", "_tertiary"}; static const char *pname_suffix[]= {"", "_secondary", "_tertiary"};
void usage(const char *prog) static void usage(const char *prog)
{ {
printf("Usage:\n"); printf("Usage:\n");
printf("%s [options] filename\n", prog); 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_name_prefix= {STRING_WITH_LEN("--name-prefix=")};
static const LEX_CSTRING opt_levels= {STRING_WITH_LEN("--levels=")}; 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; int i;
for (i= 1; i < ac; 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, "-")) if (!strcmp(name, "-"))
return stdin; 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) if (file != stdin)
fclose(file); fclose(file);
} }
char *strrtrim(char *str) static char *strrtrim(char *str)
{ {
char *end= str + strlen(str); char *end= str + strlen(str);
for ( ; str < end; end--) 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 of them at the moment, it was easier to write these routines in ctype-uca.h
manually. So @implicitweights lines are ignored here. 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 ")}; static const LEX_CSTRING version= {STRING_WITH_LEN("@version ")};
if (!lstrncmp(str, version)) if (!lstrncmp(str, version))
@@ -994,3 +994,4 @@ int main(int ac, char **av)
return 0; return 0;
} }
PRAGMA_REENABLE_CHECK_STACK_FRAME