Commit 8936abcd authored by Aleksey Midenkov's avatar Aleksey Midenkov

Delete: code duplication fix

parent 8f5f4c21
...@@ -212,6 +212,22 @@ void Update_plan::save_explain_data_intern(MEM_ROOT *mem_root, ...@@ -212,6 +212,22 @@ void Update_plan::save_explain_data_intern(MEM_ROOT *mem_root,
} }
inline
int TABLE::delete_row()
{
int error;
if (!versioned())
error= file->ha_delete_row(record[0]);
else
{
store_record(this, record[1]);
vers_end_field()->set_time();
error= file->ha_update_row(record[1], record[0]);
}
return error;
}
/** /**
Implement DELETE SQL word. Implement DELETE SQL word.
...@@ -587,15 +603,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, ...@@ -587,15 +603,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
break; break;
} }
if (!table->versioned()) error= table->delete_row();
error= table->file->ha_delete_row(table->record[0]);
else
{
store_record(table,record[1]);
table->vers_end_field()->set_time();
error= table->file->ha_update_row(table->record[1],
table->record[0]);
}
if (!error) if (!error)
{ {
deleted++; deleted++;
...@@ -1086,15 +1094,8 @@ int multi_delete::send_data(List<Item> &values) ...@@ -1086,15 +1094,8 @@ int multi_delete::send_data(List<Item> &values)
TRG_ACTION_BEFORE, FALSE)) TRG_ACTION_BEFORE, FALSE))
DBUG_RETURN(1); DBUG_RETURN(1);
table->status|= STATUS_DELETED; table->status|= STATUS_DELETED;
if (!table->versioned())
error= table->file->ha_delete_row(table->record[0]); error= table->delete_row();
else
{
store_record(table,record[1]);
table->vers_end_field()->set_time();
error= table->file->ha_update_row(table->record[1],
table->record[0]);
}
if (!error) if (!error)
{ {
deleted++; deleted++;
...@@ -1275,15 +1276,7 @@ int multi_delete::do_table_deletes(TABLE *table, SORT_INFO *sort_info, ...@@ -1275,15 +1276,7 @@ int multi_delete::do_table_deletes(TABLE *table, SORT_INFO *sort_info,
break; break;
} }
if (!table->versioned()) local_error= table->delete_row();
local_error= table->file->ha_delete_row(table->record[0]);
else
{
store_record(table,record[1]);
table->vers_end_field()->set_time();
local_error= table->file->ha_update_row(table->record[1],
table->record[0]);
}
if (local_error && !ignore) if (local_error && !ignore)
{ {
table->file->print_error(local_error, MYF(0)); table->file->print_error(local_error, MYF(0));
......
...@@ -1504,6 +1504,8 @@ struct TABLE ...@@ -1504,6 +1504,8 @@ struct TABLE
return field[s->row_end_field]; return field[s->row_end_field];
} }
int delete_row();
/** Number of additional fields used in versioned tables */ /** Number of additional fields used in versioned tables */
#define VERSIONING_FIELDS 2 #define VERSIONING_FIELDS 2
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment