| 1 | /*------------------------------------------------------------------------- |
| 2 | * |
| 3 | * makefuncs.h |
| 4 | * prototypes for the creator functions of various nodes |
| 5 | * |
| 6 | * |
| 7 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
| 8 | * Portions Copyright (c) 1994, Regents of the University of California |
| 9 | * |
| 10 | * src/include/nodes/makefuncs.h |
| 11 | * |
| 12 | *------------------------------------------------------------------------- |
| 13 | */ |
| 14 | #ifndef MAKEFUNC_H |
| 15 | #define MAKEFUNC_H |
| 16 | |
| 17 | #include "nodes/execnodes.h" |
| 18 | #include "nodes/parsenodes.h" |
| 19 | |
| 20 | |
| 21 | extern A_Expr *makeA_Expr(A_Expr_Kind kind, List *name, |
| 22 | Node *lexpr, Node *rexpr, int location); |
| 23 | |
| 24 | extern A_Expr *makeSimpleA_Expr(A_Expr_Kind kind, char *name, |
| 25 | Node *lexpr, Node *rexpr, int location); |
| 26 | |
| 27 | extern Var *makeVar(Index varno, |
| 28 | AttrNumber varattno, |
| 29 | Oid vartype, |
| 30 | int32 vartypmod, |
| 31 | Oid varcollid, |
| 32 | Index varlevelsup); |
| 33 | |
| 34 | extern Var *makeVarFromTargetEntry(Index varno, |
| 35 | TargetEntry *tle); |
| 36 | |
| 37 | extern Var *makeWholeRowVar(RangeTblEntry *rte, |
| 38 | Index varno, |
| 39 | Index varlevelsup, |
| 40 | bool allowScalar); |
| 41 | |
| 42 | extern TargetEntry *makeTargetEntry(Expr *expr, |
| 43 | AttrNumber resno, |
| 44 | char *resname, |
| 45 | bool resjunk); |
| 46 | |
| 47 | extern TargetEntry *flatCopyTargetEntry(TargetEntry *src_tle); |
| 48 | |
| 49 | extern FromExpr *makeFromExpr(List *fromlist, Node *quals); |
| 50 | |
| 51 | extern Const *makeConst(Oid consttype, |
| 52 | int32 consttypmod, |
| 53 | Oid constcollid, |
| 54 | int constlen, |
| 55 | Datum constvalue, |
| 56 | bool constisnull, |
| 57 | bool constbyval); |
| 58 | |
| 59 | extern Const *makeNullConst(Oid consttype, int32 consttypmod, Oid constcollid); |
| 60 | |
| 61 | extern Node *makeBoolConst(bool value, bool isnull); |
| 62 | |
| 63 | extern Expr *makeBoolExpr(BoolExprType boolop, List *args, int location); |
| 64 | |
| 65 | extern Alias *makeAlias(const char *aliasname, List *colnames); |
| 66 | |
| 67 | extern RelabelType *makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, |
| 68 | Oid rcollid, CoercionForm rformat); |
| 69 | |
| 70 | extern RangeVar *makeRangeVar(char *schemaname, char *relname, int location); |
| 71 | |
| 72 | extern TypeName *makeTypeName(char *typnam); |
| 73 | extern TypeName *makeTypeNameFromNameList(List *names); |
| 74 | extern TypeName *makeTypeNameFromOid(Oid typeOid, int32 typmod); |
| 75 | |
| 76 | extern ColumnDef *makeColumnDef(const char *colname, |
| 77 | Oid typeOid, int32 typmod, Oid collOid); |
| 78 | |
| 79 | extern FuncExpr *makeFuncExpr(Oid funcid, Oid rettype, List *args, |
| 80 | Oid funccollid, Oid inputcollid, CoercionForm fformat); |
| 81 | |
| 82 | extern FuncCall *makeFuncCall(List *name, List *args, int location); |
| 83 | |
| 84 | extern Expr *make_opclause(Oid opno, Oid opresulttype, bool opretset, |
| 85 | Expr *leftop, Expr *rightop, |
| 86 | Oid opcollid, Oid inputcollid); |
| 87 | |
| 88 | extern Expr *make_andclause(List *andclauses); |
| 89 | extern Expr *make_orclause(List *orclauses); |
| 90 | extern Expr *make_notclause(Expr *notclause); |
| 91 | |
| 92 | extern Node *make_and_qual(Node *qual1, Node *qual2); |
| 93 | extern Expr *make_ands_explicit(List *andclauses); |
| 94 | extern List *make_ands_implicit(Expr *clause); |
| 95 | |
| 96 | extern IndexInfo *makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid, |
| 97 | List *expressions, List *predicates, |
| 98 | bool unique, bool isready, bool concurrent); |
| 99 | |
| 100 | extern DefElem *makeDefElem(char *name, Node *arg, int location); |
| 101 | extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg, |
| 102 | DefElemAction defaction, int location); |
| 103 | |
| 104 | extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int location); |
| 105 | |
| 106 | extern VacuumRelation *makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols); |
| 107 | |
| 108 | #endif /* MAKEFUNC_H */ |
| 109 | |