• Gleb Shchepa's avatar
    Bug #42778: delete order by null global variable causes · 06142cd5
    Gleb Shchepa authored
                assertion .\filesort.cc, line 797
    
    A query with the "ORDER BY @@some_system_variable" clause,
    where @@some_system_variable is NULL, causes assertion
    failure in the filesort procedures.
    
    The reason of the failure is in the value of
    Item_func_get_system_var::maybe_null: it was unconditionally
    set to false even if the value of a variable was NULL.
    
    
    mysql-test/r/variables.result:
      Added test case for bug #42778.
    mysql-test/suite/sys_vars/r/innodb_data_home_dir_basic.result:
      Updated test case for bug #42778:
      system variables were NOT NULL, now they are nullable.
    mysql-test/suite/sys_vars/r/innodb_flush_method_basic.result:
      Updated test case for bug #42778:
      system variables were NOT NULL, now they are nullable.
    mysql-test/suite/sys_vars/r/rpl_init_slave_func.result:
      Updated test case for bug #42778:
      system variables were NOT NULL, now they are nullable.
    mysql-test/suite/sys_vars/r/ssl_capath_basic.result:
      Updated test case for bug #42778:
      system variables were NOT NULL, now they are nullable.
    mysql-test/suite/sys_vars/r/ssl_cipher_basic.result:
      Updated test case for bug #42778:
      system variables were NOT NULL, now they are nullable.
    mysql-test/suite/sys_vars/t/innodb_data_home_dir_basic.test:
      Updated test case for bug #42778:
      system variables were NOT NULL, now they are nullable.
    mysql-test/suite/sys_vars/t/innodb_flush_method_basic.test:
      Updated test case for bug #42778:
      system variables were NOT NULL, now they are nullable.
    mysql-test/suite/sys_vars/t/ssl_capath_basic.test:
      Updated test case for bug #42778:
      system variables were NOT NULL, now they are nullable.
    mysql-test/suite/sys_vars/t/ssl_cipher_basic.test:
      Updated test case for bug #42778:
      system variables were NOT NULL, now they are nullable.
    mysql-test/t/variables.test:
      Added test case for bug #42778.
    sql/item.cc:
      Bug #42778: delete order by null global variable causes
                  assertion .\filesort.cc, line 797
      
      The longlong_from_string_with_check function has been modified
      to skip unwanted warnings: now it uses the THD::no_errors
      flag to suppress warnings.
      The Item_func_get_system_var::update_null_value method
      sets the no_error flag.
    sql/item_func.cc:
      Bug #42778: delete order by null global variable causes
                  assertion .\filesort.cc, line 797
      
      1. The Item_func_get_system_var::fix_length_and_dec method
         has been modified to make system variables truly nullable.
      
      2. The Item_func_get_system_var::update_null_value method
         method has been overloaded with a simple wrapper (like
         Item_field::update_null_value) to suppress unwanted warnings
         from Item_func_get_system_var::val_int() calls on non-numeric
         variable values: the Item_func_get_system_var::update_null_value
         method sets and restores THD::no_errors flag for a nested
         call of the longlong_from_string_with_check function.
    sql/item_func.h:
      Bug #42778: delete order by null global variable causes
                  assertion .\filesort.cc, line 797
      
      The Item_func_get_system_var::update_null_value method
      method has been overloaded.
    06142cd5
item_func.h 47.9 KB