Exclude just added row

This commit is contained in:
Aleksey Midenkov 2020-04-04 11:37:20 +03:00
parent a8b2adad64
commit 2fbb3462be
2 changed files with 22 additions and 1 deletions

View File

@ -246,6 +246,10 @@ int TABLE::delete_row()
store_record(this, record[1]);
vers_update_end();
Field *row_start= vers_start_field();
/* Don't create history for records inserted in same query */
if (0 == row_start->cmp(row_start->ptr, vers_end_field()->ptr) >= 0)
return file->ha_delete_row(record[1]);
return file->ha_update_row(record[1], record[0]);
}

View File

@ -613,8 +613,25 @@ struct upd_node_t{
void make_versioned_delete(const trx_t* trx)
{
update->n_fields = 0;
is_delete = VERSIONED_DELETE;
make_versioned_helper(trx, table->vers_end);
const dfield_t* dfield_start = dtuple_get_nth_field(
row, table->vers_start);
const dfield_t* dfield_end = dtuple_get_nth_field(
row, table->vers_end);
if (0 == cmp_data_data(dfield_get_type(dfield_start)->mtype,
dfield_get_type(dfield_start)->prtype,
static_cast<const byte*>(
dfield_get_data(dfield_start)),
dfield_get_len(dfield_start),
static_cast<const byte*>(
dfield_get_data(dfield_end)),
dfield_get_len(dfield_end))) {
is_delete = PLAIN_DELETE;
}
else {
is_delete = VERSIONED_DELETE;
}
}
};