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
19
21 const char *schemaname,
22 const char *refname,
23 int location,
24 int *sublevels_up);
26 const char *refname,
27 Index *ctelevelsup);
28extern bool scanNameSpaceForENR(ParseState *pstate, const char *refname);
32 int varno,
33 int sublevels_up);
35 int varno,
36 int sublevels_up);
38 int rtelevelsup);
40 int sublevels_up, const char *colname,
41 int location);
42extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly,
43 int location);
44extern void markNullableIfNeeded(ParseState *pstate, Var *var);
45extern void markVarForSelectPriv(ParseState *pstate, Var *var);
46extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation,
47 int lockmode);
49 RangeVar *relation,
50 Alias *alias,
51 bool inh,
52 bool inFromCl);
54 Relation rel,
55 int lockmode,
56 Alias *alias,
57 bool inh,
58 bool inFromCl);
60 Query *subquery,
61 Alias *alias,
62 bool lateral,
63 bool inFromCl);
69 bool lateral,
70 bool inFromCl);
72 List *exprs,
76 Alias *alias,
77 bool lateral,
78 bool inFromCl);
80 TableFunc *tf,
81 Alias *alias,
82 bool lateral,
83 bool inFromCl);
85 List *colnames,
87 JoinType jointype,
88 int nummergedcols,
93 Alias *alias,
94 bool inFromCl);
96 CommonTableExpr *cte,
97 Index levelsup,
98 RangeVar *rv,
99 bool inFromCl);
101 RangeVar *rv,
102 bool inFromCl);
104 List *groupClauses);
105extern RTEPermissionInfo *addRTEPermissionInfo(List **rteperminfos,
107extern RTEPermissionInfo *getRTEPermissionInfo(List *rteperminfos,
109extern bool isLockedRefname(ParseState *pstate, const char *refname);
111 bool addToJoinList,
113pg_noreturn extern void errorMissingRTE(ParseState *pstate, RangeVar *relation);
114pg_noreturn extern void errorMissingColumn(ParseState *pstate,
115 const char *relname, const char *colname, int location);
116extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
117 VarReturningType returning_type,
118 int location, bool include_dropped,
119 List **colnames, List **colvars);
121 int sublevels_up, int location,
122 List **colnames);
124 int sublevels_up, bool require_col_privs,
125 int location);
126extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK);
127extern const NameData *attnumAttName(Relation rd, int attid);
128extern Oid attnumTypeId(Relation rd, int attid);
130
131#endif /* PARSE_RELATION_H */
#define pg_noreturn
Definition c.h:164
unsigned int Index
Definition c.h:628
JoinType
Definition nodes.h:298
void markNullableIfNeeded(ParseState *pstate, Var *var)
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)
ParseNamespaceItem * addRangeTableEntryForRelation(ParseState *pstate, Relation rel, int lockmode, Alias *alias, bool inh, bool inFromCl)
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 * addRangeTableEntryForTableFunc(ParseState *pstate, TableFunc *tf, Alias *alias, bool lateral, bool inFromCl)
List * expandNSItemVars(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, int location, List **colnames)
Relation parserOpenTable(ParseState *pstate, const RangeVar *relation, int lockmode)
void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem, bool addToJoinList, bool addToRelNameSpace, bool addToVarNameSpace)
pg_noreturn void errorMissingRTE(ParseState *pstate, RangeVar *relation)
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)
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:38
unsigned int Oid
static int fb(int x)
VarReturningType
Definition primnodes.h:255
Definition pg_list.h:54
Definition nodes.h:135
Definition c.h:760