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

📄 equalfuncs.c

📁 PostgreSQL7.4.6 for Linux
💻 C
📖 第 1 页 / 共 3 页
字号:
	COMPARE_NODE_FIELD(fields);	COMPARE_NODE_FIELD(indirection);	return true;}static bool_equalAConst(A_Const *a, A_Const *b){	if (!equal(&a->val, &b->val))		/* hack for in-line Value field */		return false;	COMPARE_NODE_FIELD(typename);	return true;}static bool_equalFuncCall(FuncCall *a, FuncCall *b){	COMPARE_NODE_FIELD(funcname);	COMPARE_NODE_FIELD(args);	COMPARE_SCALAR_FIELD(agg_star);	COMPARE_SCALAR_FIELD(agg_distinct);	return true;}static bool_equalAIndices(A_Indices *a, A_Indices *b){	COMPARE_NODE_FIELD(lidx);	COMPARE_NODE_FIELD(uidx);	return true;}static bool_equalExprFieldSelect(ExprFieldSelect *a, ExprFieldSelect *b){	COMPARE_NODE_FIELD(arg);	COMPARE_NODE_FIELD(fields);	COMPARE_NODE_FIELD(indirection);	return true;}static bool_equalResTarget(ResTarget *a, ResTarget *b){	COMPARE_STRING_FIELD(name);	COMPARE_NODE_FIELD(indirection);	COMPARE_NODE_FIELD(val);	return true;}static bool_equalTypeName(TypeName *a, TypeName *b){	COMPARE_NODE_FIELD(names);	COMPARE_SCALAR_FIELD(typeid);	COMPARE_SCALAR_FIELD(timezone);	COMPARE_SCALAR_FIELD(setof);	COMPARE_SCALAR_FIELD(pct_type);	COMPARE_SCALAR_FIELD(typmod);	COMPARE_NODE_FIELD(arrayBounds);	return true;}static bool_equalTypeCast(TypeCast *a, TypeCast *b){	COMPARE_NODE_FIELD(arg);	COMPARE_NODE_FIELD(typename);	return true;}static bool_equalSortBy(SortBy *a, SortBy *b){	COMPARE_SCALAR_FIELD(sortby_kind);	COMPARE_NODE_FIELD(useOp);	COMPARE_NODE_FIELD(node);	return true;}static bool_equalRangeSubselect(RangeSubselect *a, RangeSubselect *b){	COMPARE_NODE_FIELD(subquery);	COMPARE_NODE_FIELD(alias);	return true;}static bool_equalRangeFunction(RangeFunction *a, RangeFunction *b){	COMPARE_NODE_FIELD(funccallnode);	COMPARE_NODE_FIELD(alias);	COMPARE_NODE_FIELD(coldeflist);	return true;}static bool_equalIndexElem(IndexElem *a, IndexElem *b){	COMPARE_STRING_FIELD(name);	COMPARE_NODE_FIELD(expr);	COMPARE_NODE_FIELD(opclass);	return true;}static bool_equalColumnDef(ColumnDef *a, ColumnDef *b){	COMPARE_STRING_FIELD(colname);	COMPARE_NODE_FIELD(typename);	COMPARE_SCALAR_FIELD(inhcount);	COMPARE_SCALAR_FIELD(is_local);	COMPARE_SCALAR_FIELD(is_not_null);	COMPARE_NODE_FIELD(raw_default);	COMPARE_STRING_FIELD(cooked_default);	COMPARE_NODE_FIELD(constraints);	COMPARE_NODE_FIELD(support);	return true;}static bool_equalConstraint(Constraint *a, Constraint *b){	COMPARE_SCALAR_FIELD(contype);	COMPARE_STRING_FIELD(name);	COMPARE_NODE_FIELD(raw_expr);	COMPARE_STRING_FIELD(cooked_expr);	COMPARE_NODE_FIELD(keys);	return true;}static bool_equalDefElem(DefElem *a, DefElem *b){	COMPARE_STRING_FIELD(defname);	COMPARE_NODE_FIELD(arg);	return true;}static bool_equalRangeTblEntry(RangeTblEntry *a, RangeTblEntry *b){	COMPARE_SCALAR_FIELD(rtekind);	COMPARE_SCALAR_FIELD(relid);	COMPARE_NODE_FIELD(subquery);	COMPARE_NODE_FIELD(funcexpr);	COMPARE_NODE_FIELD(coldeflist);	COMPARE_SCALAR_FIELD(jointype);	COMPARE_NODE_FIELD(joinaliasvars);	COMPARE_NODE_FIELD(alias);	COMPARE_NODE_FIELD(eref);	COMPARE_SCALAR_FIELD(inh);	COMPARE_SCALAR_FIELD(inFromCl);	COMPARE_SCALAR_FIELD(checkForRead);	COMPARE_SCALAR_FIELD(checkForWrite);	COMPARE_SCALAR_FIELD(checkAsUser);	return true;}static bool_equalSortClause(SortClause *a, SortClause *b){	COMPARE_SCALAR_FIELD(tleSortGroupRef);	COMPARE_SCALAR_FIELD(sortop);	return true;}static bool_equalFkConstraint(FkConstraint *a, FkConstraint *b){	COMPARE_STRING_FIELD(constr_name);	COMPARE_NODE_FIELD(pktable);	COMPARE_NODE_FIELD(fk_attrs);	COMPARE_NODE_FIELD(pk_attrs);	COMPARE_SCALAR_FIELD(fk_matchtype);	COMPARE_SCALAR_FIELD(fk_upd_action);	COMPARE_SCALAR_FIELD(fk_del_action);	COMPARE_SCALAR_FIELD(deferrable);	COMPARE_SCALAR_FIELD(initdeferred);	COMPARE_SCALAR_FIELD(skip_validation);	return true;}/* * Stuff from pg_list.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_Resdom:			retval = _equalResdom(a, b);			break;		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_RelabelType:			retval = _equalRelabelType(a, b);			break;		case T_CaseExpr:			retval = _equalCaseExpr(a, b);			break;		case T_CaseWhen:			retval = _equalCaseWhen(a, b);			break;		case T_ArrayExpr:			retval = _equalArrayExpr(a, b);			break;		case T_CoalesceExpr:			retval = _equalCoalesceExpr(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_JoinInfo:			retval = _equalJoinInfo(a, b);			break;		case T_InClauseInfo:			retval = _equalInClauseInfo(a, b);			break;			/*			 * LIST NODES			 */		case T_List:			{				List	   *la = (List *) a;				List	   *lb = (List *) b;				List	   *l;				/*				 * Try to reject by length check before we grovel through				 * all the elements...				 */				if (length(la) != length(lb))					return false;				foreach(l, la)				{					if (!equal(lfirst(l), lfirst(lb)))						return false;					lb = lnext(lb);				}				retval = true;			}			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_AlterDomainStmt:			retval = _equalAlterDomainStmt(a, b);			break;		case T_GrantStmt:			retval = _equalGrantStmt(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_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_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_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_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_CreateUserStmt:			retval = _equalCreateUserStmt(a, b);			break;		case T_AlterUserStmt:			retval = _equalAlterUserStmt(a, b);			break;		case T_AlterUserSetStmt:			retval = _equalAlterUserSetStmt(a, b);			break;		case T_DropUserStmt:			retval = _equalDropUserStmt(a, b);			break;		case T_LockStmt:			retval = _equalLockStmt(a, b);			break;		case T_ConstraintsSetStmt:			retval = _equalConstraintsSetStmt(a, b);			break;		case T_CreateGroupStmt:			retval = _equalCreateGroupStmt(a, b);			break;		case T_AlterGroupStmt:			retval = _equalAlterGroupStmt(a, b);			break;		case T_DropGroupStmt:			retval = _equalDropGroupStmt(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_ExprFieldSelect:			retval = _equalExprFieldSelect(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_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 + -