Commit 72f395a5 authored by gkodinov/kgeorge@magare.gmz's avatar gkodinov/kgeorge@magare.gmz

Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt

into  magare.gmz:/home/kgeorge/mysql/autopush/B27816-5.1-opt
parents 0d6bae22 949d96f1
...@@ -1245,4 +1245,12 @@ INSERT INTO t1 SELECT a + 8, b FROM t1; ...@@ -1245,4 +1245,12 @@ INSERT INTO t1 SELECT a + 8, b FROM t1;
ALTER TABLE t1 ADD PARTITION (PARTITION p1 VALUES LESS THAN (64)); ALTER TABLE t1 ADD PARTITION (PARTITION p1 VALUES LESS THAN (64));
ALTER TABLE t1 DROP PARTITION p1; ALTER TABLE t1 DROP PARTITION p1;
DROP TABLE t1; DROP TABLE t1;
USE mysql;
SET GLOBAL general_log = 0;
ALTER TABLE general_log ENGINE = MyISAM;
ALTER TABLE general_log PARTITION BY RANGE (TO_DAYS(event_time))
(PARTITION p0 VALUES LESS THAN (733144), PARTITION p1 VALUES LESS THAN (3000000));
ERROR HY000: Incorrect usage of PARTITION and log table
ALTER TABLE general_log ENGINE = CSV;
SET GLOBAL general_log = default;
End of 5.1 tests End of 5.1 tests
...@@ -1465,4 +1465,18 @@ ALTER TABLE t1 DROP PARTITION p1; ...@@ -1465,4 +1465,18 @@ ALTER TABLE t1 DROP PARTITION p1;
DROP TABLE t1; DROP TABLE t1;
#
# Bug #27816: Log tables ran with partitions crashes the server when logging
# is enabled.
#
USE mysql;
SET GLOBAL general_log = 0;
ALTER TABLE general_log ENGINE = MyISAM;
--error ER_WRONG_USAGE
ALTER TABLE general_log PARTITION BY RANGE (TO_DAYS(event_time))
(PARTITION p0 VALUES LESS THAN (733144), PARTITION p1 VALUES LESS THAN (3000000));
ALTER TABLE general_log ENGINE = CSV;
SET GLOBAL general_log = default;
--echo End of 5.1 tests --echo End of 5.1 tests
...@@ -296,6 +296,8 @@ bool Log_to_csv_event_handler::open_log_table(uint log_table_type) ...@@ -296,6 +296,8 @@ bool Log_to_csv_event_handler::open_log_table(uint log_table_type)
table->db= log_thd->db; table->db= log_thd->db;
table->db_length= log_thd->db_length; table->db_length= log_thd->db_length;
lex_start(log_thd);
log_thd->clear_error();
if (simple_open_n_lock_tables(log_thd, table) || if (simple_open_n_lock_tables(log_thd, table) ||
table->table->file->extra(HA_EXTRA_MARK_AS_LOG_TABLE) || table->table->file->extra(HA_EXTRA_MARK_AS_LOG_TABLE) ||
table->table->file->ha_rnd_init(0)) table->table->file->ha_rnd_init(0))
......
...@@ -5747,21 +5747,31 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, ...@@ -5747,21 +5747,31 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
table_list->table_name_length, table_list->table_name_length,
table_list->table_name, 0); table_list->table_name, 0);
/* Disable alter of enabled log tables */ if (table_kind)
if (table_kind && logger.is_log_table_enabled(table_kind))
{ {
my_error(ER_BAD_LOG_STATEMENT, MYF(0), "ALTER"); /* Disable alter of enabled log tables */
DBUG_RETURN(TRUE); if (logger.is_log_table_enabled(table_kind))
} {
my_error(ER_BAD_LOG_STATEMENT, MYF(0), "ALTER");
DBUG_RETURN(TRUE);
}
/* Disable alter of log tables to unsupported engine */ /* Disable alter of log tables to unsupported engine */
if (table_kind && if ((create_info->used_fields & HA_CREATE_USED_ENGINE) &&
(create_info->used_fields & HA_CREATE_USED_ENGINE) && (!create_info->db_type || /* unknown engine */
(!create_info->db_type || /* unknown engine */ !(create_info->db_type->flags & HTON_SUPPORT_LOG_TABLES)))
!(create_info->db_type->flags & HTON_SUPPORT_LOG_TABLES))) {
{ my_error(ER_UNSUPORTED_LOG_ENGINE, MYF(0));
my_error(ER_UNSUPORTED_LOG_ENGINE, MYF(0)); DBUG_RETURN(TRUE);
DBUG_RETURN(TRUE); }
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (alter_info->flags & ALTER_PARTITION)
{
my_error(ER_WRONG_USAGE, MYF(0), "PARTITION", "log table");
DBUG_RETURN(TRUE);
}
#endif
} }
} }
......
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