Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDEV-8931: (server part of) session state tracking
System variables tracking
- Loading branch information
1 parent
e7608a7
commit c8948b0
Showing
22 changed files
with
1,483 additions
and
153 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
162 changes: 162 additions & 0 deletions
162
mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
# | ||
# Variable name : session_track_system_variables | ||
# Scope : Global & Session | ||
# | ||
# Global - default | ||
SELECT @@global.session_track_system_variables; | ||
@@global.session_track_system_variables | ||
autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
# Session - default | ||
SELECT @@session.session_track_system_variables; | ||
@@session.session_track_system_variables | ||
autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
|
||
# 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_SCHEMA ON | ||
SESSION_TRACK_STATE_CHANGE OFF | ||
SESSION_TRACK_SYSTEM_VARIABLES autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
# 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_SCHEMA ON | ||
SESSION_TRACK_STATE_CHANGE OFF | ||
SESSION_TRACK_SYSTEM_VARIABLES autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
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 | ||
autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
|
||
# 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. | ||
connect con1,"127.0.0.1",root,,test,$MASTER_MYPORT,; | ||
# 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. | ||
connection default; | ||
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 | ||
autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
SELECT @@session.session_track_system_variables; | ||
@@session.session_track_system_variables | ||
autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
|
||
# Variables' values in a new session (con2). | ||
connect con2,"127.0.0.1",root,,test,$MASTER_MYPORT,; | ||
SELECT @@global.session_track_system_variables; | ||
@@global.session_track_system_variables | ||
autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
SELECT @@session.session_track_system_variables; | ||
@@session.session_track_system_variables | ||
autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
|
||
# 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 | ||
autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
SELECT @@session.session_track_system_variables; | ||
@@session.session_track_system_variables | ||
sql_mode | ||
|
||
# Variables' values in a new session (con3). | ||
connect con3,"127.0.0.1",root,,test,$MASTER_MYPORT,; | ||
# 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 | ||
autocommit,character_set_client,character_set_connection,character_set_results,time_zone | ||
|
||
# Switching to the default connection. | ||
connection default; | ||
# Testing NULL | ||
SET @@global.session_track_system_variables = NULL; | ||
SET @@session.session_track_system_variables = NULL; | ||
# Global - expect "" instead of NULL | ||
SELECT @@global.session_track_system_variables; | ||
@@global.session_track_system_variables | ||
NULL | ||
# Session - expect "" instead of NULL | ||
SELECT @@session.session_track_system_variables; | ||
@@session.session_track_system_variables | ||
|
||
# testing with duplicate entries. | ||
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"; | ||
SET @@session.session_track_system_variables= "sql_mode,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 | ||
sql_mode | ||
|
||
# testing ordering | ||
SET @@global.session_track_system_variables= "time_zone,sql_mode"; | ||
SET @@session.session_track_system_variables= "time_zone,sql_mode"; | ||
SELECT @@global.session_track_system_variables; | ||
@@global.session_track_system_variables | ||
sql_mode,time_zone | ||
SELECT @@session.session_track_system_variables; | ||
@@session.session_track_system_variables | ||
sql_mode,time_zone | ||
|
||
# special values | ||
SET @@global.session_track_system_variables= "*"; | ||
SET @@session.session_track_system_variables= "*"; | ||
SELECT @@global.session_track_system_variables; | ||
@@global.session_track_system_variables | ||
* | ||
SELECT @@session.session_track_system_variables; | ||
@@session.session_track_system_variables | ||
* | ||
SET @@global.session_track_system_variables= ""; | ||
SET @@session.session_track_system_variables= ""; | ||
SELECT @@global.session_track_system_variables; | ||
@@global.session_track_system_variables | ||
|
||
SELECT @@session.session_track_system_variables; | ||
@@session.session_track_system_variables | ||
|
||
|
||
# Restoring the original values. | ||
SET @@global.session_track_system_variables = @global_saved_tmp; | ||
# End of tests. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
133 changes: 133 additions & 0 deletions
133
mysql-test/suite/sys_vars/t/session_track_system_variables_basic.test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
--source include/not_embedded.inc | ||
|
||
--echo # | ||
--echo # Variable name : session_track_system_variables | ||
--echo # Scope : Global & Session | ||
--echo # | ||
|
||
--echo # Global - default | ||
SELECT @@global.session_track_system_variables; | ||
--echo # Session - default | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # via INFORMATION_SCHEMA.GLOBAL_VARIABLES | ||
--disable_warnings | ||
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'session_track%' ORDER BY VARIABLE_NAME; | ||
--enable_warnings | ||
|
||
--echo # via INFORMATION_SCHEMA.SESSION_VARIABLES | ||
--disable_warnings | ||
SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE 'session_track%' ORDER BY VARIABLE_NAME; | ||
--enable_warnings | ||
|
||
# Save the global value to be used to restore the original value. | ||
SET @global_saved_tmp = @@global.session_track_system_variables; | ||
--echo | ||
|
||
--echo # Altering global variable's value | ||
SET @@global.session_track_system_variables='autocommit'; | ||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # Altering session variable's value | ||
SET @@session.session_track_system_variables='autocommit'; | ||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # Variables' values in a new session. | ||
connect (con1,"127.0.0.1",root,,test,$MASTER_MYPORT,); | ||
|
||
--echo # Global - expect "autocommit" | ||
SELECT @@global.session_track_system_variables; | ||
--echo | ||
--echo # Session - expect "autocommit" | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # Switching to the default connection. | ||
connection default; | ||
|
||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # Test if DEFAULT is working as expected. | ||
SET @@global.session_track_system_variables = DEFAULT; | ||
SET @@session.session_track_system_variables = DEFAULT; | ||
--echo | ||
|
||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # Variables' values in a new session (con2). | ||
connect (con2,"127.0.0.1",root,,test,$MASTER_MYPORT,); | ||
|
||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # Altering session should not affect global. | ||
SET @@session.session_track_system_variables = 'sql_mode'; | ||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # Variables' values in a new session (con3). | ||
connect (con3,"127.0.0.1",root,,test,$MASTER_MYPORT,); | ||
|
||
--echo # Altering global should not affect session. | ||
SET @@global.session_track_system_variables = 'sql_mode'; | ||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # Switching to the default connection. | ||
connection default; | ||
|
||
--echo # Testing NULL | ||
SET @@global.session_track_system_variables = NULL; | ||
SET @@session.session_track_system_variables = NULL; | ||
|
||
--echo # Global - expect "" instead of NULL | ||
SELECT @@global.session_track_system_variables; | ||
--echo # Session - expect "" instead of NULL | ||
SELECT @@session.session_track_system_variables; | ||
|
||
--echo # testing with duplicate entries. | ||
# Lets first set it to some valid value. | ||
SET @@global.session_track_system_variables= "time_zone"; | ||
SET @@session.session_track_system_variables= "time_zone"; | ||
# Now set with duplicate entries (must pass) | ||
SET @@global.session_track_system_variables= "sql_mode,sql_mode"; | ||
SET @@session.session_track_system_variables= "sql_mode,sql_mode"; | ||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # testing ordering | ||
SET @@global.session_track_system_variables= "time_zone,sql_mode"; | ||
SET @@session.session_track_system_variables= "time_zone,sql_mode"; | ||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
--echo # special values | ||
SET @@global.session_track_system_variables= "*"; | ||
SET @@session.session_track_system_variables= "*"; | ||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
SET @@global.session_track_system_variables= ""; | ||
SET @@session.session_track_system_variables= ""; | ||
SELECT @@global.session_track_system_variables; | ||
SELECT @@session.session_track_system_variables; | ||
--echo | ||
|
||
|
||
--echo # Restoring the original values. | ||
SET @@global.session_track_system_variables = @global_saved_tmp; | ||
|
||
--echo # End of tests. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.