• Ingo Struewing's avatar
    Bug#28234 - global/session scope - documentation vs implementation · f92c5731
    Ingo Struewing authored
    Several system variables did not behave like system variables should do.
    When trying to SET them or use them in SELECT, they were reported as
    "unknown system variable". But they appeared in SHOW VARIABLES.
    
    This has been fixed by removing the "fixed_vars" array of variables
    and integrating the variables into the normal system variables chain.
    All of these variables do now behave as read-only global-only
    variables. Trying to SET them tells they are read-only, trying to
    SELECT the session value tells they are global only. Selecting the
    global value works. It delivers the same value as SHOW VARIABLES.
    
    
    mysql-test/r/variables-notembedded.result:
      Bug#28234 - global/session scope - documentation vs implementation
      New test result.
    mysql-test/r/variables.result:
      Bug#28234 - global/session scope - documentation vs implementation
      New test result.
    mysql-test/t/variables-notembedded.test:
      Bug#28234 - global/session scope - documentation vs implementation
      Added a test for each moved variable that is not present in an
      embedded server.
    mysql-test/t/variables.test:
      Bug#28234 - global/session scope - documentation vs implementation
      Added a test for each moved variable that is also present in an
      embedded server.
    sql/item_func.cc:
      Bug#28234 - global/session scope - documentation vs implementation
      Added SHOW_BOOL to some Item_func_get_system_var methods.
    sql/set_var.cc:
      Bug#28234 - global/session scope - documentation vs implementation
      Moved all variables from the "fixed_vars" array into the normal
      system variables chain by using the new variable class sys_var_const.
      Removed the fixed_show_vars array and its initialization in
      enumerate_sys_vars().
      Removed mysql_append_static_vars(), which added fixed_vars arrays
      to the fixed_show_vars array.
    sql/set_var.h:
      Bug#28234 - global/session scope - documentation vs implementation
      Added the new system variable class sys_var_const.
      Removed declaration of mysql_append_static_vars().
    sql/slave.cc:
      Bug#28234 - global/session scope - documentation vs implementation
      Moved the definition of show_slave_skip_errors() from sql_repl.cc
      to here and renamed it to print_slave_skip_errors().
      Changed print_slave_skip_errors() to create a static buffer with
      a printable version of the error numbers set.
      Added a call of print_slave_skip_errors() to init_slave_skip_errors().
    sql/slave.h:
      Bug#28234 - global/session scope - documentation vs implementation
      Added declaration of slave_skip_error_names.
    sql/sql_repl.cc:
      Bug#28234 - global/session scope - documentation vs implementation
      Moved all variables from the "fixed_vars" array into the normal
      system variables chain by using the new variable class sys_var_const.
      Moved the definition of show_slave_skip_errors() to slave.cc and
      modified it to compute the string once at server initialization only.
      Removed the call to mysql_append_static_vars().
    f92c5731
set_var.h 42.5 KB