120 lines
3.5 KiB
PHP
120 lines
3.5 KiB
PHP
##
|
|
# $sys_var name of the variable
|
|
# $read_only - true if read-only
|
|
# $session - true if this is session, false if global-only
|
|
# valid_values table should contain valid values
|
|
# invalid_values
|
|
##
|
|
|
|
--eval SET @start_global_value = @@global.$sys_var
|
|
SELECT @start_global_value;
|
|
if ($session)
|
|
{
|
|
--eval SET @start_session_value = @@session.$sys_var
|
|
SELECT @start_session_value;
|
|
}
|
|
|
|
if (!$read_only)
|
|
{
|
|
--echo '# Setting to valid values in global scope#'
|
|
|
|
--let $i=1
|
|
--let $value=query_get_value(select value from valid_values, value, $i)
|
|
while ($value != 'No such row')
|
|
{
|
|
--echo "Trying to set variable @@global.$sys_var to $value"
|
|
--eval SET @@global.$sys_var = $value
|
|
--eval SELECT @@global.$sys_var
|
|
--let $v=`SELECT @@global.$sys_var`
|
|
--source ./correctboolvalue.inc
|
|
if (!$sticky)
|
|
{
|
|
if ($v != $int_value)
|
|
{
|
|
--echo Set @@global.$sys_var to $value but it remained set to $v
|
|
--die Wrong variable value
|
|
}
|
|
}
|
|
|
|
--echo "Setting the global scope variable back to default"
|
|
--eval SET @@global.$sys_var = DEFAULT
|
|
--eval SELECT @@global.$sys_var
|
|
|
|
--inc $i
|
|
--let $value=query_get_value(select value from valid_values, value, $i)
|
|
}
|
|
|
|
if ($session)
|
|
{
|
|
--echo '# Setting to valid values in session scope#'
|
|
|
|
--let $i=1
|
|
--let $value=query_get_value(select value from valid_values, value, $i)
|
|
while ($value != 'No such row')
|
|
{
|
|
--echo "Trying to set variable @@session.$sys_var to $value"
|
|
--eval SET @@session.$sys_var = $value
|
|
--eval SELECT @@session.$sys_var
|
|
--let $v=`SELECT @@session.$sys_var`
|
|
--source ./correctboolvalue.inc
|
|
if (!$sticky)
|
|
{
|
|
if ($v != $int_value)
|
|
{
|
|
--echo Set @@session.$sys_var to $value but it remained set to $v
|
|
--die Wrong variable value
|
|
}
|
|
}
|
|
--echo "Setting the session scope variable back to default"
|
|
--eval SET @@session.$sys_var = DEFAULT
|
|
--eval SELECT @@session.$sys_var
|
|
|
|
--inc $i
|
|
--let $value=query_get_value(select value from valid_values, value, $i)
|
|
}
|
|
}
|
|
if (!$session)
|
|
{
|
|
--echo "Trying to set variable @@session.$sys_var to 444. It should fail because it is not session."
|
|
--Error ER_GLOBAL_VARIABLE
|
|
--eval SET @@session.$sys_var = 444
|
|
}
|
|
|
|
--echo '# Testing with invalid values in global scope #'
|
|
####################################################################
|
|
# Change the value of query_prealloc_size to an invalid value #
|
|
####################################################################
|
|
--let $i=1
|
|
--let $value=query_get_value(select value from invalid_values, value, $i)
|
|
while ($value != 'No such row')
|
|
{
|
|
--echo "Trying to set variable @@global.$sys_var to $value"
|
|
--Error ER_WRONG_VALUE_FOR_VAR, ER_WRONG_TYPE_FOR_VAR
|
|
--eval SET @@global.$sys_var = $value
|
|
--eval SELECT @@global.$sys_var
|
|
--inc $i
|
|
--let $value=query_get_value(select value from invalid_values, value, $i)
|
|
}
|
|
}
|
|
|
|
if ($read_only)
|
|
{
|
|
--echo "Trying to set variable @@global.$sys_var to 444. It should fail because it is readonly."
|
|
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
|
--eval SET @@global.$sys_var = 444
|
|
}
|
|
|
|
####################################
|
|
# Restore initial value #
|
|
####################################
|
|
if (!$read_only)
|
|
{
|
|
--eval SET @@global.$sys_var = @start_global_value
|
|
--eval SELECT @@global.$sys_var
|
|
if ($session)
|
|
{
|
|
--eval SET @@session.$sys_var = @start_session_value
|
|
--eval SELECT @@session.$sys_var
|
|
}
|
|
}
|