Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 7f31669

Browse files
committed
Add Var.varlevelup to code. More parser cleanup.
1 parent 412a5e6 commit 7f31669

25 files changed

+158
-104
lines changed

src/backend/commands/recipe.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/recipe.c,v 1.17 1998/01/05 16:38:57 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/recipe.c,v 1.18 1998/01/20 22:10:53 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -494,6 +494,7 @@ tg_replaceNumberedParam(Node *expression,
494494
newVar = makeVar(rt_ind,
495495
0, /* the whole tuple */
496496
TypeGet(teeRelName, &defined),
497+
0,
497498
rt_ind,
498499
0);
499500
return (Node *) newVar;
@@ -503,6 +504,7 @@ tg_replaceNumberedParam(Node *expression,
503504
1, /* just the first field,
504505
* which is 'result' */
505506
TypeGet(teeRelName, &defined),
507+
0,
506508
rt_ind,
507509
0);
508510
return (Node *) newVar;

src/backend/nodes/copyfuncs.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.34 1998/01/20 05:03:40 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.35 1998/01/20 22:10:58 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -671,6 +671,7 @@ _copyVar(Var *from)
671671
newnode->varno = from->varno;
672672
newnode->varattno = from->varattno;
673673
newnode->vartype = from->vartype;
674+
newnode->varlevelsup = from->varlevelsup;
674675

675676
newnode->varnoold = from->varnoold;
676677
newnode->varoattno = from->varoattno;

src/backend/nodes/equalfuncs.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.12 1998/01/07 21:03:26 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.13 1998/01/20 22:11:02 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -129,6 +129,8 @@ _equalVar(Var *a, Var *b)
129129
return (false);
130130
if (a->vartype != b->vartype)
131131
return (false);
132+
if (a->varlevelsup != b->varlevelsup)
133+
return (false);
132134
if (a->varnoold != b->varnoold)
133135
return (false);
134136
if (a->varoattno != b->varoattno)

src/backend/nodes/makefuncs.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.4 1997/09/08 02:23:39 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.5 1998/01/20 22:11:05 momjian Exp $
1111
*
1212
* NOTES
1313
* Creator functions in POSTGRES 4.2 are generated automatically. Most of
@@ -53,6 +53,7 @@ Var *
5353
makeVar(Index varno,
5454
AttrNumber varattno,
5555
Oid vartype,
56+
Index varlevelsup,
5657
Index varnoold,
5758
AttrNumber varoattno)
5859
{
@@ -61,6 +62,7 @@ makeVar(Index varno,
6162
var->varno = varno;
6263
var->varattno = varattno;
6364
var->vartype = vartype;
65+
var->varlevelsup = varlevelsup;
6466
var->varnoold = varnoold;
6567
var->varoattno = varoattno;
6668

src/backend/nodes/outfuncs.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.25 1998/01/20 05:03:49 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.26 1998/01/20 22:11:12 momjian Exp $
1111
*
1212
* NOTES
1313
* Every (plan) node in POSTGRES has an associated "out" routine which
@@ -698,6 +698,8 @@ _outVar(StringInfo str, Var *node)
698698
appendStringInfo(str, buf);
699699
sprintf(buf, " :vartype %u ", node->vartype);
700700
appendStringInfo(str, buf);
701+
sprintf(buf, " :varlevelsup %u ", node->varlevelsup);
702+
appendStringInfo(str, buf);
701703
sprintf(buf, " :varnoold %d ", node->varnoold);
702704
appendStringInfo(str, buf);
703705
sprintf(buf, " :varoattno %d ", node->varoattno);

src/backend/nodes/readfuncs.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.21 1998/01/20 05:03:57 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.22 1998/01/20 22:11:15 momjian Exp $
1111
*
1212
* NOTES
1313
* Most of the read functions for plan nodes are tested. (In fact, they
@@ -814,6 +814,10 @@ _readVar()
814814
token = lsptok(NULL, &length); /* get vartype */
815815
local_node->vartype = (Oid) atol(token);
816816

817+
token = lsptok(NULL, &length); /* eat :varlevelsup */
818+
token = lsptok(NULL, &length); /* get varlevelsup */
819+
local_node->varlevelsup = (Oid) atol(token);
820+
817821
token = lsptok(NULL, &length); /* eat :varnoold */
818822
token = lsptok(NULL, &length); /* get varnoold */
819823
local_node->varnoold = (Oid) atol(token);

src/backend/optimizer/plan/createplan.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.23 1998/01/15 18:59:37 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.24 1998/01/20 22:11:25 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -701,6 +701,7 @@ fix_indxqual_references(Node *clause, Path *index_path)
701701
makeVar((Index) lfirsti(index_path->parent->relids),
702702
1, /* func indices have one key */
703703
((Func *) ((Expr *) clause)->oper)->functype,
704+
0,
704705
(Index) lfirsti(index_path->parent->relids),
705706
0);
706707

src/backend/optimizer/plan/initsplan.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.8 1997/09/08 21:45:19 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.9 1998/01/20 22:11:27 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -116,7 +116,7 @@ add_missing_vars_to_base_rels(Query *root, List *tlist)
116116
!rel_member(relids, root->base_relation_list_))
117117
{
118118

119-
var = makeVar(varno, -2, 26, varno, -2);
119+
var = makeVar(varno, -2, 26, 0, varno, -2);
120120
/* add it to base_relation_list_ */
121121
result = get_base_rel(root, varno);
122122
add_tl_element(result, var);

src/backend/optimizer/plan/planmain.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.16 1998/01/15 18:59:44 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.17 1998/01/20 22:11:29 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -464,7 +464,7 @@ make_groupPlan(List **tlist,
464464
else
465465
te->expr = (Node *) makeVar(1, resdom->resno,
466466
resdom->restype,
467-
-1, resdom->resno);
467+
0, -1, resdom->resno);
468468
}
469469

470470
sortplan = make_sort(sort_tlist,

src/backend/optimizer/plan/setrefs.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.15 1998/01/15 18:59:50 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.16 1998/01/20 22:11:32 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -440,6 +440,7 @@ replace_joinvar_refs(Var *var, List *outer_tlist, List *inner_tlist)
440440
return (makeVar(OUTER,
441441
outer_resdom->resno,
442442
var->vartype,
443+
0,
443444
var->varnoold,
444445
var->varoattno));
445446
}
@@ -453,6 +454,7 @@ replace_joinvar_refs(Var *var, List *outer_tlist, List *inner_tlist)
453454
return (makeVar(INNER,
454455
inner_resdom->resno,
455456
var->vartype,
457+
0,
456458
var->varnoold,
457459
var->varoattno));
458460
}
@@ -497,6 +499,7 @@ tlist_temp_references(Oid tempid,
497499
(Node *) makeVar(tempid,
498500
xtl->resdom->resno,
499501
xtl->resdom->restype,
502+
0,
500503
tempid,
501504
oattno));
502505

src/backend/optimizer/prep/preptlist.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/optimizer/prep/preptlist.c,v 1.7 1998/01/16 23:20:09 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/prep/preptlist.c,v 1.8 1998/01/20 22:11:34 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -114,7 +114,7 @@ preprocess_targetlist(List *tlist,
114114
0,
115115
1);
116116

117-
var = makeVar(result_relation, -1, 27, result_relation, -1);
117+
var = makeVar(result_relation, -1, 27, 0, result_relation, -1);
118118

119119
ctid = makeNode(TargetEntry);
120120
ctid->resdom = resdom;
@@ -322,7 +322,7 @@ new_relation_targetlist(Oid relid, Index rt_index, NodeTag node_type)
322322
TargetEntry *temp_list = NULL;
323323

324324
temp_var =
325-
makeVar(rt_index, attno, atttype, rt_index, attno);
325+
makeVar(rt_index, attno, atttype, 0, rt_index, attno);
326326

327327
temp_list = MakeTLE(makeResdom(attno,
328328
atttype,

src/backend/optimizer/util/clauses.c

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.13 1997/12/22 05:42:14 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.14 1998/01/20 22:11:39 momjian Exp $
1111
*
1212
* HISTORY
1313
* AUTHOR DATE MAJOR EVENT
@@ -377,7 +377,8 @@ clause_relids_vars(Node *clause, List **relids, List **vars)
377377
Var *in_list = (Var *) lfirst(vi);
378378

379379
if (in_list->varno == var->varno &&
380-
in_list->varattno == var->varattno)
380+
in_list->varattno == var->varattno &&
381+
in_list->varlevelsup == var->varlevelsup)
381382
break;
382383
}
383384
if (vi == NIL)

src/backend/optimizer/util/tlist.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.8 1997/11/25 22:00:16 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.9 1998/01/20 22:11:41 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -108,6 +108,7 @@ add_tl_element(Rel *rel, Var *var)
108108
Var *newvar = makeVar(var->varno,
109109
var->varattno,
110110
var->vartype,
111+
var->varlevelsup,
111112
var->varno,
112113
var->varoattno);
113114

@@ -287,7 +288,8 @@ match_varid(Var *test_var, List *tlist)
287288
* changed to INNER/OUTER.
288289
*/
289290
if (tlvar->varnoold == test_var->varnoold &&
290-
tlvar->varoattno == test_var->varoattno)
291+
tlvar->varoattno == test_var->varoattno &&
292+
tlvar->varlevelsup == test_var->varlevelsup)
291293
{
292294

293295
if (tlvar->vartype == type_var)

src/backend/optimizer/util/var.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.7 1997/12/22 05:42:16 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.8 1998/01/20 22:11:43 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -209,6 +209,7 @@ var_equal(Var *var1, Var *var2)
209209
if (IsA(var1, Var) &&IsA(var2, Var) &&
210210
(((Var *) var1)->varno == ((Var *) var2)->varno) &&
211211
(((Var *) var1)->vartype == ((Var *) var2)->vartype) &&
212+
(((Var *) var1)->varlevelsup == ((Var *) var2)->varlevelsup) &&
212213
(((Var *) var1)->varattno == ((Var *) var2)->varattno))
213214
{
214215

src/backend/parser/README

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ parse_clause.c handle clauses like WHERE, ORDER BY, GROUP BY, ...
1212
parse_expr.c handle expressions like col, col + 3, x = 3 or x = 4
1313
parse_oper.c handle operations in expressions
1414
parse_agg.c handle aggregates, like SUM(col1), AVG(col2), ...
15-
parse_func.c handle functions like date_part(col3), trim(col4), ...
15+
parse_func.c handle functions, table.column and column identifiers
1616

1717
parse_node.c create nodes for various structures
1818
parse_target.c handle the result list of the query

src/backend/parser/analyze.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.67 1998/01/20 05:04:05 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.68 1998/01/20 22:11:51 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -219,7 +219,7 @@ transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt)
219219
qry->qual = transformWhereClause(pstate, stmt->whereClause);
220220

221221
qry->rtable = pstate->p_rtable;
222-
qry->resultRelation = refnameRangeTablePosn(pstate->p_rtable, stmt->relname);
222+
qry->resultRelation = refnameRangeTablePosn(pstate, stmt->relname, NULL);
223223

224224
qry->hasAggs = pstate->p_hasAggs;
225225
if (pstate->p_hasAggs)
@@ -320,7 +320,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
320320

321321
/* now the range table will not change */
322322
qry->rtable = pstate->p_rtable;
323-
qry->resultRelation = refnameRangeTablePosn(pstate->p_rtable, stmt->relname);
323+
qry->resultRelation = refnameRangeTablePosn(pstate, stmt->relname, NULL);
324324

325325
qry->groupClause = transformGroupClause(pstate,
326326
stmt->groupClause,
@@ -816,7 +816,7 @@ transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt)
816816

817817
qry->rtable = pstate->p_rtable;
818818

819-
qry->resultRelation = refnameRangeTablePosn(pstate->p_rtable, stmt->relname);
819+
qry->resultRelation = refnameRangeTablePosn(pstate, stmt->relname, NULL);
820820

821821
qry->hasAggs = pstate->p_hasAggs;
822822
if (pstate->p_hasAggs)

src/backend/parser/parse_clause.c

+6-8
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.10 1998/01/20 05:04:12 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.11 1998/01/20 22:11:53 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -39,16 +39,15 @@ void
3939
makeRangeTable(ParseState *pstate, char *relname, List *frmList)
4040
{
4141
RangeTblEntry *rte;
42-
42+
4343
parseFromClause(pstate, frmList);
4444

4545
if (relname == NULL)
4646
return;
4747

48-
if (refnameRangeTablePosn(pstate->p_rtable, relname) < 1)
49-
rte = addRangeTableEntry(pstate, relname, relname, FALSE, FALSE);
50-
else
51-
rte = refnameRangeTableEntry(pstate->p_rtable, relname);
48+
Assert(pstate->p_rtable == NULL);
49+
50+
rte = addRangeTableEntry(pstate, relname, relname, FALSE, FALSE);
5251

5352
pstate->p_target_rangetblentry = rte;
5453
Assert(pstate->p_target_relation == NULL);
@@ -137,8 +136,7 @@ find_targetlist_entry(ParseState *pstate, SortGroupBy *sortgroupby, List *tlist)
137136
TargetEntry *target_result = NULL;
138137

139138
if (sortgroupby->range)
140-
real_rtable_pos = refnameRangeTablePosn(pstate->p_rtable,
141-
sortgroupby->range);
139+
real_rtable_pos = refnameRangeTablePosn(pstate, sortgroupby->range, NULL);
142140

143141
foreach(i, tlist)
144142
{

0 commit comments

Comments
 (0)