1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-24 14:48:09 +03:00
Files
mariadb/mysql-test/suite/sys_vars/t/general_log_file_basic.test
Neeraj Bisht a3123b8475 Bug#17075846 - UNQUOTED FILE NAMES FOR VARIABLE VALUES ARE
ACCEPTED BUT PARSED INCORRECTLY

When we are setting the value in a system variable, 
We can set it like 

set sys_var="Iden1.Iden2";		//1
set sys_var='Iden1.Iden2';		//2
set sys_var=Iden1.Iden2;		//3
set sys_var=.ident1.ident2; 		//4
set sys_var=`Iden1.Iden2`;		//5


While parsing, for case 1(when ANSI_QUOTES is enable) and 2,
we will take as string literal(we will make item of type Item_string).
for case 3 & 4, taken as Item_field, where Iden1 is a table name and
iden2 is a field name.
for case 5, again Item_field type, where iden1.iden2 is taken as
field name.


Now in case 1, when we are assigning some value to system variable
(which can take string or enumerate type data), we are setting only 
field part.
This means only iden2 value will be set for system variable. This 
result in wrong result.

Solution:

(for string type) We need to Document that we are not allowed to set 
system variable which takes string as identifier, otherwise result 
in unexpected behaviour.

(for enumerate type)
if we pass iden1.iden2, we will give an error ER_WRONG_TYPE_FOR_VAR
(Incorrect argument type to variable).
2014-02-12 14:33:56 +05:30

78 lines
3.9 KiB
Plaintext

################### mysql-test\t\general_log_file_basic.test ###################
# #
# Variable Name: general_log_file #
# Scope: GLOBAL #
# Access Type: Dynamic #
# Data Type: Filename #
# Default Value: host_name.log #
# Valid Values: #
# #
# #
# Creation Date: 2008-03-16 #
# Author: Salman Rawala #
# Modified: HHunger 2008-09-11 Set system variable back to the start value #
# #
# Description: Test Cases of Dynamic System Variable "general_log_file" #
# that checks 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.1/en/server-system-variables.html #
# #
################################################################################
--source include/load_sysvars.inc
###########################################################
# START OF general_log_file TESTS #
###########################################################
########################################################################
# Saving initial value of general_log_file in a temporary variable #
########################################################################
SET @start_value = @@global.general_log_file;
SELECT @start_value;
--echo '#---------------------FN_DYNVARS_004_01-------------------------#'
###############################################
# Verify default value of variable #
###############################################
SET @@global.general_log_file = DEFAULT;
SET @a=concat(left(@@hostname, instr(concat(@@hostname, '.'), '.')-1), '.log');
SELECT RIGHT(@@global.general_log_file, length(@a)) = @a;
--echo '#--------------------FN_DYNVARS_004_02------------------------#'
#######################################################################
# Change the value of general_log_file to a invalid value #
#######################################################################
--error ER_WRONG_TYPE_FOR_VAR
SET @@global.general_log_file = mytest.log;
--error ER_WRONG_TYPE_FOR_VAR
SET @@global.general_log_file = 12;
--echo '#----------------------FN_DYNVARS_004_03------------------------#'
##############################################################################
# Check if the value in GLOBAL Tables matches values in variable #
##############################################################################
SELECT @@global.general_log_file = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='general_log_file';
SET @@global.general_log_file= @start_value;
#####################################################
# END OF general_log_file TESTS #
#####################################################