Commit d8c8fd5b authored by unknown's avatar unknown

Fix for Bug#33065: Mysql not writing general query logs after

sending SIGHUP.

There were two problems:
  - after some recent fix, the server started to crash after
    receiving SIGHUP. That happened because LEX of new THD-object
    was not properly initialized.
  - user-specified log options were ignored when logs were reopened.

The fix is to 1) initialize LEX and 2) take user-specified options
into account.

There is no test case in this CS, because our test suite does not
support sending SIGHUP to the server.


sql/mysqld.cc:
  Use proper logging after SIGHUP.
sql/sql_parse.cc:
  Initialize LEX of new THD -- it is required to avoid crash
  in SIGHUP handling.
parent ffd88cb2
......@@ -2573,8 +2573,18 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
(TABLE_LIST*) 0, &not_used); // Flush logs
}
/* reenable logs after the options were reloaded */
logger.set_handlers(LOG_FILE, opt_slow_log ? LOG_TABLE:LOG_NONE,
opt_log ? LOG_TABLE:LOG_NONE);
if (log_output_options & LOG_NONE)
{
logger.set_handlers(LOG_FILE,
opt_slow_log ? LOG_TABLE : LOG_NONE,
opt_log ? LOG_TABLE : LOG_NONE);
}
else
{
logger.set_handlers(LOG_FILE,
opt_slow_log ? log_output_options : LOG_NONE,
opt_log ? log_output_options : LOG_NONE);
}
break;
#ifdef USE_ONE_SIGNAL_HAND
case THR_SERVER_ALARM:
......
......@@ -6448,6 +6448,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
{
thd->thread_stack= (char*) &tmp_thd;
thd->store_globals();
lex_start(thd);
}
if (thd)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment