Commit 9c7add9c authored by joerg@debian.(none)'s avatar joerg@debian.(none)

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

into debian.(none):/M51/mysql-5.1
parents 07b3d2e4 01824dd7
...@@ -140,3 +140,5 @@ t1 CREATE TABLE `t1` ( ...@@ -140,3 +140,5 @@ t1 CREATE TABLE `t1` (
`a` int(11) default NULL `a` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) PARTITIONS 2 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY KEY (a) PARTITIONS 2
DROP TABLE t1; 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; ...@@ -210,3 +210,9 @@ SHOW CREATE TABLE t1;
ALTER TABLE t1 PARTITION BY KEY(a) PARTITIONS 2; ALTER TABLE t1 PARTITION BY KEY(a) PARTITIONS 2;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
DROP 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, ...@@ -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); DBUG_ASSERT(inited == 1);
(void) pthread_mutex_destroy(&LOCK_logger); (void) pthread_mutex_destroy(&LOCK_logger);
if (table_log_handler) if (table_log_handler)
{
table_log_handler->cleanup(); table_log_handler->cleanup();
delete table_log_handler;
}
if (file_log_handler) if (file_log_handler)
file_log_handler->cleanup(); 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) void LOGGER::close_log_table(uint log_type, bool lock_in_use)
{ {
table_log_handler->close_log_table(log_type, lock_in_use); table_log_handler->close_log_table(log_type, lock_in_use);
......
...@@ -479,7 +479,10 @@ class LOGGER ...@@ -479,7 +479,10 @@ class LOGGER
{ {
return (THD *) table_log_handler->slow_log_thd; 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, bool error_log_print(enum loglevel level, const char *format,
va_list args); va_list args);
bool slow_log_print(THD *thd, const char *query, uint query_length, bool slow_log_print(THD *thd, const char *query, uint query_length,
......
...@@ -1144,7 +1144,8 @@ void clean_up(bool print_message) ...@@ -1144,7 +1144,8 @@ void clean_up(bool print_message)
if (cleanup_done++) if (cleanup_done++)
return; /* purecov: inspected */ return; /* purecov: inspected */
logger.cleanup(); logger.cleanup_base();
/* /*
make sure that handlers finish up make sure that handlers finish up
what they have that is dependent on the binlog what they have that is dependent on the binlog
...@@ -1237,6 +1238,8 @@ void clean_up(bool print_message) ...@@ -1237,6 +1238,8 @@ void clean_up(bool print_message)
/* do the broadcast inside the lock to ensure that my_end() is not called */ /* do the broadcast inside the lock to ensure that my_end() is not called */
(void) pthread_cond_broadcast(&COND_thread_count); (void) pthread_cond_broadcast(&COND_thread_count);
(void) pthread_mutex_unlock(&LOCK_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 The following lines may never be executed as the main thread may have
killed us 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