diff --git a/.gitignore b/.gitignore index d89100c57f5..415f2b52077 100644 --- a/.gitignore +++ b/.gitignore @@ -134,6 +134,7 @@ scripts/mysqld_safe scripts/mysqldumpslow scripts/mysqlhotcopy scripts/mytop +scripts/print_ddl_recovery_log.pl scripts/wsrep_sst_backup scripts/wsrep_sst_common scripts/wsrep_sst_mysqldump diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index fc93c416619..268a50998ae 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -898,6 +898,9 @@ static int disable_binlog() } +/* Ok as mysqlcheck is not multi threaded */ +PRAGMA_DISABLE_CHECK_STACK_FRAME + static int handle_request_for_tables(char *tables, size_t length, my_bool view, my_bool dont_quote) { @@ -1029,9 +1032,6 @@ static void insert_table_name(DYNAMIC_ARRAY *arr, char *in, size_t dblen) insert_dynamic(arr, (uchar*) buf); } -/* Ok as mysqlcheck is not multi threaded */ -PRAGMA_DISABLE_CHECK_STACK_FRAME - static void __attribute__((noinline)) print_result() { MYSQL_RES *res; diff --git a/client/mysqlslap.c b/client/mysqlslap.c index 7c9e1104901..a0aef21e520 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -430,6 +430,8 @@ int main(int argc, char **argv) return 0; } +PRAGMA_DISABLE_CHECK_STACK_FRAME + void concurrency_loop(MYSQL *mysql, uint current, option_string *eptr) { unsigned int x; @@ -525,6 +527,7 @@ void concurrency_loop(MYSQL *mysql, uint current, option_string *eptr) my_free(head_sptr); } +PRAGMA_REENABLE_CHECK_STACK_FRAME static struct my_option my_long_options[] = @@ -2297,6 +2300,7 @@ statement_cleanup(statement *stmt) } } +PRAGMA_DISABLE_CHECK_STACK_FRAME int slap_connect(MYSQL *mysql) @@ -2330,3 +2334,4 @@ slap_connect(MYSQL *mysql) return 0; } +PRAGMA_REENABLE_CHECK_STACK_FRAME diff --git a/cmake/maintainer.cmake b/cmake/maintainer.cmake index 6ff626532a3..25c50d82fa1 100644 --- a/cmake/maintainer.cmake +++ b/cmake/maintainer.cmake @@ -41,6 +41,7 @@ SET(MY_WARNING_FLAGS -Wvla -Wwrite-strings -Wcast-function-type-strict + -Wframe-larger-than=16384 ) # Warning flags that are in testing before moving diff --git a/extra/mariabackup/fil_cur.cc b/extra/mariabackup/fil_cur.cc index ad48ad9e17c..7eaec010c68 100644 --- a/extra/mariabackup/fil_cur.cc +++ b/extra/mariabackup/fil_cur.cc @@ -209,7 +209,10 @@ xb_fil_cur_open( cursor->buf_size = XB_FIL_CUR_PAGES * cursor->page_size; cursor->buf = static_cast(aligned_malloc(cursor->buf_size, srv_page_size)); - + cursor->tmp_page = static_cast(aligned_malloc(srv_page_size, + srv_page_size)); + cursor->tmp_frame = static_cast(aligned_malloc(srv_page_size, + srv_page_size)); cursor->buf_read = 0; cursor->buf_npages = 0; cursor->buf_offset = 0; @@ -237,15 +240,10 @@ xb_fil_cur_open( return(XB_FIL_CUR_SUCCESS); } -/* Stack usage 131224 with clang */ -PRAGMA_DISABLE_CHECK_STACK_FRAME - static bool page_is_corrupted(const byte *page, ulint page_no, const xb_fil_cur_t *cursor, const fil_space_t *space) { - byte tmp_frame[UNIV_PAGE_SIZE_MAX]; - byte tmp_page[UNIV_PAGE_SIZE_MAX]; const ulint page_size = cursor->page_size; uint16_t page_type = fil_page_get_type(page); @@ -308,42 +306,43 @@ static bool page_is_corrupted(const byte *page, ulint page_no, && !opt_extended_validation) return false; - memcpy(tmp_page, page, page_size); + memcpy(cursor->tmp_page, page, page_size); if (!space->crypt_data || space->crypt_data->type == CRYPT_SCHEME_UNENCRYPTED - || !fil_space_decrypt(space, tmp_frame, tmp_page)) { + || !fil_space_decrypt(space, cursor->tmp_frame, + cursor->tmp_page)) { return true; } if (page_type != FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { - return buf_page_is_corrupted(false, tmp_page, + return buf_page_is_corrupted(false, cursor->tmp_page, space->flags); } } if (page_type == FIL_PAGE_PAGE_COMPRESSED) { - memcpy(tmp_page, page, page_size); + memcpy(cursor->tmp_page, page, page_size); } if (page_type == FIL_PAGE_PAGE_COMPRESSED || page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { - ulint decomp = fil_page_decompress(tmp_frame, tmp_page, + ulint decomp = fil_page_decompress(cursor->tmp_frame, + cursor->tmp_page, space->flags); - page_type = fil_page_get_type(tmp_page); + page_type = fil_page_get_type(cursor->tmp_page); return (!decomp || (decomp != srv_page_size && cursor->zip_size) || page_type == FIL_PAGE_PAGE_COMPRESSED || page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED - || buf_page_is_corrupted(false, tmp_page, + || buf_page_is_corrupted(false, cursor->tmp_page, space->flags)); } return buf_page_is_corrupted(false, page, space->flags); } -PRAGMA_REENABLE_CHECK_STACK_FRAME /** Reads and verifies the next block of pages from the source file. Positions the cursor after the last read non-corrupted page. @@ -507,7 +506,11 @@ xb_fil_cur_close( xb_fil_cur_t *cursor) /*!< in/out: source file cursor */ { aligned_free(cursor->buf); + aligned_free(cursor->tmp_page); + aligned_free(cursor->tmp_frame); cursor->buf = NULL; + cursor->tmp_page = NULL; + cursor->tmp_frame = NULL; if (cursor->node != NULL) { xb_fil_node_close_file(cursor->node); diff --git a/extra/mariabackup/fil_cur.h b/extra/mariabackup/fil_cur.h index 46c8cb03705..f21466e9cf5 100644 --- a/extra/mariabackup/fil_cur.h +++ b/extra/mariabackup/fil_cur.h @@ -46,7 +46,9 @@ struct xb_fil_cur_t { xb_read_filt_t* read_filter; /*!< read filter */ xb_read_filt_ctxt_t read_filter_ctxt; /*!< read filter context */ - byte* buf; /*!< read buffer */ + byte* buf; /*!< read buffer of XB_FIL_CUR_PAGES */ + byte* tmp_page; /*!< buffer for decrypting a page */ + byte* tmp_frame; /*!< buffer for decompressing a page */ size_t buf_size; /*!< buffer size in bytes */ size_t buf_read; /*!< number of read bytes in buffer after the last cursor read */ diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index e0feece65f2..146709ca5e5 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -1186,6 +1186,7 @@ static void backup_file_op_fail(uint32_t space_id, int type, const byte* name, ulint len, const byte* new_name, ulint new_len) { + const char *error= ""; bool fail = false; const std::string spacename{filename_to_spacename(name, len)}; switch (type) { @@ -1193,6 +1194,7 @@ static void backup_file_op_fail(uint32_t space_id, int type, msg("DDL tracking : create %" PRIu32 " \"%.*s\"", space_id, int(len), name); fail = !check_if_skip_table(spacename.c_str()); + error= "create"; break; case FILE_MODIFY: break; @@ -1202,12 +1204,14 @@ static void backup_file_op_fail(uint32_t space_id, int type, fail = !check_if_skip_table(spacename.c_str()) || !check_if_skip_table( filename_to_spacename(new_name, new_len).c_str()); + error= "rename"; break; case FILE_DELETE: fail = !check_if_skip_table(spacename.c_str()) && !check_if_fts_table(spacename.c_str()); msg("DDL tracking : delete %" PRIu32 " \"%.*s\"", space_id, int(len), name); + error= "delete"; break; default: ut_ad(0); @@ -1215,9 +1219,14 @@ static void backup_file_op_fail(uint32_t space_id, int type, } if (fail) { - ut_a(opt_no_lock); - die("DDL operation detected in the late phase of backup." - "Backup is inconsistent. Remove --no-lock option to fix."); + if (opt_no_lock) + die("DDL operation detected in the late phase of backup while " + "executing %s on %s. " + "Backup is inconsistent. Remove --no-lock option to fix.", + error, name); + die("Unexpected DDL operation detected in the late phase of backup " + "while executing %s on %s. Backup is inconsistent.", + error, name); } } diff --git a/include/my_attribute.h b/include/my_attribute.h index 44b677de66e..2ffd65fae3d 100644 --- a/include/my_attribute.h +++ b/include/my_attribute.h @@ -83,13 +83,13 @@ /* Define pragmas to disable warnings for stack frame checking */ -#if defined(__clang__) +#ifdef __GNUC__ #define PRAGMA_DISABLE_CHECK_STACK_FRAME \ -_Pragma("clang diagnostic push") \ -_Pragma("clang diagnostic ignored \"-Wframe-larger-than=\"") +_Pragma("GCC diagnostic push") \ +_Pragma("GCC diagnostic ignored \"-Wframe-larger-than=\"") #define PRAGMA_REENABLE_CHECK_STACK_FRAME \ -_Pragma("clang diagnostic pop") +_Pragma("GCC diagnostic pop") #else #define PRAGMA_DISABLE_CHECK_STACK_FRAME diff --git a/mysql-test/main/analyze.result b/mysql-test/main/analyze.result index 8819f15f27b..cf86bb31e7d 100644 --- a/mysql-test/main/analyze.result +++ b/mysql-test/main/analyze.result @@ -453,5 +453,56 @@ SELECT * FROM t1 WHERE f LIKE '2023%'; f DROP TABLE t1; # +# MDEV-36536 Add option to not collect statistics for long char/varchars +# +select @@session.analyze_max_length; +@@session.analyze_max_length +4294967295 +create table t1 (c0 char(2), c1 char(16), c2 char(64), v1 varchar(16), v2 varchar(1000), b1 blob, i1 int) +character set utf8mb4 COLLATE utf8mb4_bin; +insert into t1 values ("A", "A","A","A","A","A",1), ("B","B","B","B","B","B",1); +ANALYZE TABLE t1 PERSISTENT FOR ALL; +Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected +test.t1 analyze Warning Engine-independent statistics are not collected for column 'b1' +test.t1 analyze status OK +select column_name from mysql.column_stats where table_name = 't1'; +column_name +c0 +c1 +c2 +i1 +v1 +v2 +set @@session.analyze_max_length= 64; +truncate table mysql.column_stats; +ANALYZE TABLE t1 PERSISTENT FOR ALL; +Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected +test.t1 analyze Warning Engine-independent statistics are not collected for column 'c2' +test.t1 analyze Warning Engine-independent statistics are not collected for column 'v2' +test.t1 analyze Warning Engine-independent statistics are not collected for column 'b1' +test.t1 analyze status Table is already up to date +select column_name from mysql.column_stats where table_name = 't1'; +column_name +c0 +c1 +i1 +v1 +truncate table mysql.column_stats; +ANALYZE TABLE t1 PERSISTENT for COLUMNS (c0,c2,v1,v2,i1) INDEXES ALL; +Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected +test.t1 analyze status Table is already up to date +select column_name from mysql.column_stats where table_name = 't1'; +column_name +c0 +c2 +i1 +v1 +v2 +set @@session.analyze_max_length= default; +drop table t1; +# # End of 10.6 tests # diff --git a/mysql-test/main/analyze.test b/mysql-test/main/analyze.test index fb07e11b0c6..768b18dcb73 100644 --- a/mysql-test/main/analyze.test +++ b/mysql-test/main/analyze.test @@ -306,6 +306,26 @@ ANALYZE TABLE t1 PERSISTENT FOR ALL; SELECT * FROM t1 WHERE f LIKE '2023%'; DROP TABLE t1; +--echo # +--echo # MDEV-36536 Add option to not collect statistics for long char/varchars +--echo # + +select @@session.analyze_max_length; +create table t1 (c0 char(2), c1 char(16), c2 char(64), v1 varchar(16), v2 varchar(1000), b1 blob, i1 int) +character set utf8mb4 COLLATE utf8mb4_bin; +insert into t1 values ("A", "A","A","A","A","A",1), ("B","B","B","B","B","B",1); +ANALYZE TABLE t1 PERSISTENT FOR ALL; +select column_name from mysql.column_stats where table_name = 't1'; +set @@session.analyze_max_length= 64; +truncate table mysql.column_stats; +ANALYZE TABLE t1 PERSISTENT FOR ALL; +select column_name from mysql.column_stats where table_name = 't1'; +truncate table mysql.column_stats; +ANALYZE TABLE t1 PERSISTENT for COLUMNS (c0,c2,v1,v2,i1) INDEXES ALL; +select column_name from mysql.column_stats where table_name = 't1'; +set @@session.analyze_max_length= default; +drop table t1; + --echo # --echo # End of 10.6 tests --echo # diff --git a/mysql-test/main/mysqld--help.result b/mysql-test/main/mysqld--help.result index c8c850176a2..48b12dfa9db 100644 --- a/mysql-test/main/mysqld--help.result +++ b/mysql-test/main/mysqld--help.result @@ -16,6 +16,10 @@ The following specify which files/extra groups are read (specified before remain --alter-algorithm[=name] Specify the alter table algorithm. One of: DEFAULT, COPY, INPLACE, NOCOPY, INSTANT + --analyze-max-length=# + Fields which length in bytes more than this are skipped + by ANALYZE TABLE PERSISTENT unless explicitly listed in + the FOR COLUMNS () clause --analyze-sample-percentage=# Percentage of rows from the table ANALYZE TABLE will sample to collect table statistics. Set to 0 to let diff --git a/mysql-test/main/mysqld--help.test b/mysql-test/main/mysqld--help.test index 05739197331..239ee9269d6 100644 --- a/mysql-test/main/mysqld--help.test +++ b/mysql-test/main/mysqld--help.test @@ -20,7 +20,7 @@ exec $MYSQLD_BOOTSTRAP_CMD --symbolic-links=0 --log-bin=foo --lower-case-table-n perl; # Variables which we don't want to display in the result file since - # their paths may vary: + # their paths may vary or they may use a default of 4294967295 : @skipvars=qw/basedir open-files-limit general-log-file log plugin-dir plugin-maturity log-slow-queries pid-file slow-query-log-file log-basename log-slow-query-file @@ -30,7 +30,7 @@ perl; table-open-cache table-open-cache-instances max-connections server-uid tls-version version.* password-reuse-check provider-bzip2 provider-lzma provider-lzo - password-reuse-check-interval/; + password-reuse-check-interval analyze-max-length/; # Plugins which may or may not be there: @plugins=qw/innodb archive blackhole federated partition s3 diff --git a/mysql-test/std_data/galera-cert.pem b/mysql-test/std_data/galera-cert.pem index 2996b330cc0..dba44e01585 100644 --- a/mysql-test/std_data/galera-cert.pem +++ b/mysql-test/std_data/galera-cert.pem @@ -1,26 +1,87 @@ +Certificate: + Data: + Version: 1 (0x0) + Serial Number: 4096 (0x1000) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=FI, ST=Helsinki, L=Helsinki, O=MariaDB, CN=Galera CA + Validity + Not Before: May 20 01:31:39 2025 GMT + Not After : May 20 01:31:39 2125 GMT + Subject: + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a5:04:b1:45:03:ef:44:cb:1f:31:0c:5d:87:60: + 82:25:a8:f7:62:1f:a9:ed:82:06:67:23:6a:b0:0c: + 59:3e:b7:c9:ec:17:16:e2:0b:55:06:49:26:82:e9: + d0:bb:82:a4:79:08:6d:93:2f:6b:a2:40:73:3a:77: + a0:e8:47:99:40:27:fa:d7:39:33:26:9c:3d:c5:0b: + 82:ba:ea:48:71:53:18:0f:f6:47:a5:02:89:80:16: + 68:77:33:d1:a2:bb:34:7f:38:ae:c4:cd:85:f1:8d: + 84:e4:e3:dc:23:93:be:b3:93:bc:de:db:bb:67:6a: + ec:55:f6:6a:c0:bd:b5:18:6e:2e:15:06:a1:b9:f2: + fc:72:12:4d:fc:c1:5a:38:b2:30:17:c0:de:83:19: + 4c:fc:9c:c5:0f:c2:b1:86:57:30:88:82:07:f7:ff: + 96:68:1e:55:7c:18:3f:53:5e:40:20:06:02:a1:6e: + f7:03:4b:82:ea:9e:4f:07:97:03:33:d0:bf:1c:de: + b8:17:bf:7d:4c:3a:48:2d:41:ed:82:e6:3a:2c:6f: + 4f:fd:b1:2d:33:ed:d6:36:8c:bc:f2:ff:52:af:aa: + 32:9b:cf:87:45:f3:b3:61:d1:20:7d:03:a3:2f:1f: + 6c:1d:f9:b8:41:e9:88:04:c1:ae:b9:23:36:80:59: + d1:4f + Exponent: 65537 (0x10001) + Signature Algorithm: sha256WithRSAEncryption + Signature Value: + a1:d1:8e:b3:3f:47:3a:4a:2c:f0:bf:34:72:69:99:f2:fa:a9: + a0:72:3c:7e:7a:69:c1:d6:97:4f:bd:44:ac:92:79:46:e4:8e: + 62:c0:cd:41:e9:55:a7:29:33:d6:f6:e7:e5:13:e9:5a:a1:83: + 85:16:cb:e2:38:9a:55:b1:57:51:ea:cc:ca:5c:46:ab:1d:a5: + 73:d6:d6:df:57:e8:7c:40:16:63:17:75:b2:13:ac:31:eb:96: + 85:3b:fb:92:d6:69:4d:ab:e2:1d:22:82:0f:71:66:8d:b0:a9: + 56:a2:77:5e:f8:56:90:22:1f:ee:e7:79:33:37:c7:9f:a1:06: + 01:35:fe:13:12:75:2e:d9:2a:04:e5:8f:21:4a:20:de:a5:07: + 89:aa:0c:c2:d2:ec:a1:47:d6:f6:87:f7:ed:29:f9:69:c6:83: + f6:18:8d:7e:7e:3a:53:c7:b3:91:bd:9a:b8:e3:ac:66:de:57: + b8:2d:c5:d5:54:61:1b:27:96:e8:34:0d:a9:88:4f:03:5a:27: + e0:5f:b5:90:97:9f:57:39:f5:a9:9d:c6:b6:77:1a:bb:86:57: + 57:0c:79:6e:66:5f:93:c1:f7:df:c8:06:3c:df:c5:f8:ef:b3: + e3:61:8b:15:8a:45:4f:db:1d:7f:2b:eb:c9:54:ba:6e:c8:b8: + 40:ca:de:10:93:a9:a4:8c:17:56:50:37:9c:6b:ba:9c:b0:5f: + 4c:49:a7:9c:ba:3c:81:37:e3:a2:b3:6a:71:b9:f6:a6:bb:81: + f3:5c:40:ae:f5:e1:68:32:e3:af:22:5b:88:aa:df:2e:3b:5d: + e2:63:ab:c7:01:a3:c8:3a:e1:06:9f:2f:d1:9f:b4:06:c4:11: + 83:c2:99:4a:de:f0:c2:32:04:b8:65:26:e9:57:3f:7d:52:d7: + d8:1c:6e:2c:55:53:d3:81:1d:b9:9e:0a:c1:34:a6:6a:48:af: + 3b:d9:6e:84:16:30:33:a6:10:17:36:b4:30:68:fd:95:e9:3e: + 35:c3:95:71:7a:86:26:a7:46:66:09:95:91:c6:c2:ba:a6:61: + c2:a5:b6:38:8e:34:a0:14:f1:d7:0c:11:93:0a:a4:d3:f8:b7: + 32:fd:12:38:64:9f:68:fe:3d:a1:f6:28:c1:c8:9f:1f:ea:a5: + e2:77:fd:ad:d9:21:22:40:b2:9e:8e:81:3f:79:0e:13:19:1e: + 70:0f:4a:4b:81:ea:92:c5:fa:4f:80:e9:8f:5e:ac:dc:09:74: + 70:e1:7b:23:68:0c:18:c7:7f:07:4a:39:42:29:d6:c3:62:16: + ec:15:73:02:93:a6:a3:5f:21:90:59:8e:e6:b1:0a:be:32:cf: + 6d:4e:7e:56:3d:87:13:0f -----BEGIN CERTIFICATE----- -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 +o18hkFmO5rEKvjLPbU5+Vj2HEw8= -----END CERTIFICATE----- ------BEGIN DH PARAMETERS----- -MIGHAoGBAJWyvKjE+s7OP4Lj1jXKGlJGWT4Vd5YaxPljihTsRe1aXkWAgsuwISXk -/TQ8Rx5Zmze7rtwtU0PoYxvuam9FMXYqhw2dVe4qRdeSX78DSiL/YBkQzaxlfWVy -RE9+9dzHbCtRVDlN7K1kA+mGWH4/r7NAu4Qm/003V0NTtMwQSqebAgEC ------END DH PARAMETERS----- - diff --git a/mysql-test/std_data/galera-key.pem b/mysql-test/std_data/galera-key.pem index c88c613cacf..82c20e8dd49 100644 --- a/mysql-test/std_data/galera-key.pem +++ b/mysql-test/std_data/galera-key.pem @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDDzU6xLZDD5rZE -NsOpTpTmqS8YisBaefU3ZeN7VJepZZ/7unM/1YLGJtuRh2QaMyTkvyjzf7bSFsDt -9L5lfQwBBblVeWkrCvGnQmHDQQYB7JrSmFDPz9W9Mxf9Q2BWB3lcoKXXJgMnWw0W -Grt0lEdFp9gWbq8H9hwJdjpyyk4ZTIuucSOD4JUP3QFEhYU5kdcIbDRVw81J4eAZ -6EdvbjDN05S7qWjW7rJTnCHAHEd18hcsMGwjpwhjEaSdhMrMmhOeL8kuQV0fI8v2 -xfYBliIn9xBZGOVzySPzwFmQceORlW6F3V5w6mwFkmuXqXWXQo98swTu7mb89qVY -mR71d3L3AgMBAAECggEBAIMT0UdZSp1quL/nrYqNGa9kuSuDz4uCM3+3jNcGZVU4 -vCYHxpmINLi0UK8W5ROJA3zC4AZKjDgOlW93NXK5iKyyiUTIN3hiJi4jiVDuGbh2 -DZtH7mmAKAU1zCx2y2osLLmurfbe8qOJF7ShhrZfgWsHFujFhhUdU92dsTkhZ7EU -2NF8ScxCo4PbOJoHC3j0ApfwCMxUMAKZF5+08EeKYqK7OAXI79HeIvEbHn3cUDGm -bvg6ykwlz2UUO4sg+xdCmn1Bt36HF/4e973Y5fkE/vd9mryHIlu9t7GJgWyUiPr8 -BGEoAWDSpPOMd/b9ivtxh9Gd+LW/uitMuBIfrRPgz9kCgYEA+JqeeD2xqF2IzZyq -i1UqgKe3su2U2zhkgbu1h/1M/reNIZGylF0wFs3P+kNIB2NavmHjXcgSjdJzqRL9 -XEWfFJRmeARo9RTEQEVd8zp1Eo8ISeiksGgvbL4rrNIRR5V5MZytfISRiGCWN6jx -ulJ6EieQk5EcvknGlWpJY/bBsQ0CgYEAyaCLqrR38gVl2Z0t6YlhW/HWAwGt+lf4 -apN1AS4uykx7wRW2B0y9QUDfsrYeVlbbeRPP4UzPmJez+J2cweoIIeFFyo3KP2L7 -79E3EVYywjXhPg52F7OjFA4Bp970XclIC5Al7kDufSgwZmWdceSx4Jjc5ixyQEC8 -Ad0ThgP6yxMCgYAvC4OFmZcvF1Q2JLmZWGqMojB/KbqLqaZLbqwxqduSMEYC3kF/ -FgttpVEAOQ8+ZqzbbkbKjnwEXpkIm9FaTsqF6HdjquH5zw48Y2QeDSfudSbKZb4U -rAKdf3dgYvhmJYEjxFSIRcYMmsqSieQEsGrtWJNheYqI8AkmaVCuHBoXWQKBgQCj -daelNffD2wJuQNI28axfiRjSiSsNuQHpDTCfS1ydnxH5QGu5UUphO4HfdWv03SfC -6f/vDIGEmQBLvyOVxfDf3qzhAMCFUO8kxj1ZrcMq1dmMoNa2cmj0WkKXYNZFrmfd -D/jgRf3Ss6FBcoIJErnudp8nb8MUOibxb9RjIpjQxwKBgEliKaGN+/QkPTNJ4vXz -609CIilxpE+YVTzlv3YeZP5HqsJTJPS2ARIUr/Pjpbl3LHfYNeeGDCwgkJIK0JJH -iA1M51q6t3zG2y9gKmC15FF0jShoZkRgqBxqrSHAnrCo5t2C48ElxJ3FEU8T75sz -dlGTbkmR0Wm43Kh++dWICJ3g +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQClBLFFA+9Eyx8x +DF2HYIIlqPdiH6ntggZnI2qwDFk+t8nsFxbiC1UGSSaC6dC7gqR5CG2TL2uiQHM6 +d6DoR5lAJ/rXOTMmnD3FC4K66khxUxgP9kelAomAFmh3M9GiuzR/OK7EzYXxjYTk +49wjk76zk7ze27tnauxV9mrAvbUYbi4VBqG58vxyEk38wVo4sjAXwN6DGUz8nMUP +wrGGVzCIggf3/5ZoHlV8GD9TXkAgBgKhbvcDS4Lqnk8HlwMz0L8c3rgXv31MOkgt +Qe2C5josb0/9sS0z7dY2jLzy/1KvqjKbz4dF87Nh0SB9A6MvH2wd+bhB6YgEwa65 +IzaAWdFPAgMBAAECggEAT55ae46g8MPCWnN5YvqNAOer6IOXhPlh5nx/ms5yduDN +Q6SGTW0jSmOb+bkflYE8owsOd1//YisPjauvjrMQ/ZPsotA93kivQvXBTzb/2fG6 +H+V3fuWg+xSUtcLiSE5jz2hFZr40/K2H67oG+oFsFw/Wpn5FRuofeoBo1HMTv+OO +8JvDGOC3jNBxqvajf2+YTpHkS2Bm0CujlspMv+LYYJm4kjlmaE+PEKGAqp+WT+rK +10HXYQGsOLld3DVfO0aHJQ+ji5WskTtmJxi/Gutra2BL7upiPByvdInCBFL5WObw +1gQCYZeUgD0Djofmk4Jst8M7fU/v8HDTgyMzy544EQKBgQDOVXuS3wkxz5QqKAt9 +js8nAb+M9w84cCn89hLZN60IBBWb933EtRun5M6Izy7PWRnSUH4Oeao9cGU1GsKQ +AuTLJKfbNVCrYo5dTpRDpK1zgRaiT2IPn8Wi337qP89dcb0NPXpWkzrkmhZJ3C6t +YkvDp8jhunudCpisWsA5cDGmcQKBgQDMvUyI7wyukMt+VDIi1tnzJgJlezXRRCCH +MO1qMSAn0UIIp/9nR41mdj9gQJby1uc+eL5eLY/KTjZgU9NTOhJ3ZT/GkvoR9xQt +yZfWz8117OXoJxMgfUITKijtlQSCY4i3kAcA+bEerFIW+6xtNXzte5Q+LH/knmbh +HmC689hTvwKBgERRwa0L9LtthB3BTKyyUJ0V0xsV4xBI814zDGKoML7qu0z9UcOE +RDf/ZvOdxl4Znpco19RrLJdTU++VgL62dpNc+8d1i9RzubfjgOw05snMAHaV2l5a +BNK9NgTSRBMoyfRMWum3rlRrQN4L7dizJ2sNb1JusOd6zrqjAesC3y3BAoGAAdlz +54jBRJJqRCneihIGxfuB6gjC47EJ2i7G9j6bW8C4J/vcgsJStKo8yFHNC0SFsjrE +/XTL57ftJdGcBxRvNkTj3pdVSvRAaml3xaj64iXRrdcshQ6cmi+3Tu4ZrFPZ2E6k +wY1/3BcSZsK/O/1Ps5V6MVWVkiscIsxzczzgp2ECgYAqC6yFmIbw1Ui/YIqprj8c +nb5xl5KGj47ZGFIWeoNIZKOwUZu+POu+WZ4kOvySP276xvLfjLjWl+HHjN73AMaT +RvW2+xwSEfGR4d5wqGGxk5TnJOzi0vd21tGUCGdc+AAYDE/M00skdW8AfK1fUuVm +qkpHixGjosFWeZn9IGyu0g== -----END PRIVATE KEY----- diff --git a/mysql-test/std_data/galera-upgrade-ca-cert.pem b/mysql-test/std_data/galera-upgrade-ca-cert.pem index 13d27e84bb3..6c6ce469368 100644 --- a/mysql-test/std_data/galera-upgrade-ca-cert.pem +++ b/mysql-test/std_data/galera-upgrade-ca-cert.pem @@ -1,40 +1,32 @@ -----BEGIN CERTIFICATE----- -MIIDWTCCAkGgAwIBAgIJAIlW4JmZGnU4MA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV -BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg -Q29tcGFueSBMdGQwIBcNMTQxMDI0MDc1MTU1WhgPMzAxNDAyMjQwNzUxNTVaMEIx -CzAJBgNVBAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0Rl -ZmF1bHQgQ29tcGFueSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQDDzU6xLZDD5rZENsOpTpTmqS8YisBaefU3ZeN7VJepZZ/7unM/1YLGJtuRh2Qa -MyTkvyjzf7bSFsDt9L5lfQwBBblVeWkrCvGnQmHDQQYB7JrSmFDPz9W9Mxf9Q2BW -B3lcoKXXJgMnWw0WGrt0lEdFp9gWbq8H9hwJdjpyyk4ZTIuucSOD4JUP3QFEhYU5 -kdcIbDRVw81J4eAZ6EdvbjDN05S7qWjW7rJTnCHAHEd18hcsMGwjpwhjEaSdhMrM -mhOeL8kuQV0fI8v2xfYBliIn9xBZGOVzySPzwFmQceORlW6F3V5w6mwFkmuXqXWX -Qo98swTu7mb89qVYmR71d3L3AgMBAAGjUDBOMB0GA1UdDgQWBBRdWet/kGNTyvXK -wuBdP/eSldOgWjAfBgNVHSMEGDAWgBRdWet/kGNTyvXKwuBdP/eSldOgWjAMBgNV -HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCcJpP+DR4AJxVelNTSZa+V38c+ -jgrMD2Ku2eU8NQlsjgMfNEU5Md/g7FpP8aCFzVf0kAAT7DxZmSE3uWXQbMXyVJmy -bF+qXinf71QzdWULm6sASoshC6wbHnXL9ZjWQ3gh1nqVgo3MmLQYrb3eJfKaaLoc -wpjhYxVxGFOx1ITN3jED64lUfoLHvR6NFbESYKAuAAzSNqX4HOQ3uGk2THM8JocZ -oH2+38d81Kd4HQ7DDDKS/isG0+rR60Ti1cMgu7OT7p1dZCwT/KQuI5eGjE9lubkc -yAJjaod4rVLdBri3XVvtySfS2+/75qUgv2TF7d/s7mxMq4DDt29yeKSUhZCs ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDVzCCAj+gAwIBAgIJALBO5bqmtlYkMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV -BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg -Q29tcGFueSBMdGQwHhcNMTUwNjI2MDcxMjQ1WhcNMjUwNTA0MDcxMjQ1WjBCMQsw -CQYDVQQGEwJGSTEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZh -dWx0IENvbXBhbnkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -1DlcztIzSngGeTUFibj9GZ4ZO78ASpgYySZv/DRIVn/3hbF41ZRD/6uJlb5rf1R7 -fpFsurbXNDDxeap7b/Gz2XSQy96Dbm0SbsFSZttV/R2WtlT1Wf5n9ix6RLqhKSbg -nPyL2fsDaxtZh2uywGJEXhwXFtdx3deIo/tYivDfl5Tcsv0NnZY8Vg0boBRP+FEn -ReJOdSa5LLn+QJN2Xa+wutbLHe0hI6huKUXU2YUeBfgyk1nWol5241ZUDCgDsoaW -8r2YeJNHmNInd3wERbqFgFHsR4N1+Atcyrfn/uQSj9zrTPO/Pp51KpjWf/gjxjXP -biu5De50qZ4+U4no20EIOwIDAQABo1AwTjAdBgNVHQ4EFgQU3kSPGchrOoQJ5gq1 -mmV2HEra6GswHwYDVR0jBBgwFoAU3kSPGchrOoQJ5gq1mmV2HEra6GswDAYDVR0T -BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAfoBD64FJ9fAR19+vwueFGmpWNIqF -PzN7QmEpCMduV3DXuxYO73q2ikXgrVO5HWFz9IjNvzXbSRmWNzJGaZ3QYZ+Xx1JJ -8MrAOUr6djWuyD659f64dh/2jMxiQNoEHrknXm9HSqR5oJVwndFyr/zvSkYSRexE -KFciIprb9LOba9G3ZMBYBdqK+f3Ky16BMjaD6XfaTx+xjHk/8peSueXIQl+v2biz -zSfpEUa0dKCIxckrzD4JknDHFimTsrzlRftcg8t8piOXwZomFcnVunyGs2bJ/Npj -25c2e6sx7XSc5bUgPGuQcSGflZPLg9zWyJ69sVYUNAz+gqfvWfOOJuzPNg== +MIIFkzCCA3ugAwIBAgIUV3aBq/Mk/AlwaHlG2fWsrojezT4wDQYJKoZIhvcNAQEL +BQAwWTELMAkGA1UEBhMCRkkxETAPBgNVBAgMCEhlbHNpbmtpMREwDwYDVQQHDAhI +ZWxzaW5raTEQMA4GA1UECgwHTWFyaWFEQjESMBAGA1UEAwwJR2FsZXJhIENBMB4X +DTI1MDUyMDAxMTUxNFoXDTM1MDUxODAxMTUxNFowWTELMAkGA1UEBhMCRkkxETAP +BgNVBAgMCEhlbHNpbmtpMREwDwYDVQQHDAhIZWxzaW5raTEQMA4GA1UECgwHTWFy +aWFEQjESMBAGA1UEAwwJR2FsZXJhIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA0w+K6kwQVLDyg//YVYxDXFElDpzUlZo66Yq7y8Y2LcG088GqPQlf +g9tMd/HFat8HXaRu2N3Mjd7cgtt7Sp+wuSC3MadGObqaipwnGMUC04FUI3aOlhyu +NPdS6o+LQ3LIhRNS251SqYJ+lZkWlw7ygw/pyovAwyWKkUib1n1C0O9DwLcZEGdY +4GkkifSp7gF+xHf9NZ3AI0nnXZccmQm3EYslepR8Do+D635Hk+49kN/OPm44uUjn +ul9Xlh4azn6AXgd1VPBWV7Ic6EtMhXIVdIiJTIbhHVBTuMXlwS2TzXEJN0QcGMLF +AyA6aDPkFHwZDAyP/fgh7v2DVkEh8UQUUW4m3GibJmyYcQw0pvILcC8sUHMQ8ZAb +eTchzwB+2L3DywGHmcDMYeUpmYANABNdLGBZTnjy06ZBs0EAPMaUujUXWjb4zI5+ +NQ5KTfYQ3nOePKyFzf+W7aO09ApM9zbYI5fZwoAlgxqwL58LlxmW6QDDSMtu9xE+ +3p0/iJnUD3mCUYPKINqT8ZaJOTOywELntUq/eFjPHZlCebbBhVBGjJQnhNAlWD7O +Y2iOs3XYzVX4FJxlcodj3idKrfRYF3IGekah4+NainFbMu24J08BYrc77vqj8qNv +tHaYcxEs4d0ggyWAnr4i8wDgl/aT63FIj+PPA7VHw9ytbEYkF7ZEBb0CAwEAAaNT +MFEwHQYDVR0OBBYEFFS7XKdj8vKLmXYl/adm467ECLwGMB8GA1UdIwQYMBaAFFS7 +XKdj8vKLmXYl/adm467ECLwGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggIBACm8QeUNhuAbwsOA7uImSFyatA7+kSC0heVQyV0B2AC4smca3yQQfnF7 +ttnloEfOQJ/HEKUw67jFPLjf+ZdrV4WGJJFlUpUcOgTBgtPze3Cc8JdJTAsA12cz +rxCKNf7d9Ob1xzXsGmWG0fjPqJpFMDTDdJcuWBdKOjKg8qP3L3anfQBPiVzc6Wyz +IIs7LUQRAYtN05JE8jzDecNKZIbDbGQ3qb4uqyfQOebaP4g63osNMugBPRQpcgLk +o2F0q3iC1GnJD8RCl1P0IpLHtVIC8GbamL0WVD5XWYk6esGHpqzeWZGUl+GVUCJ+ +QOlqnLD0UPnBo/o3d+lrzeRUeGVu+k8u3TeJZyzOyuh7ZPZtNQ7h1Rzxa5LD4tGX +SeFtyS8dYiVC27Vyu2LAFcbZUO3VTOpusXy3iq5jz7MzuTHaV8MiYPDuQ3xhrUo9 +kGWXKiTd+Vr1V6iBig7wWDSwMyFbbDzv3N86TpHjO2ynXNHXPg6VEDOP+zOcI7KO +cgQWqhR8Zr58Yo1tRI8ync9zeUF5cD1EnkP0QRelnmhR0IEPAIxW2YCIO4+jAZOE +5bKPyJwjWzfJR0U2fFi73qpXoMXubcrPFMdiYTMnRjwO+WVLNWCQbe6zE9xh/ZKx +JCYjqvyKIrbtrS4exkRkXDX+gknrdYcfSw/7i9DKkzfowKYVrTQd -----END CERTIFICATE----- diff --git a/mysql-test/std_data/galera-upgrade-server-cert.pem b/mysql-test/std_data/galera-upgrade-server-cert.pem index 3af8b1ae7dd..deee3c9f682 100644 --- a/mysql-test/std_data/galera-upgrade-server-cert.pem +++ b/mysql-test/std_data/galera-upgrade-server-cert.pem @@ -1,20 +1,87 @@ +Certificate: + Data: + Version: 1 (0x0) + Serial Number: 4097 (0x1001) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=FI, ST=Helsinki, L=Helsinki, O=MariaDB, CN=Galera CA + Validity + Not Before: May 20 01:32:38 2025 GMT + Not After : May 20 01:32:38 2125 GMT + Subject: + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:c9:0e:e9:9d:eb:8f:8d:7f:79:aa:55:7f:2d:c0: + be:92:10:77:46:78:31:63:38:82:01:91:91:4c:c1: + 49:85:04:d3:28:0a:49:80:81:1f:3c:3c:00:6f:aa: + e1:ad:d1:44:0a:72:2a:82:39:72:12:5e:3d:0e:be: + 43:f8:11:98:6a:cb:35:a8:f5:05:e1:1b:b1:9f:14: + ee:59:9d:4a:34:cc:92:0d:9b:cf:23:db:ba:5e:68: + b3:de:2f:37:04:41:c7:84:b0:62:fb:5d:7a:b9:6e: + 0d:f8:f9:82:23:24:8c:0e:f6:34:b7:93:fe:82:f6: + fc:56:45:46:67:63:b1:a7:18:2d:2b:7a:90:92:9c: + a0:cc:11:18:68:f1:9d:24:a5:77:40:cc:c3:ae:df: + ed:c9:1c:cb:e1:66:0c:04:3e:93:2b:4f:ad:31:c1: + 33:64:a4:27:7d:27:da:40:bb:bb:d9:a1:f1:b0:bc: + 43:de:52:22:78:0d:21:ac:20:e0:62:15:4b:60:a4: + 60:77:34:44:75:76:1f:57:00:23:15:dd:51:29:b2: + 5e:75:99:b0:72:0b:49:21:31:1f:5f:a4:b9:ef:c4: + f1:1e:4c:0d:1f:4b:2d:f1:71:f9:b1:df:3f:9c:01: + 7e:cd:66:ef:07:e6:e7:9a:95:eb:86:ba:44:05:84: + 42:2b + Exponent: 65537 (0x10001) + Signature Algorithm: sha256WithRSAEncryption + Signature Value: + 90:67:64:33:70:bd:c8:15:10:8d:8c:f3:09:48:c8:12:8d:58: + 25:b6:a7:a5:2f:54:4e:a3:8e:4c:8d:e7:bb:60:2e:1c:1d:0f: + c1:62:78:d3:47:18:a0:c6:55:4c:69:38:07:e4:86:7a:c6:35: + f3:bd:05:1b:a4:67:ea:d9:ed:72:e5:37:df:7f:97:2f:76:4e: + d8:7a:df:de:7f:35:15:de:cd:e0:e3:c2:e1:96:15:79:3f:88: + 5f:d1:f1:b4:f1:41:21:f1:6a:cd:92:3d:4c:14:fc:5b:17:d0: + ec:7d:12:88:18:74:ec:5c:2a:d3:e7:7b:c4:69:53:51:37:71: + d1:f8:2a:70:80:e3:b7:b5:00:a6:df:d4:9b:d4:65:5e:e2:53: + 6e:98:6d:76:26:cd:19:cd:08:ec:81:8b:54:50:53:9b:06:f3: + 65:83:a9:1b:9c:f0:ed:12:88:c5:0c:f2:02:d4:3f:09:fb:43: + f9:1e:13:12:05:c4:e7:47:e7:9e:bf:c0:6a:70:17:3e:f4:29: + 92:77:a8:1b:d9:1c:3c:e3:ae:5d:c8:98:a6:4b:3d:22:a8:cd: + 46:8e:8b:4e:b2:0c:a3:3e:9e:fe:98:a1:2c:36:10:f9:b6:63: + d4:ae:bb:a8:f3:e8:cd:2f:0e:06:a2:e9:e1:41:3f:25:8b:ec: + a1:65:56:ec:d6:98:4b:b3:fc:d1:8f:21:1e:55:3d:28:10:c3: + 55:30:54:0a:92:f5:33:7e:c6:68:fb:7d:b3:5f:5a:a2:65:4f: + 25:53:93:3a:11:4a:23:5b:26:59:8e:5d:c5:56:c9:35:f5:55: + 45:f1:0c:f0:b3:98:62:3f:42:f3:44:17:81:fd:41:80:e5:6e: + 45:76:19:f0:34:f6:9a:13:76:5e:2e:08:66:71:e0:5d:f8:aa: + f9:ef:4b:1d:23:bc:c7:a7:e4:09:61:df:e6:b7:9a:7f:d2:8c: + 25:f3:26:e2:38:36:1a:1e:23:a9:10:60:08:59:22:52:cf:64: + 47:68:a0:04:31:33:f7:14:ec:33:87:76:f2:84:d1:37:07:fc: + 1a:fa:23:94:2a:7e:72:f8:bb:45:17:49:d7:57:46:c1:aa:4c: + d2:04:dc:82:7b:33:b9:44:ee:d2:bb:4c:60:f0:93:7b:68:19: + 77:65:7b:ce:65:d2:16:2d:0b:3d:0b:7d:62:96:86:29:c2:01: + 57:26:02:15:67:cb:97:5b:2e:a6:65:60:b9:4f:53:ce:3a:6a: + 35:06:50:d9:1b:be:5b:a0:0e:0a:b4:66:40:a5:6a:40:d1:37: + fd:f9:0a:63:22:b4:08:7d:5f:1a:ed:cb:6f:74:17:b6:a3:56: + 54:24:38:8f:c4:6a:cf:46 -----BEGIN CERTIFICATE----- -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 +CH1fGu3Lb3QXtqNWVCQ4j8Rqz0Y= -----END CERTIFICATE----- diff --git a/mysql-test/std_data/galera-upgrade-server-key.pem b/mysql-test/std_data/galera-upgrade-server-key.pem index d243c9e0381..872f3187cd9 100644 --- a/mysql-test/std_data/galera-upgrade-server-key.pem +++ b/mysql-test/std_data/galera-upgrade-server-key.pem @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDUOVzO0jNKeAZ5 -NQWJuP0Znhk7vwBKmBjJJm/8NEhWf/eFsXjVlEP/q4mVvmt/VHt+kWy6ttc0MPF5 -qntv8bPZdJDL3oNubRJuwVJm21X9HZa2VPVZ/mf2LHpEuqEpJuCc/IvZ+wNrG1mH -a7LAYkReHBcW13Hd14ij+1iK8N+XlNyy/Q2dljxWDRugFE/4USdF4k51Jrksuf5A -k3Zdr7C61ssd7SEjqG4pRdTZhR4F+DKTWdaiXnbjVlQMKAOyhpbyvZh4k0eY0id3 -fARFuoWAUexHg3X4C1zKt+f+5BKP3OtM878+nnUqmNZ/+CPGNc9uK7kN7nSpnj5T -iejbQQg7AgMBAAECggEBAJ4m7VG3db+uOGzFJY5fzEX1+qn6ibYNKJNmUJfrQmkr -zgLUoc7QQehbJhnwoN1v0OQebZ+rOC7NtnZLpNdkkPmhk3JKLTnykIT3DnhWRftt -vG2+XGUnYMQkmy1ywz0Omt6CmZnlJMQByrNPgBM8Z+SWHGLKRTHkOBCz82T/YjDr -wqug1Yv6W0wMNM/cikgoBldVG7hABCJuShjffIbUgVysK3dEPNywNAC78neoGECm -evPZOaIkWEr86SpAlwA6Yh+zTQZ03CXATcGonJdWJ015DvlKRv6QyRR0Q/Y1ONwb -f115kll15MJBEspFdSyhlMcVJlwO8WMaZ2qIzlQZmdECgYEA//P469QzX00L/urK -7IRvtSVu5CP/A/Wui90U4KoP7XgXIeExnEtzLVs1K7vjuzdpTyq+68XuC40gPcJW -RvoX229m6gRV8nC53UiV71jM8IvkyEqFYT/gfZC9KQCMSRJLtVnDMpZ3gMxAY6/5 -p20o616Au8DKFFetQV0aD4Hj1/MCgYEA1ENV1WkgvN6yItB77E9kN/vbKLRh0hrg -9xj0SmMXGYyDM9NpjbgbgJIZo3ukkBtp3kEY8P9JQZRcd1EcnnSrwTB7ChdInWkR -m/LpIZBEMqNQbeu4QSzZYYS6z4tcGGx43aHqzzNBZdnQnqhYL1CvlLwhkgX6oQCo -woXqyfMNKJkCgYEA63gD1NGPwWkcVBSlQxpDup8JeZE0Fux6++kUP+u0Y39LqLuH -7IXtHBkAvY9JXv8HPvHQWw/og2/97VNQFFQYhqPiRgBfIX9bPpx8c4l6YQISI8GL -G4CsglgZ7hK2/LJ8PAascWnD3xYJVqyaPNFMB90VCaW/Qx+2IKAKTaHtfskCgYBu -1f5C4pMqrCpeTXj4Cvis1wE4PwB5QnnH7SrakOVl/N4huLn8O2948lEa8Zwbd4UP -ffR1Gwh4iuzBjQQhpZBt30/QFBphv5RnVy7uzLMfsfF0hEqBFdcoubMGXqGnSzTN -nhfLO9thQJxTzFnH0xzr0FTDOAYH/h0g/eZ8r0JmuQKBgQDjhXM+hJ3Pkwua+Fnl -nZfY5MeSzkJki/9iwVo8rSDwmZS9Nsc83oZnddM7c2x63t+zYOAcMxsVCiByMDzo -5IB781HWRBGcU8TnW1b0bAnZimjKp/qsZ/Szr38rvImqG8TjzbcSD7w0SpyRQ/Ot -A7SZFkWYfem8/q/VImjU/CNbOQ== +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJDumd64+Nf3mq +VX8twL6SEHdGeDFjOIIBkZFMwUmFBNMoCkmAgR88PABvquGt0UQKciqCOXISXj0O +vkP4EZhqyzWo9QXhG7GfFO5ZnUo0zJINm88j27peaLPeLzcEQceEsGL7XXq5bg34 ++YIjJIwO9jS3k/6C9vxWRUZnY7GnGC0repCSnKDMERho8Z0kpXdAzMOu3+3JHMvh +ZgwEPpMrT60xwTNkpCd9J9pAu7vZofGwvEPeUiJ4DSGsIOBiFUtgpGB3NER1dh9X +ACMV3VEpsl51mbByC0khMR9fpLnvxPEeTA0fSy3xcfmx3z+cAX7NZu8H5uealeuG +ukQFhEIrAgMBAAECggEALOBrPJhrfkXJvj8/F9NBthB+zvfc7iyauAbpy5wI8OvW +xcUmCszHUAaEgmg93zIqYbqByndQAtGOB1Bok2I6Bvw8ie3G1iv8RWnCmbYF7isL +HoZ8gaB1xMTSAPHA8e5Mvk0wirKexezOqZfneDicGmrR8XfTAyBlykvEHyeda5IQ +O5P5OIseevBSOYujV/pYohLIlIJmaxtlyLktIos2TvNxcomULhQ+b+xLc2YZespE +9Tvolin3czzS8UUACFIVDkmWRzEyEH+PXOBFiwbI3SeL1V+iJx+YcEkrNZpLkV45 +DxvNqDMfgi7iZ5Re9/QIuoz79drokiC6yHW/V5EWoQKBgQD3RcvbaaWkCpC0mHer +K3+5I9OtBxFenG3h5v8jXVC4LwKoqeN5CpMBnltohiRWOxfjuJ15MHkIywuDYslU +ySEA2GvZZZIJxa9dNiQiCPlEH5GN0+9U9FDTYj3bvcjKkxrYBsdF3Yt3kkmlkdiZ +ANpo4iWHWkWC0EDXLqlM1dc8vQKBgQDQJ40pkMXczHFjklnwOtm1ftjXPtIUA2t8 +Wgs+IVua0z+j5G1BiHisRct5pQDgLbMCtRzMvi8a/BrH+LMn9eGBnifJfOMZi7JR +6AYIjYzUVqJNgBLPTCLFjRSGOfLgG3XnS++E5OleftOvXZRuhzgng7ED8dU5KRfh +kjqwz3wNBwKBgAUleryyUjQ71A8uLS9u1FWyHTG4t+/UKaVN/Xlq88chk1iXUJiw +U6bw+M4QHKl+yVx/9ycSjzJTp4WwhKgzF3DBEF2R85wodSHngpECxs1YKttc0dpe +y1/a55avOIKe1Swx1+voVILElKvRgUSN8/3C1y0d/9xdITxZSETFHpmxAoGAK+qc +Us+znzEXHz3qcc/IzQ0VLNyZMBXEoLjStGoPTKwTOj3gezoS063qDyEr/SBHK2QQ +znW1tIjKEbS7/8tVp6Y5mL4bn/EkTzmXxEgxFT+uAJHr5gaXM3zffq5NOtEwX/ta +bnxpbEFv4gjpXyRySYv0VfO429V6r2HNti4gaxMCgYEA0EYdaBjLb+eHsT4aBFa4 +uQg7N/F4JPNFpb7L6u0gCxkPGkmolCJyPMBS26ciDIiGIx9VBxvWsuzLU96nphG9 +xgczWAzbYXeHN6UZw2ASWMyW+ffYqgLlE3it5qj0JiCkWxsjSiStLKm675WkqkxM +LBW22SFBcrXvQLb6CEC5mQQ= -----END PRIVATE KEY----- diff --git a/mysql-test/suite/galera/r/galera_vote_during_ist.result b/mysql-test/suite/galera/r/galera_vote_during_ist.result index adbe0e2fe7d..8d95cd8ee15 100644 --- a/mysql-test/suite/galera/r/galera_vote_during_ist.result +++ b/mysql-test/suite/galera/r/galera_vote_during_ist.result @@ -8,6 +8,8 @@ connection node_2; connection node_3; connection node_4; connection node_1; +SET SESSION wsrep_on = ON; +SET SESSION wsrep_sync_wait = 15; CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY); CREATE PROCEDURE p1(IN max INT) BEGIN @@ -48,6 +50,8 @@ CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY); SET SESSION wsrep_on = ON; INSERT INTO t2 VALUES (DEFAULT); CALL p1(130); +connection node_2; +connection node_3; connection node_1; SET GLOBAL debug = "+d,sync.wsrep_sst_donor_after_donation"; Restarting server 4 @@ -58,8 +62,6 @@ SET SESSION DEBUG_SYNC = "now SIGNAL signal.wsrep_sst_donor_after_donation_conti SET GLOBAL debug = ""; SET DEBUG_SYNC='RESET'; Waiting for server 4 to leave the cluster -SET SESSION wsrep_on = ON; -SET SESSION wsrep_sync_wait = 15; connection node_2; SET SESSION wsrep_on = ON; SET SESSION wsrep_sync_wait = 15; @@ -69,10 +71,18 @@ SET SESSION wsrep_sync_wait = 15; connection node_4; Server 4 left the cluster, killing it... Killed server 4... +connection node_1; +connection node_4; Restarting server 4... connection node_1; SET SESSION wsrep_on = ON; SET SESSION wsrep_sync_wait = 15; +connection node_2; +SET SESSION wsrep_on = ON; +SET SESSION wsrep_sync_wait = 15; +connection node_3; +SET SESSION wsrep_on = ON; +SET SESSION wsrep_sync_wait = 15; connection node_1; SELECT count(*) AS expect1_390 FROM t1; expect1_390 diff --git a/mysql-test/suite/galera/t/galera_ssl_cipher.cnf b/mysql-test/suite/galera/t/galera_ssl_cipher.cnf index 776c321d800..92380428b83 100644 --- a/mysql-test/suite/galera/t/galera_ssl_cipher.cnf +++ b/mysql-test/suite/galera/t/galera_ssl_cipher.cnf @@ -5,7 +5,7 @@ loose-galera-ssl-cipher=1 wsrep-debug=1 [mysqld.1] -wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' +wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' [mysqld.2] -wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' +wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;cert.log_conflicts=YES;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' diff --git a/mysql-test/suite/galera/t/galera_ssl_upgrade.cnf b/mysql-test/suite/galera/t/galera_ssl_upgrade.cnf index ee8c6e590f4..1635c898d27 100644 --- a/mysql-test/suite/galera/t/galera_ssl_upgrade.cnf +++ b/mysql-test/suite/galera/t/galera_ssl_upgrade.cnf @@ -5,7 +5,7 @@ loose-galera-ssl-upgrade=1 wsrep-debug=1 [mysqld.1] -wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' +wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' [mysqld.2] -wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' +wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' diff --git a/mysql-test/suite/galera/t/galera_vote_during_ist.test b/mysql-test/suite/galera/t/galera_vote_during_ist.test index eff7f527300..fc319a767da 100644 --- a/mysql-test/suite/galera/t/galera_vote_during_ist.test +++ b/mysql-test/suite/galera/t/galera_vote_during_ist.test @@ -20,6 +20,10 @@ source ../wsrep/include/check_galera_version.inc; # create table t1 and procedure p1 to generate wirtesets --connection node_1 + +--let $members = 4 +--source include/wsrep_wait_membership.inc + CREATE TABLE t1(pk INT AUTO_INCREMENT PRIMARY KEY); DELIMITER |; @@ -39,11 +43,17 @@ DELIMITER ;| CALL p1(130); --connection node_4 +--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; +--source include/wait_condition.inc +--let $wait_condition = SELECT COUNT(*) = 130 FROM t1; +--source include/wait_condition.inc + --echo Shutting down server 4... --let $node_4_server_id= `SELECT @@server_id` --let $node_4_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$node_4_server_id.expect --let $node_4_pid_file= `SELECT @@pid_file` --source include/shutdown_mysqld.inc +--source include/wait_until_disconnected.inc # Wait for node #4 to leave cluster --let $members = 3 @@ -65,16 +75,23 @@ CALL p1(130); SET SESSION wsrep_on = OFF; CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY); SET SESSION wsrep_on = ON; +--source include/wait_until_ready.inc --connection node_2 +--let $wait_condition = SELECT COUNT(*) = 260 FROM t1; +--source include/wait_condition.inc SET SESSION wsrep_on = OFF; CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY); SET SESSION wsrep_on = ON; +--source include/wait_until_ready.inc --connection node_3 +--let $wait_condition = SELECT COUNT(*) = 260 FROM t1; +--source include/wait_condition.inc SET SESSION wsrep_on = OFF; CREATE TABLE t2(pk INT AUTO_INCREMENT PRIMARY KEY); SET SESSION wsrep_on = ON; +--source include/wait_until_ready.inc # This should cause error during IST INSERT INTO t2 VALUES (DEFAULT); @@ -82,6 +99,13 @@ INSERT INTO t2 VALUES (DEFAULT); # make sure nodes 1,2,3 progress far enough for commit cut update CALL p1(130); +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 390 FROM t1; +--source include/wait_condition.inc +--connection node_3 +--let $wait_condition = SELECT COUNT(*) = 390 FROM t1; +--source include/wait_condition.inc + --connection node_1 # prepare to stop SST donor thread when it receives a request from starting node #4 SET GLOBAL debug = "+d,sync.wsrep_sst_donor_after_donation"; @@ -96,14 +120,12 @@ SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_sst_donor_after_donation_reach SET SESSION DEBUG_SYNC = "now SIGNAL signal.wsrep_sst_donor_after_donation_continue"; SET GLOBAL debug = ""; SET DEBUG_SYNC='RESET'; - # # After this point node #4 shall proceed to IST and bail out # --echo Waiting for server 4 to leave the cluster --let $members = 3 ---source include/wsrep_wait_membership.inc --connection node_2 --source include/wsrep_wait_membership.inc --connection node_3 @@ -124,14 +146,27 @@ SET DEBUG_SYNC='RESET'; EOF --echo Killed server 4... --source include/wait_until_disconnected.inc + +--connection node_1 +--source include/wait_until_ready.inc +--let $wait_condition = SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment'; +--let $wait_condition_on_error_output = SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment'; +--source include/wait_condition_with_debug.inc + +--connection node_4 --echo Restarting server 4... --source include/start_mysqld.inc --source include/galera_wait_ready.inc + # Confirm node #4 has rejoined --connection node_1 --let $members = 4 --source include/wsrep_wait_membership.inc +--connection node_2 +--source include/wsrep_wait_membership.inc +--connection node_3 +--source include/wsrep_wait_membership.inc # Confirm that all is good and all nodes have identical data @@ -148,6 +183,10 @@ SELECT count(*) AS expect3_390 FROM t1; SELECT count(*) AS expect3_1 FROM t2; --connection node_4 +--let $wait_condition = SELECT COUNT(*) = 390 FROM t1; +--source include/wait_condition.inc +--let $wait_condition = SELECT COUNT(*) = 1 FROM t2; +--source include/wait_condition.inc SELECT count(*) AS expect4_390 FROM t1; SELECT count(*) AS expect4_1 FROM t2; diff --git a/mysql-test/suite/galera_3nodes/t/galera_dynamic_protocol.cnf b/mysql-test/suite/galera_3nodes/t/galera_dynamic_protocol.cnf index 84500819cee..a1264c09894 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_dynamic_protocol.cnf +++ b/mysql-test/suite/galera_3nodes/t/galera_dynamic_protocol.cnf @@ -5,7 +5,7 @@ wsrep_sst_method=rsync [mysqld.1] wsrep_node_name='node.1' -wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' +wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' [mysqld.2] wsrep_node_name='node.2' @@ -13,4 +13,4 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#gale [mysqld.3] wsrep_node_name='node.3' -wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' +wsrep_provider_options='socket.ssl=yes;socket.ssl_ca=@ENV.MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M' diff --git a/mysql-test/suite/galera_3nodes/t/galera_dynamic_protocol.test b/mysql-test/suite/galera_3nodes/t/galera_dynamic_protocol.test index b4536762560..d06d7d27a46 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_dynamic_protocol.test +++ b/mysql-test/suite/galera_3nodes/t/galera_dynamic_protocol.test @@ -50,7 +50,7 @@ SELECT COUNT(*) = 1 FROM t1; # Restart node with SSL enabled --source include/shutdown_mysqld.inc --let $restart_noprint = 1 ---let $restart_parameters = --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1 --wsrep_provider_options=base_port=$NODE_GALERAPORT_2;socket.ssl=yes;socket.ssl_ca=$MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_cert=$MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=$MYSQL_TEST_DIR/std_data/galera-key.pem +--let $restart_parameters = --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1 --wsrep_provider_options=base_port=$NODE_GALERAPORT_2;socket.ssl=yes;socket.ssl_ca=$MYSQL_TEST_DIR/std_data/galera-upgrade-ca-cert.pem;socket.ssl_cert=$MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=$MYSQL_TEST_DIR/std_data/galera-key.pem --source include/start_mysqld.inc --source include/galera_wait_ready.inc diff --git a/mysql-test/suite/innodb/r/innodb-wl5522-debug.result b/mysql-test/suite/innodb/r/innodb-wl5522-debug.result index ab62c03b110..c984d0a569d 100644 --- a/mysql-test/suite/innodb/r/innodb-wl5522-debug.result +++ b/mysql-test/suite/innodb/r/innodb-wl5522-debug.result @@ -81,8 +81,7 @@ SET @saved_debug_dbug = @@SESSION.debug_dbug; SET SESSION debug_dbug="+d,ib_export_io_write_failure_1"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -91,8 +90,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_2"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -101,8 +99,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_3"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -111,8 +108,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_4"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -121,8 +117,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_5"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -131,8 +126,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_6"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -141,8 +135,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_7"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -151,8 +144,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_8"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -161,8 +153,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_10"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -171,8 +162,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_11"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; @@ -181,8 +171,7 @@ INSERT INTO t1 VALUES (1); SET SESSION debug_dbug="+d,ib_export_io_write_failure_12"; FLUSH TABLES t1 FOR EXPORT; Warnings: -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flush() failed -Warning 1811 IO Write error: (9, Bad file descriptor) t1.cfg flose() failed +Warning 1004 Can't create file './test/t1.cfg' (errno: 9 "Bad file descriptor") UNLOCK TABLES; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE t1; diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result index 212ebb4c2ba..8d1b4621bd2 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -32,6 +32,16 @@ NUMERIC_BLOCK_SIZE NULL ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT READ_ONLY NO COMMAND_LINE_ARGUMENT OPTIONAL +VARIABLE_NAME ANALYZE_MAX_LENGTH +VARIABLE_SCOPE SESSION +VARIABLE_TYPE INT UNSIGNED +VARIABLE_COMMENT Fields which length in bytes more than this are skipped by ANALYZE TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause +NUMERIC_MIN_VALUE 32 +NUMERIC_MAX_VALUE 4294967295 +NUMERIC_BLOCK_SIZE 1 +ENUM_VALUE_LIST NULL +READ_ONLY NO +COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME ANALYZE_SAMPLE_PERCENTAGE VARIABLE_SCOPE SESSION VARIABLE_TYPE DOUBLE diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result index 2cdba5a988e..acd7462bcea 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -32,6 +32,16 @@ NUMERIC_BLOCK_SIZE NULL ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT READ_ONLY NO COMMAND_LINE_ARGUMENT OPTIONAL +VARIABLE_NAME ANALYZE_MAX_LENGTH +VARIABLE_SCOPE SESSION +VARIABLE_TYPE INT UNSIGNED +VARIABLE_COMMENT Fields which length in bytes more than this are skipped by ANALYZE TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause +NUMERIC_MIN_VALUE 32 +NUMERIC_MAX_VALUE 4294967295 +NUMERIC_BLOCK_SIZE 1 +ENUM_VALUE_LIST NULL +READ_ONLY NO +COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME ANALYZE_SAMPLE_PERCENTAGE VARIABLE_SCOPE SESSION VARIABLE_TYPE DOUBLE diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index a136125b5ae..2626aebcff3 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -272,7 +272,7 @@ IF(WIN32) # The resulting files will have .pl extension (those are perl scripts) # Input files with pl.in extension - SET(PLIN_FILES mysql_config) + SET(PLIN_FILES mysql_config print_ddl_recovery_log) # Input files with .sh extension SET(SH_FILES mysql_convert_table_format mysqld_multi mysqldumpslow @@ -331,6 +331,8 @@ ELSE() # Configure this one, for testing, but do not install it. CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_config.pl.in ${CMAKE_CURRENT_BINARY_DIR}/mysql_config.pl ESCAPE_QUOTES @ONLY) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/print_ddl_recovery_log.pl.in + ${CMAKE_CURRENT_BINARY_DIR}/print_ddl_recovery_log.pl ESCAPE_QUOTES @ONLY) # On Unix, most of the files end up in the bin directory SET(BIN_SCRIPTS msql2mysql diff --git a/scripts/print_ddl_recovery_log.pl.in b/scripts/print_ddl_recovery_log.pl.in new file mode 100755 index 00000000000..6e300402cae --- /dev/null +++ b/scripts/print_ddl_recovery_log.pl.in @@ -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 < 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; diff --git a/sql/backup.cc b/sql/backup.cc index f634a11f867..c7caac3127f 100644 --- a/sql/backup.cc +++ b/sql/backup.cc @@ -51,6 +51,7 @@ TYPELIB backup_stage_names= static MDL_ticket *backup_flush_ticket; static File volatile backup_log= -1; static int backup_log_error= 0; +static backup_stages backup_stage; static bool backup_start(THD *thd); static bool backup_flush(THD *thd); @@ -68,6 +69,7 @@ void backup_init() backup_flush_ticket= 0; backup_log= -1; backup_log_error= 0; + backup_stage= BACKUP_FINISHED; } bool run_backup_stage(THD *thd, backup_stages stage) @@ -140,6 +142,7 @@ bool run_backup_stage(THD *thd, backup_stages stage) my_error(ER_BACKUP_STAGE_FAILED, MYF(0), stage_names[(uint) stage]); DBUG_RETURN(1); } + backup_stage= next_stage; next_stage= (backup_stages) ((uint) next_stage + 1); } while ((uint) next_stage <= (uint) stage); @@ -174,6 +177,7 @@ static bool backup_start(THD *thd) /* this will be reset if this stage fails */ thd->current_backup_stage= BACKUP_START; + backup_stage= BACKUP_START; /* Wait for old backup to finish and block ddl's so that we can start the @@ -456,6 +460,7 @@ bool backup_end(THD *thd) // This is needed as we may call backup_end without backup_block_commit stop_ddl_logging(); backup_flush_ticket= 0; + backup_stage= BACKUP_FINISHED; thd->current_backup_stage= BACKUP_FINISHED; thd->mdl_context.release_lock(old_ticket); #ifdef WITH_WSREP @@ -513,7 +518,7 @@ bool backup_reset_alter_copy_lock(THD *thd) bool res= 0; MDL_ticket *ticket= thd->mdl_backup_ticket; - /* Ticket maybe NULL in case of LOCK TABLES or for temporary tables*/ + /* Ticket maybe NULL in case of LOCK TABLES or for temporary tables */ if (ticket) res= thd->mdl_context.upgrade_shared_lock(ticket, MDL_BACKUP_DDL, thd->variables.lock_wait_timeout); @@ -638,6 +643,13 @@ static char *add_bool_to_buffer(char *ptr, bool value) { void backup_log_ddl(const backup_log_info *info) { + /* + We should not get any backup_log_ddl request after BACKUP_WAIT_FOR_FLUSH + has been executed. + */ + DBUG_ASSERT(backup_stage <= BACKUP_WAIT_FOR_FLUSH || + backup_stage >= BACKUP_END); + if (backup_log >= 0 && backup_log_error == 0) { mysql_mutex_lock(&LOCK_backup_log); diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 0ea779c2dc6..116ae220cc5 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -2030,13 +2030,24 @@ class Grant_tables { DBUG_ENTER("Grant_tables::open_and_lock"); - TABLE_LIST tables[USER_TABLE+1], *first= NULL; + TABLE_LIST *first= nullptr, *tables= + static_cast(my_malloc(PSI_NOT_INSTRUMENTED, + (USER_TABLE + 1) * sizeof *tables, + MYF(MY_WME))); + int res= -1; + + if (!tables) + DBUG_RETURN(res); if (build_table_list(thd, &first, which_tables, lock_type, tables)) - DBUG_RETURN(-1); + { + func_exit: + my_free(tables); + DBUG_RETURN(res); + } uint counter; - int res= really_open(thd, first, &counter); + res= really_open(thd, first, &counter); /* if User_table_json wasn't found, let's try User_table_tabular */ if (!res && (which_tables & Table_user) && !tables[USER_TABLE].table) @@ -2062,12 +2073,15 @@ class Grant_tables } } if (res) - DBUG_RETURN(res); + goto func_exit; if (lock_tables(thd, first, counter, MYSQL_LOCK_IGNORE_TIMEOUT | MYSQL_OPEN_IGNORE_LOGGING_FORMAT)) - DBUG_RETURN(-1); + { + res= -1; + goto func_exit; + } p_user_table->set_table(tables[USER_TABLE].table); m_db_table.set_table(tables[DB_TABLE].table); @@ -2077,7 +2091,7 @@ class Grant_tables m_procs_priv_table.set_table(tables[PROCS_PRIV_TABLE].table); m_proxies_priv_table.set_table(tables[PROXIES_PRIV_TABLE].table); m_roles_mapping_table.set_table(tables[ROLES_MAPPING_TABLE].table); - DBUG_RETURN(0); + goto func_exit; } inline const User_table& user_table() const diff --git a/sql/sql_admin.cc b/sql/sql_admin.cc index c553154894d..c7f4514d7c8 100644 --- a/sql/sql_admin.cc +++ b/sql/sql_admin.cc @@ -987,8 +987,9 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, types here. */ enum enum_field_types type= field->type(); - if (type < MYSQL_TYPE_TINY_BLOB || - type > MYSQL_TYPE_BLOB) + if ((type < MYSQL_TYPE_TINY_BLOB || + type > MYSQL_TYPE_BLOB) && + field->field_length <= thd->variables.analyze_max_length) { field->register_field_in_read_map(); bitmap_set_bit(&tab->has_value_set, field->field_index); diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 05395757b68..9164180ea69 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -4734,6 +4734,7 @@ restart: goto error; error= FALSE; + std::this_thread::yield(); goto restart; } goto error; @@ -4799,6 +4800,7 @@ restart: error= FALSE; sroutine_to_open= &thd->lex->sroutines_list.first; + std::this_thread::yield(); goto restart; } /* diff --git a/sql/sql_class.h b/sql/sql_class.h index 98cd1e0d0c8..c8d21feb0e1 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -20,6 +20,7 @@ /* Classes in mysql */ #include +#include #include "dur_prop.h" #include #include "sql_const.h" @@ -736,6 +737,7 @@ typedef struct system_variables ha_rows select_limit; ha_rows max_join_size; ha_rows expensive_subquery_limit; + uint analyze_max_length; ulong auto_increment_increment, auto_increment_offset; #ifdef WITH_WSREP /* diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index ad5829ea488..33cd14ed8c9 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -6495,6 +6495,7 @@ extern "C" MYSQL *mysql_real_connect_local(MYSQL *mysql) new_thd->variables.wsrep_on= 0; new_thd->client_capabilities= client_flag; new_thd->variables.sql_log_bin= 0; + new_thd->affected_rows= 0; new_thd->set_binlog_bit(); /* TOSO: decide if we should turn the auditing off diff --git a/sql/sql_statistics.cc b/sql/sql_statistics.cc index de4bdeeaa31..306f9768dc2 100644 --- a/sql/sql_statistics.cc +++ b/sql/sql_statistics.cc @@ -264,6 +264,7 @@ index_stat_def= {INDEX_STAT_N_FIELDS, index_stat_fields, 4, index_stat_pk_col}; Open all statistical tables and lock them */ +ATTRIBUTE_NOINLINE static int open_stat_tables(THD *thd, TABLE_LIST *tables, bool for_write) { int rc; @@ -2902,9 +2903,6 @@ int collect_statistics_for_table(THD *thd, TABLE *table) After having been updated the statistical system tables are closed. */ -/* Stack usage 20248 from clang */ -PRAGMA_DISABLE_CHECK_STACK_FRAME - int update_statistics_for_table(THD *thd, TABLE *table) { TABLE_LIST tables[STATISTICS_TABLES]; @@ -2933,9 +2931,13 @@ int update_statistics_for_table(THD *thd, TABLE *table) save_binlog_format= thd->set_current_stmt_binlog_format_stmt(); + char statbuf[sizeof(Index_stat)]; + static_assert(sizeof(statbuf) >= sizeof(Table_stat), ""); + static_assert(sizeof(statbuf) >= sizeof(Column_stat), ""); + /* Update the statistical table table_stats */ stat_table= tables[TABLE_STAT].table; - Table_stat table_stat(stat_table, table); + Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, table); restore_record(stat_table, s->default_values); table_stat.set_key_fields(); err= table_stat.update_stat(); @@ -2944,7 +2946,7 @@ int update_statistics_for_table(THD *thd, TABLE *table) /* Update the statistical table colum_stats */ stat_table= tables[COLUMN_STAT].table; - Column_stat column_stat(stat_table, table); + Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, table); for (Field **field_ptr= table->field; *field_ptr; field_ptr++) { Field *table_field= *field_ptr; @@ -2961,7 +2963,7 @@ int update_statistics_for_table(THD *thd, TABLE *table) stat_table= tables[INDEX_STAT].table; uint key; key_map::Iterator it(table->keys_in_use_for_query); - Index_stat index_stat(stat_table, table); + Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, table); while ((key= it++) != key_map::Iterator::BITMAP_END) { @@ -2989,7 +2991,6 @@ int update_statistics_for_table(THD *thd, TABLE *table) new_trans.restore_old_transaction(); DBUG_RETURN(rc); } -PRAGMA_REENABLE_CHECK_STACK_FRAME /** @@ -3073,14 +3074,17 @@ read_statistics_for_table(THD *thd, TABLE *table, /* Read statistics from the statistical table table_stats */ Table_statistics *read_stats= new_stats_cb->table_stats; stat_table= stat_tables[TABLE_STAT].table; - Table_stat table_stat(stat_table, table); + char statbuf[sizeof(Index_stat)]; + static_assert(sizeof(statbuf) >= sizeof(Table_stat), ""); + static_assert(sizeof(statbuf) >= sizeof(Column_stat), ""); + Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, table); table_stat.set_key_fields(); if (table_stat.get_stat_values(new_stats_cb->table_stats)) new_stats_cb->stats_available|= TABLE_STAT_TABLE; /* Read statistics from the statistical table column_stats */ stat_table= stat_tables[COLUMN_STAT].table; - Column_stat column_stat(stat_table, table); + Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, table); Column_statistics *column_statistics= new_stats_cb->table_stats->column_stats; for (field_ptr= table_share->field; *field_ptr; @@ -3102,7 +3106,7 @@ read_statistics_for_table(THD *thd, TABLE *table, /* Read statistics from the statistical table index_stats */ stat_table= stat_tables[INDEX_STAT].table; - Index_stat index_stat(stat_table, table); + Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, table); Index_statistics *index_statistics= new_stats_cb->table_stats->index_stats; for (key_info= table_share->key_info, key_info_end= key_info + table_share->keys; @@ -3397,9 +3401,6 @@ end: The function is called when executing the statement DROP TABLE 'tab'. */ -/* Stack size 20248 with clang */ -PRAGMA_DISABLE_CHECK_STACK_FRAME - int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db, const LEX_CSTRING *tab) { @@ -3423,7 +3424,10 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db, /* Delete statistics on table from the statistical table index_stats */ stat_table= tables[INDEX_STAT].table; - Index_stat index_stat(stat_table, db, tab); + char statbuf[sizeof(Index_stat)]; + static_assert(sizeof(statbuf) >= sizeof(Table_stat), ""); + static_assert(sizeof(statbuf) >= sizeof(Column_stat), ""); + Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, db, tab); index_stat.set_full_table_name(); while (index_stat.find_next_stat_for_prefix(2)) { @@ -3434,7 +3438,7 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db, /* Delete statistics on table from the statistical table column_stats */ stat_table= tables[COLUMN_STAT].table; - Column_stat column_stat(stat_table, db, tab); + Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, db, tab); column_stat.set_full_table_name(); while (column_stat.find_next_stat_for_prefix(2)) { @@ -3445,7 +3449,7 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db, /* Delete statistics on table from the statistical table table_stats */ stat_table= tables[TABLE_STAT].table; - Table_stat table_stat(stat_table, db, tab); + Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, db, tab); table_stat.set_key_fields(); if (table_stat.find_stat()) { @@ -3468,7 +3472,6 @@ int delete_statistics_for_table(THD *thd, const LEX_CSTRING *db, new_trans.restore_old_transaction(); DBUG_RETURN(rc); } -PRAGMA_REENABLE_CHECK_STACK_FRAME /** @@ -3837,7 +3840,6 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab, int rc= 0; uint duplicate_counter= 0; List_iterator it(*indexes); - Alter_info::RENAME_INDEX_STAT_PARAMS *index; char tmp_name_buffer[32]; LEX_CSTRING tmp_name= {tmp_name_buffer, 0}; DBUG_ENTER("rename_indexes_in_stat_tables"); @@ -3858,15 +3860,16 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab, /* Rename index in the statistical table index_stat */ stat_table= tables.table; + char statbuf[sizeof(Index_stat)]; /* Loop over all indexes and rename to new name or temp name in case of conflicts */ - while ((index= it++)) + while (Alter_info::RENAME_INDEX_STAT_PARAMS *index= it++) { - Index_stat index_stat(stat_table, tab); + Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, tab); uint found= 0; /* We have to make a loop as one index may have many entries */ @@ -3934,12 +3937,11 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab, the final name. */ - Alter_info::RENAME_INDEX_STAT_PARAMS *index; it.rewind(); - Index_stat index_stat(stat_table, tab); + Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, tab); stat_table->file->ha_index_init(index_stat.stat_key_idx, 0); - while ((index= it++)) + while (Alter_info::RENAME_INDEX_STAT_PARAMS *index= it++) { int err __attribute__((unused)); @@ -4013,9 +4015,6 @@ int rename_indexes_in_stat_table(THD *thd, TABLE *tab, The function is called when executing any statement that renames a table */ -/* Stack size 20968 with clang */ -PRAGMA_DISABLE_CHECK_STACK_FRAME - int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db, const LEX_CSTRING *tab, const LEX_CSTRING *new_db, @@ -4040,10 +4039,15 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db, /* Rename table in the statistical table index_stats */ stat_table= tables[INDEX_STAT].table; - Index_stat index_stat(stat_table, db, tab); - index_stat.set_full_table_name(); + char statbuf[sizeof(Index_stat)]; + static_assert(sizeof(statbuf) >= sizeof(Table_stat), ""); + static_assert(sizeof(statbuf) >= sizeof(Column_stat), ""); - Stat_table_write_iter index_iter(&index_stat); + Index_stat &index_stat= *new(statbuf) Index_stat(stat_table, db, tab); + index_stat.set_full_table_name(); + char ibuf[sizeof(Stat_table_write_iter)]; + + auto &index_iter= *new(ibuf) Stat_table_write_iter(&index_stat); if (index_iter.init(2)) rc= 1; while (!index_iter.get_next_row()) @@ -4057,9 +4061,9 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db, /* Rename table in the statistical table column_stats */ stat_table= tables[COLUMN_STAT].table; - Column_stat column_stat(stat_table, db, tab); + Column_stat &column_stat= *new(statbuf) Column_stat(stat_table, db, tab); column_stat.set_full_table_name(); - Stat_table_write_iter column_iter(&column_stat); + auto &column_iter= *new(ibuf) Stat_table_write_iter(&column_stat); if (column_iter.init(2)) rc= 1; while (!column_iter.get_next_row()) @@ -4073,7 +4077,7 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db, /* Rename table in the statistical table table_stats */ stat_table= tables[TABLE_STAT].table; - Table_stat table_stat(stat_table, db, tab); + Table_stat &table_stat= *new(statbuf) Table_stat(stat_table, db, tab); table_stat.set_key_fields(); if (table_stat.find_stat()) { @@ -4093,7 +4097,6 @@ int rename_table_in_stat_tables(THD *thd, const LEX_CSTRING *db, new_trans.restore_old_transaction(); DBUG_RETURN(rc); } -PRAGMA_REENABLE_CHECK_STACK_FRAME /** diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 41978063f33..9f61dd13cf7 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -8011,7 +8011,7 @@ static bool mysql_inplace_alter_table(THD *thd, if (table->file->ha_prepare_inplace_alter_table(altered_table, ha_alter_info)) - goto rollback; + goto rollback_no_restore_lock; debug_crash_here("ddl_log_alter_after_prepare_inplace"); @@ -8067,21 +8067,17 @@ static bool mysql_inplace_alter_table(THD *thd, res= table->file->ha_inplace_alter_table(altered_table, ha_alter_info); thd->abort_on_warning= false; - if (start_alter_id && wait_for_master(thd)) - goto rollback; - - if (res) - goto rollback; - + if (res || (start_alter_id && wait_for_master(thd))) + goto rollback_no_restore_lock; DEBUG_SYNC(thd, "alter_table_inplace_before_lock_upgrade"); // Upgrade to EXCLUSIVE before commit. if (wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_RENAME)) - goto rollback; + goto rollback_no_restore_lock; /* Set MDL_BACKUP_DDL */ if (backup_reset_alter_copy_lock(thd)) - goto rollback; + goto rollback_no_restore_lock; /* Crashing here should cause the original table to be used */ debug_crash_here("ddl_log_alter_after_copy"); @@ -8110,7 +8106,7 @@ static bool mysql_inplace_alter_table(THD *thd, if (!(table->file->partition_ht()->flags & HTON_REQUIRES_NOTIFY_TABLEDEF_CHANGED_AFTER_COMMIT) && notify_tabledef_changed(table_list)) - goto rollback; + goto rollback_restore_lock; { TR_table trt(thd, true); @@ -8123,17 +8119,17 @@ static bool mysql_inplace_alter_table(THD *thd, if (!TR_table::use_transaction_registry) { my_error(ER_VERS_TRT_IS_DISABLED, MYF(0)); - goto rollback; + goto rollback_restore_lock; } if (trt.update(trx_start_id, trx_end_id)) - goto rollback; + goto rollback_restore_lock; } } if (table->file->ha_commit_inplace_alter_table(altered_table, ha_alter_info, true)) - goto rollback; + goto rollback_restore_lock; DEBUG_SYNC(thd, "alter_table_inplace_after_commit"); } @@ -8230,7 +8226,11 @@ static bool mysql_inplace_alter_table(THD *thd, DBUG_RETURN(commit_succeded_with_error); - rollback: +rollback_restore_lock: + /* Wait for backup if it is running */ + backup_reset_alter_copy_lock(thd); + +rollback_no_restore_lock: table->file->ha_commit_inplace_alter_table(altered_table, ha_alter_info, false); @@ -12414,7 +12414,7 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore, if (unlikely(mysql_trans_commit_alter_copy_data(thd))) error= 1; - err: +end: if (bulk_insert_started) (void) to->file->ha_end_bulk_insert(); @@ -12445,6 +12445,10 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, bool ignore, error= 1; thd_progress_end(thd); DBUG_RETURN(error > 0 ? -1 : 0); + +err: + backup_reset_alter_copy_lock(thd); + goto end; } diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index a595d550e0a..5bdff535250 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -445,6 +445,19 @@ static Sys_var_double Sys_analyze_sample_percentage( CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 100), DEFAULT(100)); +/* + The max length have to be UINT_MAX32 to not remove GEOMETRY fields + from analyze. +*/ + +static Sys_var_uint Sys_analyze_max_length( + "analyze_max_length", + "Fields which length in bytes more than this are skipped by ANALYZE " + "TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause", + SESSION_VAR(analyze_max_length), + CMD_LINE(REQUIRED_ARG), VALID_RANGE(32, UINT_MAX32), + DEFAULT(UINT_MAX32), BLOCK_SIZE(1)); + static Sys_var_ulong Sys_auto_increment_increment( "auto_increment_increment", "Auto-increment columns are incremented by this", diff --git a/sql/table_cache.cc b/sql/table_cache.cc index b804a3e0627..48cd63401e6 100644 --- a/sql/table_cache.cc +++ b/sql/table_cache.cc @@ -901,6 +901,7 @@ retry: { mysql_mutex_unlock(&element->LOCK_table_share); lf_hash_search_unpin(thd->tdc_hash_pins); + std::this_thread::yield(); goto retry; } lf_hash_search_unpin(thd->tdc_hash_pins); diff --git a/sql/threadpool_generic.cc b/sql/threadpool_generic.cc index 0a653474ffa..89d2a26d16a 100644 --- a/sql/threadpool_generic.cc +++ b/sql/threadpool_generic.cc @@ -715,6 +715,10 @@ static void stop_timer(pool_timer_t *timer) @return a ready connection, or NULL on shutdown */ + +/* ev[MAX_EVENTS] may bloat the stack frame beyond 16 KiB */ +PRAGMA_DISABLE_CHECK_STACK_FRAME + static TP_connection_generic * listener(worker_thread_t *current_thread, thread_group_t *thread_group) { @@ -830,6 +834,7 @@ static TP_connection_generic * listener(worker_thread_t *current_thread, DBUG_RETURN(retval); } +PRAGMA_REENABLE_CHECK_STACK_FRAME /** Adjust thread counters in group or global @@ -1157,6 +1162,9 @@ static bool too_many_threads(thread_group_t *thread_group) NULL is returned if timeout has expired,or on shutdown. */ +/* ev[MAX_EVENTS] may bloat the stack frame beyond 16 KiB */ +PRAGMA_DISABLE_CHECK_STACK_FRAME + TP_connection_generic *get_event(worker_thread_t *current_thread, thread_group_t *thread_group, struct timespec *abstime) { @@ -1262,6 +1270,7 @@ TP_connection_generic *get_event(worker_thread_t *current_thread, DBUG_RETURN(connection); } +PRAGMA_REENABLE_CHECK_STACK_FRAME diff --git a/sql/tztime.cc b/sql/tztime.cc index c98fb8ae8d0..1b861cb2f7b 100644 --- a/sql/tztime.cc +++ b/sql/tztime.cc @@ -2291,6 +2291,8 @@ str_to_offset(const char *str, uint length, long *offset) specification or other error. */ +PRAGMA_DISABLE_CHECK_STACK_FRAME + Time_zone * my_tz_find(THD *thd, const String *name) { @@ -2359,6 +2361,7 @@ my_tz_find(THD *thd, const String *name) DBUG_RETURN(result_tz); } +PRAGMA_REENABLE_CHECK_STACK_FRAME /** diff --git a/sql/wsrep_schema.cc b/sql/wsrep_schema.cc index f8acd876a5f..7a50a7c05e9 100644 --- a/sql/wsrep_schema.cc +++ b/sql/wsrep_schema.cc @@ -1819,9 +1819,9 @@ static void *allowlist_check_thread(void *param) Allowlist_check_arg *arg= (Allowlist_check_arg *) param; my_thread_init(); - THD thd(0); - thd.thread_stack= (char *) &thd; - wsrep_init_thd_for_schema(&thd); + THD *thd= new THD(0); + thd->thread_stack= (char *) thd; + wsrep_init_thd_for_schema(thd); int error; TABLE *allowlist_table= 0; @@ -1835,8 +1835,8 @@ static void *allowlist_check_thread(void *param) /* * Read allowlist table */ - Wsrep_schema_impl::init_stmt(&thd); - if (Wsrep_schema_impl::open_for_read(&thd, allowlist_table_str.c_str(), + Wsrep_schema_impl::init_stmt(thd); + if (Wsrep_schema_impl::open_for_read(thd, allowlist_table_str.c_str(), &allowlist_table_l) || (allowlist_table= allowlist_table_l.table, Wsrep_schema_impl::init_for_scan(allowlist_table))) @@ -1877,9 +1877,10 @@ static void *allowlist_check_thread(void *param) { goto out; } - Wsrep_schema_impl::finish_stmt(&thd); - (void) trans_commit(&thd); + Wsrep_schema_impl::finish_stmt(thd); + (void) trans_commit(thd); out: + delete thd; my_thread_end(); arg->response = match_found_or_empty; return 0; diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc index 6fd15e9468c..ad1dce6fe68 100644 --- a/storage/connect/ha_connect.cc +++ b/storage/connect/ha_connect.cc @@ -7019,9 +7019,6 @@ PRAGMA_REENABLE_CHECK_STACK_FRAME - user has file privilege */ -/* Stack size 16664 in clang */ -PRAGMA_DISABLE_CHECK_STACK_FRAME - bool ha_connect::FileExists(const char *fn, bool bf) { if (!fn || !*fn) @@ -7057,10 +7054,9 @@ bool ha_connect::FileExists(const char *fn, bool bf) if (n < 0) { if (errno != ENOENT) { - char buf[_MAX_PATH + 20]; - - snprintf(buf, sizeof(buf), "Error %d for file %s", errno, filename); - push_warning(table->in_use, Sql_condition::WARN_LEVEL_WARN, ER_UNKNOWN_ERROR, buf); + push_warning_printf(table->in_use, Sql_condition::WARN_LEVEL_WARN, + ER_UNKNOWN_ERROR, + "Error %d for file %s", errno, filename); return true; } else return false; @@ -7072,7 +7068,6 @@ bool ha_connect::FileExists(const char *fn, bool bf) return true; } // end of FileExists -PRAGMA_REENABLE_CHECK_STACK_FRAME // Called by SameString and NoFieldOptionChange bool ha_connect::CheckString(PCSZ str1, PCSZ str2) diff --git a/storage/connect/mysql-test/connect/r/part_table.result b/storage/connect/mysql-test/connect/r/part_table.result index 0cd4f0115a4..3152bdcecda 100644 --- a/storage/connect/mysql-test/connect/r/part_table.result +++ b/storage/connect/mysql-test/connect/r/part_table.result @@ -164,16 +164,16 @@ Warnings: Note 1105 xt1: 1 affected rows SELECT * FROM t1; id msg -4 four -7 sept 1 one -8 eight -40 forty 10 ten 11 eleven 35 thirty five -72 big +4 four +40 forty 60 big +7 sept +72 big +8 eight 81 big DELETE FROM t1 WHERE id in (60,72); Warnings: @@ -181,14 +181,14 @@ Note 1105 xt3: 2 affected rows Note 1105 xt3: 0 affected rows SELECT * FROM t1; id msg -4 four -7 sept 1 one -8 eight -40 forty 10 ten 11 eleven 35 thirty five +4 four +40 forty +7 sept +8 eight 81 big DROP TABLE t1; CREATE TABLE t1 ( diff --git a/storage/connect/mysql-test/connect/t/part_table.test b/storage/connect/mysql-test/connect/t/part_table.test index 0fb2a11f0f9..0be8563cd52 100644 --- a/storage/connect/mysql-test/connect/t/part_table.test +++ b/storage/connect/mysql-test/connect/t/part_table.test @@ -75,11 +75,14 @@ SELECT * FROM t1 WHERE id = 7; SELECT * FROM t1 WHERE id = 35; UPDATE t1 SET msg = 'number' WHERE id in (60,72); UPDATE t1 SET msg = 'soixante' WHERE id = 60; +--sorted_result SELECT * FROM t1 WHERE id > 50; UPDATE t1 SET msg = 'big' WHERE id > 50; UPDATE t1 SET msg = 'sept' WHERE id = 7; +--sorted_result SELECT * FROM t1; DELETE FROM t1 WHERE id in (60,72); +--sorted_result SELECT * FROM t1; DROP TABLE t1; diff --git a/storage/innobase/row/row0quiesce.cc b/storage/innobase/row/row0quiesce.cc index 9fe30709824..5c6440b276f 100644 --- a/storage/innobase/row/row0quiesce.cc +++ b/storage/innobase/row/row0quiesce.cc @@ -425,9 +425,6 @@ row_quiesce_write_header( Write the table meta data after quiesce. @return DB_SUCCESS or error code */ -/* Stack size 20904 with clang */ -PRAGMA_DISABLE_CHECK_STACK_FRAME - static MY_ATTRIBUTE((nonnull, warn_unused_result)) dberr_t row_quiesce_write_cfg( @@ -445,9 +442,10 @@ row_quiesce_write_cfg( FILE* file = fopen(name, "w+b"); - if (file == NULL) { - ib_errf(thd, IB_LOG_LEVEL_WARN, ER_CANT_CREATE_FILE, - name, errno, strerror(errno)); + if (!file) { +fail: + ib_senderrf(thd, IB_LOG_LEVEL_WARN, ER_CANT_CREATE_FILE, + name, errno, strerror(errno)); err = DB_IO_ERROR; } else { @@ -461,31 +459,18 @@ row_quiesce_write_cfg( err = row_quiesce_write_indexes(table, file, thd); } - if (fflush(file) != 0) { - - char msg[BUFSIZ]; - - snprintf(msg, sizeof(msg), "%s flush() failed", name); - - ib_senderrf( - thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR, - (ulong) errno, strerror(errno), msg); + if (fflush(file)) { + std::ignore = fclose(file); + goto fail; } - if (fclose(file) != 0) { - char msg[BUFSIZ]; - - snprintf(msg, sizeof(msg), "%s flose() failed", name); - - ib_senderrf( - thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR, - (ulong) errno, strerror(errno), msg); + if (fclose(file)) { + goto fail; } } return(err); } -PRAGMA_REENABLE_CHECK_STACK_FRAME /*********************************************************************//** Check whether a table has an FTS index defined on it. diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc index 0b9b5e3951c..16bccc4ad6b 100644 --- a/storage/innobase/trx/trx0purge.cc +++ b/storage/innobase/trx/trx0purge.cc @@ -1077,6 +1077,7 @@ static void trx_purge_close_tables(purge_node_t *node, THD *thd) noexcept void purge_sys_t::wait_FTS(bool also_sys) { + std::this_thread::yield(); for (const uint32_t mask= also_sys ? ~0U : ~PAUSED_SYS; m_FTS_paused & mask;) std::this_thread::sleep_for(std::chrono::milliseconds(10)); } diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index 8dfcd167c8d..1fd437225c8 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -3601,9 +3601,6 @@ static my_bool translog_is_LSN_chunk(uchar type) @retval 1 Error */ -/* Stack size 26120 from clang */ -PRAGMA_DISABLE_CHECK_STACK_FRAME - my_bool translog_init_with_table(const char *directory, uint32 log_file_max_size, uint32 server_version, @@ -3857,6 +3854,7 @@ my_bool translog_init_with_table(const char *directory, if (logs_found) { + TRANSLOG_PAGE_SIZE_BUFF psize_buff; TRANSLOG_ADDRESS current_page= sure_page; my_bool pageok; @@ -3897,7 +3895,6 @@ my_bool translog_init_with_table(const char *directory, do { TRANSLOG_VALIDATOR_DATA data; - TRANSLOG_PAGE_SIZE_BUFF psize_buff; uchar *page; data.addr= ¤t_page; if ((page= translog_get_page(&data, psize_buff.buffer, NULL)) == NULL) @@ -3946,7 +3943,6 @@ my_bool translog_init_with_table(const char *directory, if (logs_found && !old_log_was_recovered && old_flags == flags) { TRANSLOG_VALIDATOR_DATA data; - TRANSLOG_PAGE_SIZE_BUFF psize_buff; uchar *page; uint16 chunk_offset; data.addr= &last_valid_page; @@ -4237,7 +4233,6 @@ err: ma_message_no_user(0, "log initialization failed"); DBUG_RETURN(1); } -PRAGMA_REENABLE_CHECK_STACK_FRAME /* diff --git a/storage/maria/ma_open.c b/storage/maria/ma_open.c index 35578877a2f..da5d9dbd212 100644 --- a/storage/maria/ma_open.c +++ b/storage/maria/ma_open.c @@ -1558,7 +1558,7 @@ uint _ma_state_info_write(MARIA_SHARE *share, uint pWrite) @retval 1 Error */ -/* Stack size 26376 from clang */ +/* MARIA_STATE_INFO_SIZE + MARIA_STATE_EXTRA_SIZE == 25559 */ PRAGMA_DISABLE_CHECK_STACK_FRAME uint _ma_state_info_write_sub(File file, MARIA_STATE_INFO *state, uint pWrite) diff --git a/storage/maria/ma_pagecache.c b/storage/maria/ma_pagecache.c index 650732f9178..77e91a8615a 100644 --- a/storage/maria/ma_pagecache.c +++ b/storage/maria/ma_pagecache.c @@ -4913,6 +4913,7 @@ static int flush_cached_blocks(PAGECACHE *pagecache, @retval PCFLUSH_PINNED Pinned blocks was met and skipped. @retval PCFLUSH_PINNED_AND_ERROR PCFLUSH_ERROR and PCFLUSH_PINNED. */ +PRAGMA_DISABLE_CHECK_STACK_FRAME static int flush_pagecache_blocks_int(PAGECACHE *pagecache, PAGECACHE_FILE *file, @@ -5242,6 +5243,7 @@ int flush_pagecache_blocks_with_filter(PAGECACHE *pagecache, pagecache_pthread_mutex_unlock(&pagecache->cache_lock); DBUG_RETURN(res); } +PRAGMA_REENABLE_CHECK_STACK_FRAME /* diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index df9b2024086..3a7e2f39a30 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -277,6 +277,7 @@ int maria_recovery_from_log(void) @retval 0 OK @retval !=0 Error */ +PRAGMA_DISABLE_CHECK_STACK_FRAME int maria_apply_log(LSN from_lsn, LSN end_redo_lsn, LSN end_undo_lsn, enum maria_apply_log_way apply, @@ -562,6 +563,7 @@ end: */ DBUG_RETURN(error); } +PRAGMA_REENABLE_CHECK_STACK_FRAME /* very basic info about the record's header */ diff --git a/storage/mroonga/CMakeLists.txt b/storage/mroonga/CMakeLists.txt index bdda7716c0c..6135a4bc7fd 100644 --- a/storage/mroonga/CMakeLists.txt +++ b/storage/mroonga/CMakeLists.txt @@ -49,6 +49,14 @@ if(MSVC) message(FATAL_ERROR ${MRN_OLD_MSVC_MESSAGE}) endif() endif() +else() + STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" "" + CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" "" + CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" "" + CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") + MY_CHECK_AND_SET_COMPILER_FLAG(-Wframe-larger-than=49152) endif() if(MRN_BUNDLED) diff --git a/storage/mroonga/vendor/groonga/lib/expr.c b/storage/mroonga/vendor/groonga/lib/expr.c index b4de00b2406..f3e59abf5eb 100644 --- a/storage/mroonga/vendor/groonga/lib/expr.c +++ b/storage/mroonga/vendor/groonga/lib/expr.c @@ -2459,6 +2459,10 @@ grn_proc_call(grn_ctx *ctx, grn_obj *proc, int nargs, grn_obj *caller) } \ } while (0) +#ifdef __GNUC__ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wframe-larger-than=" +#endif inline static void grn_expr_exec_get_member_vector(grn_ctx *ctx, grn_obj *expr, @@ -3834,6 +3838,9 @@ exit : } GRN_API_RETURN(val); } +#ifdef __GNUC__ +# pragma GCC diagnostic pop +#endif grn_obj * grn_expr_get_value(grn_ctx *ctx, grn_obj *expr, int offset) diff --git a/storage/perfschema/unittest/pfs_instr-t.cc b/storage/perfschema/unittest/pfs_instr-t.cc index 55c4f61997b..90f1cb4bf99 100644 --- a/storage/perfschema/unittest/pfs_instr-t.cc +++ b/storage/perfschema/unittest/pfs_instr-t.cc @@ -86,8 +86,6 @@ void test_no_instruments() cleanup_instruments(); } -PRAGMA_DISABLE_CHECK_STACK_FRAME - void test_no_instances() { int rc; @@ -218,7 +216,7 @@ void test_no_instances() ok(file == NULL, "no file"); ok(global_file_container.m_lost == 4, "lost 4"); - char long_file_name[10000]; + char long_file_name[5000]; int size= sizeof(long_file_name); memset(long_file_name, 'X', size); @@ -247,7 +245,6 @@ void test_no_instances() cleanup_file_hash(); cleanup_instruments(); } -PRAGMA_REENABLE_CHECK_STACK_FRAME void test_with_instances() { diff --git a/storage/rocksdb/CMakeLists.txt b/storage/rocksdb/CMakeLists.txt index 10f480fb5ae..e91d317411d 100644 --- a/storage/rocksdb/CMakeLists.txt +++ b/storage/rocksdb/CMakeLists.txt @@ -9,6 +9,13 @@ SET(CPACK_RPM_rocksdb-engine_PACKAGE_SUMMARY "RocksDB storage engine for MariaDB SET(CPACK_RPM_rocksdb-engine_PACKAGE_DESCRIPTION "The RocksDB storage engine is a high performance storage engine, aimed at maximising storage efficiency while maintaining InnoDB-like performance." PARENT_SCOPE) +STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" "" + CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" "" + CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") +STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" "" + CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") +MY_CHECK_AND_SET_COMPILER_FLAG(-Wframe-larger-than=32768) MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-range-loop-construct) MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-effc++ DEBUG RELWITHDEBINFO) diff --git a/storage/spider/mysql-test/spider/bg/r/basic_sql.result b/storage/spider/mysql-test/spider/bg/r/basic_sql.result index 94a09fc317b..c28e69002b6 100644 --- a/storage/spider/mysql-test/spider/bg/r/basic_sql.result +++ b/storage/spider/mysql-test/spider/bg/r/basic_sql.result @@ -232,20 +232,6 @@ a b date_format(c, '%Y-%m-%d %H:%i:%s') 4 i 2003-10-30 05:01:03 5 h 2001-10-31 23:59:59 -select sql_calc_found_rows -connection master_1; -SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l -ORDER BY a LIMIT 4; -a b date_format(c, '%Y-%m-%d %H:%i:%s') -1 f 2008-07-01 10:21:39 -2 g 2000-02-01 00:00:00 -3 j 2007-05-04 20:03:11 -4 i 2003-10-30 05:01:03 -connection master_1; -SELECT found_rows(); -found_rows() -5 - select high_priority connection master_1; SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l diff --git a/storage/spider/mysql-test/spider/bg/t/basic_sql.test b/storage/spider/mysql-test/spider/bg/t/basic_sql.test index 72a9b76cb14..24fa4314097 100644 --- a/storage/spider/mysql-test/spider/bg/t/basic_sql.test +++ b/storage/spider/mysql-test/spider/bg/t/basic_sql.test @@ -847,52 +847,6 @@ if ($USE_CHILD_GROUP2) } } ---echo ---echo select sql_calc_found_rows -if ($USE_CHILD_GROUP2) -{ - if (!$OUTPUT_CHILD_GROUP2) - { - --disable_query_log - --disable_result_log - } - --connection child2_1 - if ($USE_GENERAL_LOG) - { - TRUNCATE TABLE mysql.general_log; - } - if (!$OUTPUT_CHILD_GROUP2) - { - --enable_query_log - --enable_result_log - } -} ---connection master_1 -SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l -ORDER BY a LIMIT 4; -if ($USE_CHILD_GROUP2) -{ - if (!$OUTPUT_CHILD_GROUP2) - { - --disable_query_log - --disable_result_log - } - --connection child2_1 - if ($USE_GENERAL_LOG) - { - SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %'; - } - if (!$OUTPUT_CHILD_GROUP2) - { - --enable_query_log - --enable_result_log - } -} ---connection master_1 ---disable_ps2_protocol -SELECT found_rows(); ---enable_ps2_protocol - --echo --echo select high_priority if ($USE_CHILD_GROUP2) diff --git a/storage/spider/mysql-test/spider/bugfix/include/mdev_21884_init.inc b/storage/spider/mysql-test/spider/bugfix/include/mdev_21884_init.inc index 68a496a7d5f..9a5294c537f 100644 --- a/storage/spider/mysql-test/spider/bugfix/include/mdev_21884_init.inc +++ b/storage/spider/mysql-test/spider/bugfix/include/mdev_21884_init.inc @@ -43,8 +43,6 @@ let $CHILD2_1_CREATE_TABLES= PRIMARY KEY(a,b) ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; --let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES -let $CHILD2_1_SELECT_TABLES= - SELECT pkey, txt FROM tbl_a ORDER BY pkey; let $CHILD2_1_SELECT_TABLES= SELECT a, b, c FROM ta_r2 ORDER BY a $STR_SEMICOLON SELECT a, b, c FROM ta_r3 ORDER BY a; diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_20100.test b/storage/spider/mysql-test/spider/bugfix/t/mdev_20100.test index a440b370077..e4fd021d799 100644 --- a/storage/spider/mysql-test/spider/bugfix/t/mdev_20100.test +++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_20100.test @@ -58,25 +58,33 @@ TRUNCATE TABLE mysql.general_log; --connection master_1 --disable_ps2_protocol +--disable_view_protocol SELECT a, b, c FROM tbl_a PARTITION (pt2) WHERE b = 'c'; +--enable_view_protocol SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2); +--disable_view_protocol SELECT a, b, c FROM tbl_a PARTITION (pt3) WHERE b = 'c'; +--enable_view_protocol SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2); +--disable_view_protocol SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c'; +--enable_view_protocol SELECT a, b, c FROM tbl_a PARTITION (pt1,pt3); +--disable_view_protocol SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c'; +--enable_view_protocol SELECT a, b, c FROM tbl_a PARTITION (pt2,pt3); --enable_ps2_protocol --connection child2_1 ---disable_ps2_protocol --disable_view_protocol +--disable_ps2_protocol eval $CHILD2_1_SELECT_ARGUMENT1; ---enable_view_protocol --enable_ps2_protocol --disable_ps_protocol eval $CHILD2_1_SELECT_TABLES; --enable_ps_protocol +--enable_view_protocol --echo --echo deinit diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_21884.test b/storage/spider/mysql-test/spider/bugfix/t/mdev_21884.test index 01a2a1a1171..3b742e37655 100644 --- a/storage/spider/mysql-test/spider/bugfix/t/mdev_21884.test +++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_21884.test @@ -85,10 +85,10 @@ SET NAMES utf8; --disable_ps2_protocol eval $CHILD2_1_SELECT_ARGUMENT1; --enable_ps2_protocol ---enable_view_protocol --disable_ps_protocol eval $CHILD2_1_SELECT_TABLES; --enable_ps_protocol +--enable_view_protocol --echo --echo deinit diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_29352.test b/storage/spider/mysql-test/spider/bugfix/t/mdev_29352.test index 626364efb99..52ad36735bd 100644 --- a/storage/spider/mysql-test/spider/bugfix/t/mdev_29352.test +++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_29352.test @@ -4,7 +4,9 @@ FLUSH TABLES WITH READ LOCK; --error ER_CANT_UPDATE_WITH_READLOCK CREATE FUNCTION spider_bg_direct_sql RETURNS INT SONAME 'ha_spider.so'; +--disable_view_protocol SELECT * FROM t; +--enable_view_protocol --source include/restart_mysqld.inc diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_33434.test b/storage/spider/mysql-test/spider/bugfix/t/mdev_33434.test index dd9f882f42e..810b70f8fca 100644 --- a/storage/spider/mysql-test/spider/bugfix/t/mdev_33434.test +++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_33434.test @@ -4,8 +4,10 @@ INSTALL SONAME 'ha_spider'; SET character_set_connection=ucs2; +--disable_view_protocol --error ER_CONNECT_TO_FOREIGN_DATA_SOURCE SELECT SPIDER_DIRECT_SQL('SELECT SLEEP(1)', '', 'srv "dummy", port "3307"'); +--enable_view_protocol --disable_query_log --source ../../include/clean_up_spider.inc --enable_query_log diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_34555.test b/storage/spider/mysql-test/spider/bugfix/t/mdev_34555.test index 3a1cf604140..b1fcae38e2a 100644 --- a/storage/spider/mysql-test/spider/bugfix/t/mdev_34555.test +++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_34555.test @@ -9,6 +9,7 @@ OPTIONS (SOCKET "$MASTER_1_MYSOCK", DATABASE '',user 'Spider', password 'foo'); CREATE TABLE tSpider (a INT) ENGINE=Spider COMMENT='WRAPPER "mysql",SRV "srv",TABLE "t"'; CREATE TABLE t2 (c INT,c2 CHAR(1)) ENGINE=Spider COMMENT='WRAPPER "mysql",SRV "srv",TABLE "t"'; XA START 'a'; +--disable_view_protocol --disable_result_log --error 0,ER_CONNECT_TO_FOREIGN_DATA_SOURCE SELECT * FROM information_schema.table_constraints; @@ -22,6 +23,7 @@ SELECT * FROM t2; SELECT SLEEP (1); --error ER_CONNECT_TO_FOREIGN_DATA_SOURCE SELECT * FROM t2; +--enable_view_protocol xa end 'a'; xa rollback 'a'; drop table tSpider, t2; diff --git a/storage/spider/mysql-test/spider/bugfix/t/perfschema.test b/storage/spider/mysql-test/spider/bugfix/t/perfschema.test index 9346d2b5aa3..cb9e5f1ad1d 100644 --- a/storage/spider/mysql-test/spider/bugfix/t/perfschema.test +++ b/storage/spider/mysql-test/spider/bugfix/t/perfschema.test @@ -7,8 +7,10 @@ enable_query_log; --echo # MDEV-33031 Assertion failure upon reading from performance schema with binlog enabled --echo # connect foo,localhost,root; +--disable_view_protocol select variable_name, variable_value from performance_schema.status_by_thread where variable_name like '%spider_direct_aggregate%'; +--enable_view_protocol disconnect foo; connection default; diff --git a/storage/spider/mysql-test/spider/r/basic_sql.result b/storage/spider/mysql-test/spider/r/basic_sql.result index 2443f3488bd..9b8ca4e08d1 100644 --- a/storage/spider/mysql-test/spider/r/basic_sql.result +++ b/storage/spider/mysql-test/spider/r/basic_sql.result @@ -232,20 +232,6 @@ a b date_format(c, '%Y-%m-%d %H:%i:%s') 4 i 2003-10-30 05:01:03 5 h 2001-10-31 23:59:59 -select sql_calc_found_rows -connection master_1; -SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l -ORDER BY a LIMIT 4; -a b date_format(c, '%Y-%m-%d %H:%i:%s') -1 f 2008-07-01 10:21:39 -2 g 2000-02-01 00:00:00 -3 j 2007-05-04 20:03:11 -4 i 2003-10-30 05:01:03 -connection master_1; -SELECT found_rows(); -found_rows() -5 - select high_priority connection master_1; SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l diff --git a/storage/spider/mysql-test/spider/regression/e1121/t/direct_join_by_pkey_key.test b/storage/spider/mysql-test/spider/regression/e1121/t/direct_join_by_pkey_key.test index fd61b986cb1..7c7c1dc69ce 100644 --- a/storage/spider/mysql-test/spider/regression/e1121/t/direct_join_by_pkey_key.test +++ b/storage/spider/mysql-test/spider/regression/e1121/t/direct_join_by_pkey_key.test @@ -60,6 +60,7 @@ INSERT INTO tbl_b (bkey,akey) VALUES (0,0),(1,1),(2,2),(3,3),(4,4),(5,4),(6,3),( --connection child2_1 TRUNCATE TABLE mysql.general_log; +--disable_view_protocol --connection master_1 --disable_ps2_protocol SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5; @@ -67,11 +68,10 @@ SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5; --connection child2_1 --disable_ps_protocol ---disable_view_protocol eval $CHILD2_1_SELECT_ARGUMENT1; ---enable_view_protocol eval $CHILD2_1_SELECT_TABLES; --enable_ps_protocol +--enable_view_protocol --echo --echo deinit diff --git a/storage/spider/mysql-test/spider/regression/e1121/t/direct_join_by_pkey_pkey.test b/storage/spider/mysql-test/spider/regression/e1121/t/direct_join_by_pkey_pkey.test index cc272be51b5..dd442272996 100644 --- a/storage/spider/mysql-test/spider/regression/e1121/t/direct_join_by_pkey_pkey.test +++ b/storage/spider/mysql-test/spider/regression/e1121/t/direct_join_by_pkey_pkey.test @@ -69,8 +69,8 @@ SELECT a.val, a.akey FROM tbl_a a, tbl_b b WHERE a.akey = b.akey AND b.bkey = 5; --disable_ps_protocol --disable_view_protocol eval $CHILD2_1_SELECT_ARGUMENT1; ---enable_view_protocol eval $CHILD2_1_SELECT_TABLES; +--enable_view_protocol --enable_ps_protocol --echo diff --git a/storage/spider/mysql-test/spider/t/basic_sql.test b/storage/spider/mysql-test/spider/t/basic_sql.test index b5a9b2f41cd..9439d01d9d9 100644 --- a/storage/spider/mysql-test/spider/t/basic_sql.test +++ b/storage/spider/mysql-test/spider/t/basic_sql.test @@ -847,52 +847,6 @@ if ($USE_CHILD_GROUP2) } } ---echo ---echo select sql_calc_found_rows -if ($USE_CHILD_GROUP2) -{ - if (!$OUTPUT_CHILD_GROUP2) - { - --disable_query_log - --disable_result_log - } - --connection child2_1 - if ($USE_GENERAL_LOG) - { - TRUNCATE TABLE mysql.general_log; - } - if (!$OUTPUT_CHILD_GROUP2) - { - --enable_query_log - --enable_result_log - } -} ---connection master_1 -SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l -ORDER BY a LIMIT 4; -if ($USE_CHILD_GROUP2) -{ - if (!$OUTPUT_CHILD_GROUP2) - { - --disable_query_log - --disable_result_log - } - --connection child2_1 - if ($USE_GENERAL_LOG) - { - SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %'; - } - if (!$OUTPUT_CHILD_GROUP2) - { - --enable_query_log - --enable_result_log - } -} ---connection master_1 ---disable_ps2_protocol -SELECT found_rows(); ---enable_ps2_protocol - --echo --echo select high_priority if ($USE_CHILD_GROUP2) diff --git a/storage/spider/spd_db_conn.cc b/storage/spider/spd_db_conn.cc index 47464b0b9ab..7c670450e58 100644 --- a/storage/spider/spd_db_conn.cc +++ b/storage/spider/spd_db_conn.cc @@ -9329,6 +9329,7 @@ error: DBUG_RETURN(error_num); } +PRAGMA_DISABLE_CHECK_STACK_FRAME bool spider_db_conn_is_network_error( int error_num ) { @@ -9345,3 +9346,4 @@ bool spider_db_conn_is_network_error( } DBUG_RETURN(FALSE); } +PRAGMA_REENABLE_CHECK_STACK_FRAME diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc index 63d29e69de4..45d2c966fb7 100644 --- a/storage/spider/spd_db_mysql.cc +++ b/storage/spider/spd_db_mysql.cc @@ -8897,12 +8897,13 @@ int spider_mbase_handler::append_key_select_part( default: DBUG_RETURN(0); } - error_num = append_key_select(str, idx); + error_num = append_key_select(str, sql_type, idx); DBUG_RETURN(error_num); } int spider_mbase_handler::append_key_select( spider_string *str, + ulong sql_type, uint idx ) { st_select_lex *select_lex = NULL; @@ -8951,6 +8952,7 @@ int spider_mbase_handler::append_key_select( str->q_append(SPIDER_SQL_COMMA_STR, SPIDER_SQL_COMMA_LEN); } str->length(str->length() - SPIDER_SQL_COMMA_LEN); + DBUG_RETURN(append_from(str, sql_type, first_link_idx)); } else { table_name_pos = str->length() + mysql_share->key_select_pos[idx]; if (str->append(mysql_share->key_select[idx])) diff --git a/storage/spider/spd_db_mysql.h b/storage/spider/spd_db_mysql.h index 52a50e2958a..5dc5218e6f1 100644 --- a/storage/spider/spd_db_mysql.h +++ b/storage/spider/spd_db_mysql.h @@ -877,6 +877,7 @@ public: ) override; int append_key_select( spider_string *str, + ulong sql_type, uint idx ); int append_minimum_select_part( diff --git a/strings/uca-dump.c b/strings/uca-dump.c index 989fe98f48a..10dc82e1a3d 100644 --- a/strings/uca-dump.c +++ b/strings/uca-dump.c @@ -24,7 +24,7 @@ #include "m_ctype.h" #include "ctype-uca.h" - +PRAGMA_DISABLE_CHECK_STACK_FRAME #define MAX_ALLOWED_CODE 0x10FFFF @@ -398,7 +398,7 @@ static const char *pname_prefix[]= {"_p", "_p", "_p"}; static const char *pname_suffix[]= {"", "_secondary", "_tertiary"}; -void usage(const char *prog) +static void usage(const char *prog) { printf("Usage:\n"); printf("%s [options] filename\n", prog); @@ -411,7 +411,7 @@ static inline int lstrncmp(const char *str, const LEX_CSTRING lstr) } -int process_option(OPT *options, const char *opt) +static int process_option(OPT *options, const char *opt) { static const LEX_CSTRING opt_name_prefix= {STRING_WITH_LEN("--name-prefix=")}; static const LEX_CSTRING opt_levels= {STRING_WITH_LEN("--levels=")}; @@ -458,7 +458,7 @@ int process_option(OPT *options, const char *opt) } -int process_options(OPT *options, int ac, char **av) +static int process_options(OPT *options, int ac, char **av) { int i; for (i= 1; i < ac; i++) @@ -484,7 +484,7 @@ int process_options(OPT *options, int ac, char **av) } -FILE *open_file(const char *name) +static FILE *open_file(const char *name) { if (!strcmp(name, "-")) return stdin; @@ -492,14 +492,14 @@ FILE *open_file(const char *name) } -void close_file(FILE *file) +static void close_file(FILE *file) { if (file != stdin) fclose(file); } -char *strrtrim(char *str) +static char *strrtrim(char *str) { char *end= str + strlen(str); for ( ; str < end; end--) @@ -524,7 +524,7 @@ char *strrtrim(char *str) of them at the moment, it was easier to write these routines in ctype-uca.h manually. So @implicitweights lines are ignored here. */ -my_bool parse_at_line(MY_DUCET *ducet, const char *str) +static my_bool parse_at_line(MY_DUCET *ducet, const char *str) { static const LEX_CSTRING version= {STRING_WITH_LEN("@version ")}; if (!lstrncmp(str, version)) @@ -994,3 +994,4 @@ int main(int ac, char **av) return 0; } +PRAGMA_REENABLE_CHECK_STACK_FRAME