1 /*-------------------------------------------------------------------------
2  *
3  * makefuncs.h
4  *	  prototypes for the creator functions of various nodes
5  *
6  *
7  * Portions Copyright (c) 2003-2020, PgPool Global Development Group
8  * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
9  * Portions Copyright (c) 1994, Regents of the University of California
10  *
11  * src/include/nodes/makefuncs.h
12  *
13  *-------------------------------------------------------------------------
14  */
15 #ifndef MAKEFUNC_H
16 #define MAKEFUNC_H
17 
18 #include "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 DefElem *makeDefElem(char *name, Node *arg, int location);
85 extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg,
86 									DefElemAction defaction, int location);
87 
88 extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int location);
89 
90 extern VacuumRelation *makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols);
91 
92 #endif							/* MAKEFUNC_H */
93