diff options
Diffstat (limited to 'storage/innobase')
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 6 | ||||
-rw-r--r-- | storage/innobase/row/row0merge.cc | 16 |
2 files changed, 4 insertions, 18 deletions
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 402c2b5ed15..c8012d8c074 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -8369,7 +8369,7 @@ no_commit: innobase_srv_conc_enter_innodb(m_prebuilt); - vers_set_fields = (table->versioned() && + vers_set_fields = (table->versioned_write() && (sql_command != SQLCOM_CREATE_TABLE || table->s->vtmd)) ? ROW_INS_VERSIONED : @@ -9179,7 +9179,7 @@ ha_innobase::update_row( innobase_srv_conc_enter_innodb(m_prebuilt); - if (!table->versioned()) + if (!table->versioned_write()) m_prebuilt->upd_node->versioned = false; if (m_prebuilt->upd_node->versioned) { @@ -9317,7 +9317,7 @@ ha_innobase::delete_row( innobase_srv_conc_enter_innodb(m_prebuilt); bool vers_set_fields = - table->versioned() && + table->versioned_write() && table->vers_end_field()->is_max(); error = row_update_for_mysql(m_prebuilt, vers_set_fields); diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index d1516c21b81..40dcc96416c 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -2304,21 +2304,7 @@ end_of_index: } if (old_table->versioned()) { - if (new_table->versioned() && !drop_historical) { - dfield_t *end = dtuple_get_nth_field( - row, new_table->vers_end); - byte *data = static_cast<byte *>( - dfield_get_data(end)); - ut_ad(data); - if (mach_read_from_8(data) == TRX_ID_MAX) { - dfield_t *start = dtuple_get_nth_field( - row, new_table->vers_start); - void *data = dfield_get_data(start); - ut_ad(data); - mach_write_to_8(data, trx->id); - trx->vers_update_trt= true; - } - } else { + if (!new_table->versioned() || drop_historical) { const dict_col_t *col = &old_table->cols [old_table->vers_end]; |