1 /*-------------------------------------------------------------------------
2  *
3  * makefuncs.h
4  *	  prototypes for the creator functions (for primitive nodes)
5  *
6  *
7  * Portions Copyright (c) 1996-2017, 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/parsenodes.h"
18 
19 
20 extern A_Expr *makeA_Expr(A_Expr_Kind kind, List *name,
21 		   Node *lexpr, Node *rexpr, int location);
22 
23 extern A_Expr *makeSimpleA_Expr(A_Expr_Kind kind, char *name,
24 				 Node *lexpr, Node *rexpr, int location);
25 
26 extern Var *makeVar(Index varno,
27 		AttrNumber varattno,
28 		Oid vartype,
29 		int32 vartypmod,
30 		Oid varcollid,
31 		Index varlevelsup);
32 
33 extern Var *makeVarFromTargetEntry(Index varno,
34 					   TargetEntry *tle);
35 
36 extern Var *makeWholeRowVar(RangeTblEntry *rte,
37 				Index varno,
38 				Index varlevelsup,
39 				bool allowScalar);
40 
41 extern TargetEntry *makeTargetEntry(Expr *expr,
42 				AttrNumber resno,
43 				char *resname,
44 				bool resjunk);
45 
46 extern TargetEntry *flatCopyTargetEntry(TargetEntry *src_tle);
47 
48 extern FromExpr *makeFromExpr(List *fromlist, Node *quals);
49 
50 extern Const *makeConst(Oid consttype,
51 		  int32 consttypmod,
52 		  Oid constcollid,
53 		  int constlen,
54 		  Datum constvalue,
55 		  bool constisnull,
56 		  bool constbyval);
57 
58 extern Const *makeNullConst(Oid consttype, int32 consttypmod, Oid constcollid);
59 
60 extern Node *makeBoolConst(bool value, bool isnull);
61 
62 extern Expr *makeBoolExpr(BoolExprType boolop, List *args, int location);
63 
64 extern Alias *makeAlias(const char *aliasname, List *colnames);
65 
66 extern RelabelType *makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod,
67 				Oid rcollid, CoercionForm rformat);
68 
69 extern RangeVar *makeRangeVar(char *schemaname, char *relname, int location);
70 
71 extern TypeName *makeTypeName(char *typnam);
72 extern TypeName *makeTypeNameFromNameList(List *names);
73 extern TypeName *makeTypeNameFromOid(Oid typeOid, int32 typmod);
74 
75 extern ColumnDef *makeColumnDef(const char *colname,
76 			  Oid typeOid, int32 typmod, Oid collOid);
77 
78 extern FuncExpr *makeFuncExpr(Oid funcid, Oid rettype, List *args,
79 			 Oid funccollid, Oid inputcollid, CoercionForm fformat);
80 
81 extern FuncCall *makeFuncCall(List *name, List *args, int location);
82 
83 extern DefElem *makeDefElem(char *name, Node *arg, int location);
84 extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg,
85 					DefElemAction defaction, int location);
86 
87 extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int location);
88 
89 #endif							/* MAKEFUNC_H */
90