Skip to content

Commit 36c0bec

Browse files
committed
IB: remove alloc on update
1 parent 70b82f6 commit 36c0bec

File tree

3 files changed

+6
-11
lines changed

3 files changed

+6
-11
lines changed

storage/innobase/handler/ha_innodb.cc

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9171,14 +9171,11 @@ ha_innobase::update_row(
91719171
m_prebuilt->upd_node->is_delete = NO_DELETE;
91729172

91739173
{
9174-
const bool vers_set_fields
9175-
= m_prebuilt->versioned_write
9174+
const bool vers_set_fields = m_prebuilt->versioned_write
91769175
&& m_prebuilt->upd_node->update->affects_versioned();
9177-
const bool vers_ins_row
9178-
= vers_set_fields
9176+
const bool vers_ins_row = vers_set_fields
91799177
&& (table->s->vtmd
9180-
|| thd_sql_command(m_user_thd)
9181-
!= SQLCOM_ALTER_TABLE);
9178+
|| thd_sql_command(m_user_thd) != SQLCOM_ALTER_TABLE);
91829179

91839180
if (vers_set_fields && !vers_ins_row)
91849181
m_prebuilt->upd_node->is_delete = VERSIONED_DELETE;

storage/innobase/include/row0upd.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,7 @@ struct upd_t{
464464
virtual column update now */
465465
ulint n_fields; /*!< number of update fields */
466466
upd_field_t* fields; /*!< array of update fields */
467+
byte vers_sys_value[8]; /*!< buffer for updating system fields */
467468

468469
/** Append an update field to the end of array
469470
@param[in] field an update field */

storage/innobase/row/row0mysql.cc

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2004,7 +2004,6 @@ row_update_for_mysql(row_prebuilt_t* prebuilt)
20042004
ut_ad(!prebuilt->versioned_write || node->table->versioned());
20052005

20062006
bool vers_set_fields = prebuilt->versioned_write
2007-
&& node->table->versioned()
20082007
&& (node->is_delete ? node->is_delete == VERSIONED_DELETE
20092008
: node->update->affects_versioned());
20102009
run_again:
@@ -2038,11 +2037,9 @@ row_update_for_mysql(row_prebuilt_t* prebuilt)
20382037
ufield->orig_len = 0;
20392038
ufield->exp = NULL;
20402039

2041-
static const ulint fsize = sizeof(trx_id_t);
2042-
byte* buf = static_cast<byte*>(mem_heap_alloc(node->update->heap, fsize));
2043-
mach_write_to_8(buf, trx->id);
2040+
mach_write_to_8(node->update->vers_sys_value, trx->id);
20442041
dfield_t* dfield = &ufield->new_val;
2045-
dfield_set_data(dfield, buf, fsize);
2042+
dfield_set_data(dfield, node->update->vers_sys_value, 8);
20462043
dict_col_copy_type(col, &dfield->type);
20472044

20482045
uvect->n_fields++;

0 commit comments

Comments
 (0)