codekingpro/portable-devtools
115k
1/*-------------------------------------------------------------------------2 *3 * parse_relation.h4 * prototypes for parse_relation.c.5 *6 *7 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group8 * Portions Copyright (c) 1994, Regents of the University of California9 *10 * src/include/parser/parse_relation.h11 *12 *-------------------------------------------------------------------------13 */14#ifndef PARSE_RELATION_H15#define PARSE_RELATION_H16 17#include "parser/parse_node.h"18 19 20extern ParseNamespaceItem *refnameNamespaceItem(ParseState *pstate,21 const char *schemaname,22 const char *refname,23 int location,24 int *sublevels_up);25extern CommonTableExpr *scanNameSpaceForCTE(ParseState *pstate,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);31extern ParseNamespaceItem *GetNSItemByRangeTablePosn(ParseState *pstate,32 int varno,33 int sublevels_up);34extern RangeTblEntry *GetRTEByRangeTablePosn(ParseState *pstate,35 int varno,36 int sublevels_up);37extern CommonTableExpr *GetCTEForRTE(ParseState *pstate, RangeTblEntry *rte,38 int rtelevelsup);39extern Node *scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem,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);48extern ParseNamespaceItem *addRangeTableEntry(ParseState *pstate,49 RangeVar *relation,50 Alias *alias,51 bool inh,52 bool inFromCl);53extern ParseNamespaceItem *addRangeTableEntryForRelation(ParseState *pstate,54 Relation rel,55 int lockmode,56 Alias *alias,57 bool inh,58 bool inFromCl);59extern ParseNamespaceItem *addRangeTableEntryForSubquery(ParseState *pstate,60 Query *subquery,61 Alias *alias,62 bool lateral,63 bool inFromCl);64extern ParseNamespaceItem *addRangeTableEntryForFunction(ParseState *pstate,65 List *funcnames,66 List *funcexprs,67 List *coldeflists,68 RangeFunction *rangefunc,69 bool lateral,70 bool inFromCl);71extern ParseNamespaceItem *addRangeTableEntryForValues(ParseState *pstate,72 List *exprs,73 List *coltypes,74 List *coltypmods,75 List *colcollations,76 Alias *alias,77 bool lateral,78 bool inFromCl);79extern ParseNamespaceItem *addRangeTableEntryForTableFunc(ParseState *pstate,80 TableFunc *tf,81 Alias *alias,82 bool lateral,83 bool inFromCl);84extern ParseNamespaceItem *addRangeTableEntryForJoin(ParseState *pstate,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);95extern ParseNamespaceItem *addRangeTableEntryForCTE(ParseState *pstate,96 CommonTableExpr *cte,97 Index levelsup,98 RangeVar *rv,99 bool inFromCl);100extern ParseNamespaceItem *addRangeTableEntryForENR(ParseState *pstate,101 RangeVar *rv,102 bool inFromCl);103extern RTEPermissionInfo *addRTEPermissionInfo(List **rteperminfos,104 RangeTblEntry *rte);105extern RTEPermissionInfo *getRTEPermissionInfo(List *rteperminfos,106 RangeTblEntry *rte);107extern bool isLockedRefname(ParseState *pstate, const char *refname);108extern void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem,109 bool addToJoinList,110 bool addToRelNameSpace, bool addToVarNameSpace);111extern void errorMissingRTE(ParseState *pstate, RangeVar *relation) pg_attribute_noreturn();112extern void errorMissingColumn(ParseState *pstate,113 const char *relname, const char *colname, int location) pg_attribute_noreturn();114extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,115 int location, bool include_dropped,116 List **colnames, List **colvars);117extern List *expandNSItemVars(ParseState *pstate, ParseNamespaceItem *nsitem,118 int sublevels_up, int location,119 List **colnames);120extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem,121 int sublevels_up, bool require_col_privs,122 int location);123extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK);124extern const NameData *attnumAttName(Relation rd, int attid);125extern Oid attnumTypeId(Relation rd, int attid);126extern Oid attnumCollationId(Relation rd, int attid);127extern bool isQueryUsingTempRelation(Query *query);128 129#endif /* PARSE_RELATION_H */130 