Skip to content

Commit 8936abc

Browse files
committed
Delete: code duplication fix
1 parent 8f5f4c2 commit 8936abc

File tree

2 files changed

+22
-27
lines changed

2 files changed

+22
-27
lines changed

sql/sql_delete.cc

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,22 @@ void Update_plan::save_explain_data_intern(MEM_ROOT *mem_root,
212212
}
213213

214214

215+
inline
216+
int TABLE::delete_row()
217+
{
218+
int error;
219+
if (!versioned())
220+
error= file->ha_delete_row(record[0]);
221+
else
222+
{
223+
store_record(this, record[1]);
224+
vers_end_field()->set_time();
225+
error= file->ha_update_row(record[1], record[0]);
226+
}
227+
return error;
228+
}
229+
230+
215231
/**
216232
Implement DELETE SQL word.
217233
@@ -587,15 +603,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
587603
break;
588604
}
589605

590-
if (!table->versioned())
591-
error= table->file->ha_delete_row(table->record[0]);
592-
else
593-
{
594-
store_record(table,record[1]);
595-
table->vers_end_field()->set_time();
596-
error= table->file->ha_update_row(table->record[1],
597-
table->record[0]);
598-
}
606+
error= table->delete_row();
599607
if (!error)
600608
{
601609
deleted++;
@@ -1086,15 +1094,8 @@ int multi_delete::send_data(List<Item> &values)
10861094
TRG_ACTION_BEFORE, FALSE))
10871095
DBUG_RETURN(1);
10881096
table->status|= STATUS_DELETED;
1089-
if (!table->versioned())
1090-
error= table->file->ha_delete_row(table->record[0]);
1091-
else
1092-
{
1093-
store_record(table,record[1]);
1094-
table->vers_end_field()->set_time();
1095-
error= table->file->ha_update_row(table->record[1],
1096-
table->record[0]);
1097-
}
1097+
1098+
error= table->delete_row();
10981099
if (!error)
10991100
{
11001101
deleted++;
@@ -1275,15 +1276,7 @@ int multi_delete::do_table_deletes(TABLE *table, SORT_INFO *sort_info,
12751276
break;
12761277
}
12771278

1278-
if (!table->versioned())
1279-
local_error= table->file->ha_delete_row(table->record[0]);
1280-
else
1281-
{
1282-
store_record(table,record[1]);
1283-
table->vers_end_field()->set_time();
1284-
local_error= table->file->ha_update_row(table->record[1],
1285-
table->record[0]);
1286-
}
1279+
local_error= table->delete_row();
12871280
if (local_error && !ignore)
12881281
{
12891282
table->file->print_error(local_error, MYF(0));

sql/table.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,6 +1504,8 @@ struct TABLE
15041504
return field[s->row_end_field];
15051505
}
15061506

1507+
int delete_row();
1508+
15071509
/** Number of additional fields used in versioned tables */
15081510
#define VERSIONING_FIELDS 2
15091511

0 commit comments

Comments
 (0)