aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/ruleutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/ruleutils.c')
-rw-r--r--src/backend/utils/adt/ruleutils.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 8f365f2efbe..008402e26f3 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -3,7 +3,7 @@
* out of it's tuple
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.21 1999/07/17 20:17:59 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.22 1999/08/21 03:48:53 tgl Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -41,6 +41,7 @@
#include "postgres.h"
#include "executor/spi.h"
#include "optimizer/clauses.h"
+#include "optimizer/tlist.h"
#include "utils/lsyscache.h"
#include "catalog/pg_shadow.h"
#include "catalog/pg_index.h"
@@ -1248,23 +1249,11 @@ get_rule_expr(QryHier *qh, int rt_index, Node *node, bool varprefix)
case T_GroupClause:
{
GroupClause *grp = (GroupClause *) node;
- List *l;
- TargetEntry *tle = NULL;
-
- foreach(l, qh->query->targetList)
- {
- if (((TargetEntry *) lfirst(l))->resdom->resgroupref ==
- grp->tleGroupref)
- {
- tle = (TargetEntry *) lfirst(l);
- break;
- }
- }
-
- if (tle == NULL)
- elog(ERROR, "GROUP BY expression not found in targetlist");
+ Node *groupexpr;
- return get_rule_expr(qh, rt_index, (Node *) tle, varprefix);
+ groupexpr = get_sortgroupclause_expr(grp,
+ qh->query->targetList);
+ return get_rule_expr(qh, rt_index, groupexpr, varprefix);
}
break;