diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index acb3c109641..ea1ad190570 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -4726,7 +4726,7 @@ int ha_ndbcluster::create_handler_files(const char *file, DBUG_ENTER("create_handler_files"); - if (action_flag) + if (action_flag != CHF_INDEX_FLAG) { DBUG_RETURN(FALSE); } diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 6dfccca0854..1ab2c4270fd 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -505,7 +505,8 @@ int ha_partition::create_handler_files(const char *path, We need to update total number of parts since we might write the handler file as part of a partition management command */ - if (action_flag) + if (action_flag == CHF_DELETE_FLAG || + action_flag == CHF_RENAME_FLAG) { char name[FN_REFLEN]; char old_name[FN_REFLEN]; @@ -520,7 +521,7 @@ int ha_partition::create_handler_files(const char *path, DBUG_RETURN(TRUE); } } - else + else if (action_flag == CHF_CREATE_FLAG) { if (create_handler_file(path)) { diff --git a/sql/handler.h b/sql/handler.h index 14fa3831b9b..c7c3aa54c3b 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1380,8 +1380,10 @@ public: virtual int create(const char *name, TABLE *form, HA_CREATE_INFO *info)=0; +#define CHF_CREATE_FLAG 0 #define CHF_DELETE_FLAG 1 #define CHF_RENAME_FLAG 2 +#define CHF_INDEX_FLAG 3 virtual int create_handler_files(const char *name, const char *old_name, int action_flag, HA_CREATE_INFO *info) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 2b12fc332f2..9fb65451a70 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1233,7 +1233,8 @@ bool mysql_write_frm(ALTER_PARTITION_PARAM_TYPE *lpt, uint flags) lpt->table_name, lpt->create_info, lpt->new_create_list, lpt->key_count, lpt->key_info_buffer, lpt->table->file)) || - lpt->table->file->create_handler_files(shadow_path, NULL, FALSE, + lpt->table->file->create_handler_files(shadow_path, NULL, + CHF_CREATE_FLAG, lpt->create_info)) { my_delete(shadow_frm_name, MYF(0)); @@ -1287,14 +1288,14 @@ bool mysql_write_frm(ALTER_PARTITION_PARAM_TYPE *lpt, uint flags) if (my_delete(frm_name, MYF(MY_WME)) || #ifdef WITH_PARTITION_STORAGE_ENGINE lpt->table->file->create_handler_files(path, shadow_path, - CHF_DELETE_FLAG) || + CHF_DELETE_FLAG, NULL) || deactivate_ddl_log_entry(part_info->frm_log_entry->entry_pos) || (sync_ddl_log(), FALSE) || #endif #ifdef WITH_PARTITION_STORAGE_ENGINE my_rename(shadow_frm_name, frm_name, MYF(MY_WME)) || lpt->table->file->create_handler_files(path, shadow_path, - CHF_RENAME_FLAG)) + CHF_RENAME_FLAG, NULL)) #else my_rename(shadow_frm_name, frm_name, MYF(MY_WME))) #endif @@ -5717,7 +5718,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, error= (mysql_create_frm(thd, reg_path, db, table_name, create_info, prepared_create_list, key_count, key_info_buffer, table->file) || - table->file->create_handler_files(reg_path, NULL, FALSE, + table->file->create_handler_files(reg_path, NULL, CHF_INDEX_FLAG, create_info)); VOID(pthread_mutex_unlock(&LOCK_open)); if (error) @@ -5764,7 +5765,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, error= (mysql_create_frm(thd, reg_path, db, table_name, create_info, prepared_create_list, key_count, key_info_buffer, table->file) || - table->file->create_handler_files(reg_path, NULL, FALSE, + table->file->create_handler_files(reg_path, NULL, CHF_INDEX_FLAG, create_info)); VOID(pthread_mutex_unlock(&LOCK_open)); if (error) @@ -5989,7 +5990,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, VOID(pthread_mutex_lock(&LOCK_open)); } /* Tell the handler that a new frm file is in place. */ - if (table->file->create_handler_files(reg_path, NULL, FALSE, + if (table->file->create_handler_files(reg_path, NULL, CHF_INDEX_FLAG, create_info)) { VOID(pthread_mutex_unlock(&LOCK_open)); diff --git a/sql/unireg.cc b/sql/unireg.cc index ce9d03e3053..bbb4d970d37 100644 --- a/sql/unireg.cc +++ b/sql/unireg.cc @@ -323,7 +323,7 @@ int rea_create_table(THD *thd, const char *path, // Make sure mysql_create_frm din't remove extension DBUG_ASSERT(*fn_rext(frm_name)); - if (file->create_handler_files(path, NULL, FALSE, create_info)) + if (file->create_handler_files(path, NULL, CHF_CREATE_FLAG, create_info)) goto err_handler; if (!create_info->frm_only && ha_create_table(thd, path, db, table_name, create_info,0))