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 Oid graphid,
87 GraphPattern *graph_pattern,
88 List *columns,
89 List *colnames,
90 Alias *alias,
91 bool lateral,
92 bool inFromCl);
94 List *colnames,
96 JoinType jointype,
97 int nummergedcols,
102 Alias *alias,
103 bool inFromCl);
105 CommonTableExpr *cte,
106 Index levelsup,
107 RangeVar *rv,
108 bool inFromCl);
110 RangeVar *rv,
111 bool inFromCl);
113 List *groupClauses);
114extern RTEPermissionInfo *addRTEPermissionInfo(List **rteperminfos,
116extern RTEPermissionInfo *getRTEPermissionInfo(List *rteperminfos,
118extern bool isLockedRefname(ParseState *pstate, const char *refname);
120 bool addToJoinList,
122pg_noreturn extern void errorMissingRTE(ParseState *pstate, RangeVar *relation);
123pg_noreturn extern void errorMissingColumn(ParseState *pstate,
124 const char *relname, const char *colname, int location);
125extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
126 VarReturningType returning_type,
127 int location, bool include_dropped,
128 List **colnames, List **colvars);
130 int sublevels_up, int location,
131 List **colnames);
133 int sublevels_up, bool require_col_privs,
134 int location);
135extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK);
136extern const NameData *attnumAttName(Relation rd, int attid);
137extern Oid attnumTypeId(Relation rd, int attid);
139
140#endif /* PARSE_RELATION_H */
#define pg_noreturn
Definition c.h:184
unsigned int Index
Definition c.h:700
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 * 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)
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:832