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