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);
36 int varno,
37 int sublevels_up);
39 int rtelevelsup);
41 int sublevels_up, const char *colname,
42 int location);
43extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly,
44 int location);
45extern void markNullableIfNeeded(ParseState *pstate, Var *var);
46extern void markVarForSelectPriv(ParseState *pstate, Var *var);
47extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation,
48 LOCKMODE lockmode);
50 RangeVar *relation,
51 Alias *alias,
52 bool inh,
53 bool inFromCl);
55 Relation rel,
56 LOCKMODE lockmode,
57 Alias *alias,
58 bool inh,
59 bool inFromCl);
61 Query *subquery,
62 Alias *alias,
63 bool lateral,
64 bool inFromCl);
70 bool lateral,
71 bool inFromCl);
73 List *exprs,
77 Alias *alias,
78 bool lateral,
79 bool inFromCl);
81 TableFunc *tf,
82 Alias *alias,
83 bool lateral,
84 bool inFromCl);
86 List *colnames,
88 JoinType jointype,
89 int nummergedcols,
94 Alias *alias,
95 bool inFromCl);
97 CommonTableExpr *cte,
98 Index levelsup,
99 RangeVar *rv,
100 bool inFromCl);
102 RangeVar *rv,
103 bool inFromCl);
105 List *groupClauses);
106extern RTEPermissionInfo *addRTEPermissionInfo(List **rteperminfos,
108extern RTEPermissionInfo *getRTEPermissionInfo(List *rteperminfos,
110extern bool isLockedRefname(ParseState *pstate, const char *refname);
112 bool addToJoinList,
114pg_noreturn extern void errorMissingRTE(ParseState *pstate, RangeVar *relation);
115pg_noreturn extern void errorMissingColumn(ParseState *pstate,
116 const char *relname, const char *colname, int location);
117extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
118 VarReturningType returning_type,
119 int location, bool include_dropped,
120 List **colnames, List **colvars);
122 int sublevels_up, int location,
123 List **colnames);
125 int sublevels_up, bool require_col_privs,
126 int location);
127extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK);
128extern const NameData *attnumAttName(Relation rd, int attid);
129extern Oid attnumTypeId(Relation rd, int attid);
131
132#endif /* PARSE_RELATION_H */
#define pg_noreturn
Definition c.h:176
unsigned int Index
Definition c.h:640
int LOCKMODE
Definition lockdefs.h:26
JoinType
Definition nodes.h:298
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 * 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)
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:135
Definition c.h:772