mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
git-svn-id: file:///svn/mysql/tokudb-engine/tokudb-engine@45183 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
cfa3d6c366
commit
033ed51aaf
4 changed files with 19 additions and 4 deletions
|
@ -199,7 +199,9 @@ ha_tokudb::prepare_for_alter() {
|
|||
bool
|
||||
ha_tokudb::try_hot_alter_table() {
|
||||
TOKUDB_DBUG_ENTER("try_hot_alter_table");
|
||||
DBUG_RETURN(true);
|
||||
THD *thd = ha_thd();
|
||||
bool disable_hot_alter = get_disable_hot_alter(thd);
|
||||
DBUG_RETURN(!disable_hot_alter);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -731,12 +731,12 @@ ha_tokudb::check_if_supported_inplace_alter(TABLE *altered_table, Alter_inplace_
|
|||
// alter auto_increment (and nothing else)
|
||||
if (ha_alter_info->handler_flags == Alter_inplace_info::CHANGE_CREATE_OPTION &&
|
||||
create_info->used_fields == HA_CREATE_USED_AUTO) {
|
||||
result = HA_ALTER_INPLACE_NO_LOCK;
|
||||
result = HA_ALTER_INPLACE_EXCLUSIVE_LOCK;
|
||||
} else
|
||||
// alter row_format (and nothing else)
|
||||
if (ha_alter_info->handler_flags == Alter_inplace_info::CHANGE_CREATE_OPTION &&
|
||||
create_info->used_fields == HA_CREATE_USED_ROW_FORMAT) {
|
||||
result = HA_ALTER_INPLACE_NO_LOCK;
|
||||
result = HA_ALTER_INPLACE_EXCLUSIVE_LOCK;
|
||||
} else
|
||||
// add index (and nothing else)
|
||||
if (ha_alter_info->handler_flags == Alter_inplace_info::ADD_INDEX ||
|
||||
|
@ -746,7 +746,7 @@ ha_tokudb::check_if_supported_inplace_alter(TABLE *altered_table, Alter_inplace_
|
|||
// someday, allow multiple hot indexes via alter table add key. don't forget to change the store_lock function.
|
||||
// for now, hot indexing is only supported via session variable with the create index sql command
|
||||
if (get_create_index_online(thd) && ha_alter_info->index_add_count == 1 && thd_sql_command(thd) == SQLCOM_CREATE_INDEX)
|
||||
result = HA_ALTER_INPLACE_NO_LOCK_AFTER_PREPARE;
|
||||
result = HA_ALTER_INPLACE_NO_LOCK;
|
||||
} else
|
||||
// drop index (and nothing else)
|
||||
if (ha_alter_info->handler_flags == Alter_inplace_info::DROP_INDEX ||
|
||||
|
|
|
@ -77,6 +77,13 @@ static MYSQL_THDVAR_BOOL(disable_slow_alter,
|
|||
NULL,
|
||||
FALSE
|
||||
);
|
||||
static MYSQL_THDVAR_BOOL(disable_hot_alter,
|
||||
0,
|
||||
"if on, hot alter table is disabled",
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE
|
||||
);
|
||||
static MYSQL_THDVAR_BOOL(create_index_online,
|
||||
0,
|
||||
"if on, create index done online",
|
||||
|
@ -692,6 +699,10 @@ bool get_disable_slow_alter(THD* thd) {
|
|||
return (THDVAR(thd, disable_slow_alter) != 0);
|
||||
}
|
||||
|
||||
bool get_disable_hot_alter(THD* thd) {
|
||||
return THDVAR(thd, disable_hot_alter) != 0;
|
||||
}
|
||||
|
||||
bool get_create_index_online(THD* thd) {
|
||||
return (THDVAR(thd, create_index_online) != 0);
|
||||
}
|
||||
|
@ -1616,6 +1627,7 @@ static struct st_mysql_sys_var *tokudb_system_variables[] = {
|
|||
MYSQL_SYSVAR(pk_insert_mode),
|
||||
MYSQL_SYSVAR(load_save_space),
|
||||
MYSQL_SYSVAR(disable_slow_alter),
|
||||
MYSQL_SYSVAR(disable_hot_alter),
|
||||
MYSQL_SYSVAR(create_index_online),
|
||||
MYSQL_SYSVAR(disable_prefetching),
|
||||
MYSQL_SYSVAR(version),
|
||||
|
|
|
@ -24,6 +24,7 @@ typedef enum srv_row_format_enum srv_row_format_t;
|
|||
uint get_pk_insert_mode(THD* thd);
|
||||
bool get_load_save_space(THD* thd);
|
||||
bool get_disable_slow_alter(THD* thd);
|
||||
bool get_disable_hot_alter(THD* thd);
|
||||
bool get_create_index_online(THD* thd);
|
||||
bool get_disable_prefetching(THD* thd);
|
||||
bool get_prelock_empty(THD* thd);
|
||||
|
|
Loading…
Reference in a new issue