127
127
row_upd_index_entry_sys_field(
128
128
/*==========================*/
129
const dtuple_t* entry, /*!< in: index entry, where the memory buffers
130
for sys fields are already allocated:
129
dtuple_t* entry, /*!< in/out: index entry, where the memory
130
buffers for sys fields are already allocated:
131
131
the function just copies the new values to
133
133
dict_index_t* index, /*!< in: clustered index */
167
167
const upd_t* update);/*!< in: update vector */
168
168
#endif /* !UNIV_HOTBACKUP */
169
169
/***********************************************************//**
170
Replaces the new column values stored in the update vector to the record
171
given. No field size changes are allowed. */
170
Replaces the new column values stored in the update vector to the
171
record given. No field size changes are allowed. This function is
172
usually invoked on a clustered index. The only use case for a
173
secondary index is row_ins_sec_index_entry_by_modify() or its
174
counterpart in ibuf_insert_to_index_page(). */
174
177
row_upd_rec_in_place(
277
280
@return TRUE if update vector changes an ordering field in the index record */
280
row_upd_changes_ord_field_binary(
281
/*=============================*/
283
row_upd_changes_ord_field_binary_func(
284
/*==================================*/
285
dict_index_t* index, /*!< in: index of the record */
286
const upd_t* update, /*!< in: update vector for the row; NOTE: the
287
field numbers in this MUST be clustered index
290
const que_thr_t*thr, /*!< in: query thread */
291
#endif /* UNIV_DEBUG */
282
292
const dtuple_t* row, /*!< in: old value of row, or NULL if the
283
293
row and the data values in update are not
284
294
known when this function is called, e.g., at
286
dict_index_t* index, /*!< in: index of the record */
287
const upd_t* update);/*!< in: update vector for the row; NOTE: the
288
field numbers in this MUST be clustered index
296
const row_ext_t*ext) /*!< NULL, or prefixes of the externally
297
stored columns in the old row */
298
__attribute__((nonnull(1,2), warn_unused_result));
300
# define row_upd_changes_ord_field_binary(index,update,thr,row,ext) \
301
row_upd_changes_ord_field_binary_func(index,update,thr,row,ext)
302
#else /* UNIV_DEBUG */
303
# define row_upd_changes_ord_field_binary(index,update,thr,row,ext) \
304
row_upd_changes_ord_field_binary_func(index,update,row,ext)
305
#endif /* UNIV_DEBUG */
290
306
/***********************************************************//**
291
307
Checks if an update vector changes an ordering field of an index record.
292
308
This function is fast if the update vector is short or the number of ordering
459
475
#define UPD_NODE_INSERT_CLUSTERED 3 /* clustered index record should be
460
476
inserted, old record is already delete
462
#define UPD_NODE_UPDATE_ALL_SEC 4 /* an ordering field of the clustered
478
#define UPD_NODE_INSERT_BLOB 4 /* clustered index record should be
479
inserted, old record is already
480
delete-marked; non-updated BLOBs
481
should be inherited by the new record
482
and disowned by the old record */
483
#define UPD_NODE_UPDATE_ALL_SEC 5 /* an ordering field of the clustered
463
484
index record was changed, or this is
464
485
a delete operation: should update
465
486
all the secondary index records */
466
#define UPD_NODE_UPDATE_SOME_SEC 5 /* secondary index entries should be
487
#define UPD_NODE_UPDATE_SOME_SEC 6 /* secondary index entries should be
467
488
looked at and updated if an ordering