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

📄 rec_db

📁 介绍:MySQL是比较出名的数据库软件
💻
字号:
#include "db_config.h"#ifndef NO_SYSTEM_INCLUDES#include <sys/types.h>#include <string.h>#endif#include "db_int.h"#include "db_page.h"#include "db.h"#include "log.h"/* * __db_addrem_recover -- *	Recovery function for addrem. * * PUBLIC: int __db_addrem_recover * PUBLIC:   __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); */int__db_addrem_recover(dbenv, dbtp, lsnp, op, info)	DB_ENV *dbenv;	DBT *dbtp;	DB_LSN *lsnp;	db_recops op;	void *info;{	__db_addrem_args *argp;	DB *file_dbp;	DBC *dbc;	DB_MPOOLFILE *mpf;	PAGE *pagep;	int cmp_n, cmp_p, modified, ret;	REC_PRINT(__db_addrem_print);	REC_INTRO(__db_addrem_read);	if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)		if (DB_REDO(op)) {			if ((ret = memp_fget(mpf,			    &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)				goto out;		} else {			*lsnp = argp->prev_lsn;			ret = 0;			goto out;		}	modified = 0;	cmp_n = log_compare(lsnp, &LSN(pagep));	/*	 * Use this when there is something like "pagelsn" in the argp	 * structure.  Sometimes, you might need to compare meta-data	 * lsn's instead.	 *	 * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);	 */	if (cmp_p == 0 && DB_REDO(op)) {		/* Need to redo update described. */		modified = 1;	} else if (cmp_n == 0 && !DB_REDO(op)) {		/* Need to undo update described. */		modified = 1;	}	if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))		goto out;	*lsnp = argp->prev_lsn;	ret = 0;out:	REC_CLOSE;}/* * __db_split_recover -- *	Recovery function for split. * * PUBLIC: int __db_split_recover * PUBLIC:   __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); */int__db_split_recover(dbenv, dbtp, lsnp, op, info)	DB_ENV *dbenv;	DBT *dbtp;	DB_LSN *lsnp;	db_recops op;	void *info;{	__db_split_args *argp;	DB *file_dbp;	DBC *dbc;	DB_MPOOLFILE *mpf;	PAGE *pagep;	int cmp_n, cmp_p, modified, ret;	REC_PRINT(__db_split_print);	REC_INTRO(__db_split_read);	if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)		if (DB_REDO(op)) {			if ((ret = memp_fget(mpf,			    &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)				goto out;		} else {			*lsnp = argp->prev_lsn;			ret = 0;			goto out;		}	modified = 0;	cmp_n = log_compare(lsnp, &LSN(pagep));	/*	 * Use this when there is something like "pagelsn" in the argp	 * structure.  Sometimes, you might need to compare meta-data	 * lsn's instead.	 *	 * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);	 */	if (cmp_p == 0 && DB_REDO(op)) {		/* Need to redo update described. */		modified = 1;	} else if (cmp_n == 0 && !DB_REDO(op)) {		/* Need to undo update described. */		modified = 1;	}	if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))		goto out;	*lsnp = argp->prev_lsn;	ret = 0;out:	REC_CLOSE;}/* * __db_big_recover -- *	Recovery function for big. * * PUBLIC: int __db_big_recover * PUBLIC:   __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); */int__db_big_recover(dbenv, dbtp, lsnp, op, info)	DB_ENV *dbenv;	DBT *dbtp;	DB_LSN *lsnp;	db_recops op;	void *info;{	__db_big_args *argp;	DB *file_dbp;	DBC *dbc;	DB_MPOOLFILE *mpf;	PAGE *pagep;	int cmp_n, cmp_p, modified, ret;	REC_PRINT(__db_big_print);	REC_INTRO(__db_big_read);	if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)		if (DB_REDO(op)) {			if ((ret = memp_fget(mpf,			    &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)				goto out;		} else {			*lsnp = argp->prev_lsn;			ret = 0;			goto out;		}	modified = 0;	cmp_n = log_compare(lsnp, &LSN(pagep));	/*	 * Use this when there is something like "pagelsn" in the argp	 * structure.  Sometimes, you might need to compare meta-data	 * lsn's instead.	 *	 * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);	 */	if (cmp_p == 0 && DB_REDO(op)) {		/* Need to redo update described. */		modified = 1;	} else if (cmp_n == 0 && !DB_REDO(op)) {		/* Need to undo update described. */		modified = 1;	}	if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))		goto out;	*lsnp = argp->prev_lsn;	ret = 0;out:	REC_CLOSE;}/* * __db_ovref_recover -- *	Recovery function for ovref. * * PUBLIC: int __db_ovref_recover * PUBLIC:   __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); */int__db_ovref_recover(dbenv, dbtp, lsnp, op, info)	DB_ENV *dbenv;	DBT *dbtp;	DB_LSN *lsnp;	db_recops op;	void *info;{	__db_ovref_args *argp;	DB *file_dbp;	DBC *dbc;	DB_MPOOLFILE *mpf;	PAGE *pagep;	int cmp_n, cmp_p, modified, ret;	REC_PRINT(__db_ovref_print);	REC_INTRO(__db_ovref_read);	if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)		if (DB_REDO(op)) {			if ((ret = memp_fget(mpf,			    &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)				goto out;		} else {			*lsnp = argp->prev_lsn;			ret = 0;			goto out;		}	modified = 0;	cmp_n = log_compare(lsnp, &LSN(pagep));	/*	 * Use this when there is something like "pagelsn" in the argp	 * structure.  Sometimes, you might need to compare meta-data	 * lsn's instead.	 *	 * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);	 */	if (cmp_p == 0 && DB_REDO(op)) {		/* Need to redo update described. */		modified = 1;	} else if (cmp_n == 0 && !DB_REDO(op)) {		/* Need to undo update described. */		modified = 1;	}	if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))		goto out;	*lsnp = argp->prev_lsn;	ret = 0;out:	REC_CLOSE;}/* * __db_relink_recover -- *	Recovery function for relink. * * PUBLIC: int __db_relink_recover * PUBLIC:   __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); */int__db_relink_recover(dbenv, dbtp, lsnp, op, info)	DB_ENV *dbenv;	DBT *dbtp;	DB_LSN *lsnp;	db_recops op;	void *info;{	__db_relink_args *argp;	DB *file_dbp;	DBC *dbc;	DB_MPOOLFILE *mpf;	PAGE *pagep;	int cmp_n, cmp_p, modified, ret;	REC_PRINT(__db_relink_print);	REC_INTRO(__db_relink_read);	if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)		if (DB_REDO(op)) {			if ((ret = memp_fget(mpf,			    &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)				goto out;		} else {			*lsnp = argp->prev_lsn;			ret = 0;			goto out;		}	modified = 0;	cmp_n = log_compare(lsnp, &LSN(pagep));	/*	 * Use this when there is something like "pagelsn" in the argp	 * structure.  Sometimes, you might need to compare meta-data	 * lsn's instead.	 *	 * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);	 */	if (cmp_p == 0 && DB_REDO(op)) {		/* Need to redo update described. */		modified = 1;	} else if (cmp_n == 0 && !DB_REDO(op)) {		/* Need to undo update described. */		modified = 1;	}	if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))		goto out;	*lsnp = argp->prev_lsn;	ret = 0;out:	REC_CLOSE;}/* * __db_addpage_recover -- *	Recovery function for addpage. * * PUBLIC: int __db_addpage_recover * PUBLIC:   __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); */int__db_addpage_recover(dbenv, dbtp, lsnp, op, info)	DB_ENV *dbenv;	DBT *dbtp;	DB_LSN *lsnp;	db_recops op;	void *info;{	__db_addpage_args *argp;	DB *file_dbp;	DBC *dbc;	DB_MPOOLFILE *mpf;	PAGE *pagep;	int cmp_n, cmp_p, modified, ret;	REC_PRINT(__db_addpage_print);	REC_INTRO(__db_addpage_read);	if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)		if (DB_REDO(op)) {			if ((ret = memp_fget(mpf,			    &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)				goto out;		} else {			*lsnp = argp->prev_lsn;			ret = 0;			goto out;		}	modified = 0;	cmp_n = log_compare(lsnp, &LSN(pagep));	/*	 * Use this when there is something like "pagelsn" in the argp	 * structure.  Sometimes, you might need to compare meta-data	 * lsn's instead.	 *	 * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);	 */	if (cmp_p == 0 && DB_REDO(op)) {		/* Need to redo update described. */		modified = 1;	} else if (cmp_n == 0 && !DB_REDO(op)) {		/* Need to undo update described. */		modified = 1;	}	if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))		goto out;	*lsnp = argp->prev_lsn;	ret = 0;out:	REC_CLOSE;}/* * __db_debug_recover -- *	Recovery function for debug. * * PUBLIC: int __db_debug_recover * PUBLIC:   __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); */int__db_debug_recover(dbenv, dbtp, lsnp, op, info)	DB_ENV *dbenv;	DBT *dbtp;	DB_LSN *lsnp;	db_recops op;	void *info;{	__db_debug_args *argp;	DB *file_dbp;	DBC *dbc;	DB_MPOOLFILE *mpf;	PAGE *pagep;	int cmp_n, cmp_p, modified, ret;	REC_PRINT(__db_debug_print);	REC_INTRO(__db_debug_read);	if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)		if (DB_REDO(op)) {			if ((ret = memp_fget(mpf,			    &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)				goto out;		} else {			*lsnp = argp->prev_lsn;			ret = 0;			goto out;		}	modified = 0;	cmp_n = log_compare(lsnp, &LSN(pagep));	/*	 * Use this when there is something like "pagelsn" in the argp	 * structure.  Sometimes, you might need to compare meta-data	 * lsn's instead.	 *	 * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);	 */	if (cmp_p == 0 && DB_REDO(op)) {		/* Need to redo update described. */		modified = 1;	} else if (cmp_n == 0 && !DB_REDO(op)) {		/* Need to undo update described. */		modified = 1;	}	if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))		goto out;	*lsnp = argp->prev_lsn;	ret = 0;out:	REC_CLOSE;}/* * __db_noop_recover -- *	Recovery function for noop. * * PUBLIC: int __db_noop_recover * PUBLIC:   __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *)); */int__db_noop_recover(dbenv, dbtp, lsnp, op, info)	DB_ENV *dbenv;	DBT *dbtp;	DB_LSN *lsnp;	db_recops op;	void *info;{	__db_noop_args *argp;	DB *file_dbp;	DBC *dbc;	DB_MPOOLFILE *mpf;	PAGE *pagep;	int cmp_n, cmp_p, modified, ret;	REC_PRINT(__db_noop_print);	REC_INTRO(__db_noop_read);	if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)		if (DB_REDO(op)) {			if ((ret = memp_fget(mpf,			    &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)				goto out;		} else {			*lsnp = argp->prev_lsn;			ret = 0;			goto out;		}	modified = 0;	cmp_n = log_compare(lsnp, &LSN(pagep));	/*	 * Use this when there is something like "pagelsn" in the argp	 * structure.  Sometimes, you might need to compare meta-data	 * lsn's instead.	 *	 * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);	 */	if (cmp_p == 0 && DB_REDO(op)) {		/* Need to redo update described. */		modified = 1;	} else if (cmp_n == 0 && !DB_REDO(op)) {		/* Need to undo update described. */		modified = 1;	}	if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))		goto out;	*lsnp = argp->prev_lsn;	ret = 0;out:	REC_CLOSE;}

⌨️ 快捷键说明

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