亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? namespace.c

?? PostgreSQL7.4.6 for Linux
?? C
?? 第 1 頁 / 共 4 頁
字號:
 * an extra argument for the index AM OID. */OidOpclassnameGetOpcid(Oid amid, const char *opcname){	Oid			opcid;	List	   *lptr;	recomputeNamespacePath();	foreach(lptr, namespaceSearchPath)	{		Oid			namespaceId = lfirsto(lptr);		opcid = GetSysCacheOid(CLAAMNAMENSP,							   ObjectIdGetDatum(amid),							   PointerGetDatum(opcname),							   ObjectIdGetDatum(namespaceId),							   0);		if (OidIsValid(opcid))			return opcid;	}	/* Not found in path */	return InvalidOid;}/* * OpclassIsVisible *		Determine whether an opclass (identified by OID) is visible in the *		current search path.  Visible means "would be found by searching *		for the unqualified opclass name". */boolOpclassIsVisible(Oid opcid){	HeapTuple	opctup;	Form_pg_opclass opcform;	Oid			opcnamespace;	bool		visible;	opctup = SearchSysCache(CLAOID,							ObjectIdGetDatum(opcid),							0, 0, 0);	if (!HeapTupleIsValid(opctup))		elog(ERROR, "cache lookup failed for opclass %u", opcid);	opcform = (Form_pg_opclass) GETSTRUCT(opctup);	recomputeNamespacePath();	/*	 * Quick check: if it ain't in the path at all, it ain't visible.	 * Items in the system namespace are surely in the path and so we	 * needn't even do oidMember() for them.	 */	opcnamespace = opcform->opcnamespace;	if (opcnamespace != PG_CATALOG_NAMESPACE &&		!oidMember(opcnamespace, namespaceSearchPath))		visible = false;	else	{		/*		 * If it is in the path, it might still not be visible; it could		 * be hidden by another opclass of the same name earlier in the		 * path. So we must do a slow check to see if this opclass would		 * be found by OpclassnameGetOpcid.		 */		char	   *opcname = NameStr(opcform->opcname);		visible = (OpclassnameGetOpcid(opcform->opcamid, opcname) == opcid);	}	ReleaseSysCache(opctup);	return visible;}/* * ConversionGetConid *		Try to resolve an unqualified conversion name. *		Returns OID if conversion found in search path, else InvalidOid. * * This is essentially the same as RelnameGetRelid. */OidConversionGetConid(const char *conname){	Oid			conid;	List	   *lptr;	recomputeNamespacePath();	foreach(lptr, namespaceSearchPath)	{		Oid			namespaceId = lfirsto(lptr);		conid = GetSysCacheOid(CONNAMENSP,							   PointerGetDatum(conname),							   ObjectIdGetDatum(namespaceId),							   0, 0);		if (OidIsValid(conid))			return conid;	}	/* Not found in path */	return InvalidOid;}/* * ConversionIsVisible *		Determine whether a conversion (identified by OID) is visible in the *		current search path.  Visible means "would be found by searching *		for the unqualified conversion name". */boolConversionIsVisible(Oid conid){	HeapTuple	contup;	Form_pg_conversion conform;	Oid			connamespace;	bool		visible;	contup = SearchSysCache(CONOID,							ObjectIdGetDatum(conid),							0, 0, 0);	if (!HeapTupleIsValid(contup))		elog(ERROR, "cache lookup failed for conversion %u", conid);	conform = (Form_pg_conversion) GETSTRUCT(contup);	recomputeNamespacePath();	/*	 * Quick check: if it ain't in the path at all, it ain't visible.	 * Items in the system namespace are surely in the path and so we	 * needn't even do oidMember() for them.	 */	connamespace = conform->connamespace;	if (connamespace != PG_CATALOG_NAMESPACE &&		!oidMember(connamespace, namespaceSearchPath))		visible = false;	else	{		/*		 * If it is in the path, it might still not be visible; it could		 * be hidden by another conversion of the same name earlier in the		 * path. So we must do a slow check to see if this conversion		 * would be found by ConversionGetConid.		 */		char	   *conname = NameStr(conform->conname);		visible = (ConversionGetConid(conname) == conid);	}	ReleaseSysCache(contup);	return visible;}/* * DeconstructQualifiedName *		Given a possibly-qualified name expressed as a list of String nodes, *		extract the schema name and object name. * * *nspname_p is set to NULL if there is no explicit schema name. */voidDeconstructQualifiedName(List *names,						 char **nspname_p,						 char **objname_p){	char	   *catalogname;	char	   *schemaname = NULL;	char	   *objname = NULL;	switch (length(names))	{		case 1:			objname = strVal(lfirst(names));			break;		case 2:			schemaname = strVal(lfirst(names));			objname = strVal(lsecond(names));			break;		case 3:			catalogname = strVal(lfirst(names));			schemaname = strVal(lsecond(names));			objname = strVal(lthird(names));			/*			 * We check the catalog name and then ignore it.			 */			if (strcmp(catalogname, get_database_name(MyDatabaseId)) != 0)				ereport(ERROR,						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),				errmsg("cross-database references are not implemented")));			break;		default:			ereport(ERROR,					(errcode(ERRCODE_SYNTAX_ERROR),			errmsg("improper qualified name (too many dotted names): %s",				   NameListToString(names))));			break;	}	*nspname_p = schemaname;	*objname_p = objname;}/* * LookupExplicitNamespace *		Process an explicitly-specified schema name: look up the schema *		and verify we have USAGE (lookup) rights in it. * * Returns the namespace OID.  Raises ereport if any problem. */OidLookupExplicitNamespace(const char *nspname){	Oid			namespaceId;	AclResult	aclresult;	namespaceId = GetSysCacheOid(NAMESPACENAME,								 CStringGetDatum(nspname),								 0, 0, 0);	if (!OidIsValid(namespaceId))		ereport(ERROR,				(errcode(ERRCODE_UNDEFINED_SCHEMA),				 errmsg("schema \"%s\" does not exist", nspname)));	aclresult = pg_namespace_aclcheck(namespaceId, GetUserId(), ACL_USAGE);	if (aclresult != ACLCHECK_OK)		aclcheck_error(aclresult, ACL_KIND_NAMESPACE,					   nspname);	return namespaceId;}/* * QualifiedNameGetCreationNamespace *		Given a possibly-qualified name for an object (in List-of-Values *		format), determine what namespace the object should be created in. *		Also extract and return the object name (last component of list). * * This is *not* used for tables.  Hence, the TEMP table namespace is * never selected as the creation target. */OidQualifiedNameGetCreationNamespace(List *names, char **objname_p){	char	   *schemaname;	char	   *objname;	Oid			namespaceId;	/* deconstruct the name list */	DeconstructQualifiedName(names, &schemaname, &objname);	if (schemaname)	{		/* use exact schema given */		namespaceId = GetSysCacheOid(NAMESPACENAME,									 CStringGetDatum(schemaname),									 0, 0, 0);		if (!OidIsValid(namespaceId))			ereport(ERROR,					(errcode(ERRCODE_UNDEFINED_SCHEMA),					 errmsg("schema \"%s\" does not exist", schemaname)));		/* we do not check for USAGE rights here! */	}	else	{		/* use the default creation namespace */		recomputeNamespacePath();		namespaceId = defaultCreationNamespace;		if (!OidIsValid(namespaceId))			ereport(ERROR,					(errcode(ERRCODE_UNDEFINED_SCHEMA),					 errmsg("no schema has been selected to create in")));	}	/* Note: callers will check for CREATE rights when appropriate */	*objname_p = objname;	return namespaceId;}/* * makeRangeVarFromNameList *		Utility routine to convert a qualified-name list into RangeVar form. */RangeVar *makeRangeVarFromNameList(List *names){	RangeVar   *rel = makeRangeVar(NULL, NULL);	switch (length(names))	{		case 1:			rel->relname = strVal(lfirst(names));			break;		case 2:			rel->schemaname = strVal(lfirst(names));			rel->relname = strVal(lsecond(names));			break;		case 3:			rel->catalogname = strVal(lfirst(names));			rel->schemaname = strVal(lsecond(names));			rel->relname = strVal(lthird(names));			break;		default:			ereport(ERROR,					(errcode(ERRCODE_SYNTAX_ERROR),			 errmsg("improper relation name (too many dotted names): %s",					NameListToString(names))));			break;	}	return rel;}/* * NameListToString *		Utility routine to convert a qualified-name list into a string. * * This is used primarily to form error messages, and so we do not quote * the list elements, for the sake of legibility. */char *NameListToString(List *names){	StringInfoData string;	List	   *l;	initStringInfo(&string);	foreach(l, names)	{		if (l != names)			appendStringInfoChar(&string, '.');		appendStringInfoString(&string, strVal(lfirst(l)));	}	return string.data;}/* * NameListToQuotedString *		Utility routine to convert a qualified-name list into a string. * * Same as above except that names will be double-quoted where necessary, * so the string could be re-parsed (eg, by textToQualifiedNameList). */char *NameListToQuotedString(List *names){	StringInfoData string;	List	   *l;	initStringInfo(&string);	foreach(l, names)	{		if (l != names)			appendStringInfoChar(&string, '.');		appendStringInfoString(&string, quote_identifier(strVal(lfirst(l))));	}	return string.data;}/* * isTempNamespace - is the given namespace my temporary-table namespace? */boolisTempNamespace(Oid namespaceId){	if (OidIsValid(myTempNamespace) && myTempNamespace == namespaceId)		return true;	return false;}/* * isOtherTempNamespace - is the given namespace some other backend's * temporary-table namespace? */boolisOtherTempNamespace(Oid namespaceId){	bool		result;	char	   *nspname;	/* If it's my own temp namespace, say "false" */	if (isTempNamespace(namespaceId))		return false;	/* Else, if the namespace name starts with "pg_temp_", say "true" */	nspname = get_namespace_name(namespaceId);	if (!nspname)		return false;			/* no such namespace? */	result = (strncmp(nspname, "pg_temp_", 8) == 0);	pfree(nspname);	return result;}/* * PushSpecialNamespace - push a "special" namespace onto the front of the * search path. * * This is a slightly messy hack intended only for support of CREATE SCHEMA. * Although the API is defined to allow a stack of pushed namespaces, we * presently only support one at a time. * * The pushed namespace will be removed from the search path at end of * transaction, whether commit or abort. */voidPushSpecialNamespace(Oid namespaceId){	Assert(!OidIsValid(mySpecialNamespace));	mySpecialNamespace = namespaceId;	namespaceSearchPathValid = false;}/* * PopSpecialNamespace - remove previously pushed special namespace. */voidPopSpecialNamespace(Oid namespaceId){	Assert(mySpecialNamespace == namespaceId);	mySpecialNamespace = InvalidOid;	namespaceSearchPathValid = false;}/* * FindConversionByName - find a conversion by possibly qualified name */OidFindConversionByName(List *name){	char	   *schemaname;	char	   *conversion_name;	Oid			namespaceId;	Oid			conoid;	List	   *lptr;	/* deconstruct the name list */	DeconstructQualifiedName(name, &schemaname, &conversion_name);	if (schemaname)	{		/* use exact schema given */		namespaceId = LookupExplicitNamespace(schemaname);		return FindConversion(conversion_name, namespaceId);	}	else	{		/* search for it in search path */		recomputeNamespacePath();		foreach(lptr, namespaceSearchPath)		{			namespaceId = lfirsto(lptr);			conoid = FindConversion(conversion_name, namespaceId);			if (OidIsValid(conoid))				return conoid;		}	}	/* Not found in path */	return InvalidOid;}/* * FindDefaultConversionProc - find default encoding conversion proc */OidFindDefaultConversionProc(int4 for_encoding, int4 to_encoding){	Oid			proc;	List	   *lptr;	recomputeNamespacePath();	foreach(lptr, namespaceSearchPath)	{		Oid			namespaceId = lfirsto(lptr);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线不卡观看免费观看| 欧美区视频在线观看| 亚洲一区二区三区中文字幕| 精品免费视频一区二区| 99vv1com这只有精品| 青青草97国产精品免费观看无弹窗版| 国产精品色呦呦| 欧美r级电影在线观看| 91九色最新地址| 东方欧美亚洲色图在线| 免费视频最近日韩| 亚洲一二三区视频在线观看| 国产精品久久久久一区二区三区共 | 欧美绝品在线观看成人午夜影视| 国产精品一区二区无线| 美女视频一区二区| 日日夜夜免费精品| 一个色在线综合| 亚洲男人的天堂在线aⅴ视频| 久久久亚洲精品一区二区三区| 欧美一区二区三区视频| 666欧美在线视频| 欧美在线观看一区二区| 色综合久久综合网97色综合| 成人理论电影网| 成人美女视频在线观看18| 国产精品一卡二卡在线观看| 国内精品久久久久影院薰衣草| 美国欧美日韩国产在线播放| 蜜臀av一区二区在线观看| 蜜桃一区二区三区在线观看| 蜜桃视频第一区免费观看| 美女视频网站久久| 久久99国产精品免费网站| 日韩精品国产欧美| 免费精品视频在线| 美女精品自拍一二三四| 久久精品国产一区二区三区免费看 | 欧美一区二区二区| 日韩片之四级片| 欧美一区二区精品久久911| 91精品综合久久久久久| 91精品国产乱码久久蜜臀| 日韩一级视频免费观看在线| 日韩欧美资源站| 久久免费视频一区| 国产精品蜜臀av| 亚洲欧美另类在线| 亚洲成人av电影| 日韩成人午夜精品| 国产精品一区二区果冻传媒| 成人黄页毛片网站| 欧美伊人精品成人久久综合97 | 精品国产免费一区二区三区香蕉 | 亚洲精品伦理在线| 亚洲成人中文在线| 精品在线亚洲视频| 国产精品123| 99麻豆久久久国产精品免费| 在线视频欧美精品| 欧美xxx久久| 中文字幕 久热精品 视频在线| 亚洲欧洲无码一区二区三区| 亚洲一区二区三区视频在线播放 | 亚洲综合一二区| 青娱乐精品视频在线| 国产乱子伦视频一区二区三区 | 久久成人免费电影| 国产大片一区二区| 91黄色小视频| 日韩午夜激情av| 亚洲国产精品激情在线观看| 亚洲午夜羞羞片| 国产曰批免费观看久久久| 不卡的av在线| 日韩一区二区中文字幕| 中文字幕一区二区视频| 视频一区视频二区在线观看| 国产成人精品免费网站| 欧美日韩色综合| 中文幕一区二区三区久久蜜桃| 一区二区三区在线观看视频| 国内精品视频一区二区三区八戒| 91色视频在线| 久久久久久亚洲综合影院红桃| 亚洲午夜一区二区| 成人一二三区视频| 日韩一区二区在线看| 亚洲另类在线一区| 国产美女主播视频一区| 欧美日韩精品福利| 亚洲欧美怡红院| 国产一区二区三区四区五区美女| 色天使色偷偷av一区二区| 国产亚洲欧美色| 日日欢夜夜爽一区| 91香蕉视频mp4| 久久先锋影音av| 爽好多水快深点欧美视频| 一本色道a无线码一区v| 久久久久久一二三区| 日本成人在线网站| 欧美日韩一区高清| 亚洲麻豆国产自偷在线| 高清国产一区二区三区| 精品国偷自产国产一区| 偷拍与自拍一区| 在线观看视频欧美| 亚洲人一二三区| 国产成人av自拍| 久久免费国产精品| 久草中文综合在线| 欧美久久婷婷综合色| 一区二区高清免费观看影视大全 | 亚洲大片在线观看| 在线视频一区二区三区| 亚洲日本va午夜在线影院| 丁香婷婷综合激情五月色| 久久综合色播五月| 免费在线观看一区| 制服.丝袜.亚洲.另类.中文| 亚洲成av人片一区二区| 欧美男女性生活在线直播观看| 樱花影视一区二区| 日本久久一区二区| 樱桃视频在线观看一区| 在线观看一区日韩| 亚洲综合免费观看高清完整版 | 久久亚洲精品小早川怜子| 久久精品国产精品青草| 91精品视频网| 日本不卡不码高清免费观看| 在线播放一区二区三区| 日韩不卡在线观看日韩不卡视频| 在线成人免费视频| 青草av.久久免费一区| 日韩亚洲欧美高清| 激情小说欧美图片| 国产日韩欧美精品综合| 成人精品视频一区二区三区尤物| 中文字幕免费在线观看视频一区| 成人免费视频一区| 中文字幕一区二区三区蜜月| 色综合色狠狠综合色| 亚洲激情自拍偷拍| 欧美日韩亚洲丝袜制服| 蜜臀91精品一区二区三区| 精品美女一区二区| 国产99久久久精品| 亚洲男人的天堂在线aⅴ视频| 欧洲精品一区二区三区在线观看| 亚洲国产精品嫩草影院| 日韩一区二区在线播放| 国产精品1区2区3区| 中文字幕中文字幕一区| 在线观看一区不卡| 久久精品国产网站| 中文av一区特黄| 欧美怡红院视频| 久久国产生活片100| 国产精品欧美一区喷水| 欧美午夜电影网| 国精产品一区一区三区mba桃花 | 久久亚洲二区三区| 色综合久久中文综合久久牛| 亚洲国产一区二区在线播放| 日韩欧美色综合| 91网站在线观看视频| 亚洲成人av一区二区| 久久久亚洲午夜电影| 91免费国产视频网站| 天天av天天翘天天综合网色鬼国产| 欧美成人精精品一区二区频| 成人国产精品视频| 午夜电影久久久| 久久久国产精品麻豆| 91福利在线免费观看| 激情欧美一区二区三区在线观看| 中文字幕中文在线不卡住| 91精品国产综合久久国产大片| 国产馆精品极品| 亚洲成人你懂的| 国产精品美日韩| 欧美一二三区在线| 一本到三区不卡视频| 国精产品一区一区三区mba桃花| 亚洲精品ww久久久久久p站| 精品88久久久久88久久久| 色琪琪一区二区三区亚洲区| 国产精品亚洲第一 | 成人高清免费观看| 视频一区视频二区中文| 亚洲欧美一区二区在线观看| 精品日产卡一卡二卡麻豆| 在线观看成人小视频| 成人夜色视频网站在线观看| 精品午夜久久福利影院| 亚洲国产一区二区三区青草影视| 国产欧美日韩卡一| 日韩精品专区在线影院重磅|