⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 row0upd.ic

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 IC
字号:
/******************************************************Update of a row(c) 1996 Innobase OyCreated 12/27/1996 Heikki Tuuri*******************************************************/#include "mtr0log.h"#include "trx0trx.h"#include "trx0undo.h"#include "row0row.h"#include "btr0sea.h"/*************************************************************************Creates an update vector object. */UNIV_INLINEupd_t*upd_create(/*=======*/				/* out, own: update vector object */	ulint		n,	/* in: number of fields */	mem_heap_t*	heap)	/* in: heap from which memory allocated */{	upd_t*	update;	ulint	i;	update = mem_heap_alloc(heap, sizeof(upd_t));	update->info_bits = 0;	update->n_fields = n;	update->fields = mem_heap_alloc(heap, sizeof(upd_field_t) * n);	for (i = 0; i < n; i++) {		update->fields[i].extern_storage = 0;	}		return(update);}/*************************************************************************Returns the number of fields in the update vector == number of columnsto be updated by an update vector. */UNIV_INLINEulintupd_get_n_fields(/*=============*/			/* out: number of fields */	upd_t*	update)	/* in: update vector */{	ut_ad(update);	return(update->n_fields);}/*************************************************************************Returns the nth field of an update vector. */UNIV_INLINEupd_field_t*upd_get_nth_field(/*==============*/			/* out: update vector field */	upd_t*	update,	/* in: update vector */	ulint	n)	/* in: field position in update vector */{	ut_ad(update);	ut_ad(n < update->n_fields);	return(update->fields + n);}/*************************************************************************Sets an index field number to be updated by an update vector field. */UNIV_INLINEvoidupd_field_set_field_no(/*===================*/	upd_field_t*	upd_field,	/* in: update vector field */	ulint		field_no,	/* in: field number in a clustered					index */	dict_index_t*	index,		/* in: index */	trx_t*		trx)		/* in: transaction */{		upd_field->field_no = field_no;	if (UNIV_UNLIKELY(field_no >= dict_index_get_n_fields(index))) {		fprintf(stderr,			"InnoDB: Error: trying to access field %lu in ",			(ulong) field_no);		dict_index_name_print(stderr, trx, index);		fprintf(stderr, "\n"			"InnoDB: but index only has %lu fields\n",		(ulong) dict_index_get_n_fields(index));	}	dtype_copy(dfield_get_type(&(upd_field->new_val)),				dict_index_get_nth_type(index, field_no));}/*************************************************************************Updates the trx id and roll ptr field in a clustered index record whena row is updated or marked deleted. */UNIV_INLINEvoidrow_upd_rec_sys_fields(/*===================*/	rec_t*		rec,	/* in: record */	dict_index_t*	index,	/* in: clustered index */	const ulint*	offsets,/* in: rec_get_offsets(rec, index) */	trx_t*		trx,	/* in: transaction */	dulint		roll_ptr)/* in: roll ptr of the undo log record */{	ut_ad(index->type & DICT_CLUSTERED);	ut_ad(rec_offs_validate(rec, index, offsets));#ifdef UNIV_SYNC_DEBUG	ut_ad(!buf_block_align(rec)->is_hashed			|| rw_lock_own(&btr_search_latch, RW_LOCK_EX));#endif /* UNIV_SYNC_DEBUG */	row_set_rec_trx_id(rec, index, offsets, trx->id);	row_set_rec_roll_ptr(rec, index, offsets, roll_ptr);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -