####################################################################
#           START OF tx_read_only TESTS                            #
####################################################################
#############################################################
#                 Save initial value                        #
#############################################################
SET @start_global_value = @@global.tx_read_only;
SELECT @start_global_value;
@start_global_value
0
SET @start_session_value = @@session.tx_read_only;
SELECT @start_session_value;
@start_session_value
0
########################################################################
#     Display the DEFAULT value of tx_read_only                        #
########################################################################
SET @@global.tx_read_only = ON;
SET @@global.tx_read_only = DEFAULT;
SELECT @@global.tx_read_only;
@@global.tx_read_only
0
SET @@session.tx_read_only = ON;
SET @@session.tx_read_only = DEFAULT;
SELECT @@session.tx_read_only;
@@session.tx_read_only
0
##############################################################################
# Change the value of tx_read_only to a valid value for GLOBAL Scope         #
##############################################################################
SET @@global.tx_read_only = ON;
SELECT @@global.tx_read_only;
@@global.tx_read_only
1
SET @@global.tx_read_only = OFF;
SELECT @@global.tx_read_only;
@@global.tx_read_only
0
SET @@global.tx_read_only = 0;
SELECT @@global.tx_read_only;
@@global.tx_read_only
0
SET @@global.tx_read_only = 1;
SELECT @@global.tx_read_only;
@@global.tx_read_only
1
SET @@global.tx_read_only = TRUE;
SELECT @@global.tx_read_only;
@@global.tx_read_only
1
SET @@global.tx_read_only = FALSE;
SELECT @@global.tx_read_only;
@@global.tx_read_only
0
###############################################################################
# Change the value of tx_read_only to a valid value for SESSION Scope         #
###############################################################################
SET @@session.tx_read_only = ON;
SELECT @@session.tx_read_only;
@@session.tx_read_only
1
SET @@session.tx_read_only = OFF;
SELECT @@session.tx_read_only;
@@session.tx_read_only
0
SET @@session.tx_read_only = 0;
SELECT @@session.tx_read_only;
@@session.tx_read_only
0
SET @@session.tx_read_only = 1;
SELECT @@session.tx_read_only;
@@session.tx_read_only
1
SET @@session.tx_read_only = TRUE;
SELECT @@session.tx_read_only;
@@session.tx_read_only
1
SET @@session.tx_read_only = FALSE;
SELECT @@session.tx_read_only;
@@session.tx_read_only
0
################################################################
# Change the value of tx_read_only to an invalid value         #
################################################################
SET @@global.tx_read_only = 'ONN';
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'ONN'
SET @@global.tx_read_only = "OFFF";
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'OFFF'
SET @@global.tx_read_only = TTRUE;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'TTRUE'
SET @@global.tx_read_only = FELSE;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'FELSE'
SET @@global.tx_read_only = -1024;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of '-1024'
SET @@global.tx_read_only = 65536;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of '65536'
SET @@global.tx_read_only = 65530.34;
ERROR 42000: Incorrect argument type to variable 'tx_read_only'
SET @@global.tx_read_only = test;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'test'
SET @@session.tx_read_only = ONN;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'ONN'
SET @@session.tx_read_only = ONF;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'ONF'
SET @@session.tx_read_only = OF;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'OF'
SET @@session.tx_read_only = 'OFN';
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'OFN'
SET @@session.tx_read_only = -2;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of '-2'
SET @@session.tx_read_only = 65530.34;
ERROR 42000: Incorrect argument type to variable 'tx_read_only'
SET @@session.tx_read_only = 65550;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of '65550'
SET @@session.tx_read_only = test;
ERROR 42000: Variable 'tx_read_only' can't be set to the value of 'test'
SELECT @@session.tx_read_only;
@@session.tx_read_only
0
####################################################################
#   Check if the value in GLOBAL Table matches value in variable   #
####################################################################
SELECT IF(@@global.tx_read_only, "ON", "OFF") = VARIABLE_VALUE 
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='tx_read_only';
IF(@@global.tx_read_only, "ON", "OFF") = VARIABLE_VALUE
1
####################################################################
#  Check if the value in SESSION Table matches value in variable   #
####################################################################
SELECT IF(@@session.tx_read_only, "ON", "OFF") = VARIABLE_VALUE 
FROM INFORMATION_SCHEMA.SESSION_VARIABLES 
WHERE VARIABLE_NAME='tx_read_only';
IF(@@session.tx_read_only, "ON", "OFF") = VARIABLE_VALUE
1
###############################################################################
#  Check if accessing variable with and without GLOBAL point to same variable #
###############################################################################
SET @@tx_read_only = OFF;
SET @@global.tx_read_only = ON;
SELECT @@tx_read_only = @@global.tx_read_only;
@@tx_read_only = @@global.tx_read_only
0
##############################################################################
#    Check if accessing variable with SESSION,LOCAL and without SCOPE points #
#    to same session variable                                                #
##############################################################################
SET @@tx_read_only = ON;
SELECT @@tx_read_only = @@local.tx_read_only;
@@tx_read_only = @@local.tx_read_only
1
SELECT @@local.tx_read_only = @@session.tx_read_only;
@@local.tx_read_only = @@session.tx_read_only
1
###############################################################################
#   Check if tx_read_only can be accessed with and without @@ sign            #
###############################################################################
# @@session is synonym for SESSION
SET @@session.tx_read_only= 0;
# Without modifier, SET changes session variable
SET tx_read_only = 1;
SELECT @@tx_read_only;
@@tx_read_only
1
# name1.name2 refers to database_name.table_name
SELECT session.tx_read_only;
ERROR 42S02: Unknown table 'session' in field list
####################################
#     Restore initial value        #
####################################
SET @@global.tx_read_only = @start_global_value;
SELECT @@global.tx_read_only;
@@global.tx_read_only
0
SET @@session.tx_read_only = @start_session_value;
SELECT @@session.tx_read_only;
@@session.tx_read_only
0
#########################################################
#                 END OF tx_read_only TESTS             #
#########################################################