mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge pchardin@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into mysql.com:/home/cps/mysql/trees/5.1-runtime-new
This commit is contained in:
@ -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
|
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)
|
TIMESTAMP USER_HOST QUERY_TIME 00:00:00 1 0 test 0 0 1 select sleep(2)
|
||||||
alter table mysql.general_log engine=myisam;
|
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;
|
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;
|
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;
|
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';
|
set global general_log='OFF';
|
||||||
alter table mysql.slow_log engine=myisam;
|
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';
|
set global slow_query_log='OFF';
|
||||||
show create table mysql.general_log;
|
show create table mysql.general_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -173,13 +173,13 @@ unlock tables;
|
|||||||
set global general_log='OFF';
|
set global general_log='OFF';
|
||||||
set global slow_query_log='OFF';
|
set global slow_query_log='OFF';
|
||||||
alter table mysql.slow_log engine=ndb;
|
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;
|
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;
|
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;
|
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.slow_log;
|
||||||
drop table mysql.general_log;
|
drop table mysql.general_log;
|
||||||
drop table mysql.general_log;
|
drop table mysql.general_log;
|
||||||
|
@ -178,21 +178,21 @@ select * from mysql.slow_log;
|
|||||||
|
|
||||||
# check that appropriate error messages are given when one attempts to alter
|
# check that appropriate error messages are given when one attempts to alter
|
||||||
# or drop a log tables, while corresponding logs are enabled
|
# 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;
|
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;
|
alter table mysql.slow_log engine=myisam;
|
||||||
|
|
||||||
--error ER_CANT_DROP_LOG_TABLE
|
--error ER_BAD_LOG_STATEMENT
|
||||||
drop table mysql.general_log;
|
drop table mysql.general_log;
|
||||||
--error ER_CANT_DROP_LOG_TABLE
|
--error ER_BAD_LOG_STATEMENT
|
||||||
drop table mysql.slow_log;
|
drop table mysql.slow_log;
|
||||||
|
|
||||||
# check that one can alter log tables to MyISAM
|
# check that one can alter log tables to MyISAM
|
||||||
set global general_log='OFF';
|
set global general_log='OFF';
|
||||||
|
|
||||||
# cannot convert another log table
|
# cannot convert another log table
|
||||||
--error ER_CANT_ALTER_LOG_TABLE
|
--error ER_BAD_LOG_STATEMENT
|
||||||
alter table mysql.slow_log engine=myisam;
|
alter table mysql.slow_log engine=myisam;
|
||||||
|
|
||||||
# alter both tables
|
# alter both tables
|
||||||
@ -252,13 +252,13 @@ set global general_log='OFF';
|
|||||||
set global slow_query_log='OFF';
|
set global slow_query_log='OFF';
|
||||||
|
|
||||||
# check that alter table doesn't work for other engines
|
# 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;
|
alter table mysql.slow_log engine=ndb;
|
||||||
--error ER_BAD_LOG_ENGINE
|
--error ER_UNSUPORTED_LOG_ENGINE
|
||||||
alter table mysql.slow_log engine=innodb;
|
alter table mysql.slow_log engine=innodb;
|
||||||
--error ER_BAD_LOG_ENGINE
|
--error ER_UNSUPORTED_LOG_ENGINE
|
||||||
alter table mysql.slow_log engine=archive;
|
alter table mysql.slow_log engine=archive;
|
||||||
--error ER_BAD_LOG_ENGINE
|
--error ER_UNSUPORTED_LOG_ENGINE
|
||||||
alter table mysql.slow_log engine=blackhole;
|
alter table mysql.slow_log engine=blackhole;
|
||||||
|
|
||||||
drop table mysql.slow_log;
|
drop table mysql.slow_log;
|
||||||
|
@ -690,6 +690,7 @@ struct handlerton
|
|||||||
#define HTON_FLUSH_AFTER_RENAME (1 << 4)
|
#define HTON_FLUSH_AFTER_RENAME (1 << 4)
|
||||||
#define HTON_NOT_USER_SELECTABLE (1 << 5)
|
#define HTON_NOT_USER_SELECTABLE (1 << 5)
|
||||||
#define HTON_TEMPORARY_NOT_SUPPORTED (1 << 6) //Having temporary tables not supported
|
#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
|
typedef struct st_thd_trans
|
||||||
{
|
{
|
||||||
|
@ -5990,3 +5990,7 @@ ER_HOSTNAME
|
|||||||
eng "host name"
|
eng "host name"
|
||||||
ER_WRONG_STRING_LENGTH
|
ER_WRONG_STRING_LENGTH
|
||||||
eng "String '%-.70s' is too long for %s (should be no longer than %d)"
|
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"
|
||||||
|
@ -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")
|
(!my_strcasecmp(system_charset_info, table->table_name, "slow_log")
|
||||||
&& opt_slow_log && logger.is_slow_log_table_enabled())))
|
&& 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);
|
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 &&
|
(table_kind == SLOW_LOG && opt_slow_log &&
|
||||||
logger.is_slow_log_table_enabled()))
|
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);
|
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) &&
|
if ((table_kind == GENERAL_LOG || table_kind == SLOW_LOG) &&
|
||||||
(lex_create_info->used_fields & HA_CREATE_USED_ENGINE) &&
|
(lex_create_info->used_fields & HA_CREATE_USED_ENGINE) &&
|
||||||
(!lex_create_info->db_type || /* unknown engine */
|
(!lex_create_info->db_type || /* unknown engine */
|
||||||
!(lex_create_info->db_type->db_type == DB_TYPE_MYISAM ||
|
!(lex_create_info->db_type->flags & HTON_SUPPORT_LOG_TABLES)))
|
||||||
lex_create_info->db_type->db_type == DB_TYPE_CSV_DB)))
|
|
||||||
{
|
{
|
||||||
my_error(ER_BAD_LOG_ENGINE, MYF(0));
|
my_error(ER_UNSUPORTED_LOG_ENGINE, MYF(0));
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ static int tina_init_func()
|
|||||||
tina_hton.db_type= DB_TYPE_CSV_DB;
|
tina_hton.db_type= DB_TYPE_CSV_DB;
|
||||||
tina_hton.create= tina_create_handler;
|
tina_hton.create= tina_create_handler;
|
||||||
tina_hton.panic= tina_end;
|
tina_hton.panic= tina_end;
|
||||||
tina_hton.flags= HTON_CAN_RECREATE;
|
tina_hton.flags= HTON_CAN_RECREATE | HTON_SUPPORT_LOG_TABLES;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1783,7 +1783,7 @@ static int myisam_init()
|
|||||||
myisam_hton.db_type=DB_TYPE_MYISAM;
|
myisam_hton.db_type=DB_TYPE_MYISAM;
|
||||||
myisam_hton.create=myisam_create_handler;
|
myisam_hton.create=myisam_create_handler;
|
||||||
myisam_hton.panic=mi_panic;
|
myisam_hton.panic=mi_panic;
|
||||||
myisam_hton.flags=HTON_CAN_RECREATE;
|
myisam_hton.flags= HTON_CAN_RECREATE | HTON_SUPPORT_LOG_TABLES;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
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
|
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
|
other threads as soon as possible. We don't lock mutex here
|
||||||
pthread memory visibility rules.
|
(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)
|
if (share->is_log_table)
|
||||||
mi_update_status((void*) info);
|
mi_update_status((void*) info);
|
||||||
pthread_mutex_unlock(&share->intern_lock);
|
|
||||||
|
|
||||||
allow_break(); /* Allow SIGHUP & SIGINT */
|
allow_break(); /* Allow SIGHUP & SIGINT */
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
Reference in New Issue
Block a user