📄 equalfuncs.c
字号:
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 + -