mirror of
https://github.com/postgres/postgres.git
synced 2026-02-03 20:40:14 -05:00
presence of dropped columns. Document the already-presumed fact that eref aliases in relation RTEs are supposed to have entries for dropped columns; cause the user alias structs to have such entries too, so that there's always a one-to-one mapping to the underlying physical attnums. Adjust expandRTE() and related code to handle the case where a column that is part of a JOIN has been dropped. Generalize expandRTE()'s API so that it can be used in a couple of places that formerly rolled their own implementation of the same logic. Fix ruleutils.c to suppress display of aliases for columns that were dropped since the rule was made.
79 lines
2.8 KiB
C
79 lines
2.8 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* parse_relation.h
|
|
* prototypes for parse_relation.c.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $PostgreSQL: pgsql/src/include/parser/parse_relation.h,v 1.45 2004/08/19 20:57:41 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PARSE_RELATION_H
|
|
#define PARSE_RELATION_H
|
|
|
|
#include "parser/parse_node.h"
|
|
|
|
extern bool add_missing_from;
|
|
|
|
extern RangeTblEntry *refnameRangeTblEntry(ParseState *pstate,
|
|
const char *schemaname,
|
|
const char *refname,
|
|
int *sublevels_up);
|
|
extern void checkNameSpaceConflicts(ParseState *pstate, Node *namespace1,
|
|
Node *namespace2);
|
|
extern int RTERangeTablePosn(ParseState *pstate,
|
|
RangeTblEntry *rte,
|
|
int *sublevels_up);
|
|
extern RangeTblEntry *GetRTEByRangeTablePosn(ParseState *pstate,
|
|
int varno,
|
|
int sublevels_up);
|
|
extern List *GetLevelNRangeTable(ParseState *pstate, int sublevels_up);
|
|
extern Node *scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte,
|
|
char *colname);
|
|
extern Node *colNameToVar(ParseState *pstate, char *colname, bool localonly);
|
|
extern Node *qualifiedNameToVar(ParseState *pstate,
|
|
char *schemaname,
|
|
char *refname,
|
|
char *colname,
|
|
bool implicitRTEOK);
|
|
extern RangeTblEntry *addRangeTableEntry(ParseState *pstate,
|
|
RangeVar *relation,
|
|
Alias *alias,
|
|
bool inh,
|
|
bool inFromCl);
|
|
extern RangeTblEntry *addRangeTableEntryForRelation(ParseState *pstate,
|
|
Oid relid,
|
|
Alias *alias,
|
|
bool inh,
|
|
bool inFromCl);
|
|
extern RangeTblEntry *addRangeTableEntryForSubquery(ParseState *pstate,
|
|
Query *subquery,
|
|
Alias *alias,
|
|
bool inFromCl);
|
|
extern RangeTblEntry *addRangeTableEntryForFunction(ParseState *pstate,
|
|
char *funcname,
|
|
Node *funcexpr,
|
|
RangeFunction *rangefunc,
|
|
bool inFromCl);
|
|
extern RangeTblEntry *addRangeTableEntryForJoin(ParseState *pstate,
|
|
List *colnames,
|
|
JoinType jointype,
|
|
List *aliasvars,
|
|
Alias *alias,
|
|
bool inFromCl);
|
|
extern void addRTEtoQuery(ParseState *pstate, RangeTblEntry *rte,
|
|
bool addToJoinList, bool addToNameSpace);
|
|
extern RangeTblEntry *addImplicitRTE(ParseState *pstate, RangeVar *relation);
|
|
extern void expandRTE(List *rtable, int rtindex, int sublevels_up,
|
|
bool include_dropped,
|
|
List **colnames, List **colvars);
|
|
extern List *expandRelAttrs(ParseState *pstate, List *rtable,
|
|
int rtindex, int sublevels_up);
|
|
extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK);
|
|
extern Name attnumAttName(Relation rd, int attid);
|
|
extern Oid attnumTypeId(Relation rd, int attid);
|
|
|
|
#endif /* PARSE_RELATION_H */
|