• Guilhem Bichot's avatar
    Fix for BUG#51215 "log-error partially works with version 5.5": WL 4738... · 7bb4e5b4
    Guilhem Bichot authored
    Fix for BUG#51215 "log-error partially works with version 5.5": WL 4738 (reengineering of server variables)
    had broken the 5.1 behaviour of --log-error: --log-error without argument sent to stderr instead of writing
    to a file with an autogenerated name.
    
    mysql-test/suite/sys_vars/t/log_error_func.test:
      test that error log is created and shown in SHOW VARIABLES.
      Interestingly the error log's path is apparently relative if --log-error=argument is used, but
      may be absolute or relative if --log-error(no argument) is used (because then the path is derived from
      that of pidfile_name, which can be absolute or relative, depending on if autogenerated or not).
    mysql-test/suite/sys_vars/t/log_error_func2.test:
      test that error log is created and shown in SHOW VARIABLES
    mysql-test/suite/sys_vars/t/log_error_func3.test:
      test that error log is empty in SHOW VARIABLES
    sql/mysql_priv.h:
      id for option --log-error
    sql/mysqld.cc:
      No --log-error means "write errors to stderr", whereas --log-error
      without argument means "write errors to a file". So we cannot use the default logic
      of class sys_var_charptr, which treats "option not used" the same as "option used
      without argument" and uses the same default for both. We need to catch "option used",
      in mysqld_get_one_option(), and then "without argument". Setting to "" makes sure
      that init_server_components() will create the log, with an autogenerated name.
    sql/sys_vars.cc:
      need to give the option a numeric id so that we can catch it in mysqld_get_one_option()
    7bb4e5b4
mysqld.cc 266 KB