mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
WL 2826: Error handling of ALTER TABLE for partitioning
Fixed up create_handler_files call
This commit is contained in:

parent
09e95da616
commit
14d75e5b9f
@ -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);
|
||||
}
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -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));
|
||||
|
@ -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))
|
||||
|
Reference in New Issue
Block a user