PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
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-2025, 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);
29extern void checkNameSpaceConflicts(ParseState *pstate, List *namespace1,
30 List *namespace2);
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);
65 List *funcnames,
66 List *funcexprs,
67 List *coldeflists,
68 RangeFunction *rangefunc,
69 bool lateral,
70 bool inFromCl);
72 List *exprs,
73 List *coltypes,
74 List *coltypmods,
75 List *colcollations,
76 Alias *alias,
77 bool lateral,
78 bool inFromCl);
80 TableFunc *tf,
81 Alias *alias,
82 bool lateral,
83 bool inFromCl);
85 List *colnames,
86 ParseNamespaceColumn *nscolumns,
87 JoinType jointype,
88 int nummergedcols,
89 List *aliasvars,
90 List *leftcols,
91 List *rightcols,
92 Alias *join_using_alias,
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,
106 RangeTblEntry *rte);
107extern RTEPermissionInfo *getRTEPermissionInfo(List *rteperminfos,
108 RangeTblEntry *rte);
109extern bool isLockedRefname(ParseState *pstate, const char *refname);
110extern void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem,
111 bool addToJoinList,
112 bool addToRelNameSpace, bool addToVarNameSpace);
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);
120extern List *expandNSItemVars(ParseState *pstate, ParseNamespaceItem *nsitem,
121 int sublevels_up, int location,
122 List **colnames);
123extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem,
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);
129extern Oid attnumCollationId(Relation rd, int attid);
130extern bool isQueryUsingTempRelation(Query *query);
131
132#endif /* PARSE_RELATION_H */
#define pg_noreturn
Definition: c.h:165
unsigned int Index
Definition: c.h:585
JoinType
Definition: nodes.h:294
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)
bool isQueryUsingTempRelation(Query *query)
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
Definition: pg_attribute.h:41
NameData relname
Definition: pg_class.h:38
unsigned int Oid
Definition: postgres_ext.h:30
VarReturningType
Definition: primnodes.h:255
Definition: pg_list.h:54
Definition: nodes.h:135
Definition: primnodes.h:262
Definition: c.h:712