diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 44106eb7f54..4a42d8dc156 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2615,7 +2615,7 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd) } *field=0; - if (copy->versioned() && copy->vers_update_user_field()) + if (copy->versioned() && copy->vers_update_user_field(client_thd->mem_root)) goto error; if (share->virtual_fields || share->default_expressions || diff --git a/sql/table.cc b/sql/table.cc index 3e479f7edcb..a421697e341 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -7705,10 +7705,10 @@ void TABLE::vers_update_fields() } -bool TABLE::vers_update_user_field() +bool TABLE::vers_update_user_field(MEM_ROOT *_mem_root) { DBUG_ASSERT(versioned()); - Field **dst= (Field **) alloc_root(&mem_root, + Field **dst= (Field **) alloc_root(_mem_root ? _mem_root : &mem_root, (s->fields - VERSIONING_FIELDS + 1) * sizeof(Field*)); if (!dst) diff --git a/sql/table.h b/sql/table.h index 55218837510..45505efc9dd 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1488,7 +1488,7 @@ public: Field **field_to_fill(); Field **vers_user_field_to_fill(); - bool vers_update_user_field(); + bool vers_update_user_field(MEM_ROOT *mem_root= NULL); bool validate_default_values_of_unset_fields(THD *thd) const; bool insert_all_rows_into_tmp_table(THD *thd,