📄 copyfuncs.c
字号:
_copyRangeVar(RangeVar *from){ RangeVar *newnode = makeNode(RangeVar); COPY_STRING_FIELD(catalogname); COPY_STRING_FIELD(schemaname); COPY_STRING_FIELD(relname); COPY_SCALAR_FIELD(inhOpt); COPY_SCALAR_FIELD(istemp); COPY_NODE_FIELD(alias); return newnode;}/* * We don't need a _copyExpr because Expr is an abstract supertype which * should never actually get instantiated. Also, since it has no common * fields except NodeTag, there's no need for a helper routine to factor * out copying the common fields... *//* * _copyVar */static Var *_copyVar(Var *from){ Var *newnode = makeNode(Var); COPY_SCALAR_FIELD(varno); COPY_SCALAR_FIELD(varattno); COPY_SCALAR_FIELD(vartype); COPY_SCALAR_FIELD(vartypmod); COPY_SCALAR_FIELD(varlevelsup); COPY_SCALAR_FIELD(varnoold); COPY_SCALAR_FIELD(varoattno); return newnode;}/* * _copyConst */static Const *_copyConst(Const *from){ Const *newnode = makeNode(Const); COPY_SCALAR_FIELD(consttype); COPY_SCALAR_FIELD(constlen); if (from->constbyval || from->constisnull) { /* * passed by value so just copy the datum. Also, don't try to copy * struct when value is null! */ newnode->constvalue = from->constvalue; } else { /* * passed by reference. We need a palloc'd copy. */ newnode->constvalue = datumCopy(from->constvalue, from->constbyval, from->constlen); } COPY_SCALAR_FIELD(constisnull); COPY_SCALAR_FIELD(constbyval); return newnode;}/* * _copyParam */static Param *_copyParam(Param *from){ Param *newnode = makeNode(Param); COPY_SCALAR_FIELD(paramkind); COPY_SCALAR_FIELD(paramid); COPY_STRING_FIELD(paramname); COPY_SCALAR_FIELD(paramtype); return newnode;}/* * _copyAggref */static Aggref *_copyAggref(Aggref *from){ Aggref *newnode = makeNode(Aggref); COPY_SCALAR_FIELD(aggfnoid); COPY_SCALAR_FIELD(aggtype); COPY_NODE_FIELD(target); COPY_SCALAR_FIELD(agglevelsup); COPY_SCALAR_FIELD(aggstar); COPY_SCALAR_FIELD(aggdistinct); return newnode;}/* * _copyArrayRef */static ArrayRef *_copyArrayRef(ArrayRef *from){ ArrayRef *newnode = makeNode(ArrayRef); COPY_SCALAR_FIELD(refrestype); COPY_SCALAR_FIELD(refarraytype); COPY_SCALAR_FIELD(refelemtype); COPY_NODE_FIELD(refupperindexpr); COPY_NODE_FIELD(reflowerindexpr); COPY_NODE_FIELD(refexpr); COPY_NODE_FIELD(refassgnexpr); return newnode;}/* * _copyFuncExpr */static FuncExpr *_copyFuncExpr(FuncExpr *from){ FuncExpr *newnode = makeNode(FuncExpr); COPY_SCALAR_FIELD(funcid); COPY_SCALAR_FIELD(funcresulttype); COPY_SCALAR_FIELD(funcretset); COPY_SCALAR_FIELD(funcformat); COPY_NODE_FIELD(args); return newnode;}/* * _copyOpExpr */static OpExpr *_copyOpExpr(OpExpr *from){ OpExpr *newnode = makeNode(OpExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_NODE_FIELD(args); return newnode;}/* * _copyDistinctExpr (same as OpExpr) */static DistinctExpr *_copyDistinctExpr(DistinctExpr *from){ DistinctExpr *newnode = makeNode(DistinctExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_NODE_FIELD(args); return newnode;}/* * _copyScalarArrayOpExpr */static ScalarArrayOpExpr *_copyScalarArrayOpExpr(ScalarArrayOpExpr *from){ ScalarArrayOpExpr *newnode = makeNode(ScalarArrayOpExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(useOr); COPY_NODE_FIELD(args); return newnode;}/* * _copyBoolExpr */static BoolExpr *_copyBoolExpr(BoolExpr *from){ BoolExpr *newnode = makeNode(BoolExpr); COPY_SCALAR_FIELD(boolop); COPY_NODE_FIELD(args); return newnode;}/* * _copySubLink */static SubLink *_copySubLink(SubLink *from){ SubLink *newnode = makeNode(SubLink); COPY_SCALAR_FIELD(subLinkType); COPY_SCALAR_FIELD(useOr); COPY_NODE_FIELD(lefthand); COPY_NODE_FIELD(operName); COPY_NODE_FIELD(operOids); COPY_NODE_FIELD(subselect); return newnode;}/* * _copySubPlan */static SubPlan *_copySubPlan(SubPlan *from){ SubPlan *newnode = makeNode(SubPlan); COPY_SCALAR_FIELD(subLinkType); COPY_SCALAR_FIELD(useOr); COPY_NODE_FIELD(exprs); COPY_NODE_FIELD(paramIds); COPY_NODE_FIELD(plan); COPY_SCALAR_FIELD(plan_id); COPY_NODE_FIELD(rtable); COPY_SCALAR_FIELD(useHashTable); COPY_SCALAR_FIELD(unknownEqFalse); COPY_NODE_FIELD(setParam); COPY_NODE_FIELD(parParam); COPY_NODE_FIELD(args); return newnode;}/* * _copyFieldSelect */static FieldSelect *_copyFieldSelect(FieldSelect *from){ FieldSelect *newnode = makeNode(FieldSelect); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(fieldnum); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); return newnode;}/* * _copyFieldStore */static FieldStore *_copyFieldStore(FieldStore *from){ FieldStore *newnode = makeNode(FieldStore); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(newvals); COPY_NODE_FIELD(fieldnums); COPY_SCALAR_FIELD(resulttype); return newnode;}/* * _copyRelabelType */static RelabelType *_copyRelabelType(RelabelType *from){ RelabelType *newnode = makeNode(RelabelType); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(relabelformat); return newnode;}/* * _copyConvertRowtypeExpr */static ConvertRowtypeExpr *_copyConvertRowtypeExpr(ConvertRowtypeExpr *from){ ConvertRowtypeExpr *newnode = makeNode(ConvertRowtypeExpr); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(convertformat); return newnode;}/* * _copyCaseExpr */static CaseExpr *_copyCaseExpr(CaseExpr *from){ CaseExpr *newnode = makeNode(CaseExpr); COPY_SCALAR_FIELD(casetype); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(args); COPY_NODE_FIELD(defresult); return newnode;}/* * _copyCaseWhen */static CaseWhen *_copyCaseWhen(CaseWhen *from){ CaseWhen *newnode = makeNode(CaseWhen); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(result); return newnode;}/* * _copyCaseTestExpr */static CaseTestExpr *_copyCaseTestExpr(CaseTestExpr *from){ CaseTestExpr *newnode = makeNode(CaseTestExpr); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); return newnode;}/* * _copyArrayExpr */static ArrayExpr *_copyArrayExpr(ArrayExpr *from){ ArrayExpr *newnode = makeNode(ArrayExpr); COPY_SCALAR_FIELD(array_typeid); COPY_SCALAR_FIELD(element_typeid); COPY_NODE_FIELD(elements); COPY_SCALAR_FIELD(multidims); return newnode;}/* * _copyRowExpr */static RowExpr *_copyRowExpr(RowExpr *from){ RowExpr *newnode = makeNode(RowExpr); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(row_typeid); COPY_SCALAR_FIELD(row_format); return newnode;}/* * _copyCoalesceExpr */static CoalesceExpr *_copyCoalesceExpr(CoalesceExpr *from){ CoalesceExpr *newnode = makeNode(CoalesceExpr); COPY_SCALAR_FIELD(coalescetype); COPY_NODE_FIELD(args); return newnode;}/* * _copyMinMaxExpr */static MinMaxExpr *_copyMinMaxExpr(MinMaxExpr *from){ MinMaxExpr *newnode = makeNode(MinMaxExpr); COPY_SCALAR_FIELD(minmaxtype); COPY_SCALAR_FIELD(op); COPY_NODE_FIELD(args); return newnode;}/* * _copyNullIfExpr (same as OpExpr) */static NullIfExpr *_copyNullIfExpr(NullIfExpr *from){ NullIfExpr *newnode = makeNode(NullIfExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_NODE_FIELD(args); return newnode;}/* * _copyNullTest */static NullTest *_copyNullTest(NullTest *from){ NullTest *newnode = makeNode(NullTest); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(nulltesttype); return newnode;}/* * _copyBooleanTest */static BooleanTest *_copyBooleanTest(BooleanTest *from){ BooleanTest *newnode = makeNode(BooleanTest); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(booltesttype); return newnode;}/* * _copyCoerceToDomain */static CoerceToDomain *_copyCoerceToDomain(CoerceToDomain *from){ CoerceToDomain *newnode = makeNode(CoerceToDomain); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(coercionformat); return newnode;}/* * _copyCoerceToDomainValue */static CoerceToDomainValue *_copyCoerceToDomainValue(CoerceToDomainValue *from){ CoerceToDomainValue *newnode = makeNode(CoerceToDomainValue); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); return newnode;}/* * _copySetToDefault */static SetToDefault *_copySetToDefault(SetToDefault *from){ SetToDefault *newnode = makeNode(SetToDefault); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); return newnode;}/* * _copyTargetEntry */static TargetEntry *_copyTargetEntry(TargetEntry *from){ TargetEntry *newnode = makeNode(TargetEntry); COPY_NODE_FIELD(expr); COPY_SCALAR_FIELD(resno); COPY_STRING_FIELD(resname); COPY_SCALAR_FIELD(ressortgroupref); COPY_SCALAR_FIELD(resorigtbl); COPY_SCALAR_FIELD(resorigcol); COPY_SCALAR_FIELD(resjunk); return newnode;}/* * _copyRangeTblRef */static RangeTblRef *_copyRangeTblRef(RangeTblRef *from){ RangeTblRef *newnode = makeNode(RangeTblRef); COPY_SCALAR_FIELD(rtindex); return newnode;}/* * _copyJoinExpr */static JoinExpr *_copyJoinExpr(JoinExpr *from){ JoinExpr *newnode = makeNode(JoinExpr); COPY_SCALAR_FIELD(jointype); COPY_SCALAR_FIELD(isNatural); COPY_NODE_FIELD(larg); COPY_NODE_FIELD(rarg); COPY_NODE_FIELD(using); COPY_NODE_FIELD(quals); COPY_NODE_FIELD(alias); COPY_SCALAR_FIELD(rtindex); return newnode;}/* * _copyFromExpr */static FromExpr *_copyFromExpr(FromExpr *from){ FromExpr *newnode = makeNode(FromExpr); COPY_NODE_FIELD(fromlist); COPY_NODE_FIELD(quals); return newnode;}/* **************************************************************** * relation.h copy functions * * We don't support copying RelOptInfo, IndexOptInfo, or Path nodes. * There are some subsidiary structs that are useful to copy, though. * **************************************************************** *//* * _copyPathKeyItem */static PathKeyItem *_copyPathKeyItem(PathKeyItem *from){ PathKeyItem *newnode = makeNode(PathKeyItem); COPY_NODE_FIELD(key); COPY_SCALAR_FIELD(sortop); return newnode;}/* * _copyRestrictInfo */static RestrictInfo *_copyRestrictInfo(RestrictInfo *from){ RestrictInfo *newnode = makeNode(RestrictInfo); COPY_NODE_FIELD(clause); COPY_SCALAR_FIELD(is_pushed_down); COPY_SCALAR_FIELD(outerjoin_delayed); COPY_SCALAR_FIELD(can_join); COPY_BITMAPSET_FIELD(clause_relids); COPY_BITMAPSET_FIELD(required_relids); COPY_BITMAPSET_FIELD(left_relids); COPY_BITMAPSET_FIELD(right_relids); COPY_NODE_FIELD(orclause); COPY_SCALAR_FIELD(eval_cost); COPY_SCALAR_FIELD(this_selec); COPY_SCALAR_FIELD(mergejoinoperator); COPY_SCALAR_FIELD(left_sortop); COPY_SCALAR_FIELD(right_sortop); /* * Do not copy pathkeys, since they'd not be canonical in a copied query */ newnode->left_pathkey = NIL; newnode->right_pathkey = NIL; COPY_SCALAR_FIELD(left_mergescansel); COPY_SCALAR_FIELD(right_mergescansel); COPY_SCALAR_FIELD(hashjoinoperator); COPY_SCALAR_FIELD(left_bucketsize); COPY_SCALAR_FIELD(right_bucketsize); return newnode;}/* * _copyInClauseInfo */static InClauseInfo *_copyInClauseInfo(InClauseInfo *from){ InClauseInfo *newnode = makeNode(InClauseInfo); COPY_BITMAPSET_FIELD(lefthand); COPY_BITMAPSET_FIELD(righthand); COPY_NODE_FIELD(sub_targetlist); return newnode;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -