Commit c341e570 authored by unknown's avatar unknown

Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into debian.(none):/M51/mysql-5.1
parents 24574163 8117fc94
......@@ -140,3 +140,5 @@ t1 CREATE TABLE `t1` (
`a` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) PARTITIONS 2
DROP TABLE t1;
CREATE TABLE t1 (a INT) PARTITION BY HASH(a);
ALTER TABLE t1 ADD PARTITION PARTITIONS 4;
......@@ -210,3 +210,9 @@ SHOW CREATE TABLE t1;
ALTER TABLE t1 PARTITION BY KEY(a) PARTITIONS 2;
SHOW CREATE TABLE t1;
DROP TABLE t1;
#
#BUG 15820 create table with 1 partition, doing ALTER TABLE ADD PARTITION fails
#
CREATE TABLE t1 (a INT) PARTITION BY HASH(a);
ALTER TABLE t1 ADD PARTITION PARTITIONS 4;
......@@ -561,17 +561,28 @@ bool LOGGER::error_log_print(enum loglevel level, const char *format,
}
void LOGGER::cleanup()
void LOGGER::cleanup_base()
{
DBUG_ASSERT(inited == 1);
(void) pthread_mutex_destroy(&LOCK_logger);
if (table_log_handler)
{
table_log_handler->cleanup();
delete table_log_handler;
}
if (file_log_handler)
file_log_handler->cleanup();
}
void LOGGER::cleanup_end()
{
DBUG_ASSERT(inited == 1);
if (file_log_handler)
delete file_log_handler;
}
void LOGGER::close_log_table(uint log_type, bool lock_in_use)
{
table_log_handler->close_log_table(log_type, lock_in_use);
......
......@@ -479,7 +479,10 @@ class LOGGER
{
return (THD *) table_log_handler->slow_log_thd;
}
void cleanup();
/* Perform basic logger cleanup. this will leave e.g. error log open. */
void cleanup_base();
/* Free memory. Nothing could be logged after this function is called */
void cleanup_end();
bool error_log_print(enum loglevel level, const char *format,
va_list args);
bool slow_log_print(THD *thd, const char *query, uint query_length,
......
......@@ -1144,7 +1144,8 @@ void clean_up(bool print_message)
if (cleanup_done++)
return; /* purecov: inspected */
logger.cleanup();
logger.cleanup_base();
/*
make sure that handlers finish up
what they have that is dependent on the binlog
......@@ -1237,6 +1238,8 @@ void clean_up(bool print_message)
/* do the broadcast inside the lock to ensure that my_end() is not called */
(void) pthread_cond_broadcast(&COND_thread_count);
(void) pthread_mutex_unlock(&LOCK_thread_count);
logger.cleanup_end();
/*
The following lines may never be executed as the main thread may have
killed us
......
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