• Neeraj Bisht's avatar
    Bug#17075846 - UNQUOTED FILE NAMES FOR VARIABLE VALUES ARE · e13b28af
    Neeraj Bisht authored
    	       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).
    
    mysql-test/suite/sys_vars/t/general_log_file_basic.test:
      Earlier we used to give ER_WRONG_VALUE_FOR_VAR error, but in the patch of
      (Bug32748-Inconsistent handling of assignments to general_log_file/slow_query_log_file)
      they quoted this line.But i am not able to find any relation of this with the changes of
      patch. So i think We should give error in this case.
    mysql-test/suite/sys_vars/t/slow_query_log_file_basic.test:
      Earlier we used to give ER_WRONG_VALUE_FOR_VAR error, but in the patch of
      (Bug32748-Inconsistent handling of assignments to general_log_file/slow_query_log_file)
      they quoted this line.But i am not able to find any relation of this with the changes of
      patch. So i think We should give error in this case.
    e13b28af
sql_yacc.yy 438 KB