PostgreSQL Source Code git master
Loading...
Searching...
No Matches
parse_relation.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * parse_relation.h
4 * prototypes for parse_relation.c.
5 *
6 *
7 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/parser/parse_relation.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef PARSE_RELATION_H
15#define PARSE_RELATION_H
16
17#include "parser/parse_node.h"
18#include "storage/lockdefs.h"
19
20
22 const char *schemaname,
23 const char *refname,
24 int location,
25 int *sublevels_up);
27 const char *refname,
28 Index *ctelevelsup);
29extern bool scanNameSpaceForENR(ParseState *pstate, const char *refname);
33 int varno,
34 int sublevels_up);
35extern ParseNamespaceItem *GetNSItemByVar(ParseState *pstate, Var *var);
37 int varno,
38 int sublevels_up);
40 int rtelevelsup);
42 int sublevels_up, const char *colname,
43 int location);
44extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly,
45 int location);
46extern void markNullableIfNeeded(ParseState *pstate, Var *var);
47extern void markVarForSelectPriv(ParseState *pstate, Var *var);
48extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation,
49 LOCKMODE lockmode);
51 RangeVar *relation,
52 Alias *alias,
53 bool inh,
54 bool inFromCl);
56 Relation rel,
57 LOCKMODE lockmode,
58 Alias *alias,
59 bool inh,
60 bool inFromCl);
62 Query *subquery,
63 Alias *alias,
64 bool lateral,
65 bool inFromCl);
71 bool lateral,
72 bool inFromCl);
74 List *exprs,
78 Alias *alias,
79 bool lateral,
80 bool inFromCl);
82 TableFunc *tf,
83 Alias *alias,
84 bool lateral,
85 bool inFromCl);
87 Oid graphid,
88 GraphPattern *graph_pattern,
89 List *columns,
90 List *colnames,
91 Alias *alias,
92 bool lateral,
93 bool inFromCl);
95 List *colnames,
97 JoinType jointype,
98 int nummergedcols,
100 List *leftcols,
103 Alias *alias,
104 bool inFromCl);
106 CommonTableExpr *cte,
107 Index levelsup,
108 RangeVar *rv,
109 bool inFromCl);
111 RangeVar *rv,
112 bool inFromCl);
114 List *groupClauses);
115extern RTEPermissionInfo *addRTEPermissionInfo(List **rteperminfos,
117extern RTEPermissionInfo *getRTEPermissionInfo(List *rteperminfos,
119extern bool isLockedRefname(ParseState *pstate, const char *refname);
121 bool addToJoinList,
123pg_noreturn extern void errorMissingRTE(ParseState *pstate, RangeVar *relation);
124pg_noreturn extern void errorMissingColumn(ParseState *pstate,
125 const char *relname, const char *colname, int location);
126extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
127 VarReturningType returning_type,
128 int location, bool include_dropped,
129 List **colnames, List **colvars);
131 int sublevels_up, int location,
132 List **colnames);
134 int sublevels_up, bool require_col_privs,
135 int location);
136extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK);
137extern const NameData *attnumAttName(Relation rd, int attid);
138extern Oid attnumTypeId(Relation rd, int attid);
140
141#endif /* PARSE_RELATION_H */
#define pg_noreturn
Definition c.h:190
unsigned int Index
Definition c.h:698
int LOCKMODE
Definition lockdefs.h:26
JoinType
Definition nodes.h:296
void markNullableIfNeeded(ParseState *pstate, Var *var)
Relation parserOpenTable(ParseState *pstate, const RangeVar *relation, LOCKMODE lockmode)
CommonTableExpr * scanNameSpaceForCTE(ParseState *pstate, const char *refname, Index *ctelevelsup)
Node * colNameToVar(ParseState *pstate, const char *colname, bool localonly, int location)
CommonTableExpr * GetCTEForRTE(ParseState *pstate, RangeTblEntry *rte, int rtelevelsup)
Oid attnumCollationId(Relation rd, int attid)
RTEPermissionInfo * getRTEPermissionInfo(List *rteperminfos, RangeTblEntry *rte)
ParseNamespaceItem * addRangeTableEntryForENR(ParseState *pstate, RangeVar *rv, bool inFromCl)
void markVarForSelectPriv(ParseState *pstate, Var *var)
ParseNamespaceItem * addRangeTableEntry(ParseState *pstate, RangeVar *relation, Alias *alias, bool inh, bool inFromCl)
ParseNamespaceItem * addRangeTableEntryForGraphTable(ParseState *pstate, Oid graphid, GraphPattern *graph_pattern, List *columns, List *colnames, Alias *alias, bool lateral, bool inFromCl)
ParseNamespaceItem * addRangeTableEntryForTableFunc(ParseState *pstate, TableFunc *tf, Alias *alias, bool lateral, bool inFromCl)
List * expandNSItemVars(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, int location, List **colnames)
void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem, bool addToJoinList, bool addToRelNameSpace, bool addToVarNameSpace)
pg_noreturn void errorMissingRTE(ParseState *pstate, RangeVar *relation)
ParseNamespaceItem * addRangeTableEntryForRelation(ParseState *pstate, Relation rel, LOCKMODE lockmode, Alias *alias, bool inh, bool inFromCl)
void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, VarReturningType returning_type, int location, bool include_dropped, List **colnames, List **colvars)
ParseNamespaceItem * GetNSItemByRangeTablePosn(ParseState *pstate, int varno, int sublevels_up)
bool scanNameSpaceForENR(ParseState *pstate, const char *refname)
Node * scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, const char *colname, int location)
ParseNamespaceItem * addRangeTableEntryForFunction(ParseState *pstate, List *funcnames, List *funcexprs, List *coldeflists, RangeFunction *rangefunc, bool lateral, bool inFromCl)
bool isLockedRefname(ParseState *pstate, const char *refname)
Oid attnumTypeId(Relation rd, int attid)
RTEPermissionInfo * addRTEPermissionInfo(List **rteperminfos, RangeTblEntry *rte)
const NameData * attnumAttName(Relation rd, int attid)
ParseNamespaceItem * addRangeTableEntryForSubquery(ParseState *pstate, Query *subquery, Alias *alias, bool lateral, bool inFromCl)
ParseNamespaceItem * addRangeTableEntryForCTE(ParseState *pstate, CommonTableExpr *cte, Index levelsup, RangeVar *rv, bool inFromCl)
ParseNamespaceItem * addRangeTableEntryForGroup(ParseState *pstate, List *groupClauses)
ParseNamespaceItem * addRangeTableEntryForJoin(ParseState *pstate, List *colnames, ParseNamespaceColumn *nscolumns, JoinType jointype, int nummergedcols, List *aliasvars, List *leftcols, List *rightcols, Alias *join_using_alias, Alias *alias, bool inFromCl)
List * expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, bool require_col_privs, int location)
ParseNamespaceItem * refnameNamespaceItem(ParseState *pstate, const char *schemaname, const char *refname, int location, int *sublevels_up)
ParseNamespaceItem * GetNSItemByVar(ParseState *pstate, Var *var)
RangeTblEntry * GetRTEByRangeTablePosn(ParseState *pstate, int varno, int sublevels_up)
int attnameAttNum(Relation rd, const char *attname, bool sysColOK)
void checkNameSpaceConflicts(ParseState *pstate, List *namespace1, List *namespace2)
pg_noreturn void errorMissingColumn(ParseState *pstate, const char *relname, const char *colname, int location)
ParseNamespaceItem * addRangeTableEntryForValues(ParseState *pstate, List *exprs, List *coltypes, List *coltypmods, List *colcollations, Alias *alias, bool lateral, bool inFromCl)
NameData attname
NameData relname
Definition pg_class.h:40
unsigned int Oid
static int fb(int x)
VarReturningType
Definition primnodes.h:256
Definition pg_list.h:54
Definition nodes.h:133
Definition c.h:830