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

📄 bbp.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
📖 第 1 页 / 共 2 页
字号:
			}		}	BBPunlock("CMDbbpNames");	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_name") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_name")));	BATroles(b,"bbp","name");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 740 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}strCMDbbpName(str *ret, int *bid){	*ret = (str) GDKstrdup(BBP_logical(*bid));	return MAL_SUCCEED;}strCMDbbpRNames(int *ret){	BAT *b;	int i;	b = BATnew(TYPE_int, TYPE_str, BBPsize);	if (b == 0)		throw(MAL, "bbp.getRNames", "failed to create BAT");	BBPlock("CMDbbpRNames");	for (i = 1; i < BBPsize; i++)		if (i != b->batCacheid && BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {			if (BBP_logical(-i)) {				BUNins(b, &i, BBP_logical(-i), FALSE);			} else				BUNins(b, &i, BBP_logical(i), FALSE);		}	BBPunlock("CMDbbpRNames");	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_revname") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_revname")));	BATroles(b,"bbp","revname");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 771 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}strCMDbbpCount(int *ret){	BAT *b, *bn;	int i;	lng l;	b = BATnew(TYPE_int, TYPE_lng, BBPsize);	if (b == 0)		throw(MAL, "catalog.bbpCount", "failed to create BAT");	for (i = 1; i < BBPsize; i++)		if (i != b->batCacheid) {			if (BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {				bn = BATdescriptor(i);				if (bn) {					l = BATcount(bn);					BUNins(b, &i, &l, FALSE);					BBPunfix(bn->batCacheid);				}			}		}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_count") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_count")));	BATroles(b,"bbp","count");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 798 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}#line 805 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"strCMDbbpLocation(int *ret){	BAT *b;	int i;	b = BATnew(TYPE_int, TYPE_str, BBPsize);	if (b == 0)		throw(MAL, "catalog.bbpLocation", "failed to create BAT");	BBPlock("CMDbbpLocation");	for (i = 1; i < BBPsize; i++)		if (i != b->batCacheid) {			if (BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i)))				BUNins(b, &i, BBP_physical(i), FALSE);		}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	BBPunlock("CMDbbpLocation");	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_location") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_location")));	BATroles(b,"bbp","location");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 823 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}#define monet_modulesilent (GDKdebug&4096)strCMDbbpHeat(int *ret){	BAT *b;	int i;	b = BATnew(TYPE_int, TYPE_int, BBPsize);	if (b == 0)		throw(MAL, "catalog.bbpHeat", "failed to create BAT");	BBPlock("CMDbbpHeat");	for (i = 1; i < BBPsize; i++)		if (i != b->batCacheid) {			if (BBP_cache(i) && !monet_modulesilent) {				int heat = BBP_lastused(i);				BUNins(b, &i, &heat, FALSE);			} else if (BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {				int zero = 0;				BUNins(b, &i, &zero, FALSE);			}		}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	BBPunlock("CMDbbpHeat");	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_heat") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_heat")));	BATroles(b,"bbp","heat");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 856 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}#line 863 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"strCMDbbpDirty(int *ret){	BAT *b;	int i;	b = BATnew(TYPE_int, TYPE_str, BBPsize);	if (b == 0)		throw(MAL, "catalog.bbpDirty", "failed to create BAT");	BBPlock("CMDbbpDirty");	for (i = 1; i < BBPsize; i++)		if (i != b->batCacheid)			if (BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {				BAT *bn = BBP_cache(i);				BUNins(b, &i, bn ? BATdirty(bn) ? "dirty" : DELTAdirty(bn) ? "diffs" : "clean" : (BBP_status(i) & BBPSWAPPED) ? "diffs" : "clean", FALSE);			}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	BBPunlock("CMDbbpDirty");	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_status") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_status")));	BATroles(b,"bbp","status");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 883 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}#line 890 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"strCMDbbpStatus(int *ret){	BAT *b;	int i;	b = BATnew(TYPE_int, TYPE_str, BBPsize);	if (b == 0)		throw(MAL, "catalog.bbpStatus", "failed to create BAT");	BBPlock("CMDbbpStatus");	for (i = 1; i < BBPsize; i++)		if (i != b->batCacheid)			if (BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {				char *loc = BBP_cache(i) ? "load" : "disk";				BUNins(b, &i, loc, FALSE);			}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	BBPunlock("CMDbbpStatus");	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_status") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_status")));	BATroles(b,"bbp","status");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 910 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}strCMDbbpKind(int *ret){	BAT *b;	int i;	b = BATnew(TYPE_int, TYPE_str, BBPsize);	if (b == 0)		throw(MAL, "catalog.bbpKind", "failed to create BAT");	BBPlock("CMDbbpKind");	for (i = 1; i < BBPsize; i++)		if (i != b->batCacheid)			if (BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {				char *mode = NULL;				if ((BBP_status(i) & BBPDELETED) || !(BBP_status(i) & BBPPERSISTENT))					mode = "transient";				else					mode = "persistent";				if (mode)					BUNins(b, &i, mode, FALSE);			}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	BBPunlock("CMDbbpKind");	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_kind") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_kind")));	BATroles(b,"bbp","kind");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 939 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}strCMDbbpRefCount(int *ret){	BAT *b;	int i;	b = BATnew(TYPE_int, TYPE_int, BBPsize);	if (b == 0)		throw(MAL, "catalog.bbpRefCount", "failed to create BAT");	BBPlock("CMDbbpRefCount");	for (i = 1; i < BBPsize; i++)		if (i != b->batCacheid && BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {			int refs = BBP_refs(i);			BUNins(b, &i, &refs, FALSE);		}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	BBPunlock("CMDbbpRefCount");	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_refcnt") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_refcnt")));	BATroles(b,"bbp","refcnt");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 962 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}strCMDbbpLRefCount(int *ret){	BAT *b;	int i;	b = BATnew(TYPE_int, TYPE_int, BBPsize);	if (b == 0)		throw(MAL, "catalog.bbpLRefCount", "failed to create BAT");	BBPlock("CMDbbpLRefCount");	for (i = 1; i < BBPsize; i++)		if (i != b->batCacheid && BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {			int refs = BBP_lrefs(i);			BUNins(b, &i, &refs, FALSE);		}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	BBPunlock("CMDbbpLRefCount");	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_lrefcnt") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_lrefcnt")));	BATroles(b,"bbp","lrefcnt");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 985 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}strCMDgetBATrefcnt(int *res, int *bid){	BAT *b;	if ((b = BATdescriptor(*bid)) == NULL) {		throw(MAL, "bbp.getRefCount", "Cannot access descriptor");	}	*res = BBP_refs(b->batCacheid);	BBPunfix(b->batCacheid);	return MAL_SUCCEED;}strCMDgetBATlrefcnt(int *res, int *bid){	BAT *b;	if ((b = BATdescriptor(*bid)) == NULL) {		throw(MAL, "bbp.getLRefCount", "Cannot access descriptor");	}	*res = BBP_lrefs(b->batCacheid);	BBPunfix(b->batCacheid);	return MAL_SUCCEED;}#line 1039 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"#line 1018 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"bbp_export str CMDbbpHeadType( int *ret);str CMDbbpHeadType( int *ret){	BAT	*b,*bn;	int	i;	b= BATnew(TYPE_int,TYPE_str,BBPsize);	if (b == 0) 		throw(MAL, "catalog.bbpHeadType", "failed to create BAT");	for(i=1; i < BBPsize; i++) if (i != b->batCacheid) 	if (BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {		bn= BATdescriptor(i);		if(bn) BUNins(b, &i, BATatoms[BAThtype(bn)].name, FALSE);		BBPunfix(bn->batCacheid);	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_HeadType") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_HeadType")));	BATroles(b,"bbp","HeadType");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 1034 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}#line 1039 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"#line 1018 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"bbp_export str CMDbbpTailType( int *ret);str CMDbbpTailType( int *ret){	BAT	*b,*bn;	int	i;	b= BATnew(TYPE_int,TYPE_str,BBPsize);	if (b == 0) 		throw(MAL, "catalog.bbpTailType", "failed to create BAT");	for(i=1; i < BBPsize; i++) if (i != b->batCacheid) 	if (BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {		bn= BATdescriptor(i);		if(bn) BUNins(b, &i, BATatoms[BATttype(bn)].name, FALSE);		BBPunfix(bn->batCacheid);	}	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	#line 683 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	if (BBPindex("bbp_TailType") > 0) 		BATdelete(BBPdescriptor(BBPindex("bbp_TailType")));	BATroles(b,"bbp","TailType");	BATmode(b,TRANSIENT);	BATfakeCommit(b);	*ret = b->batCacheid;	BBPkeepref(*ret);#line 1034 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"	return MAL_SUCCEED;}#line 1040 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/mal/bbp.mx"strCMDbatunpack(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci){	BAT *b;	int bid;	ptr p;	ValPtr head, tail;	bid = *(int *) getArgValue(stk, pci, 2);	if ((b = BATdescriptor(bid)) == NULL) {		throw(MAL, "bbp.unpack", "Cannot access descriptor");	}	head = &stk->stk[pci->argv[0]];	tail = &stk->stk[pci->argv[1]];	p = BUNfirst(b);	if (p) {		VALinit(head, getArgType(mb, pci, 0), BUNhead(b, p));		VALinit(tail, getArgType(mb, pci, 1), BUNtail(b, p));	}	BBPunfix(b->batCacheid);	return MAL_SUCCEED;}strCMDbatpack(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci){	BAT *b;	int *ret;	int ht, tt;	size_t cap = 0;	ht = getArgType(mb, pci, 1);	tt = getArgType(mb, pci, 2);	ret = (int *) getArgReference(stk, pci, 0);	if (ht == TYPE_any || tt == TYPE_any)		throw(MAL, "bbp.new", "Explicit type required");	if (isaBatType(ht))		ht = TYPE_bat;	if (isaBatType(tt))		tt = TYPE_bat;	b = BATnew(ht, tt, cap);	BUNins(b, (ptr) getArgValue(stk, pci, 1), getArgValue(stk, pci, 2), FALSE);	if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ);	*ret = b->batCacheid;	BBPkeepref(*ret);	return MAL_SUCCEED;}

⌨️ 快捷键说明

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