From 2b448e73371f464e0361fe18073ce774cbf76115 Mon Sep 17 00:00:00 2001 From: Monty Date: Thu, 17 Apr 2025 10:51:48 +0300 Subject: [PATCH 01/16] print_ddl_recovery_log.pl ; Print content of the ddl_recovery.log --- .gitignore | 1 + scripts/CMakeLists.txt | 4 +- scripts/print_ddl_recovery_log.pl.in | 120 +++++++++++++++++++++++++++ 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100755 scripts/print_ddl_recovery_log.pl.in diff --git a/.gitignore b/.gitignore index a8f67d111c3..199776274e7 100644 --- a/.gitignore +++ b/.gitignore @@ -133,6 +133,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/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; From d3c5c47e0e8ba4cbca2b47e80a874841f7ba6108 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Wed, 2 Apr 2025 14:20:25 +1100 Subject: [PATCH 02/16] MDEV-36324 MDEV-35452 Missing appending FROM ... in spider_mbase_handler::append_key_select The missing append_from causes ill-formed query construction. This fixes spider/bugfix.mdev_35874 with --view-protocol. --- storage/spider/spd_db_mysql.cc | 4 +++- storage/spider/spd_db_mysql.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc index b0c56b0376a..7cf3d2013cc 100644 --- a/storage/spider/spd_db_mysql.cc +++ b/storage/spider/spd_db_mysql.cc @@ -8889,12 +8889,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; @@ -8943,6 +8944,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 ac00217ff4c..b9995faca7e 100644 --- a/storage/spider/spd_db_mysql.h +++ b/storage/spider/spd_db_mysql.h @@ -887,6 +887,7 @@ public: ) override; int append_key_select( spider_string *str, + ulong sql_type, uint idx ); int append_minimum_select_part( From 9089a75b7f63de4e487ec40c45dd2824f5d07b9a Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Tue, 15 Apr 2025 14:30:35 +1000 Subject: [PATCH 03/16] MDEV-36477 MDEV-35452 Fix Spider tests with view protocol fail with "Failed to drop view: 0: " The failure is caused by exec $stmt where $stmt has two queries. mtr with view protocol transforms the first query into a view, leaving the second query executed in the usual way. mtr being oblivious about the second query then does not handle its results, resulting in CR_COMMANDS_OUT_OF_SYNC. We disable view protocol for such edge cases. After fixing these "Failed to drop view: 0: " further failures emerge from two of the tests, which are the same problem as MDEV-36454, so we fix them to by disabling view protocol for the relevant SELECTs. --- .../spider/bugfix/include/mdev_21884_init.inc | 2 -- .../mysql-test/spider/bugfix/t/mdev_20100.test | 12 ++++++++++-- .../mysql-test/spider/bugfix/t/mdev_21884.test | 2 +- .../regression/e1121/t/direct_join_by_pkey_key.test | 4 ++-- .../regression/e1121/t/direct_join_by_pkey_pkey.test | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) 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 25455ffcdf1..117899b0b69 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/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 From 08793310fb5b46e39057ba110661dd69d0201639 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Wed, 16 Apr 2025 14:45:21 +1000 Subject: [PATCH 04/16] MDEV-36478 MDEV-35452 Remove blocks testing SELECT SQL_CALC_FOUND_ROWS from spider tests Spider tables do not support SELECT SQL_CALC_FOUND_ROWS and the correct test output is a coincidence. Debugging shows that the limit_found_rows field was last updated in an unrelated statement: SELECT STRAIGHT_JOIN a.a, a.b, date_format(b.c, '%Y-%m-%d %H:%i:%s')\nFROM ta_l a, tb_l b WHERE a.a = b.a ORDER BY a.a As a byproduct, this fixes the "wrong found_rows() results" when running these tests with view protocol. --- .../mysql-test/spider/bg/r/basic_sql.result | 14 ------ .../mysql-test/spider/bg/t/basic_sql.test | 46 ------------------- .../spider/handler/r/basic_sql.result | 14 ------ .../spider/handler/t/basic_sql.test | 46 ------------------- .../mysql-test/spider/r/basic_sql.result | 14 ------ .../spider/mysql-test/spider/t/basic_sql.test | 46 ------------------- 6 files changed, 180 deletions(-) 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 3aae2e34455..5278a27dd24 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 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/handler/r/basic_sql.result b/storage/spider/mysql-test/spider/handler/r/basic_sql.result index 94a09fc317b..c28e69002b6 100644 --- a/storage/spider/mysql-test/spider/handler/r/basic_sql.result +++ b/storage/spider/mysql-test/spider/handler/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/handler/t/basic_sql.test b/storage/spider/mysql-test/spider/handler/t/basic_sql.test index 6421198fa95..c16d77d66e6 100644 --- a/storage/spider/mysql-test/spider/handler/t/basic_sql.test +++ b/storage/spider/mysql-test/spider/handler/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 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/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/t/basic_sql.test b/storage/spider/mysql-test/spider/t/basic_sql.test index ee77eacd885..5b8fb85aa31 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 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) From b1446080d1e51808d188ded024b2fa2a6f5288f7 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Wed, 16 Apr 2025 17:31:39 +1000 Subject: [PATCH 05/16] MDEV-36476 MDEV-35452 Disable view protocol for spider tests where thread metadata could prevent lock wait timeout In spider/bugfix.mdev_29352, with flush tables with read lock, statements blocked in THD::has_read_only_protection() by checking THD::global_read_lock could result in view protocol to "hang" waiting for acquiring mdl in another THD. In spider/bugfix.mdev_34555, within an XA transaction, statements blocked by trans_check() by checking thd->transaction->xid_state could result in view protocol to "hang" for the same reason. Therefore we disable view protocol for relevant statements in these tests. --- storage/spider/mysql-test/spider/bugfix/t/mdev_29352.test | 2 ++ storage/spider/mysql-test/spider/bugfix/t/mdev_34555.test | 2 ++ 2 files changed, 4 insertions(+) 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_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; From 5c92b27d5433df7558f41ac5718481f87bdfa544 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 17 Apr 2025 15:35:38 +1000 Subject: [PATCH 06/16] MDEV-36633 MDEV-35452 spider/bugfix.mdev_33434 reports wrong error in view protocol With view protocol collation_connection is reset in mysql_make_view in the "SELECT * FROM mysqltest_tmp_v" query. In the case of spider/bugfix.mdev_33434, it is reset to latin1_swedish_ci, with the latin1 charset. This results in no conversion needed since it is the same as character_set_client and the corresponding argument in the udf remains unchanged, with "dummy" srv value. Thus the reported error is 1477: 'The foreign server name you are trying to reference does not exist. Data source error: dummy' Without view protocol, the character_set_connection ucs2 setting in the test survives, and the conversion results in empty connection parameters, and the reported error is 1429 ER_CONNECT_TO_FOREIGN_DATA_SOURCE This failure is irrelevant to the test, or to spider at all. Therefore we disable view protocol for the statement. --- storage/spider/mysql-test/spider/bugfix/t/mdev_33434.test | 2 ++ 1 file changed, 2 insertions(+) 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 From 1b934a387ccfa91dd0cbbc3e4fd200fabe1b7fc1 Mon Sep 17 00:00:00 2001 From: Monty Date: Mon, 21 Apr 2025 19:12:58 +0300 Subject: [PATCH 07/16] MDEV-36536 Add option to not collect statistics for long char/varchars This is needed to make it easy for users to automatically ignore long char and varchars when using ANALYZE TABLE PERSISTENT. These fields can cause problems as they will consume 'CHARACTERS * MAX_CHARACTER_LENGTH * 2 * number_of_rows' space on disk during analyze, which can easily be much bigger than the analyzed table. This commit adds a new user variable, analyze_max_length, default value 4G. Any field that is bigger than this in bytes, will be ignored by ANALYZE TABLE PERSISTENT unless it is specified in FOR COLUMNS(). While doing this patch, I noticed that we do not skip GEOMETRY columns from ANALYZE TABLE, like we do with BLOB. This should be fixed when merging to the 'main' branch. At the same time we should add a resonable default value for analyze_max_length, probably 1024, like we have for max_sort_length. --- mysql-test/main/analyze.result | 51 +++++++++++++++++++ mysql-test/main/analyze.test | 20 ++++++++ mysql-test/main/mysqld--help.result | 4 ++ mysql-test/main/mysqld--help.test | 4 +- .../sys_vars/r/sysvars_server_embedded.result | 10 ++++ .../r/sysvars_server_notembedded.result | 10 ++++ sql/sql_admin.cc | 5 +- sql/sql_class.h | 1 + sql/sys_vars.cc | 14 +++++ 9 files changed, 115 insertions(+), 4 deletions(-) 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 8857aff2fc2..f4aa81e0d66 100644 --- a/mysql-test/main/mysqld--help.result +++ b/mysql-test/main/mysqld--help.result @@ -15,6 +15,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 that require more storage than analyze_max_length + and are not listed in ANALYZE ... FOR COLUMNS () will + automatically be skipped by ANALYZE TABLE PERSISTENT --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 971983fd66c..44449cd3ad5 100644 --- a/mysql-test/main/mysqld--help.test +++ b/mysql-test/main/mysqld--help.test @@ -20,14 +20,14 @@ 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 datadir slave-load-tmpdir tmpdir socket thread-pool-size large-files-support lower-case-file-system system-time-zone collation-server character-set-server log-tc-size table-cache table-open-cache table-open-cache-instances max-connections - server-uid tls-version version.*/; + server-uid tls-version version.* analyze-max-length/; # Plugins which may or may not be there: @plugins=qw/innodb archive blackhole federated partition s3 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 7ec89b4dbf3..9eb4e5687d1 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -22,6 +22,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 BIGINT UNSIGNED +VARIABLE_COMMENT Fields which length in bytes are more than analyze_max_length 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 c8f0760e38b..7f08e1bbfc2 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -22,6 +22,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 BIGINT UNSIGNED +VARIABLE_COMMENT Fields that require more storage than analyze_max_length and are not listed in ANALYZE ... FOR COLUMNS () will automatically be skipped by ANALYZE TABLE PERSISTENT +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/sql/sql_admin.cc b/sql/sql_admin.cc index fd2d5178f1d..1d578266c98 100644 --- a/sql/sql_admin.cc +++ b/sql/sql_admin.cc @@ -988,8 +988,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_class.h b/sql/sql_class.h index 69b021cd41d..aac433181a4 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -731,6 +731,7 @@ typedef struct system_variables ha_rows select_limit; ha_rows max_join_size; ha_rows expensive_subquery_limit; + ulong analyze_max_length; ulong auto_increment_increment, auto_increment_offset; #ifdef WITH_WSREP /* diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 0d4a8e4c6fe..4ae14a58feb 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -445,6 +445,20 @@ 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_ulong Sys_analyze_max_length( + "analyze_max_length", + "Fields that require more storage than analyze_max_length and are not " + "listed in ANALYZE ... FOR COLUMNS () will automatically be skipped by " + "ANALYZE TABLE PERSISTENT", + 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", From d9cd4e1f752a730b58ed9ccb2a05647163a8ae05 Mon Sep 17 00:00:00 2001 From: Monty Date: Tue, 22 Apr 2025 16:54:25 +0300 Subject: [PATCH 08/16] MDEV-22250 InnoDB: Failing assertion: opt_no_lock during mariabackup --backup Ensure that backup_reset_alter_copy_lock() is called in case of rollback or error in mysql_inplace_alter_table() or copy_data_between_tables(). Other things: - Improved error from mariabackup when unexpected DDL operation is encountered. - Added assert if backup_ddl_log() is called in the wrong context. --- extra/mariabackup/xtrabackup.cc | 15 ++++++++++++--- sql/backup.cc | 14 +++++++++++++- sql/sql_table.cc | 28 ++++++++++++++++++---------- 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index 33d172de82e..d44c7a6a4d1 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -974,6 +974,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; switch(type) { case FILE_CREATE: @@ -981,6 +982,7 @@ static void backup_file_op_fail(uint32_t space_id, int type, space_id, int(len), name); fail = !check_if_skip_table( filename_to_spacename(name, len).c_str()); + error= "create"; break; case FILE_MODIFY: break; @@ -991,12 +993,14 @@ static void backup_file_op_fail(uint32_t space_id, int type, filename_to_spacename(name, len).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( filename_to_spacename(name, len).c_str()); msg("DDL tracking : delete %" PRIu32 " \"%.*s\"", space_id, int(len), name); + error= "delete"; break; default: ut_ad(0); @@ -1004,9 +1008,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/sql/backup.cc b/sql/backup.cc index 1496ee953a6..d6d7c25f4c5 100644 --- a/sql/backup.cc +++ b/sql/backup.cc @@ -50,6 +50,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); @@ -67,6 +68,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) @@ -139,6 +141,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); @@ -173,6 +176,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 @@ -422,6 +426,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 @@ -476,7 +481,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); @@ -601,6 +606,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_table.cc b/sql/sql_table.cc index bf032d3ca03..3a963403d65 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -7680,7 +7680,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"); @@ -7732,16 +7732,16 @@ 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 (res) - goto rollback; + 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"); @@ -7770,7 +7770,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); @@ -7783,17 +7783,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"); } @@ -7890,7 +7890,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); @@ -11825,7 +11829,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(); @@ -11856,6 +11860,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; } From 739578915f3ead1c86d8b4d03e7d1dd81a1ebfa0 Mon Sep 17 00:00:00 2001 From: Oleksandr Byelkin Date: Mon, 28 Apr 2025 17:47:45 +0200 Subject: [PATCH 09/16] Make the test more stable. --- .../mysql-test/connect/r/part_table.result | 18 +++++++++--------- .../mysql-test/connect/t/part_table.test | 3 +++ 2 files changed, 12 insertions(+), 9 deletions(-) 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; From 83e0438f628450dc88af59425da3ece5dfa746a0 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 29 Apr 2025 11:34:35 +0200 Subject: [PATCH 10/16] MDEV-36536 post-review changes that were apparently partially lost in a rebase --- mysql-test/main/mysqld--help.result | 6 +++--- mysql-test/suite/sys_vars/r/sysvars_server_embedded.result | 4 ++-- .../suite/sys_vars/r/sysvars_server_notembedded.result | 4 ++-- sql/sql_class.h | 2 +- sql/sys_vars.cc | 7 +++---- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/mysql-test/main/mysqld--help.result b/mysql-test/main/mysqld--help.result index f4aa81e0d66..abe7c10952b 100644 --- a/mysql-test/main/mysqld--help.result +++ b/mysql-test/main/mysqld--help.result @@ -16,9 +16,9 @@ The following specify which files/extra groups are read (specified before remain Specify the alter table algorithm. One of: DEFAULT, COPY, INPLACE, NOCOPY, INSTANT --analyze-max-length=# - Fields that require more storage than analyze_max_length - and are not listed in ANALYZE ... FOR COLUMNS () will - automatically be skipped by ANALYZE TABLE PERSISTENT + 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/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result index 9eb4e5687d1..977afb94f0d 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -24,8 +24,8 @@ READ_ONLY NO COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME ANALYZE_MAX_LENGTH VARIABLE_SCOPE SESSION -VARIABLE_TYPE BIGINT UNSIGNED -VARIABLE_COMMENT Fields which length in bytes are more than analyze_max_length are skipped by ANALYZE TABLE PERSISTENT unless explicitly listed in the FOR COLUMNS () clause +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 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 7f08e1bbfc2..c5781705847 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -24,8 +24,8 @@ READ_ONLY NO COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME ANALYZE_MAX_LENGTH VARIABLE_SCOPE SESSION -VARIABLE_TYPE BIGINT UNSIGNED -VARIABLE_COMMENT Fields that require more storage than analyze_max_length and are not listed in ANALYZE ... FOR COLUMNS () will automatically be skipped by ANALYZE TABLE PERSISTENT +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 diff --git a/sql/sql_class.h b/sql/sql_class.h index aac433181a4..f544c2e3fd1 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -731,7 +731,7 @@ typedef struct system_variables ha_rows select_limit; ha_rows max_join_size; ha_rows expensive_subquery_limit; - ulong analyze_max_length; + uint analyze_max_length; ulong auto_increment_increment, auto_increment_offset; #ifdef WITH_WSREP /* diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 4ae14a58feb..9477a26beec 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -450,11 +450,10 @@ static Sys_var_double Sys_analyze_sample_percentage( from analyze. */ -static Sys_var_ulong Sys_analyze_max_length( +static Sys_var_uint Sys_analyze_max_length( "analyze_max_length", - "Fields that require more storage than analyze_max_length and are not " - "listed in ANALYZE ... FOR COLUMNS () will automatically be skipped by " - "ANALYZE TABLE PERSISTENT", + "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)); From 55ddfe1c95cba66fb7b0b46007e97eba9b0d93eb Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Mon, 28 Apr 2025 22:45:10 +0400 Subject: [PATCH 11/16] MDEV-36684 - main.mdl_sync fails under valgrind (test for Bug#42643) Valgrind is single threaded and only changes threads as part of system calls or waits. Some busy loops were identified and fixed where the server assumes that some other thread will change the state, which will not happen with valgrind. Based on patch by Monty. Original patch introduced VALGRIND_YIELD, which emits pthread_yield() only in valgrind builds. However it was agreed that it is a good idea to emit yield() unconditionally, such that other affected schedulers (like SCHED_FIFO) benefit from this change. Also avoid pthread_yield() in favour of standard std::this_thread::yield(). --- sql/sql_base.cc | 2 ++ sql/sql_class.h | 1 + sql/table_cache.cc | 1 + storage/innobase/trx/trx0purge.cc | 1 + 4 files changed, 5 insertions(+) diff --git a/sql/sql_base.cc b/sql/sql_base.cc index ea25ffd6b4d..713a0b455e9 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -4460,6 +4460,7 @@ restart: goto error; error= FALSE; + std::this_thread::yield(); goto restart; } goto error; @@ -4522,6 +4523,7 @@ restart: goto error; error= FALSE; + std::this_thread::yield(); goto restart; } /* diff --git a/sql/sql_class.h b/sql/sql_class.h index f544c2e3fd1..7da9418c5ea 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" 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/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc index 8292bb063b4..9e8b256ffb6 100644 --- a/storage/innobase/trx/trx0purge.cc +++ b/storage/innobase/trx/trx0purge.cc @@ -1076,6 +1076,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)); } From c62671543976eb397576f1b57fb6817029bc21ee Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Wed, 30 Apr 2025 10:38:44 +1000 Subject: [PATCH 12/16] MDEV-35452 [fixup] fix spider/bugfix.perfschema view protocol mtr with --view-protocol creates new threads --- storage/spider/mysql-test/spider/bugfix/t/perfschema.test | 2 ++ 1 file changed, 2 insertions(+) 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; From 60f046d7e6b0a61f9b0762fe05c4021cff1b79d8 Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Fri, 2 May 2025 17:34:39 +1000 Subject: [PATCH 13/16] MDEV-35009: Initialize affected_rows in SQL service The SQL service leaves the affected rows uninitialized. The initialization of the spider plugin that uses this service will fail under MSAN because there isn't an initialized value to return at the end of the query. --- sql/sql_prepare.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index ec3cdddfa0a..f39b0e23e58 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -6485,6 +6485,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 From d7457b40764eb3477f4bcc40094f0b756ac4b337 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Thu, 24 Apr 2025 14:11:38 +0300 Subject: [PATCH 14/16] MDEV-36628 : galera_vote_during_ist test failed Test changes only. Added wait_conditions to wait for expected database state. Signed-off-by: Julius Goryavsky --- .../galera/r/galera_vote_during_ist.result | 14 +++++- .../galera/t/galera_vote_during_ist.test | 43 ++++++++++++++++++- 2 files changed, 53 insertions(+), 4 deletions(-) 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_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; From 235029564373b5a6a52c66a1e68418bf846ec05a Mon Sep 17 00:00:00 2001 From: Julius Goryavsky Date: Tue, 6 May 2025 02:26:35 +0200 Subject: [PATCH 15/16] MDEV-36740: galera.galera_ssl_upgrade fails due to expired certificate The certificate used in tests has been renewed. --- mysql-test/std_data/galera-cert.pem | 109 ++++++++++++++---- mysql-test/std_data/galera-key.pem | 52 ++++----- .../std_data/galera-upgrade-ca-cert.pem | 68 +++++------ .../std_data/galera-upgrade-server-cert.pem | 103 ++++++++++++++--- .../std_data/galera-upgrade-server-key.pem | 52 ++++----- .../suite/galera/t/galera_ssl_cipher.cnf | 4 +- .../suite/galera/t/galera_ssl_upgrade.cnf | 4 +- .../t/galera_dynamic_protocol.cnf | 4 +- .../t/galera_dynamic_protocol.test | 2 +- 9 files changed, 259 insertions(+), 139 deletions(-) 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/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_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 From 82d7419e0600a70b1a1c993d33ed6cf79fbd6129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 20 May 2025 17:27:05 +0300 Subject: [PATCH 16/16] MDEV-34388: Stack overflow on Alpine Linux page_is_corrupted(): Do not allocate the buffers from stack, but from the heap, in xb_fil_cur_open(). row_quiesce_write_cfg(): Issue one type of message when we fail to create the .cfg file. update_statistics_for_table(), read_statistics_for_table(), delete_statistics_for_table(), rename_table_in_stat_tables(): Use a common stack buffer for Index_stat, Column_stat, Table_stat. ha_connect::FileExists(): Invoke push_warning_printf() so that we can avoid allocating a buffer for snprintf(). translog_init_with_table(): Do not duplicate TRANSLOG_PAGE_SIZE_BUFF. Let us also globally enable the GCC 4.4 and clang 3.0 option -Wframe-larger-than=16384 to reduce the possibility of introducing such stack overflow in the future. For RocksDB and Mroonga we relax these limits. Reviewed by: Vladislav Lesin --- client/mysqlcheck.c | 6 +- client/mysqlslap.c | 5 ++ cmake/maintainer.cmake | 1 + extra/mariabackup/fil_cur.cc | 31 +++++----- extra/mariabackup/fil_cur.h | 4 +- include/my_attribute.h | 8 +-- .../suite/innodb/r/innodb-wl5522-debug.result | 36 ++++------- sql/sql_statistics.cc | 61 ++++++++++--------- sql/threadpool_generic.cc | 9 +++ sql/tztime.cc | 3 + storage/connect/ha_connect.cc | 10 +-- storage/innobase/row/row0quiesce.cc | 33 +++------- storage/maria/ma_loghandler.c | 7 +-- storage/maria/ma_open.c | 2 +- storage/maria/ma_pagecache.c | 2 + storage/maria/ma_recovery.c | 2 + storage/mroonga/CMakeLists.txt | 8 +++ storage/mroonga/vendor/groonga/lib/expr.c | 7 +++ storage/perfschema/unittest/pfs_instr-t.cc | 5 +- storage/rocksdb/CMakeLists.txt | 7 +++ storage/spider/spd_db_conn.cc | 2 + 21 files changed, 130 insertions(+), 119 deletions(-) diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index b5e59e64bd5..0aea15712c3 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -897,6 +897,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) { @@ -1028,9 +1031,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 035a7f0d7ae..17ca5101f6d 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[] = @@ -2295,6 +2298,7 @@ statement_cleanup(statement *stmt) } } +PRAGMA_DISABLE_CHECK_STACK_FRAME int slap_connect(MYSQL *mysql) @@ -2328,3 +2332,4 @@ slap_connect(MYSQL *mysql) return 0; } +PRAGMA_REENABLE_CHECK_STACK_FRAME diff --git a/cmake/maintainer.cmake b/cmake/maintainer.cmake index f97513cce60..5ca870b771c 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 ca0619db371..f5033deaf40 100644 --- a/extra/mariabackup/fil_cur.cc +++ b/extra/mariabackup/fil_cur.cc @@ -217,7 +217,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; @@ -245,15 +248,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); @@ -316,42 +314,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. @@ -514,7 +513,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 ac561f71060..641b90fa14e 100644 --- a/extra/mariabackup/fil_cur.h +++ b/extra/mariabackup/fil_cur.h @@ -45,7 +45,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/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/suite/innodb/r/innodb-wl5522-debug.result b/mysql-test/suite/innodb/r/innodb-wl5522-debug.result index aa8a683620f..11debaca7d7 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_9"; 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_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; @@ -181,8 +171,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; @@ -191,8 +180,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/sql/sql_statistics.cc b/sql/sql_statistics.cc index dd7920c1e45..2abc2efa92a 100644 --- a/sql/sql_statistics.cc +++ b/sql/sql_statistics.cc @@ -2785,9 +2785,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]; @@ -2816,9 +2813,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(); @@ -2827,7 +2828,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; @@ -2844,7 +2845,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) { @@ -2872,7 +2873,6 @@ int update_statistics_for_table(THD *thd, TABLE *table) new_trans.restore_old_transaction(); DBUG_RETURN(rc); } -PRAGMA_REENABLE_CHECK_STACK_FRAME /** @@ -2957,7 +2957,10 @@ 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; @@ -2965,7 +2968,7 @@ read_statistics_for_table(THD *thd, TABLE *table, /* Read statistics from the statistical table column_stats */ stat_table= stat_tables[COLUMN_STAT].table; ulong total_hist_size= 0; - 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; found= 0; for (field_ptr= table_share->field; @@ -2990,7 +2993,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; @@ -3285,9 +3288,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) { @@ -3311,7 +3311,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)) { @@ -3322,7 +3325,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)) { @@ -3333,7 +3336,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()) { @@ -3356,7 +3359,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 /** @@ -3725,7 +3727,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"); @@ -3746,15 +3747,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 */ @@ -3822,12 +3824,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)); @@ -3901,9 +3902,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, @@ -3928,7 +3926,11 @@ 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); + 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(); Stat_table_write_iter index_iter(&index_stat); @@ -3945,7 +3947,7 @@ 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); if (column_iter.init(2)) @@ -3961,7 +3963,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()) { @@ -3981,7 +3983,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/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 68d63ca7beb..d690ba8c505 100644 --- a/sql/tztime.cc +++ b/sql/tztime.cc @@ -2287,6 +2287,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) { @@ -2355,6 +2357,7 @@ my_tz_find(THD *thd, const String *name) DBUG_RETURN(result_tz); } +PRAGMA_REENABLE_CHECK_STACK_FRAME /** diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc index f91e7ee5f94..64d1ece8150 100644 --- a/storage/connect/ha_connect.cc +++ b/storage/connect/ha_connect.cc @@ -7010,9 +7010,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) @@ -7048,10 +7045,8 @@ 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, 0, buf); + push_warning_printf(table->in_use, Sql_condition::WARN_LEVEL_WARN, 0, + "Error %d for file %s", errno, filename); return true; } else return false; @@ -7063,7 +7058,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/innobase/row/row0quiesce.cc b/storage/innobase/row/row0quiesce.cc index 057b20c77bd..1f3234546a4 100644 --- a/storage/innobase/row/row0quiesce.cc +++ b/storage/innobase/row/row0quiesce.cc @@ -432,9 +432,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( @@ -452,9 +449,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 { @@ -468,31 +466,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/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index 786b397ef6c..3681a59a0e6 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -3605,9 +3605,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, @@ -3861,6 +3858,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; @@ -3901,7 +3899,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) @@ -3950,7 +3947,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; @@ -4241,7 +4237,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 39a16ea5df4..71d8d3eac10 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 1682bd42893..1e151bc250b 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 e53568bc591..04935529e02 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 3ebeb66e8d0..630f445f065 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/spd_db_conn.cc b/storage/spider/spd_db_conn.cc index 4252619617f..5e2dad0535e 100644 --- a/storage/spider/spd_db_conn.cc +++ b/storage/spider/spd_db_conn.cc @@ -10454,6 +10454,7 @@ error: } +PRAGMA_DISABLE_CHECK_STACK_FRAME bool spider_db_conn_is_network_error( int error_num ) { @@ -10470,3 +10471,4 @@ bool spider_db_conn_is_network_error( } DBUG_RETURN(FALSE); } +PRAGMA_REENABLE_CHECK_STACK_FRAME