Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc64cc32

Browse files
committed
Fix Query handling for inheritance, and cost computations.
1 parentd451a3b commitc64cc32

File tree

4 files changed

+27
-14
lines changed

4 files changed

+27
-14
lines changed

‎src/backend/nodes/copyfuncs.c

Lines changed: 8 additions & 3 deletions
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.16 1997/11/25 21:59:40 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.17 1997/12/18 03:03:31 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -516,7 +516,7 @@ _copyAgg(Agg *from)
516516
CopyTempFields((Temp*)from, (Temp*)newnode);
517517

518518
newnode->numAgg=from->numAgg;
519-
newnode->aggs=malloc(sizeof(Aggreg*));
519+
newnode->aggs=palloc(sizeof(Aggreg*));
520520
for (i=0;i<from->numAgg;i++)
521521
{
522522
newnode->aggs[i]=copyObject(from->aggs[i]);
@@ -1519,7 +1519,7 @@ static Query *
15191519
_copyQuery(Query*from)
15201520
{
15211521
Query*newnode=makeNode(Query);
1522-
1522+
15231523
newnode->commandType=from->commandType;
15241524
newnode->resultRelation=from->resultRelation;
15251525
/* probably should dup this string instead of just pointing */
@@ -1555,6 +1555,11 @@ _copyQuery(Query *from)
15551555
Node_Copy(from,newnode,targetList);
15561556
Node_Copy(from,newnode,qual);
15571557

1558+
Node_Copy(from,newnode,groupClause);
1559+
Node_Copy(from,newnode,havingQual);/* currently ignored */
1560+
1561+
Node_Copy(from,newnode,Aggreg);
1562+
15581563
returnnewnode;
15591564
}
15601565

‎src/backend/optimizer/plan/createplan.c

Lines changed: 13 additions & 8 deletions
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.16 1997/11/25 21:59:56 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.17 1997/12/18 03:03:35 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -943,7 +943,7 @@ make_seqscan(List *qptlist,
943943
SeqScan*node=makeNode(SeqScan);
944944
Plan*plan=&node->plan;
945945

946-
plan->cost=0.0;
946+
plan->cost=(lefttree ?lefttree->cost :0);
947947
plan->state= (EState*)NULL;
948948
plan->targetlist=qptlist;
949949
plan->qual=qpqual;
@@ -989,7 +989,8 @@ make_nestloop(List *qptlist,
989989
NestLoop*node=makeNode(NestLoop);
990990
Plan*plan=&node->join;
991991

992-
plan->cost=0.0;
992+
plan->cost= (lefttree ?lefttree->cost :0)+
993+
(righttree ?righttree->cost :0);
993994
plan->state= (EState*)NULL;
994995
plan->targetlist=qptlist;
995996
plan->qual=qpqual;
@@ -1010,6 +1011,8 @@ make_hashjoin(List *tlist,
10101011
HashJoin*node=makeNode(HashJoin);
10111012
Plan*plan=&node->join;
10121013

1014+
plan->cost= (lefttree ?lefttree->cost :0)+
1015+
(righttree ?righttree->cost :0);
10131016
plan->cost=0.0;
10141017
plan->state= (EState*)NULL;
10151018
plan->targetlist=tlist;
@@ -1031,6 +1034,7 @@ make_hash(List *tlist, Var *hashkey, Plan *lefttree)
10311034
Hash*node=makeNode(Hash);
10321035
Plan*plan=&node->plan;
10331036

1037+
plan->cost= (lefttree ?lefttree->cost :0);
10341038
plan->cost=0.0;
10351039
plan->state= (EState*)NULL;
10361040
plan->targetlist=tlist;
@@ -1058,7 +1062,8 @@ make_mergesort(List *tlist,
10581062
MergeJoin*node=makeNode(MergeJoin);
10591063
Plan*plan=&node->join;
10601064

1061-
plan->cost=0.0;
1065+
plan->cost= (lefttree ?lefttree->cost :0)+
1066+
(righttree ?righttree->cost :0);
10621067
plan->state= (EState*)NULL;
10631068
plan->targetlist=tlist;
10641069
plan->qual=qpqual;
@@ -1078,7 +1083,7 @@ make_sort(List *tlist, Oid tempid, Plan *lefttree, int keycount)
10781083
Sort*node=makeNode(Sort);
10791084
Plan*plan=&node->plan;
10801085

1081-
plan->cost=0.0;
1086+
plan->cost=(lefttree ?lefttree->cost :0);
10821087
plan->state= (EState*)NULL;
10831088
plan->targetlist=tlist;
10841089
plan->qual=NIL;
@@ -1099,7 +1104,7 @@ make_material(List *tlist,
10991104
Material*node=makeNode(Material);
11001105
Plan*plan=&node->plan;
11011106

1102-
plan->cost=0.0;
1107+
plan->cost=(lefttree ?lefttree->cost :0);
11031108
plan->state= (EState*)NULL;
11041109
plan->targetlist=tlist;
11051110
plan->qual=NIL;
@@ -1137,7 +1142,7 @@ make_group(List *tlist,
11371142
{
11381143
Group*node=makeNode(Group);
11391144

1140-
node->plan.cost=0.0;
1145+
node->plan.cost=(lefttree ?lefttree->plan.cost :0);
11411146
node->plan.state= (EState*)NULL;
11421147
node->plan.qual=NULL;
11431148
node->plan.targetlist=tlist;
@@ -1164,7 +1169,7 @@ make_unique(List *tlist, Plan *lefttree, char *uniqueAttr)
11641169
Unique*node=makeNode(Unique);
11651170
Plan*plan=&node->plan;
11661171

1167-
plan->cost=0.0;
1172+
plan->cost=(lefttree ?lefttree->cost :0);
11681173
plan->state= (EState*)NULL;
11691174
plan->targetlist=tlist;
11701175
plan->qual=NIL;

‎src/backend/optimizer/plan/planmain.c

Lines changed: 2 additions & 2 deletions
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.8 1997/09/25 12:21:15 vadim Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.9 1997/12/18 03:03:38 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -362,7 +362,7 @@ make_result(List *tlist,
362362
Plan*plan=&node->plan;
363363

364364
tlist=generate_fjoin(tlist);
365-
plan->cost=0.0;
365+
plan->cost=(subplan ?subplan->cost :0);
366366
plan->state= (EState*)NULL;
367367
plan->targetlist=tlist;
368368
plan->lefttree=subplan;

‎src/backend/optimizer/prep/prepunion.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.9 1997/11/25 22:00:10 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.10 1997/12/18 03:03:41 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -241,6 +241,9 @@ plan_union_query(List *relids,
241241
/*new_root->uniqueFlag = false; */
242242
new_root->uniqueFlag=NULL;
243243
new_root->sortClause=NULL;
244+
new_root->groupClause=NULL;
245+
new_root->qry_numAgg=0;
246+
new_root->qry_aggs=NULL;
244247
fix_parsetree_attnums(rt_index,
245248
rt_entry->relid,
246249
relid,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp