diff options
author | unknown <petr/cps@owlet.local> | 2006-09-15 17:24:13 +0400 |
---|---|---|
committer | unknown <petr/cps@owlet.local> | 2006-09-15 17:24:13 +0400 |
commit | 372d1c8c5a82ade48a98ca9c724241ef348eff7b (patch) | |
tree | 941901b73008934003e348da1eb5233732e53c0b | |
parent | bba4e89a514b7d61ef04ce012514538ee59dff35 (diff) | |
parent | abbb201661144f2a75d70c32da49dcb1692be412 (diff) | |
download | mariadb-git-372d1c8c5a82ade48a98ca9c724241ef348eff7b.tar.gz |
Merge pchardin@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into mysql.com:/home/cps/mysql/trees/5.1-runtime-new
sql/handler.h:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_table.cc:
Auto merged
storage/csv/ha_tina.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
-rw-r--r-- | mysql-test/r/log_tables.result | 18 | ||||
-rw-r--r-- | mysql-test/t/log_tables.test | 18 | ||||
-rw-r--r-- | sql/handler.h | 1 | ||||
-rw-r--r-- | sql/share/errmsg.txt | 4 | ||||
-rw-r--r-- | sql/sql_table.cc | 9 | ||||
-rw-r--r-- | storage/csv/ha_tina.cc | 2 | ||||
-rw-r--r-- | storage/myisam/ha_myisam.cc | 2 | ||||
-rw-r--r-- | storage/myisam/mi_write.c | 8 |
8 files changed, 33 insertions, 29 deletions
diff --git a/mysql-test/r/log_tables.result b/mysql-test/r/log_tables.result index 638c05dd712..59cef29dc8f 100644 --- a/mysql-test/r/log_tables.result +++ b/mysql-test/r/log_tables.result @@ -73,16 +73,16 @@ select * from mysql.slow_log; start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text TIMESTAMP USER_HOST QUERY_TIME 00:00:00 1 0 test 0 0 1 select sleep(2) alter table mysql.general_log engine=myisam; -ERROR HY000: You can't alter a log table if logging is enabled +ERROR HY000: You cannot alter a log table if logging is enabled alter table mysql.slow_log engine=myisam; -ERROR HY000: You can't alter a log table if logging is enabled +ERROR HY000: You cannot alter a log table if logging is enabled drop table mysql.general_log; -ERROR HY000: Cannot drop log table if log is enabled +ERROR HY000: You cannot drop a log table if logging is enabled drop table mysql.slow_log; -ERROR HY000: Cannot drop log table if log is enabled +ERROR HY000: You cannot drop a log table if logging is enabled set global general_log='OFF'; alter table mysql.slow_log engine=myisam; -ERROR HY000: You can't alter a log table if logging is enabled +ERROR HY000: You cannot alter a log table if logging is enabled set global slow_query_log='OFF'; show create table mysql.general_log; Table Create Table @@ -173,13 +173,13 @@ unlock tables; set global general_log='OFF'; set global slow_query_log='OFF'; alter table mysql.slow_log engine=ndb; -ERROR HY000: One can use only CSV and MyISAM engines for the log tables +ERROR HY000: This storage engine cannot be used for log tables" alter table mysql.slow_log engine=innodb; -ERROR HY000: One can use only CSV and MyISAM engines for the log tables +ERROR HY000: This storage engine cannot be used for log tables" alter table mysql.slow_log engine=archive; -ERROR HY000: One can use only CSV and MyISAM engines for the log tables +ERROR HY000: This storage engine cannot be used for log tables" alter table mysql.slow_log engine=blackhole; -ERROR HY000: One can use only CSV and MyISAM engines for the log tables +ERROR HY000: This storage engine cannot be used for log tables" drop table mysql.slow_log; drop table mysql.general_log; drop table mysql.general_log; diff --git a/mysql-test/t/log_tables.test b/mysql-test/t/log_tables.test index 97c83310b4d..d9e17129799 100644 --- a/mysql-test/t/log_tables.test +++ b/mysql-test/t/log_tables.test @@ -178,21 +178,21 @@ select * from mysql.slow_log; # check that appropriate error messages are given when one attempts to alter # or drop a log tables, while corresponding logs are enabled ---error ER_CANT_ALTER_LOG_TABLE +--error ER_BAD_LOG_STATEMENT alter table mysql.general_log engine=myisam; ---error ER_CANT_ALTER_LOG_TABLE +--error ER_BAD_LOG_STATEMENT alter table mysql.slow_log engine=myisam; ---error ER_CANT_DROP_LOG_TABLE +--error ER_BAD_LOG_STATEMENT drop table mysql.general_log; ---error ER_CANT_DROP_LOG_TABLE +--error ER_BAD_LOG_STATEMENT drop table mysql.slow_log; # check that one can alter log tables to MyISAM set global general_log='OFF'; # cannot convert another log table ---error ER_CANT_ALTER_LOG_TABLE +--error ER_BAD_LOG_STATEMENT alter table mysql.slow_log engine=myisam; # alter both tables @@ -252,13 +252,13 @@ set global general_log='OFF'; set global slow_query_log='OFF'; # check that alter table doesn't work for other engines ---error ER_BAD_LOG_ENGINE +--error ER_UNSUPORTED_LOG_ENGINE alter table mysql.slow_log engine=ndb; ---error ER_BAD_LOG_ENGINE +--error ER_UNSUPORTED_LOG_ENGINE alter table mysql.slow_log engine=innodb; ---error ER_BAD_LOG_ENGINE +--error ER_UNSUPORTED_LOG_ENGINE alter table mysql.slow_log engine=archive; ---error ER_BAD_LOG_ENGINE +--error ER_UNSUPORTED_LOG_ENGINE alter table mysql.slow_log engine=blackhole; drop table mysql.slow_log; diff --git a/sql/handler.h b/sql/handler.h index abc3e18d7a0..92a3ad69138 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -690,6 +690,7 @@ struct handlerton #define HTON_FLUSH_AFTER_RENAME (1 << 4) #define HTON_NOT_USER_SELECTABLE (1 << 5) #define HTON_TEMPORARY_NOT_SUPPORTED (1 << 6) //Having temporary tables not supported +#define HTON_SUPPORT_LOG_TABLES (1 << 7) //Engine supports log tables typedef struct st_thd_trans { diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 37f54899615..2b382317253 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -5990,3 +5990,7 @@ ER_HOSTNAME eng "host name" ER_WRONG_STRING_LENGTH eng "String '%-.70s' is too long for %s (should be no longer than %d)" +ER_UNSUPORTED_LOG_ENGINE + eng "This storage engine cannot be used for log tables"" +ER_BAD_LOG_STATEMENT + eng "You cannot %s a log table if logging is enabled" diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 02de7abb674..25de19b20b2 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1628,7 +1628,7 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists, (!my_strcasecmp(system_charset_info, table->table_name, "slow_log") && opt_slow_log && logger.is_slow_log_table_enabled()))) { - my_error(ER_CANT_DROP_LOG_TABLE, MYF(0)); + my_error(ER_BAD_LOG_STATEMENT, MYF(0), "drop"); DBUG_RETURN(1); } } @@ -5179,7 +5179,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, (table_kind == SLOW_LOG && opt_slow_log && logger.is_slow_log_table_enabled())) { - my_error(ER_CANT_ALTER_LOG_TABLE, MYF(0)); + my_error(ER_BAD_LOG_STATEMENT, MYF(0), "alter"); DBUG_RETURN(TRUE); } @@ -5187,10 +5187,9 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, if ((table_kind == GENERAL_LOG || table_kind == SLOW_LOG) && (lex_create_info->used_fields & HA_CREATE_USED_ENGINE) && (!lex_create_info->db_type || /* unknown engine */ - !(lex_create_info->db_type->db_type == DB_TYPE_MYISAM || - lex_create_info->db_type->db_type == DB_TYPE_CSV_DB))) + !(lex_create_info->db_type->flags & HTON_SUPPORT_LOG_TABLES))) { - my_error(ER_BAD_LOG_ENGINE, MYF(0)); + my_error(ER_UNSUPORTED_LOG_ENGINE, MYF(0)); DBUG_RETURN(TRUE); } } diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index ce19202d745..698b7302a81 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -162,7 +162,7 @@ static int tina_init_func() tina_hton.db_type= DB_TYPE_CSV_DB; tina_hton.create= tina_create_handler; tina_hton.panic= tina_end; - tina_hton.flags= HTON_CAN_RECREATE; + tina_hton.flags= HTON_CAN_RECREATE | HTON_SUPPORT_LOG_TABLES; } return 0; } diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc index 6a32ba95eee..e73735a3203 100644 --- a/storage/myisam/ha_myisam.cc +++ b/storage/myisam/ha_myisam.cc @@ -1783,7 +1783,7 @@ static int myisam_init() myisam_hton.db_type=DB_TYPE_MYISAM; myisam_hton.create=myisam_create_handler; myisam_hton.panic=mi_panic; - myisam_hton.flags=HTON_CAN_RECREATE; + myisam_hton.flags= HTON_CAN_RECREATE | HTON_SUPPORT_LOG_TABLES; return 0; } diff --git a/storage/myisam/mi_write.c b/storage/myisam/mi_write.c index f16d9471afe..7080875009b 100644 --- a/storage/myisam/mi_write.c +++ b/storage/myisam/mi_write.c @@ -167,13 +167,13 @@ int mi_write(MI_INFO *info, byte *record) /* Update status of the table. We need to do so after each row write for the log tables, as we want the new row to become visible to - other threads as soon as possible. We lock mutex here to follow - pthread memory visibility rules. + other threads as soon as possible. We don't lock mutex here + (as it is required by pthread memory visibility rules) as (1) it's + not critical to use outdated share->is_log_table value (2) locking + mutex here for every write is too expensive. */ - pthread_mutex_lock(&share->intern_lock); if (share->is_log_table) mi_update_status((void*) info); - pthread_mutex_unlock(&share->intern_lock); allow_break(); /* Allow SIGHUP & SIGINT */ DBUG_RETURN(0); |