314
314
upd_node_t* node;
316
node = mem_heap_alloc(heap, sizeof(upd_node_t));
316
node = static_cast<upd_node_t *>(mem_heap_alloc(heap, sizeof(upd_node_t)));
317
317
node->common.type = QUE_NODE_UPDATE;
319
319
node->state = UPD_NODE_UPDATE_CLUSTERED;
382
382
row_upd_index_entry_sys_field(
383
383
/*==========================*/
384
const dtuple_t* entry, /*!< in: index entry, where the memory buffers
385
for sys fields are already allocated:
384
dtuple_t* entry, /*!< in/out: index entry, where the memory
385
buffers for sys fields are already allocated:
386
386
the function just copies the new values to
388
388
dict_index_t* index, /*!< in: clustered index */
398
398
pos = dict_index_get_sys_col_pos(index, type);
400
400
dfield = dtuple_get_nth_field(entry, pos);
401
field = dfield_get_data(dfield);
401
field = static_cast<byte *>(dfield_get_data(dfield));
403
403
if (type == DATA_TRX_ID) {
404
404
trx_write_trx_id(field, val);
476
476
#endif /* !UNIV_HOTBACKUP */
478
478
/***********************************************************//**
479
Replaces the new column values stored in the update vector to the record
480
given. No field size changes are allowed. */
479
Replaces the new column values stored in the update vector to the
480
record given. No field size changes are allowed. This function is
481
usually invoked on a clustered index. The only use case for a
482
secondary index is row_ins_sec_index_entry_by_modify() or its
483
counterpart in ibuf_insert_to_index_page(). */
483
486
row_upd_rec_in_place(
534
537
roll_ptr_t roll_ptr,/*!< in: roll ptr of the undo log record */
535
538
byte* log_ptr,/*!< pointer to a buffer of size > 20 opened
537
mtr_t* mtr __attribute__((unused))) /*!< in: mtr */
540
mtr_t* /*mtr __attribute__((unused))*/) /*!< in: mtr */
539
542
ut_ad(dict_index_is_clust(index));
645
648
mlog_close(mtr, log_ptr);
647
650
mlog_catenate_string(mtr,
648
dfield_get_data(new_val),
651
static_cast<byte *>(dfield_get_data(new_val)),
651
654
log_ptr = mlog_open(mtr, MLOG_BUF_MARGIN);
904
907
out: fetched length of the prefix */
905
908
mem_heap_t* heap) /*!< in: heap where to allocate */
907
byte* buf = mem_heap_alloc(heap, *len);
910
byte* buf = static_cast<byte *>(mem_heap_alloc(heap, *len));
909
912
*len = btr_copy_externally_stored_field_prefix(buf, *len,
944
947
len = dfield_get_len(dfield);
945
data = dfield_get_data(dfield);
948
data = static_cast<const byte *>(dfield_get_data(dfield));
947
950
if (field->prefix_len > 0) {
948
951
ibool fetch_ext = dfield_is_ext(dfield)
993
996
stored part of the column. The data
994
997
will have to be copied. */
995
998
ut_a(uf->orig_len > BTR_EXTERN_FIELD_REF_SIZE);
996
buf = mem_heap_alloc(heap, uf->orig_len);
999
buf = static_cast<byte *>(mem_heap_alloc(heap, uf->orig_len));
997
1000
/* Copy the locally stored prefix. */
998
1001
memcpy(buf, data,
999
1002
uf->orig_len - BTR_EXTERN_FIELD_REF_SIZE);
1143
1146
table = index->table;
1144
1147
ut_ad(n_cols == dict_table_get_n_cols(table));
1146
ext_cols = mem_heap_alloc(heap, n_cols * sizeof *ext_cols);
1149
ext_cols = static_cast<ulint *>(mem_heap_alloc(heap, n_cols * sizeof *ext_cols));
1147
1150
n_ext_cols = 0;
1149
1152
dtuple_set_info_bits(row, update->info_bits);
1623
1626
row_upd_clust_rec_by_insert(
1624
1627
/*========================*/
1625
upd_node_t* node, /*!< in: row update node */
1628
upd_node_t* node, /*!< in/out: row update node */
1626
1629
dict_index_t* index, /*!< in: clustered index of the record */
1627
1630
que_thr_t* thr, /*!< in: query thread */
1628
1631
ibool referenced,/*!< in: TRUE if index may be referenced in
1629
1632
a foreign key constraint */
1630
mtr_t* mtr) /*!< in: mtr; gets committed here */
1633
mtr_t* mtr) /*!< in/out: mtr; gets committed here */
1632
1635
mem_heap_t* heap = NULL;
1633
1636
btr_pcur_t* pcur;
1666
1669
record is removed from the index tree, or updated. */
1668
1671
rec = btr_cur_get_rec(btr_cur);
1669
index = dict_table_get_first_index(table);
1670
offsets = rec_get_offsets(rec, index, offsets_,
1672
node_index = dict_table_get_first_index(table);
1673
offsets = rec_get_offsets(rec, node_index, offsets_,
1671
1674
ULINT_UNDEFINED, &heap);
1672
1675
change_ownership = btr_cur_mark_extern_inherited_fields(
1673
btr_cur_get_page_zip(btr_cur), rec, index, offsets,
1676
btr_cur_get_page_zip(btr_cur), rec, node_index, offsets,
1674
1677
node->update, mtr);
1675
1678
if (referenced) {
1676
1679
/* NOTE that the following call loses
1677
1680
the position of pcur ! */
1679
1682
err = row_upd_check_references_constraints(
1680
node, pcur, table, index, offsets, thr, mtr);
1683
node, pcur, table, node_index, offsets, thr, mtr);
1682
1685
if (err != DB_SUCCESS) {