PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
makefuncs.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * makefuncs.h
4 * prototypes for the creator functions of various nodes
5 *
6 *
7 * Portions Copyright (c) 1996-2025, 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
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(int varno,
28 AttrNumber varattno,
29 Oid vartype,
30 int32 vartypmod,
31 Oid varcollid,
32 Index varlevelsup);
33
34extern Var *makeVarFromTargetEntry(int varno,
35 TargetEntry *tle);
36
38 int varno,
39 Index varlevelsup,
40 bool allowScalar);
41
42extern TargetEntry *makeTargetEntry(Expr *expr,
43 AttrNumber resno,
44 char *resname,
45 bool resjunk);
46
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);
72
73extern TypeName *makeTypeName(char *typnam);
75extern TypeName *makeTypeNameFromOid(Oid typeOid, int32 typmod);
76
77extern ColumnDef *makeColumnDef(const char *colname,
78 Oid typeOid, int32 typmod, Oid collOid);
79
80extern FuncExpr *makeFuncExpr(Oid funcid, Oid rettype, List *args,
81 Oid funccollid, Oid inputcollid, CoercionForm fformat);
82
84 CoercionForm funcformat, int location);
85
86extern Expr *make_opclause(Oid opno, Oid opresulttype, bool opretset,
87 Expr *leftop, Expr *rightop,
88 Oid opcollid, Oid inputcollid);
89
90extern Expr *make_andclause(List *andclauses);
91extern Expr *make_orclause(List *orclauses);
92extern Expr *make_notclause(Expr *notclause);
93
94extern Node *make_and_qual(Node *qual1, Node *qual2);
95extern Expr *make_ands_explicit(List *andclauses);
96extern List *make_ands_implicit(Expr *clause);
97
98extern IndexInfo *makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid,
99 List *expressions, List *predicates,
100 bool unique, bool nulls_not_distinct,
101 bool isready, bool concurrent,
102 bool summarizing, bool withoutoverlaps);
103
104extern Node *makeStringConst(char *str, int location);
105extern DefElem *makeDefElem(char *name, Node *arg, int location);
106extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg,
107 DefElemAction defaction, int location);
108
109extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int location);
110
111extern VacuumRelation *makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols);
112
114 int location);
115extern JsonValueExpr *makeJsonValueExpr(Expr *raw_expr, Expr *formatted_expr,
119 JsonValueType item_type, bool unique_keys,
120 int location);
122 int location);
123extern JsonTablePath *makeJsonTablePath(Const *pathvalue, char *pathname);
124extern JsonTablePathSpec *makeJsonTablePathSpec(char *string, char *name,
125 int string_location,
126 int name_location);
127
128#endif /* MAKEFUNC_H */
Datum boolop(PG_FUNCTION_ARGS)
Definition: _int_bool.c:417
int16 AttrNumber
Definition: attnum.h:21
int32_t int32
Definition: c.h:498
unsigned int Index
Definition: c.h:585
const char * str
static struct @165 value
Alias * makeAlias(const char *aliasname, List *colnames)
Definition: makefuncs.c:438
Expr * make_orclause(List *orclauses)
Definition: makefuncs.c:743
Expr * make_ands_explicit(List *andclauses)
Definition: makefuncs.c:799
Expr * makeBoolExpr(BoolExprType boolop, List *args, int location)
Definition: makefuncs.c:420
VacuumRelation * makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols)
Definition: makefuncs.c:907
DefElem * makeDefElem(char *name, Node *arg, int location)
Definition: makefuncs.c:637
A_Expr * makeA_Expr(A_Expr_Kind kind, List *name, Node *lexpr, Node *rexpr, int location)
Definition: makefuncs.c:30
TypeName * makeTypeNameFromNameList(List *names)
Definition: makefuncs.c:531
Var * makeVarFromTargetEntry(int varno, TargetEntry *tle)
Definition: makefuncs.c:107
FromExpr * makeFromExpr(List *fromlist, Node *quals)
Definition: makefuncs.c:336
JsonBehavior * makeJsonBehavior(JsonBehaviorType btype, Node *expr, int location)
Definition: makefuncs.c:955
IndexInfo * makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid, List *expressions, List *predicates, bool unique, bool nulls_not_distinct, bool isready, bool concurrent, bool summarizing, bool withoutoverlaps)
Definition: makefuncs.c:834
JsonTablePath * makeJsonTablePath(Const *pathvalue, char *pathname)
Definition: makefuncs.c:1026
DefElem * makeDefElemExtended(char *nameSpace, char *name, Node *arg, DefElemAction defaction, int location)
Definition: makefuncs.c:655
A_Expr * makeSimpleA_Expr(A_Expr_Kind kind, char *name, Node *lexpr, Node *rexpr, int location)
Definition: makefuncs.c:48
Var * makeVar(int varno, AttrNumber varattno, Oid vartype, int32 vartypmod, Oid varcollid, Index varlevelsup)
Definition: makefuncs.c:66
Node * makeJsonKeyValue(Node *key, Node *value)
Definition: makefuncs.c:971
ColumnDef * makeColumnDef(const char *colname, Oid typeOid, int32 typmod, Oid collOid)
Definition: makefuncs.c:565
Const * makeNullConst(Oid consttype, int32 consttypmod, Oid constcollid)
Definition: makefuncs.c:388
Var * makeWholeRowVar(RangeTblEntry *rte, int varno, Index varlevelsup, bool allowScalar)
Definition: makefuncs.c:137
Node * makeBoolConst(bool value, bool isnull)
Definition: makefuncs.c:408
RelabelType * makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat)
Definition: makefuncs.c:453
Node * makeStringConst(char *str, int location)
Definition: makefuncs.c:618
RangeVar * makeRangeVar(char *schemaname, char *relname, int location)
Definition: makefuncs.c:473
TypeName * makeTypeName(char *typnam)
Definition: makefuncs.c:519
Expr * make_andclause(List *andclauses)
Definition: makefuncs.c:727
FuncCall * makeFuncCall(List *name, List *args, CoercionForm funcformat, int location)
Definition: makefuncs.c:676
JsonTablePathSpec * makeJsonTablePathSpec(char *string, char *name, int string_location, int name_location)
Definition: makefuncs.c:1005
TargetEntry * makeTargetEntry(Expr *expr, AttrNumber resno, char *resname, bool resjunk)
Definition: makefuncs.c:289
FuncExpr * makeFuncExpr(Oid funcid, Oid rettype, List *args, Oid funccollid, Oid inputcollid, CoercionForm fformat)
Definition: makefuncs.c:594
Expr * make_opclause(Oid opno, Oid opresulttype, bool opretset, Expr *leftop, Expr *rightop, Oid opcollid, Oid inputcollid)
Definition: makefuncs.c:701
Constraint * makeNotNullConstraint(String *colname)
Definition: makefuncs.c:493
Expr * make_notclause(Expr *notclause)
Definition: makefuncs.c:759
JsonValueExpr * makeJsonValueExpr(Expr *raw_expr, Expr *formatted_expr, JsonFormat *format)
Definition: makefuncs.c:938
Node * make_and_qual(Node *qual1, Node *qual2)
Definition: makefuncs.c:780
JsonFormat * makeJsonFormat(JsonFormatType type, JsonEncoding encoding, int location)
Definition: makefuncs.c:922
Const * makeConst(Oid consttype, int32 consttypmod, Oid constcollid, int constlen, Datum constvalue, bool constisnull, bool constbyval)
Definition: makefuncs.c:350
GroupingSet * makeGroupingSet(GroupingSetKind kind, List *content, int location)
Definition: makefuncs.c:892
List * make_ands_implicit(Expr *clause)
Definition: makefuncs.c:810
TypeName * makeTypeNameFromOid(Oid typeOid, int32 typmod)
Definition: makefuncs.c:547
TargetEntry * flatCopyTargetEntry(TargetEntry *src_tle)
Definition: makefuncs.c:322
Node * makeJsonIsPredicate(Node *expr, JsonFormat *format, JsonValueType item_type, bool unique_keys, int location)
Definition: makefuncs.c:986
GroupingSetKind
Definition: parsenodes.h:1512
A_Expr_Kind
Definition: parsenodes.h:323
DefElemAction
Definition: parsenodes.h:815
void * arg
static char format
NameData relname
Definition: pg_class.h:38
int32 encoding
Definition: pg_database.h:41
uintptr_t Datum
Definition: postgres.h:69
unsigned int Oid
Definition: postgres_ext.h:30
JsonFormatType
Definition: primnodes.h:1642
BoolExprType
Definition: primnodes.h:947
JsonEncoding
Definition: primnodes.h:1630
JsonBehaviorType
Definition: primnodes.h:1769
CoercionForm
Definition: primnodes.h:750
JsonValueType
Definition: primnodes.h:1726
Definition: pg_list.h:54
Definition: nodes.h:135
Definition: value.h:64
Definition: primnodes.h:262
const char * type
const char * name