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

📄 equalfuncs.c

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 C
📖 第 1 页 / 共 4 页
字号:
/* * Stuff from pg_list.h */static bool_equalList(List *a, List *b){	ListCell   *item_a;	ListCell   *item_b;	/*	 * Try to reject by simple scalar checks before grovelling through all the	 * list elements...	 */	COMPARE_SCALAR_FIELD(type);	COMPARE_SCALAR_FIELD(length);	/*	 * We place the switch outside the loop for the sake of efficiency; this	 * may not be worth doing...	 */	switch (a->type)	{		case T_List:			forboth(item_a, a, item_b, b)			{				if (!equal(lfirst(item_a), lfirst(item_b)))					return false;			}			break;		case T_IntList:			forboth(item_a, a, item_b, b)			{				if (lfirst_int(item_a) != lfirst_int(item_b))					return false;			}			break;		case T_OidList:			forboth(item_a, a, item_b, b)			{				if (lfirst_oid(item_a) != lfirst_oid(item_b))					return false;			}			break;		default:			elog(ERROR, "unrecognized list node type: %d",				 (int) a->type);			return false;		/* keep compiler quiet */	}	/*	 * If we got here, we should have run out of elements of both lists	 */	Assert(item_a == NULL);	Assert(item_b == NULL);	return true;}/* * Stuff from value.h */static bool_equalValue(Value *a, Value *b){	COMPARE_SCALAR_FIELD(type);	switch (a->type)	{		case T_Integer:			COMPARE_SCALAR_FIELD(val.ival);			break;		case T_Float:		case T_String:		case T_BitString:			COMPARE_STRING_FIELD(val.str);			break;		case T_Null:			/* nothing to do */			break;		default:			elog(ERROR, "unrecognized node type: %d", (int) a->type);			break;	}	return true;}/* * equal *	  returns whether two nodes are equal */boolequal(void *a, void *b){	bool		retval;	if (a == b)		return true;	/*	 * note that a!=b, so only one of them can be NULL	 */	if (a == NULL || b == NULL)		return false;	/*	 * are they the same type of nodes?	 */	if (nodeTag(a) != nodeTag(b))		return false;	switch (nodeTag(a))	{			/*			 * PRIMITIVE NODES			 */		case T_Alias:			retval = _equalAlias(a, b);			break;		case T_RangeVar:			retval = _equalRangeVar(a, b);			break;		case T_Var:			retval = _equalVar(a, b);			break;		case T_Const:			retval = _equalConst(a, b);			break;		case T_Param:			retval = _equalParam(a, b);			break;		case T_Aggref:			retval = _equalAggref(a, b);			break;		case T_ArrayRef:			retval = _equalArrayRef(a, b);			break;		case T_FuncExpr:			retval = _equalFuncExpr(a, b);			break;		case T_OpExpr:			retval = _equalOpExpr(a, b);			break;		case T_DistinctExpr:			retval = _equalDistinctExpr(a, b);			break;		case T_ScalarArrayOpExpr:			retval = _equalScalarArrayOpExpr(a, b);			break;		case T_BoolExpr:			retval = _equalBoolExpr(a, b);			break;		case T_SubLink:			retval = _equalSubLink(a, b);			break;		case T_SubPlan:			retval = _equalSubPlan(a, b);			break;		case T_FieldSelect:			retval = _equalFieldSelect(a, b);			break;		case T_FieldStore:			retval = _equalFieldStore(a, b);			break;		case T_RelabelType:			retval = _equalRelabelType(a, b);			break;		case T_ConvertRowtypeExpr:			retval = _equalConvertRowtypeExpr(a, b);			break;		case T_CaseExpr:			retval = _equalCaseExpr(a, b);			break;		case T_CaseWhen:			retval = _equalCaseWhen(a, b);			break;		case T_CaseTestExpr:			retval = _equalCaseTestExpr(a, b);			break;		case T_ArrayExpr:			retval = _equalArrayExpr(a, b);			break;		case T_RowExpr:			retval = _equalRowExpr(a, b);			break;		case T_CoalesceExpr:			retval = _equalCoalesceExpr(a, b);			break;		case T_MinMaxExpr:			retval = _equalMinMaxExpr(a, b);			break;		case T_NullIfExpr:			retval = _equalNullIfExpr(a, b);			break;		case T_NullTest:			retval = _equalNullTest(a, b);			break;		case T_BooleanTest:			retval = _equalBooleanTest(a, b);			break;		case T_CoerceToDomain:			retval = _equalCoerceToDomain(a, b);			break;		case T_CoerceToDomainValue:			retval = _equalCoerceToDomainValue(a, b);			break;		case T_SetToDefault:			retval = _equalSetToDefault(a, b);			break;		case T_TargetEntry:			retval = _equalTargetEntry(a, b);			break;		case T_RangeTblRef:			retval = _equalRangeTblRef(a, b);			break;		case T_FromExpr:			retval = _equalFromExpr(a, b);			break;		case T_JoinExpr:			retval = _equalJoinExpr(a, b);			break;			/*			 * RELATION NODES			 */		case T_PathKeyItem:			retval = _equalPathKeyItem(a, b);			break;		case T_RestrictInfo:			retval = _equalRestrictInfo(a, b);			break;		case T_InClauseInfo:			retval = _equalInClauseInfo(a, b);			break;		case T_List:		case T_IntList:		case T_OidList:			retval = _equalList(a, b);			break;		case T_Integer:		case T_Float:		case T_String:		case T_BitString:		case T_Null:			retval = _equalValue(a, b);			break;			/*			 * PARSE NODES			 */		case T_Query:			retval = _equalQuery(a, b);			break;		case T_InsertStmt:			retval = _equalInsertStmt(a, b);			break;		case T_DeleteStmt:			retval = _equalDeleteStmt(a, b);			break;		case T_UpdateStmt:			retval = _equalUpdateStmt(a, b);			break;		case T_SelectStmt:			retval = _equalSelectStmt(a, b);			break;		case T_SetOperationStmt:			retval = _equalSetOperationStmt(a, b);			break;		case T_AlterTableStmt:			retval = _equalAlterTableStmt(a, b);			break;		case T_AlterTableCmd:			retval = _equalAlterTableCmd(a, b);			break;		case T_AlterDomainStmt:			retval = _equalAlterDomainStmt(a, b);			break;		case T_GrantStmt:			retval = _equalGrantStmt(a, b);			break;		case T_GrantRoleStmt:			retval = _equalGrantRoleStmt(a, b);			break;		case T_DeclareCursorStmt:			retval = _equalDeclareCursorStmt(a, b);			break;		case T_ClosePortalStmt:			retval = _equalClosePortalStmt(a, b);			break;		case T_ClusterStmt:			retval = _equalClusterStmt(a, b);			break;		case T_CopyStmt:			retval = _equalCopyStmt(a, b);			break;		case T_CreateStmt:			retval = _equalCreateStmt(a, b);			break;		case T_InhRelation:			retval = _equalInhRelation(a, b);			break;		case T_DefineStmt:			retval = _equalDefineStmt(a, b);			break;		case T_DropStmt:			retval = _equalDropStmt(a, b);			break;		case T_TruncateStmt:			retval = _equalTruncateStmt(a, b);			break;		case T_CommentStmt:			retval = _equalCommentStmt(a, b);			break;		case T_FetchStmt:			retval = _equalFetchStmt(a, b);			break;		case T_IndexStmt:			retval = _equalIndexStmt(a, b);			break;		case T_CreateFunctionStmt:			retval = _equalCreateFunctionStmt(a, b);			break;		case T_FunctionParameter:			retval = _equalFunctionParameter(a, b);			break;		case T_AlterFunctionStmt:			retval = _equalAlterFunctionStmt(a, b);			break;		case T_RemoveAggrStmt:			retval = _equalRemoveAggrStmt(a, b);			break;		case T_RemoveFuncStmt:			retval = _equalRemoveFuncStmt(a, b);			break;		case T_RemoveOperStmt:			retval = _equalRemoveOperStmt(a, b);			break;		case T_RemoveOpClassStmt:			retval = _equalRemoveOpClassStmt(a, b);			break;		case T_RenameStmt:			retval = _equalRenameStmt(a, b);			break;		case T_AlterObjectSchemaStmt:			retval = _equalAlterObjectSchemaStmt(a, b);			break;		case T_AlterOwnerStmt:			retval = _equalAlterOwnerStmt(a, b);			break;		case T_RuleStmt:			retval = _equalRuleStmt(a, b);			break;		case T_NotifyStmt:			retval = _equalNotifyStmt(a, b);			break;		case T_ListenStmt:			retval = _equalListenStmt(a, b);			break;		case T_UnlistenStmt:			retval = _equalUnlistenStmt(a, b);			break;		case T_TransactionStmt:			retval = _equalTransactionStmt(a, b);			break;		case T_CompositeTypeStmt:			retval = _equalCompositeTypeStmt(a, b);			break;		case T_ViewStmt:			retval = _equalViewStmt(a, b);			break;		case T_LoadStmt:			retval = _equalLoadStmt(a, b);			break;		case T_CreateDomainStmt:			retval = _equalCreateDomainStmt(a, b);			break;		case T_CreateOpClassStmt:			retval = _equalCreateOpClassStmt(a, b);			break;		case T_CreateOpClassItem:			retval = _equalCreateOpClassItem(a, b);			break;		case T_CreatedbStmt:			retval = _equalCreatedbStmt(a, b);			break;		case T_AlterDatabaseStmt:			retval = _equalAlterDatabaseStmt(a, b);			break;		case T_AlterDatabaseSetStmt:			retval = _equalAlterDatabaseSetStmt(a, b);			break;		case T_DropdbStmt:			retval = _equalDropdbStmt(a, b);			break;		case T_VacuumStmt:			retval = _equalVacuumStmt(a, b);			break;		case T_ExplainStmt:			retval = _equalExplainStmt(a, b);			break;		case T_CreateSeqStmt:			retval = _equalCreateSeqStmt(a, b);			break;		case T_AlterSeqStmt:			retval = _equalAlterSeqStmt(a, b);			break;		case T_VariableSetStmt:			retval = _equalVariableSetStmt(a, b);			break;		case T_VariableShowStmt:			retval = _equalVariableShowStmt(a, b);			break;		case T_VariableResetStmt:			retval = _equalVariableResetStmt(a, b);			break;		case T_CreateTableSpaceStmt:			retval = _equalCreateTableSpaceStmt(a, b);			break;		case T_DropTableSpaceStmt:			retval = _equalDropTableSpaceStmt(a, b);			break;		case T_CreateTrigStmt:			retval = _equalCreateTrigStmt(a, b);			break;		case T_DropPropertyStmt:			retval = _equalDropPropertyStmt(a, b);			break;		case T_CreatePLangStmt:			retval = _equalCreatePLangStmt(a, b);			break;		case T_DropPLangStmt:			retval = _equalDropPLangStmt(a, b);			break;		case T_CreateRoleStmt:			retval = _equalCreateRoleStmt(a, b);			break;		case T_AlterRoleStmt:			retval = _equalAlterRoleStmt(a, b);			break;		case T_AlterRoleSetStmt:			retval = _equalAlterRoleSetStmt(a, b);			break;		case T_DropRoleStmt:			retval = _equalDropRoleStmt(a, b);			break;		case T_LockStmt:			retval = _equalLockStmt(a, b);			break;		case T_ConstraintsSetStmt:			retval = _equalConstraintsSetStmt(a, b);			break;		case T_ReindexStmt:			retval = _equalReindexStmt(a, b);			break;		case T_CheckPointStmt:			retval = true;			break;		case T_CreateSchemaStmt:			retval = _equalCreateSchemaStmt(a, b);			break;		case T_CreateConversionStmt:			retval = _equalCreateConversionStmt(a, b);			break;		case T_CreateCastStmt:			retval = _equalCreateCastStmt(a, b);			break;		case T_DropCastStmt:			retval = _equalDropCastStmt(a, b);			break;		case T_PrepareStmt:			retval = _equalPrepareStmt(a, b);			break;		case T_ExecuteStmt:			retval = _equalExecuteStmt(a, b);			break;		case T_DeallocateStmt:			retval = _equalDeallocateStmt(a, b);			break;		case T_A_Expr:			retval = _equalAExpr(a, b);			break;		case T_ColumnRef:			retval = _equalColumnRef(a, b);			break;		case T_ParamRef:			retval = _equalParamRef(a, b);			break;		case T_A_Const:			retval = _equalAConst(a, b);			break;		case T_FuncCall:			retval = _equalFuncCall(a, b);			break;		case T_A_Indices:			retval = _equalAIndices(a, b);			break;		case T_A_Indirection:			retval = _equalA_Indirection(a, b);			break;		case T_ResTarget:			retval = _equalResTarget(a, b);			break;		case T_TypeCast:			retval = _equalTypeCast(a, b);			break;		case T_SortBy:			retval = _equalSortBy(a, b);			break;		case T_RangeSubselect:			retval = _equalRangeSubselect(a, b);			break;		case T_RangeFunction:			retval = _equalRangeFunction(a, b);			break;		case T_TypeName:			retval = _equalTypeName(a, b);			break;		case T_IndexElem:			retval = _equalIndexElem(a, b);			break;		case T_ColumnDef:			retval = _equalColumnDef(a, b);			break;		case T_Constraint:			retval = _equalConstraint(a, b);			break;		case T_DefElem:			retval = _equalDefElem(a, b);			break;		case T_LockingClause:			retval = _equalLockingClause(a, b);			break;		case T_RangeTblEntry:			retval = _equalRangeTblEntry(a, b);			break;		case T_SortClause:			retval = _equalSortClause(a, b);			break;		case T_GroupClause:			/* GroupClause is equivalent to SortClause */			retval = _equalSortClause(a, b);			break;		case T_FkConstraint:			retval = _equalFkConstraint(a, b);			break;		case T_PrivGrantee:			retval = _equalPrivGrantee(a, b);			break;		case T_FuncWithArgs:			retval = _equalFuncWithArgs(a, b);			break;		default:			elog(ERROR, "unrecognized node type: %d",				 (int) nodeTag(a));			retval = false;		/* keep compiler quiet */			break;	}	return retval;}

⌨️ 快捷键说明

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