67 lines
3.9 KiB
C
67 lines
3.9 KiB
C
/* -------------------------------------------------------------------------
|
|
*
|
|
* parse_relation.h
|
|
* prototypes for parse_relation.c.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/parser/parse_relation.h
|
|
*
|
|
* -------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PARSE_RELATION_H
|
|
#define PARSE_RELATION_H
|
|
|
|
#include "parser/parse_node.h"
|
|
|
|
extern RangeTblEntry* refnameRangeTblEntry(
|
|
ParseState* pstate, const char* schemaname, const char* refname, int location, int* sublevels_up);
|
|
extern CommonTableExpr* scanNameSpaceForCTE(ParseState* pstate, const char* refname, Index* ctelevelsup);
|
|
extern void checkNameSpaceConflicts(ParseState* pstate, List* namespace1, List* namespace2);
|
|
extern int RTERangeTablePosn(ParseState* pstate, RangeTblEntry* rte, int* sublevels_up);
|
|
extern RangeTblEntry* GetRTEByRangeTablePosn(ParseState* pstate, int varno, int sublevels_up);
|
|
extern CommonTableExpr* GetCTEForRTE(ParseState* pstate, RangeTblEntry* rte, int rtelevelsup);
|
|
extern Node* scanRTEForColumn(ParseState* pstate, RangeTblEntry* rte, char* colname, int location, bool omit = false);
|
|
extern Node* colNameToVar(
|
|
ParseState* pstate, char* colname, bool localonly, int location, RangeTblEntry** final_rte = NULL);
|
|
extern void markVarForSelectPriv(ParseState* pstate, Var* var, RangeTblEntry* rte);
|
|
extern Relation parserOpenTable(ParseState* pstate, const RangeVar* relation, int lockmode, bool isFirstNode = true,
|
|
bool isCreateView = false, bool isSupportSynonym = false);
|
|
extern RangeTblEntry* addRangeTableEntry(ParseState* pstate, RangeVar* relation, Alias* alias, bool inh, bool inFromCl,
|
|
bool isFirstNode = true, bool isCreateView = false, bool isSupportSynonym = false);
|
|
extern RangeTblEntry* addRangeTableEntryForRelation(
|
|
ParseState* pstate, Relation rel, Alias* alias, bool inh, bool inFromCl);
|
|
extern RangeTblEntry* addRangeTableEntryForSubquery(
|
|
ParseState* pstate, Query* subquery, Alias* alias, bool lateral, bool inFromCl, bool sublinkPullUp = false);
|
|
extern RangeTblEntry* addRangeTableEntryForFunction(
|
|
ParseState* pstate, char* funcname, Node* funcexpr, RangeFunction* rangefunc, bool lateral, bool inFromCl);
|
|
extern RangeTblEntry* addRangeTableEntryForValues(
|
|
ParseState* pstate, List* exprs, List* collations, Alias* alias, bool inFromCl);
|
|
extern RangeTblEntry* addRangeTableEntryForJoin(
|
|
ParseState* pstate, List* colnames, JoinType jointype, List* aliasvars, Alias* alias, bool inFromCl);
|
|
extern RangeTblEntry* addRangeTableEntryForCTE(
|
|
ParseState* pstate, CommonTableExpr* cte, Index levelsup, RangeVar* rv, bool inFromCl);
|
|
extern RangeTblEntry* getRangeTableEntryByRelation(Relation rel);
|
|
extern bool isLockedRefname(ParseState* pstate, const char* refname);
|
|
extern void addRTEtoQuery(
|
|
ParseState* pstate, RangeTblEntry* rte, bool addToJoinList, bool addToRelNameSpace, bool addToVarNameSpace);
|
|
extern void errorMissingRTE(ParseState* pstate, RangeVar* relation, bool hasplus = false);
|
|
extern void errorMissingColumn(ParseState *pstate, char *relname, char *colname, int location);
|
|
extern void expandRTE(RangeTblEntry* rte, int rtindex, int sublevels_up, int location, bool include_dropped,
|
|
List** colnames, List** colvars, ParseState* pstate = NULL);
|
|
extern List* expandRelAttrs(ParseState* pstate, RangeTblEntry* rte, int rtindex, int sublevels_up, int location);
|
|
extern int attnameAttNum(Relation rd, const char* attname, bool sysColOK);
|
|
extern Name attnumAttName(Relation rd, int attid);
|
|
extern Oid attnumTypeId(Relation rd, int attid);
|
|
extern Oid attnumCollationId(Relation rd, int attid);
|
|
extern bool GetPartitionOidForRTE(RangeTblEntry *rte, RangeVar *relation, ParseState *pstate, Relation rel);
|
|
extern bool GetSubPartitionOidForRTE(RangeTblEntry *rte, RangeVar *relation, ParseState *pstate, Relation rel);
|
|
|
|
#ifdef PGXC
|
|
extern int specialAttNum(const char* attname);
|
|
#endif
|
|
|
|
#endif /* PARSE_RELATION_H */
|