MINI MINI MANI MO
#
# Variable name : session_track_system_variables
# Scope : Global & Session
#
# Global - default
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
time_zone,autocommit,character_set_client,character_set_results,character_set_connection
# Session - default
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
time_zone,autocommit,character_set_client,character_set_results,character_set_connection
# via INFORMATION_SCHEMA.GLOBAL_VARIABLES
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'session_track%' ORDER BY VARIABLE_NAME;
VARIABLE_NAME VARIABLE_VALUE
SESSION_TRACK_GTIDS OFF
SESSION_TRACK_SCHEMA ON
SESSION_TRACK_STATE_CHANGE OFF
SESSION_TRACK_SYSTEM_VARIABLES time_zone,autocommit,character_set_client,character_set_results,character_set_connection
SESSION_TRACK_TRANSACTION_INFO OFF
# via INFORMATION_SCHEMA.SESSION_VARIABLES
SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE 'session_track%' ORDER BY VARIABLE_NAME;
VARIABLE_NAME VARIABLE_VALUE
SESSION_TRACK_GTIDS OFF
SESSION_TRACK_SCHEMA ON
SESSION_TRACK_STATE_CHANGE OFF
SESSION_TRACK_SYSTEM_VARIABLES time_zone,autocommit,character_set_client,character_set_results,character_set_connection
SESSION_TRACK_TRANSACTION_INFO OFF
SET @global_saved_tmp = @@global.session_track_system_variables;
# Altering global variable's value
SET @@global.session_track_system_variables='autocommit';
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
autocommit
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
time_zone,autocommit,character_set_client,character_set_results,character_set_connection
# Altering session variable's value
SET @@session.session_track_system_variables='autocommit';
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
autocommit
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
autocommit
# Variables' values in a new session.
# Global - expect "autocommit"
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
autocommit
# Session - expect "autocommit"
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
autocommit
# Switching to the default connection.
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
autocommit
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
autocommit
# Test if DEFAULT is working as expected.
SET @@global.session_track_system_variables = DEFAULT;
SET @@session.session_track_system_variables = DEFAULT;
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
time_zone,autocommit,character_set_client,character_set_results,character_set_connection
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
time_zone,autocommit,character_set_client,character_set_results,character_set_connection
# Variables' values in a new session (con2).
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
time_zone,autocommit,character_set_client,character_set_results,character_set_connection
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
time_zone,autocommit,character_set_client,character_set_results,character_set_connection
# Altering session should not affect global.
SET @@session.session_track_system_variables = 'sql_mode';
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
time_zone,autocommit,character_set_client,character_set_results,character_set_connection
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
sql_mode
# Variables' values in a new session (con3).
# Altering global should not affect session.
SET @@global.session_track_system_variables = 'sql_mode';
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
sql_mode
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
time_zone,autocommit,character_set_client,character_set_results,character_set_connection
# Switching to the default connection.
# Testing NULL
SET @@global.session_track_system_variables = NULL;
SET @@session.session_track_system_variables = NULL;
# Global - expect NULL
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
NULL
# Session - expect NULL
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
NULL
# testing with duplicate entries (must fail).
SET @@global.session_track_system_variables= "time_zone";
SET @@session.session_track_system_variables= "time_zone";
SET @@global.session_track_system_variables= "sql_mode,sql_mode";
ERROR HY000: Duplicate entry 'sql_mode'.
SET @@session.session_track_system_variables= "sql_mode,sql_mode";
ERROR HY000: Duplicate entry 'sql_mode'.
# Global - must remain unchanged, 'time_zone'
SELECT @@global.session_track_system_variables;
@@global.session_track_system_variables
time_zone
# Session - must remain unchanged, 'time_zone'
SELECT @@session.session_track_system_variables;
@@session.session_track_system_variables
time_zone
# Restoring the original values.
SET @@global.session_track_system_variables = @global_saved_tmp;
# End of tests.
OHA YOOOO