Skip to content
/ server Public
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions mysql-test/main/mysqld--help.result
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
8 changes: 6 additions & 2 deletions mysql-test/suite/multi_source/syntax.result
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions mysql-test/suite/multi_source/syntax.test
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
35 changes: 32 additions & 3 deletions mysql-test/suite/sys_vars/r/default_master_connection_basic.result
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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';
Expand All @@ -88,3 +93,27 @@ 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 = '';
# 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
4 changes: 2 additions & 2 deletions mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
Original file line number Diff line number Diff line change
Expand Up @@ -903,15 +903,15 @@ 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
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
Expand Down
40 changes: 35 additions & 5 deletions mysql-test/suite/sys_vars/t/default_master_connection_basic.test
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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;

####################################################################################
Expand Down Expand Up @@ -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';
Expand Down Expand Up @@ -117,6 +116,37 @@ 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 = '';

#####################################################################
# 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 #
Expand Down
3 changes: 3 additions & 0 deletions sql/mysqld.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion sql/sys_vars.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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), CMD_LINE(REQUIRED_ARG), DEFAULT(""),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_master_connection));
#endif

Expand Down