From 20adc42e4c1acce90493c43eab5c5639cc7aab79 Mon Sep 17 00:00:00 2001 From: Abhishek Bansal Date: Sat, 7 Feb 2026 02:18:02 +0530 Subject: [PATCH 1/4] MDEV-9247: Make default_master_connection settable globally --- mysql-test/suite/multi_source/syntax.result | 8 ++++++-- mysql-test/suite/multi_source/syntax.test | 4 ++-- .../r/default_master_connection_basic.result | 20 ++++++++++++++++--- .../t/default_master_connection_basic.test | 20 ++++++++++++++----- sql/sys_vars.cc | 2 +- 5 files changed, 41 insertions(+), 13 deletions(-) diff --git a/mysql-test/suite/multi_source/syntax.result b/mysql-test/suite/multi_source/syntax.result index 77e7b1d6624ca..fa0527d556c50 100644 --- a/mysql-test/suite/multi_source/syntax.result +++ b/mysql-test/suite/multi_source/syntax.result @@ -43,9 +43,13 @@ select @@default_master_connection; @@default_master_connection select @@global.default_master_connection; -ERROR HY000: Variable 'default_master_connection' is a SESSION variable +@@global.default_master_connection + set @@global.default_master_connection='qqq'; -ERROR HY000: Variable 'default_master_connection' is a SESSION variable and can't be used with SET GLOBAL +select @@global.default_master_connection; +@@global.default_master_connection +qqq +set @@global.default_master_connection=''; set @@default_master_connection='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'; ERROR 42000: Variable 'default_master_connection' can't be set to the value of 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' select @@default_master_connection; diff --git a/mysql-test/suite/multi_source/syntax.test b/mysql-test/suite/multi_source/syntax.test index 12539d32a6464..95a517310b56c 100644 --- a/mysql-test/suite/multi_source/syntax.test +++ b/mysql-test/suite/multi_source/syntax.test @@ -45,10 +45,10 @@ sync_with_master 0, ''; --echo # select @@default_master_connection; ---error 1238 select @@global.default_master_connection; ---error 1228 set @@global.default_master_connection='qqq'; +select @@global.default_master_connection; +set @@global.default_master_connection=''; --error 1231 set @@default_master_connection='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'; select @@default_master_connection; diff --git a/mysql-test/suite/sys_vars/r/default_master_connection_basic.result b/mysql-test/suite/sys_vars/r/default_master_connection_basic.result index 2d80241d5ca3d..99fbfe330c170 100644 --- a/mysql-test/suite/sys_vars/r/default_master_connection_basic.result +++ b/mysql-test/suite/sys_vars/r/default_master_connection_basic.result @@ -12,9 +12,13 @@ SELECT @@session.default_master_connection = ''; @@session.default_master_connection = '' 1 SET @@global.default_master_connection = 'master1'; -ERROR HY000: Variable 'default_master_connection' is a SESSION variable and can't be used with SET GLOBAL SELECT @@global.default_master_connection; -ERROR HY000: Variable 'default_master_connection' is a SESSION variable +@@global.default_master_connection +master1 +SET @@global.default_master_connection = ''; +SELECT @@global.default_master_connection; +@@global.default_master_connection + SET @@session.default_master_connection = 'master1'; SELECT @@session.default_master_connection; @@session.default_master_connection @@ -61,7 +65,8 @@ master2 SELECT @@global.default_master_connection = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='default_master_connection'; -ERROR HY000: Variable 'default_master_connection' is a SESSION variable +@@global.default_master_connection = VARIABLE_VALUE +1 SELECT @@session.default_master_connection = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='default_master_connection'; @@ -88,3 +93,12 @@ SET @@session.default_master_connection = @start_session_value; SELECT @@session.default_master_connection; @@session.default_master_connection +SET @@global.default_master_connection = 'global'; +connect con1,localhost,root,,; +connection con1; +SELECT @@session.default_master_connection; +@@session.default_master_connection +global +connection default; +disconnect con1; +SET @@global.default_master_connection = ''; diff --git a/mysql-test/suite/sys_vars/t/default_master_connection_basic.test b/mysql-test/suite/sys_vars/t/default_master_connection_basic.test index ae91bc46e1af1..b5dbd6268b006 100644 --- a/mysql-test/suite/sys_vars/t/default_master_connection_basic.test +++ b/mysql-test/suite/sys_vars/t/default_master_connection_basic.test @@ -1,7 +1,7 @@ ############## mysql-test\t\default_master_connection_basic.test ############### # # Implemented in the scope of MDEV-253 -# The variable is SESSION-only +# Updated to SESSION-VAR (Global) scope in MDEV-9247 # --source include/not_embedded.inc @@ -29,12 +29,12 @@ SET @@session.default_master_connection = @start_session_value; SELECT @@session.default_master_connection = ''; ################################################# -# Check that the GLOBAL scope is not applicable # +# Check that the GLOBAL scope is applicable # ################################################# ---error ER_LOCAL_VARIABLE SET @@global.default_master_connection = 'master1'; ---error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.default_master_connection; +SET @@global.default_master_connection = ''; SELECT @@global.default_master_connection; #################################################################################### @@ -77,7 +77,6 @@ SELECT @@session.default_master_connection; # Check if the value in GLOBAL & SESSION Tables matches value in variable # ############################################################################### ---error ER_INCORRECT_GLOBAL_LOCAL_VAR SELECT @@global.default_master_connection = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='default_master_connection'; @@ -117,6 +116,17 @@ SELECT default_master_connection = @@session.default_master_connection; SET @@session.default_master_connection = @start_session_value; SELECT @@session.default_master_connection; +##################################################################### +# Check if global value is inherited by new connections (MDEV-9247)# +##################################################################### + +SET @@global.default_master_connection = 'global'; +--connect (con1,localhost,root,,) +--connection con1 +SELECT @@session.default_master_connection; +--connection default +--disconnect con1 +SET @@global.default_master_connection = ''; ############################################################# # END OF default_master_connection TESTS # diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 63f3f38bc36df..ace2a7f08b34c 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -1481,7 +1481,7 @@ static bool check_master_connection(sys_var *self, THD *thd, set_var *var) static Sys_var_lexstring Sys_default_master_connection( "default_master_connection", "Master connection to use for all slave variables and slave commands", - SESSION_ONLY(default_master_connection), NO_CMD_LINE, DEFAULT(""), + SESSION_VAR(default_master_connection), NO_CMD_LINE, DEFAULT(""), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_master_connection)); #endif From 173f5e5b1ee1d1a591bc94e7aae00634da626530 Mon Sep 17 00:00:00 2001 From: Abhishek Bansal Date: Sat, 7 Feb 2026 13:30:28 +0530 Subject: [PATCH 2/4] MDEV-9247: Update sysvars_server_notembedded result --- mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 17a9a13a0f2dc..423836aef62c4 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -903,7 +903,7 @@ ENUM_VALUE_LIST NULL READ_ONLY NO COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME DEFAULT_MASTER_CONNECTION -VARIABLE_SCOPE SESSION ONLY +VARIABLE_SCOPE SESSION VARIABLE_TYPE VARCHAR VARIABLE_COMMENT Master connection to use for all slave variables and slave commands NUMERIC_MIN_VALUE NULL From 808ddce177678e332eb555050e9192521338c329 Mon Sep 17 00:00:00 2001 From: Abhishek Bansal Date: Wed, 11 Feb 2026 14:34:11 +0530 Subject: [PATCH 3/4] MDEV-9247: Add command-line support for default_master_connection --- .../r/default_master_connection_basic.result | 15 ++++++++++++++ .../r/sysvars_server_notembedded.result | 2 +- .../t/default_master_connection_basic.test | 20 +++++++++++++++++++ sql/mysqld.cc | 3 +++ sql/sys_vars.cc | 2 +- 5 files changed, 40 insertions(+), 2 deletions(-) diff --git a/mysql-test/suite/sys_vars/r/default_master_connection_basic.result b/mysql-test/suite/sys_vars/r/default_master_connection_basic.result index 99fbfe330c170..84ca2da2cb8db 100644 --- a/mysql-test/suite/sys_vars/r/default_master_connection_basic.result +++ b/mysql-test/suite/sys_vars/r/default_master_connection_basic.result @@ -102,3 +102,18 @@ global connection default; disconnect con1; SET @@global.default_master_connection = ''; +# restart: --default-master-connection=master1 +SELECT @@global.default_master_connection; +@@global.default_master_connection +master1 +SELECT @@session.default_master_connection; +@@session.default_master_connection +master1 +connect con2,localhost,root,,; +connection con2; +SELECT @@session.default_master_connection; +@@session.default_master_connection +master1 +connection default; +disconnect con2; +# restart 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 423836aef62c4..5c07aae863de9 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -911,7 +911,7 @@ NUMERIC_MAX_VALUE NULL NUMERIC_BLOCK_SIZE NULL ENUM_VALUE_LIST NULL READ_ONLY NO -COMMAND_LINE_ARGUMENT NULL +COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME DEFAULT_PASSWORD_LIFETIME VARIABLE_SCOPE GLOBAL VARIABLE_TYPE INT UNSIGNED diff --git a/mysql-test/suite/sys_vars/t/default_master_connection_basic.test b/mysql-test/suite/sys_vars/t/default_master_connection_basic.test index b5dbd6268b006..0262df65b9ad5 100644 --- a/mysql-test/suite/sys_vars/t/default_master_connection_basic.test +++ b/mysql-test/suite/sys_vars/t/default_master_connection_basic.test @@ -128,6 +128,26 @@ SELECT @@session.default_master_connection; --disconnect con1 SET @@global.default_master_connection = ''; +##################################################################### +# Check if global value can be set via command line (MDEV-9247) # +##################################################################### + +--let $restart_parameters=--default-master-connection=master1 +--source include/restart_mysqld.inc + +SELECT @@global.default_master_connection; +SELECT @@session.default_master_connection; + +--connect (con2,localhost,root,,) +--connection con2 +SELECT @@session.default_master_connection; +--connection default +--disconnect con2 + +# Clean up for subsequent tests if any (though this is the end) +--let $restart_parameters= +--source include/restart_mysqld.inc + ############################################################# # END OF default_master_connection TESTS # ############################################################# diff --git a/sql/mysqld.cc b/sql/mysqld.cc index b98f5aabae29d..e0dfac7cc7922 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -9012,6 +9012,9 @@ static int get_options(int *argc_ptr, char ***argv_ptr) opt_init_connect.length=strlen(opt_init_connect.str); opt_init_slave.length=strlen(opt_init_slave.str); + global_system_variables.default_master_connection.length= + global_system_variables.default_master_connection.str ? + strlen(global_system_variables.default_master_connection.str) : 0; if (global_system_variables.low_priority_updates) thr_upgraded_concurrent_insert_lock= TL_WRITE_LOW_PRIORITY; diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index ace2a7f08b34c..699e9cae0721a 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -1481,7 +1481,7 @@ static bool check_master_connection(sys_var *self, THD *thd, set_var *var) static Sys_var_lexstring Sys_default_master_connection( "default_master_connection", "Master connection to use for all slave variables and slave commands", - SESSION_VAR(default_master_connection), NO_CMD_LINE, DEFAULT(""), + SESSION_VAR(default_master_connection), CMD_LINE(REQUIRED_ARG), DEFAULT(""), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_master_connection)); #endif From 70dec3a53aade7262a542045a06364cbee8adbfc Mon Sep 17 00:00:00 2001 From: Abhishek Bansal Date: Wed, 11 Feb 2026 14:59:28 +0530 Subject: [PATCH 4/4] MDEV-9247: Update mysqld--help.result --- mysql-test/main/mysqld--help.result | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mysql-test/main/mysqld--help.result b/mysql-test/main/mysqld--help.result index 018a68a3821cc..338b16b96bc5e 100644 --- a/mysql-test/main/mysqld--help.result +++ b/mysql-test/main/mysqld--help.result @@ -264,6 +264,9 @@ The following specify which files/extra groups are read (specified before remain --deadlock-timeout-short=# Short timeout for the two-step deadlock detection (in microseconds) + --default-master-connection=name + Master connection to use for all slave variables and + slave commands --default-password-lifetime=# This defines the global password expiration policy. 0 means automatic password expiration is disabled. If the @@ -1751,6 +1754,7 @@ deadlock-search-depth-long 15 deadlock-search-depth-short 4 deadlock-timeout-long 50000000 deadlock-timeout-short 10000 +default-master-connection default-password-lifetime 0 default-regex-flags default-storage-engine myisam