diff options
| author | Bruce Momjian <bruce@momjian.us> | 1998-01-15 19:00:16 +0000 |
|---|---|---|
| committer | Bruce Momjian <bruce@momjian.us> | 1998-01-15 19:00:16 +0000 |
| commit | 763ff8aef848d71da079049890786edffc3302d6 (patch) | |
| tree | a1aed2a633c409071dd6d724b6db2bc7bf4fcb75 /src/backend/nodes/readfuncs.c | |
| parent | f22d8e6668e36a5855c35b04cc21a4d1593298d9 (diff) | |
| download | postgresql-763ff8aef848d71da079049890786edffc3302d6.tar.gz | |
Remove Query->qry_aggs and qry_numaggs and replace with Query->hasAggs.
Pass List* of Aggregs into executor, and create needed array there.
No longer need to double-processs Aggregs with second copy in Query.
Fix crash when doing:
select sum(x+1) from test where 1 > 0;
Diffstat (limited to 'src/backend/nodes/readfuncs.c')
| -rw-r--r-- | src/backend/nodes/readfuncs.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 65038f8c89..574d5c69e2 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.17 1998/01/07 21:03:37 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.18 1998/01/15 18:59:31 momjian Exp $ * * NOTES * Most of the read functions for plan nodes are tested. (In fact, they @@ -76,7 +76,6 @@ _readQuery() Query *local_node; char *token; int length; - int i; local_node = makeNode(Query); @@ -153,19 +152,9 @@ _readQuery() token = lsptok(NULL, &length); /* skip :havingQual */ local_node->havingQual = nodeRead(true); - token = lsptok(NULL, &length); /* skip the :qry_numAgg */ - token = lsptok(NULL, &length); /* get qry_numAgg */ - local_node->qry_numAgg = atoi(token); - - token = lsptok(NULL, &length); /* skip the :qry_Aggs */ - if (local_node->qry_numAgg == 0) - local_node->qry_aggs = NULL; - else - { - local_node->qry_aggs = palloc(sizeof(Aggreg *) * local_node->qry_numAgg); - for (i=0; i < local_node->qry_numAgg; i++) - local_node->qry_aggs[i] = nodeRead(true); - } + token = lsptok(NULL, &length); /* skip the :hasAggs */ + token = lsptok(NULL, &length); /* get hasAggs */ + local_node->hasAggs = (token[0] == 't') ? true : false; token = lsptok(NULL, &length); /* skip :unionClause */ local_node->unionClause = nodeRead(true); @@ -618,9 +607,8 @@ _readAgg() local_node = makeNode(Agg); _getPlan((Plan *) local_node); - token = lsptok(NULL, &length); /* eat :numagg */ - token = lsptok(NULL, &length); /* get numagg */ - local_node->numAgg = atoi(token); + token = lsptok(NULL, &length); /* eat :agg */ + local_node->aggs = nodeRead(true); /* now read it */ return (local_node); } |
