pgsql-v9.1-add-makeRTE.1.patch
application/octect-stream
Filename: pgsql-v9.1-add-makeRTE.1.patch
Type: application/octect-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: context
Series: patch v9
| File | + | − |
|---|---|---|
| src/backend/nodes/makefuncs.c | 14 | 0 |
| src/backend/parser/parse_relation.c | 7 | 0 |
| src/include/nodes/makefuncs.h | 1 | 0 |
*** a/src/backend/nodes/makefuncs.c
--- b/src/backend/nodes/makefuncs.c
***************
*** 262,267 **** makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, CoercionForm rformat)
--- 262,281 ----
}
/*
+ * makeRangeTblEntry
+ * creates a RangeTblEntry node
+ */
+ RangeTblEntry *
+ makeRangeTblEntry(RTEKind rtekind)
+ {
+ RangeTblEntry *r = makeNode(RangeTblEntry);
+
+ r->rtekind = rtekind;
+
+ return r;
+ }
+
+ /*
* makeRangeVar -
* creates a RangeVar node (rather oversimplified case)
*/
*** a/src/backend/parser/parse_relation.c
--- b/src/backend/parser/parse_relation.c
***************
*** 877,888 **** addRangeTableEntry(ParseState *pstate,
bool inh,
bool inFromCl)
{
! RangeTblEntry *rte = makeNode(RangeTblEntry);
char *refname = alias ? alias->aliasname : relation->relname;
LOCKMODE lockmode;
Relation rel;
- rte->rtekind = RTE_RELATION;
rte->alias = alias;
/*
--- 877,887 ----
bool inh,
bool inFromCl)
{
! RangeTblEntry *rte = makeRangeTblEntry(RTE_RELATION);
char *refname = alias ? alias->aliasname : relation->relname;
LOCKMODE lockmode;
Relation rel;
rte->alias = alias;
/*
***************
*** 950,959 **** addRangeTableEntryForRelation(ParseState *pstate,
bool inh,
bool inFromCl)
{
! RangeTblEntry *rte = makeNode(RangeTblEntry);
char *refname = alias ? alias->aliasname : RelationGetRelationName(rel);
- rte->rtekind = RTE_RELATION;
rte->alias = alias;
rte->relid = RelationGetRelid(rel);
--- 949,957 ----
bool inh,
bool inFromCl)
{
! RangeTblEntry *rte = makeRangeTblEntry(RTE_RELATION);
char *refname = alias ? alias->aliasname : RelationGetRelationName(rel);
rte->alias = alias;
rte->relid = RelationGetRelid(rel);
***************
*** 1004,1017 **** addRangeTableEntryForSubquery(ParseState *pstate,
Alias *alias,
bool inFromCl)
{
! RangeTblEntry *rte = makeNode(RangeTblEntry);
char *refname = alias->aliasname;
Alias *eref;
int numaliases;
int varattno;
ListCell *tlistitem;
- rte->rtekind = RTE_SUBQUERY;
rte->relid = InvalidOid;
rte->subquery = subquery;
rte->alias = alias;
--- 1002,1014 ----
Alias *alias,
bool inFromCl)
{
! RangeTblEntry *rte = makeRangeTblEntry(RTE_SUBQUERY);
char *refname = alias->aliasname;
Alias *eref;
int numaliases;
int varattno;
ListCell *tlistitem;
rte->relid = InvalidOid;
rte->subquery = subquery;
rte->alias = alias;
***************
*** 1084,1090 **** addRangeTableEntryForFunction(ParseState *pstate,
RangeFunction *rangefunc,
bool inFromCl)
{
! RangeTblEntry *rte = makeNode(RangeTblEntry);
TypeFuncClass functypclass;
Oid funcrettype;
TupleDesc tupdesc;
--- 1081,1087 ----
RangeFunction *rangefunc,
bool inFromCl)
{
! RangeTblEntry *rte = makeRangeTblEntry(RTE_FUNCTION);
TypeFuncClass functypclass;
Oid funcrettype;
TupleDesc tupdesc;
***************
*** 1092,1098 **** addRangeTableEntryForFunction(ParseState *pstate,
List *coldeflist = rangefunc->coldeflist;
Alias *eref;
- rte->rtekind = RTE_FUNCTION;
rte->relid = InvalidOid;
rte->subquery = NULL;
rte->funcexpr = funcexpr;
--- 1089,1094 ----
***************
*** 1217,1229 **** addRangeTableEntryForValues(ParseState *pstate,
Alias *alias,
bool inFromCl)
{
! RangeTblEntry *rte = makeNode(RangeTblEntry);
char *refname = alias ? alias->aliasname : pstrdup("*VALUES*");
Alias *eref;
int numaliases;
int numcolumns;
- rte->rtekind = RTE_VALUES;
rte->relid = InvalidOid;
rte->subquery = NULL;
rte->values_lists = exprs;
--- 1213,1224 ----
Alias *alias,
bool inFromCl)
{
! RangeTblEntry *rte = makeRangeTblEntry(RTE_VALUES);
char *refname = alias ? alias->aliasname : pstrdup("*VALUES*");
Alias *eref;
int numaliases;
int numcolumns;
rte->relid = InvalidOid;
rte->subquery = NULL;
rte->values_lists = exprs;
***************
*** 1291,1297 **** addRangeTableEntryForJoin(ParseState *pstate,
Alias *alias,
bool inFromCl)
{
! RangeTblEntry *rte = makeNode(RangeTblEntry);
Alias *eref;
int numaliases;
--- 1286,1292 ----
Alias *alias,
bool inFromCl)
{
! RangeTblEntry *rte = makeRangeTblEntry(RTE_JOIN);
Alias *eref;
int numaliases;
***************
*** 1305,1311 **** addRangeTableEntryForJoin(ParseState *pstate,
errmsg("joins can have at most %d columns",
MaxAttrNumber)));
- rte->rtekind = RTE_JOIN;
rte->relid = InvalidOid;
rte->subquery = NULL;
rte->jointype = jointype;
--- 1300,1305 ----
***************
*** 1361,1374 **** addRangeTableEntryForCTE(ParseState *pstate,
Alias *alias,
bool inFromCl)
{
! RangeTblEntry *rte = makeNode(RangeTblEntry);
char *refname = alias ? alias->aliasname : cte->ctename;
Alias *eref;
int numaliases;
int varattno;
ListCell *lc;
- rte->rtekind = RTE_CTE;
rte->ctename = cte->ctename;
rte->ctelevelsup = levelsup;
--- 1355,1367 ----
Alias *alias,
bool inFromCl)
{
! RangeTblEntry *rte = makeRangeTblEntry(RTE_CTE);
char *refname = alias ? alias->aliasname : cte->ctename;
Alias *eref;
int numaliases;
int varattno;
ListCell *lc;
rte->ctename = cte->ctename;
rte->ctelevelsup = levelsup;
*** a/src/include/nodes/makefuncs.h
--- b/src/include/nodes/makefuncs.h
***************
*** 56,61 **** extern Alias *makeAlias(const char *aliasname, List *colnames);
--- 56,62 ----
extern RelabelType *makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod,
CoercionForm rformat);
+ extern RangeTblEntry *makeRangeTblEntry(RTEKind rtekind);
extern RangeVar *makeRangeVar(char *schemaname, char *relname, int location);
extern TypeName *makeTypeName(char *typnam);