From 3e9e1a25b7331ab91b0d9da2c8af280731b40d94 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 29 Apr 2025 19:06:32 +0200 Subject: [PATCH] MDEV-36566 SELECT create_temporary_table_binlog_formats should show exactly what it is SET to added a warning --- mysql-test/main/commit_1innodb.result | 2 ++ mysql-test/suite/binlog/r/binlog_database.result | 2 ++ mysql-test/suite/binlog/r/binlog_mix2_drop_tmp_tbl.result | 4 ++++ mysql-test/suite/rpl/r/create_or_replace_mix2.result | 4 ++++ mysql-test/suite/rpl/r/rpl_drop_temp.result | 2 ++ mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result | 2 ++ .../suite/rpl/r/rpl_mixed2_drop_create_temp_table.result | 4 ++++ mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result | 4 ++++ .../suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result | 4 ++++ mysql-test/suite/rpl/t/rpl_rewrt_db.test | 2 ++ .../r/create_temporary_table_binlog_formats_basic.result | 2 ++ sql/sys_vars.cc | 6 +++++- 12 files changed, 37 insertions(+), 1 deletion(-) diff --git a/mysql-test/main/commit_1innodb.result b/mysql-test/main/commit_1innodb.result index 16d70fe0079..267ebe09e3f 100644 --- a/mysql-test/main/commit_1innodb.result +++ b/mysql-test/main/commit_1innodb.result @@ -3,6 +3,8 @@ set sql_mode=no_engine_substitution; set default_storage_engine = InnoDB; set autocommit=1; set @@create_tmp_table_binlog_formats="mixed"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' drop table if exists t1; drop table if exists t2; drop table if exists t3; diff --git a/mysql-test/suite/binlog/r/binlog_database.result b/mysql-test/suite/binlog/r/binlog_database.result index c1014d85495..ce92ca458eb 100644 --- a/mysql-test/suite/binlog/r/binlog_database.result +++ b/mysql-test/suite/binlog/r/binlog_database.result @@ -201,6 +201,8 @@ DROP TABLE t3; DROP DATABASE db1; set binlog_format=mixed; SET @@create_tmp_table_binlog_formats="mixed"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' select @@binlog_format, @@create_tmp_table_binlog_formats; @@binlog_format @@create_tmp_table_binlog_formats MIXED MIXED,STATEMENT diff --git a/mysql-test/suite/binlog/r/binlog_mix2_drop_tmp_tbl.result b/mysql-test/suite/binlog/r/binlog_mix2_drop_tmp_tbl.result index 5faabd0a347..262a967ce1a 100644 --- a/mysql-test/suite/binlog/r/binlog_mix2_drop_tmp_tbl.result +++ b/mysql-test/suite/binlog/r/binlog_mix2_drop_tmp_tbl.result @@ -1,5 +1,9 @@ set @@session.create_tmp_table_binlog_formats="MIXED"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' set @@global.create_tmp_table_binlog_formats="MIXED"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' DROP DATABASE IF EXISTS `drop-temp+table-test`; select @@session.binlog_format; @@session.binlog_format diff --git a/mysql-test/suite/rpl/r/create_or_replace_mix2.result b/mysql-test/suite/rpl/r/create_or_replace_mix2.result index 064e6a06a10..5a34b9807cd 100644 --- a/mysql-test/suite/rpl/r/create_or_replace_mix2.result +++ b/mysql-test/suite/rpl/r/create_or_replace_mix2.result @@ -1,5 +1,9 @@ set @@global.create_tmp_table_binlog_formats="mixed"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' set @@session.create_tmp_table_binlog_formats="mixed"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' include/rpl_init.inc [topology=1->2] select @@binlog_format, @@create_tmp_table_binlog_formats; @@binlog_format @@create_tmp_table_binlog_formats diff --git a/mysql-test/suite/rpl/r/rpl_drop_temp.result b/mysql-test/suite/rpl/r/rpl_drop_temp.result index 7d6e09dd52f..2b5a446a739 100644 --- a/mysql-test/suite/rpl/r/rpl_drop_temp.result +++ b/mysql-test/suite/rpl/r/rpl_drop_temp.result @@ -45,6 +45,8 @@ Variable_name Value Slave_open_temp_tables 0 connect con1,localhost,root,,; set @@CREATE_TMP_TABLE_BINLOG_FORMATS="mixed"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' CREATE TEMPORARY TABLE ttmp1 ( i INT ); SET SESSION binlog_format=ROW; disconnect con1; diff --git a/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result b/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result index 40732b37ea4..1745a79a2e1 100644 --- a/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result +++ b/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result @@ -77,6 +77,8 @@ SET SESSION gtid_domain_id= 202; DROP TEMPORARY TABLE t2; SET SESSION binlog_format= mixed; SET SESSION create_tmp_table_binlog_formats="mixed"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' SET SESSION gtid_domain_id= 0; CREATE TEMPORARY TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t2 VALUES (1); diff --git a/mysql-test/suite/rpl/r/rpl_mixed2_drop_create_temp_table.result b/mysql-test/suite/rpl/r/rpl_mixed2_drop_create_temp_table.result index 77afe25bbda..2a47374134d 100644 --- a/mysql-test/suite/rpl/r/rpl_mixed2_drop_create_temp_table.result +++ b/mysql-test/suite/rpl/r/rpl_mixed2_drop_create_temp_table.result @@ -1,7 +1,11 @@ include/master-slave.inc [connection master] set @@global.create_tmp_table_binlog_formats="MIXED"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' set @@session.create_tmp_table_binlog_formats="MIXED"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' ######################################################################### # CONFIGURATION ######################################################################### diff --git a/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result index 5050da259ff..f4688b2bbb8 100644 --- a/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result +++ b/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result @@ -1,7 +1,11 @@ include/master-slave.inc [connection master] set @@global.create_tmp_table_binlog_formats="mixed"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' set @@session.create_tmp_table_binlog_formats="mixed"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' ######################################################################### # CONFIGURATION ######################################################################### diff --git a/mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result index 8ffae5a443c..967c42fc537 100644 --- a/mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result +++ b/mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result @@ -1,5 +1,9 @@ include/master-slave.inc [connection master] +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' ######################################################################### # CONFIGURATION ######################################################################### diff --git a/mysql-test/suite/rpl/t/rpl_rewrt_db.test b/mysql-test/suite/rpl/t/rpl_rewrt_db.test index eebd0271999..fe9129a69d9 100644 --- a/mysql-test/suite/rpl/t/rpl_rewrt_db.test +++ b/mysql-test/suite/rpl/t/rpl_rewrt_db.test @@ -4,9 +4,11 @@ if (`SELECT @@binlog_format = "MIXED"`) { --disable_query_log +--disable_warnings # Ensure that switching between mixed and statment works in all case */ set @@global.create_tmp_table_binlog_formats= "MIXED"; set @@session.create_tmp_table_binlog_formats= "MIXED"; +--enable_warnings --enable_query_log } diff --git a/mysql-test/suite/sys_vars/r/create_temporary_table_binlog_formats_basic.result b/mysql-test/suite/sys_vars/r/create_temporary_table_binlog_formats_basic.result index ca7e398f3c5..8377ad256c3 100644 --- a/mysql-test/suite/sys_vars/r/create_temporary_table_binlog_formats_basic.result +++ b/mysql-test/suite/sys_vars/r/create_temporary_table_binlog_formats_basic.result @@ -57,6 +57,8 @@ COUNT(VARIABLE_VALUE) # Check assignment of correct values SET @@session.create_tmp_table_binlog_formats= @start_value; SET @@SESSION.create_tmp_table_binlog_formats="MIXED"; +Warnings: +Warning 1292 Truncated incorrect create_tmp_table_binlog_formats value: 'MIXED' SELECT @@SESSION.create_tmp_table_binlog_formats; @@SESSION.create_tmp_table_binlog_formats MIXED,STATEMENT diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index f16b3dcc5e3..8194d7ba122 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -741,7 +741,11 @@ static bool binlog_create_tmp_format_check(sys_var *self, THD *thd, Logging of temporary tables is always done in STATEMENT format. Because of this MIXED implies STATEMENT. */ - var->save_result.ulonglong_value|= (1 << BINLOG_FORMAT_STMT); + if (!(var->save_result.ulonglong_value & (1 << BINLOG_FORMAT_STMT))) + { + throw_bounds_warning(thd, self->name.str, "MIXED"); + var->save_result.ulonglong_value|= (1 << BINLOG_FORMAT_STMT); + } return false; }