######## mysql-test\suite\sys_vars\t\transaction_read_only_basic.test ######### # # # Variable Name: transaction_read_only # # Scope: GLOBAL & SESSION # # Access Type: Dynamic # # Data Type: boolean # # Default Value: OFF # # Range: # # # # # # Creation Date: 2012-01-12 # # Author: joh # # # # Description: Test Cases of Dynamic System Variable transaction_read_only # # that checks the behavior of this variable in the following ways# # * Default Value # # * Valid & Invalid values # # * Scope & Access method # # * Data Integrity # # # # Reference: http://dev.mysql.com/doc/refman/5.6/en/ # # server-system-variables.html # # # ############################################################################### --source include/load_sysvars.inc --echo #################################################################### --echo # START OF transaction_read_only TESTS # --echo #################################################################### --echo ############################################################# --echo # Save initial value # --echo ############################################################# SET @start_global_value = @@global.transaction_read_only; SELECT @start_global_value; SET @start_session_value = @@session.transaction_read_only; SELECT @start_session_value; --echo ######################################################################## --echo # Display the DEFAULT value of transaction_read_only # --echo ######################################################################## SET @@global.transaction_read_only = ON; SET @@global.transaction_read_only = DEFAULT; SELECT @@global.transaction_read_only; SET @@session.transaction_read_only = ON; SET @@session.transaction_read_only = DEFAULT; SELECT @@session.transaction_read_only; --echo ############################################################################### --echo # Change the value of transaction_read_only to a valid value for GLOBAL Scope # --echo ############################################################################### SET @@global.transaction_read_only = ON; SELECT @@global.transaction_read_only; SET @@global.transaction_read_only = OFF; SELECT @@global.transaction_read_only; SET @@global.transaction_read_only = 0; SELECT @@global.transaction_read_only; SET @@global.transaction_read_only = 1; SELECT @@global.transaction_read_only; SET @@global.transaction_read_only = TRUE; SELECT @@global.transaction_read_only; SET @@global.transaction_read_only = FALSE; SELECT @@global.transaction_read_only; --echo ################################################################################ --echo # Change the value of transaction_read_only to a valid value for SESSION Scope # --echo ################################################################################ SET @@session.transaction_read_only = ON; SELECT @@session.transaction_read_only; SET @@session.transaction_read_only = OFF; SELECT @@session.transaction_read_only; SET @@session.transaction_read_only = 0; SELECT @@session.transaction_read_only; SET @@session.transaction_read_only = 1; SELECT @@session.transaction_read_only; SET @@session.transaction_read_only = TRUE; SELECT @@session.transaction_read_only; SET @@session.transaction_read_only = FALSE; SELECT @@session.transaction_read_only; --echo ################################################################# --echo # Change the value of transaction_read_only to an invalid value # --echo ################################################################# --Error ER_WRONG_VALUE_FOR_VAR SET @@global.transaction_read_only = 'ONN'; --Error ER_WRONG_VALUE_FOR_VAR SET @@global.transaction_read_only = "OFFF"; --Error ER_WRONG_VALUE_FOR_VAR SET @@global.transaction_read_only = TTRUE; --Error ER_WRONG_VALUE_FOR_VAR SET @@global.transaction_read_only = FELSE; --Error ER_WRONG_VALUE_FOR_VAR SET @@global.transaction_read_only = -1024; --Error ER_WRONG_VALUE_FOR_VAR SET @@global.transaction_read_only = 65536; --Error ER_WRONG_TYPE_FOR_VAR SET @@global.transaction_read_only = 65530.34; --Error ER_WRONG_VALUE_FOR_VAR SET @@global.transaction_read_only = test; --Error ER_WRONG_VALUE_FOR_VAR SET @@session.transaction_read_only = ONN; --Error ER_WRONG_VALUE_FOR_VAR SET @@session.transaction_read_only = ONF; --Error ER_WRONG_VALUE_FOR_VAR SET @@session.transaction_read_only = OF; --Error ER_WRONG_VALUE_FOR_VAR SET @@session.transaction_read_only = 'OFN'; --Error ER_WRONG_VALUE_FOR_VAR SET @@session.transaction_read_only = -2; --Error ER_WRONG_TYPE_FOR_VAR SET @@session.transaction_read_only = 65530.34; --Error ER_WRONG_VALUE_FOR_VAR SET @@session.transaction_read_only = 65550; --Error ER_WRONG_VALUE_FOR_VAR SET @@session.transaction_read_only = test; SELECT @@session.transaction_read_only; --echo #################################################################### --echo # Check if the value in GLOBAL Table matches value in variable # --echo #################################################################### SELECT IF(@@global.transaction_read_only, "ON", "OFF") = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='transaction_read_only'; --echo #################################################################### --echo # Check if the value in SESSION Table matches value in variable # --echo #################################################################### SELECT IF(@@session.transaction_read_only, "ON", "OFF") = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='transaction_read_only'; --echo ############################################################################### --echo # Check if accessing variable with and without GLOBAL point to same variable # --echo ############################################################################### SET @@transaction_read_only = OFF; SET @@global.transaction_read_only = ON; SELECT @@transaction_read_only = @@global.transaction_read_only; --echo ############################################################################## --echo # Check if accessing variable with SESSION,LOCAL and without SCOPE points # --echo # to same session variable # --echo ############################################################################## SET @@transaction_read_only = ON; SELECT @@transaction_read_only = @@local.transaction_read_only; SELECT @@local.transaction_read_only = @@session.transaction_read_only; --echo ############################################################################### --echo # Check if transaction_read_only can be accessed with and without @@ sign # --echo ############################################################################### --echo # @@session is synonym for SESSION SET @@session.transaction_read_only= 0; --echo # Without modifier, SET changes session variable SET transaction_read_only = 1; SELECT @@transaction_read_only; --echo # name1.name2 refers to database_name.table_name --Error ER_UNKNOWN_TABLE SELECT session.transaction_read_only; --echo #################################### --echo # Restore initial value # --echo #################################### SET @@global.transaction_read_only = @start_global_value; SELECT @@global.transaction_read_only; SET @@session.transaction_read_only = @start_session_value; SELECT @@session.transaction_read_only; --echo ######################################################### --echo # END OF transaction_read_only TESTS # --echo #########################################################