1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-21 12:05:57 +03:00

Rename Aggreg to Aggref.

This commit is contained in:
Bruce Momjian 1999-01-24 00:28:37 +00:00
parent 157349e3af
commit 17467bb7fb
21 changed files with 221 additions and 221 deletions

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.39 1998/12/04 15:33:19 thomas Exp $ * $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.40 1999/01/24 00:28:18 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -67,7 +67,7 @@ bool execConstByVal;
int execConstLen; int execConstLen;
/* static functions decls */ /* static functions decls */
static Datum ExecEvalAggreg(Aggreg *agg, ExprContext *econtext, bool *isNull); static Datum ExecEvalAggref(Aggref *agg, ExprContext *econtext, bool *isNull);
static Datum ExecEvalArrayRef(ArrayRef *arrayRef, ExprContext *econtext, static Datum ExecEvalArrayRef(ArrayRef *arrayRef, ExprContext *econtext,
bool *isNull, bool *isDone); bool *isNull, bool *isDone);
static Datum ExecEvalAnd(Expr *andExpr, ExprContext *econtext, bool *isNull); static Datum ExecEvalAnd(Expr *andExpr, ExprContext *econtext, bool *isNull);
@ -185,14 +185,14 @@ ExecEvalArrayRef(ArrayRef *arrayRef,
/* ---------------------------------------------------------------- /* ----------------------------------------------------------------
* ExecEvalAggreg * ExecEvalAggref
* *
* Returns a Datum whose value is the value of the precomputed * Returns a Datum whose value is the value of the precomputed
* aggregate found in the given expression context. * aggregate found in the given expression context.
* ---------------------------------------------------------------- * ----------------------------------------------------------------
*/ */
static Datum static Datum
ExecEvalAggreg(Aggreg *agg, ExprContext *econtext, bool *isNull) ExecEvalAggref(Aggref *agg, ExprContext *econtext, bool *isNull)
{ {
*isNull = econtext->ecxt_nulls[agg->aggno]; *isNull = econtext->ecxt_nulls[agg->aggno];
return econtext->ecxt_values[agg->aggno]; return econtext->ecxt_values[agg->aggno];
@ -1268,8 +1268,8 @@ ExecEvalExpr(Node *expression,
isNull, isNull,
isDone); isDone);
break; break;
case T_Aggreg: case T_Aggref:
retDatum = (Datum) ExecEvalAggreg((Aggreg *) expression, retDatum = (Datum) ExecEvalAggref((Aggref *) expression,
econtext, econtext,
isNull); isNull);
break; break;

View File

@ -45,7 +45,7 @@ typedef struct AggFuncInfo
FmgrInfo finalfn; FmgrInfo finalfn;
} AggFuncInfo; } AggFuncInfo;
static Datum aggGetAttr(TupleTableSlot *tuple, Aggreg *agg, bool *isNull); static Datum aggGetAttr(TupleTableSlot *tuple, Aggref *agg, bool *isNull);
/* --------------------------------------- /* ---------------------------------------
@ -90,7 +90,7 @@ ExecAgg(Agg *node)
{ {
AggState *aggstate; AggState *aggstate;
EState *estate; EState *estate;
Aggreg **aggregates; Aggref **aggregates;
Plan *outerPlan; Plan *outerPlan;
int i, int i,
nagg; nagg;
@ -133,7 +133,7 @@ ExecAgg(Agg *node)
nagg = length(node->aggs); nagg = length(node->aggs);
aggregates = (Aggreg **) palloc(sizeof(Aggreg *) * nagg); aggregates = (Aggref **) palloc(sizeof(Aggref *) * nagg);
/* take List* and make it an array that can be quickly indexed */ /* take List* and make it an array that can be quickly indexed */
alist = node->aggs; alist = node->aggs;
@ -163,7 +163,7 @@ ExecAgg(Agg *node)
for (i = 0; i < nagg; i++) for (i = 0; i < nagg; i++)
{ {
Aggreg *agg; Aggref *agg;
char *aggname; char *aggname;
HeapTuple aggTuple; HeapTuple aggTuple;
Form_pg_aggregate aggp; Form_pg_aggregate aggp;
@ -628,7 +628,7 @@ ExecEndAgg(Agg *node)
*/ */
static Datum static Datum
aggGetAttr(TupleTableSlot *slot, aggGetAttr(TupleTableSlot *slot,
Aggreg *agg, Aggref *agg,
bool *isNull) bool *isNull)
{ {
Datum result; Datum result;

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.53 1999/01/21 22:55:41 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.54 1999/01/24 00:28:19 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -899,13 +899,13 @@ _copyFunc(Func *from)
} }
/* ---------------- /* ----------------
* _copyAggreg * _copyAggref
* ---------------- * ----------------
*/ */
static Aggreg * static Aggref *
_copyAggreg(Aggreg *from) _copyAggref(Aggref *from)
{ {
Aggreg *newnode = makeNode(Aggreg); Aggref *newnode = makeNode(Aggref);
/* ---------------- /* ----------------
* copy remainder of node * copy remainder of node
@ -1782,8 +1782,8 @@ copyObject(void *from)
case T_ArrayRef: case T_ArrayRef:
retval = _copyArrayRef(from); retval = _copyArrayRef(from);
break; break;
case T_Aggreg: case T_Aggref:
retval = _copyAggreg(from); retval = _copyAggref(from);
break; break;
case T_SubLink: case T_SubLink:
retval = _copySubLink(from); retval = _copySubLink(from);

View File

@ -5,7 +5,7 @@
* *
* Copyright (c) 1994, Regents of the University of California * Copyright (c) 1994, Regents of the University of California
* *
* $Id: outfuncs.c,v 1.60 1999/01/21 16:08:36 vadim Exp $ * $Id: outfuncs.c,v 1.61 1999/01/24 00:28:20 momjian Exp $
* *
* NOTES * NOTES
* Every (plan) node in POSTGRES has an associated "out" routine which * Every (plan) node in POSTGRES has an associated "out" routine which
@ -686,10 +686,10 @@ _outConst(StringInfo str, Const *node)
} }
/* /*
* Aggreg * Aggref
*/ */
static void static void
_outAggreg(StringInfo str, Aggreg *node) _outAggref(StringInfo str, Aggref *node)
{ {
appendStringInfo(str, appendStringInfo(str,
" AGGREG :aggname %s :basetype %u :aggtype %u :target ", " AGGREG :aggname %s :basetype %u :aggtype %u :target ",
@ -1506,8 +1506,8 @@ _outNode(StringInfo str, void *obj)
case T_Const: case T_Const:
_outConst(str, obj); _outConst(str, obj);
break; break;
case T_Aggreg: case T_Aggref:
_outAggreg(str, obj); _outAggref(str, obj);
break; break;
case T_SubLink: case T_SubLink:
_outSubLink(str, obj); _outSubLink(str, obj);

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.42 1999/01/21 16:08:37 vadim Exp $ * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.43 1999/01/24 00:28:20 momjian Exp $
* *
* NOTES * NOTES
* Most of the read functions for plan nodes are tested. (In fact, they * Most of the read functions for plan nodes are tested. (In fact, they
@ -1161,19 +1161,19 @@ _readParam()
} }
/* ---------------- /* ----------------
* _readAggreg * _readAggref
* *
* Aggreg is a subclass of Node * Aggref is a subclass of Node
* ---------------- * ----------------
*/ */
static Aggreg * static Aggref *
_readAggreg() _readAggref()
{ {
Aggreg *local_node; Aggref *local_node;
char *token; char *token;
int length; int length;
local_node = makeNode(Aggreg); local_node = makeNode(Aggref);
token = lsptok(NULL, &length); /* eat :aggname */ token = lsptok(NULL, &length); /* eat :aggname */
token = lsptok(NULL, &length); /* get aggname */ token = lsptok(NULL, &length); /* get aggname */
@ -2040,7 +2040,7 @@ parsePlanString(void)
else if (!strncmp(token, "SORT", length)) else if (!strncmp(token, "SORT", length))
return_value = _readSort(); return_value = _readSort();
else if (!strncmp(token, "AGGREG", length)) else if (!strncmp(token, "AGGREG", length))
return_value = _readAggreg(); return_value = _readAggref();
else if (!strncmp(token, "SUBLINK", length)) else if (!strncmp(token, "SUBLINK", length))
return_value = _readSubLink(); return_value = _readSubLink();
else if (!strncmp(token, "AGG", length)) else if (!strncmp(token, "AGG", length))

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.31 1999/01/23 23:28:08 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.32 1999/01/24 00:28:20 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -611,8 +611,8 @@ replace_result_clause(Node *clause,
((Var *) clause)->varno = (Index) OUTER; ((Var *) clause)->varno = (Index) OUTER;
((Var *) clause)->varattno = subplanVar->resdom->resno; ((Var *) clause)->varattno = subplanVar->resdom->resno;
} }
else if (IsA(clause, Aggreg)) else if (IsA(clause, Aggref))
replace_result_clause(((Aggreg *) clause)->target, subplanTargetList); replace_result_clause(((Aggref *) clause)->target, subplanTargetList);
else if (is_funcclause(clause)) else if (is_funcclause(clause))
{ {
List *subExpr; List *subExpr;
@ -704,7 +704,7 @@ OperandIsInner(Node *opnd, int inner_relid)
* changes the target list of an Agg node so that it points to * changes the target list of an Agg node so that it points to
* the tuples returned by its left tree subplan. * the tuples returned by its left tree subplan.
* *
* We now also generate a linked list of Aggreg pointers for Agg. * We now also generate a linked list of Aggref pointers for Agg.
* *
*/ */
List * List *
@ -765,10 +765,10 @@ replace_agg_clause(Node *clause, List *subplanTargetList)
} }
return agg_list; return agg_list;
} }
else if (IsA(clause, Aggreg)) else if (IsA(clause, Aggref))
{ {
return lcons(clause, return lcons(clause,
replace_agg_clause(((Aggreg *) clause)->target, subplanTargetList)); replace_agg_clause(((Aggref *) clause)->target, subplanTargetList));
} }
else if (IsA(clause, ArrayRef)) else if (IsA(clause, ArrayRef))
{ {
@ -866,11 +866,11 @@ del_agg_clause(Node *clause)
foreach(t, ((Expr *) clause)->args) foreach(t, ((Expr *) clause)->args)
lfirst(t) = del_agg_clause(lfirst(t)); lfirst(t) = del_agg_clause(lfirst(t));
} }
else if (IsA(clause, Aggreg)) else if (IsA(clause, Aggref))
{ {
/* here is the real action, to remove the Agg node */ /* here is the real action, to remove the Agg node */
return del_agg_clause(((Aggreg *) clause)->target); return del_agg_clause(((Aggref *) clause)->target);
} }
else if (IsA(clause, ArrayRef)) else if (IsA(clause, ArrayRef))
@ -967,10 +967,10 @@ check_having_qual_for_vars(Node *clause, List *targetlist_so_far)
} }
return targetlist_so_far; return targetlist_so_far;
} }
else if (IsA(clause, Aggreg)) else if (IsA(clause, Aggref))
{ {
targetlist_so_far = targetlist_so_far =
check_having_qual_for_vars(((Aggreg *) clause)->target, targetlist_so_far); check_having_qual_for_vars(((Aggref *) clause)->target, targetlist_so_far);
return targetlist_so_far; return targetlist_so_far;
} }
else if (IsA(clause, ArrayRef)) else if (IsA(clause, ArrayRef))
@ -1100,10 +1100,10 @@ check_having_qual_for_aggs(Node *clause, List *subplanTargetList, List *groupCla
} }
return agg_list; return agg_list;
} }
else if (IsA(clause, Aggreg)) else if (IsA(clause, Aggref))
{ {
return lcons(clause, return lcons(clause,
check_having_qual_for_aggs(((Aggreg *) clause)->target, subplanTargetList, check_having_qual_for_aggs(((Aggref *) clause)->target, subplanTargetList,
groupClause)); groupClause));
} }
else if (IsA(clause, ArrayRef)) else if (IsA(clause, ArrayRef))

View File

@ -282,8 +282,8 @@ _finalize_primnode(void *expr, List **subplan)
else if (or_clause(expr) || and_clause(expr) || is_opclause(expr) || else if (or_clause(expr) || and_clause(expr) || is_opclause(expr) ||
not_clause(expr) || is_funcclause(expr)) not_clause(expr) || is_funcclause(expr))
return _finalize_primnode(((Expr *) expr)->args, subplan); return _finalize_primnode(((Expr *) expr)->args, subplan);
else if (IsA(expr, Aggreg)) else if (IsA(expr, Aggref))
return _finalize_primnode(((Aggreg *) expr)->target, subplan); return _finalize_primnode(((Aggref *) expr)->target, subplan);
else if (IsA(expr, ArrayRef)) else if (IsA(expr, ArrayRef))
{ {
result = _finalize_primnode(((ArrayRef *) expr)->refupperindexpr, subplan); result = _finalize_primnode(((ArrayRef *) expr)->refupperindexpr, subplan);
@ -349,9 +349,9 @@ SS_replace_correlation_vars(Node *expr)
not_clause(expr) || is_funcclause(expr)) not_clause(expr) || is_funcclause(expr))
((Expr *) expr)->args = (List *) ((Expr *) expr)->args = (List *)
SS_replace_correlation_vars((Node *) ((Expr *) expr)->args); SS_replace_correlation_vars((Node *) ((Expr *) expr)->args);
else if (IsA(expr, Aggreg)) else if (IsA(expr, Aggref))
((Aggreg *) expr)->target = ((Aggref *) expr)->target =
SS_replace_correlation_vars((Node *) ((Aggreg *) expr)->target); SS_replace_correlation_vars((Node *) ((Aggref *) expr)->target);
else if (IsA(expr, ArrayRef)) else if (IsA(expr, ArrayRef))
{ {
((ArrayRef *) expr)->refupperindexpr = (List *) ((ArrayRef *) expr)->refupperindexpr = (List *)
@ -530,8 +530,8 @@ SS_pull_subplan(void *expr)
else if (or_clause(expr) || and_clause(expr) || is_opclause(expr) || else if (or_clause(expr) || and_clause(expr) || is_opclause(expr) ||
not_clause(expr) || is_funcclause(expr)) not_clause(expr) || is_funcclause(expr))
return SS_pull_subplan(((Expr *) expr)->args); return SS_pull_subplan(((Expr *) expr)->args);
else if (IsA(expr, Aggreg)) else if (IsA(expr, Aggref))
return SS_pull_subplan(((Aggreg *) expr)->target); return SS_pull_subplan(((Aggref *) expr)->target);
else if (IsA(expr, ArrayRef)) else if (IsA(expr, ArrayRef))
{ {
result = SS_pull_subplan(((ArrayRef *) expr)->refupperindexpr); result = SS_pull_subplan(((ArrayRef *) expr)->refupperindexpr);

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.26 1998/12/04 15:34:14 thomas Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.27 1999/01/24 00:28:21 momjian Exp $
* *
* HISTORY * HISTORY
* AUTHOR DATE MAJOR EVENT * AUTHOR DATE MAJOR EVENT
@ -145,7 +145,7 @@ static bool
agg_clause(Node *clause) agg_clause(Node *clause)
{ {
return return
(clause != NULL && nodeTag(clause) == T_Aggreg); (clause != NULL && nodeTag(clause) == T_Aggref);
} }
/***************************************************************************** /*****************************************************************************
@ -548,7 +548,7 @@ fix_opid(Node *clause)
fix_opid((Node *) get_rightop((Expr *) clause)); fix_opid((Node *) get_rightop((Expr *) clause));
} }
else if (agg_clause(clause)) else if (agg_clause(clause))
fix_opid(((Aggreg *) clause)->target); fix_opid(((Aggref *) clause)->target);
else if (is_subplan(clause) && else if (is_subplan(clause) &&
((SubPlan *) ((Expr *) clause)->oper)->sublink->subLinkType != EXISTS_SUBLINK) ((SubPlan *) ((Expr *) clause)->oper)->sublink->subLinkType != EXISTS_SUBLINK)
{ {

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.21 1998/12/04 15:34:15 thomas Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.22 1999/01/24 00:28:22 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -483,7 +483,7 @@ flatten_tlistentry(Node *tlistentry, List *flat_tlist)
return ((Node *) make_funcclause((Func *) expr->oper, temp_result)); return ((Node *) make_funcclause((Func *) expr->oper, temp_result));
} }
else if (IsA(tlistentry, Aggreg)) else if (IsA(tlistentry, Aggref))
{ {
return tlistentry; return tlistentry;
} }

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.14 1998/12/04 15:34:15 thomas Exp $ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.15 1999/01/24 00:28:22 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -194,8 +194,8 @@ pull_var_clause(Node *clause)
retval = nconc(retval, retval = nconc(retval,
pull_var_clause(lfirst(((Expr *) lfirst(temp))->args))); pull_var_clause(lfirst(((Expr *) lfirst(temp))->args)));
} }
else if (IsA(clause, Aggreg)) else if (IsA(clause, Aggref))
retval = pull_var_clause(((Aggreg *) clause)->target); retval = pull_var_clause(((Aggref *) clause)->target);
else if (IsA(clause, ArrayRef)) else if (IsA(clause, ArrayRef))
{ {
List *temp; List *temp;

View File

@ -239,7 +239,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.61 1999/01/22 19:35:49 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.62 1999/01/24 00:28:23 momjian Exp $
* *
* HISTORY * HISTORY
* AUTHOR DATE MAJOR EVENT * AUTHOR DATE MAJOR EVENT

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parse_agg.c,v 1.15 1998/12/08 06:18:56 thomas Exp $ * $Header: /cvsroot/pgsql/src/backend/parser/parse_agg.c,v 1.16 1999/01/24 00:28:29 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -37,7 +37,7 @@ static bool tleIsAggOrGroupCol(TargetEntry *tle, List *groupClause);
/* /*
* contain_agg_clause-- * contain_agg_clause--
* Recursively find aggreg nodes from a clause. * Recursively find aggref nodes from a clause.
* *
* Returns true if any aggregate found. * Returns true if any aggregate found.
*/ */
@ -46,7 +46,7 @@ contain_agg_clause(Node *clause)
{ {
if (clause == NULL) if (clause == NULL)
return FALSE; return FALSE;
else if (IsA(clause, Aggreg)) else if (IsA(clause, Aggref))
return TRUE; return TRUE;
else if (IsA(clause, Iter)) else if (IsA(clause, Iter))
return contain_agg_clause(((Iter *) clause)->iterexpr); return contain_agg_clause(((Iter *) clause)->iterexpr);
@ -105,7 +105,7 @@ exprIsAggOrGroupCol(Node *expr, List *groupClause)
List *gl; List *gl;
if (expr == NULL || IsA(expr, Const) || if (expr == NULL || IsA(expr, Const) ||
IsA(expr, Param) || IsA(expr, Aggreg) || IsA(expr, Param) || IsA(expr, Aggref) ||
IsA(expr, SubLink)) /* can't handle currently !!! */ IsA(expr, SubLink)) /* can't handle currently !!! */
return TRUE; return TRUE;
@ -155,7 +155,7 @@ tleIsAggOrGroupCol(TargetEntry *tle, List *groupClause)
} }
} }
if (IsA(expr, Aggreg)) if (IsA(expr, Aggref))
return TRUE; return TRUE;
if (IsA(expr, Expr)) if (IsA(expr, Expr))
@ -217,7 +217,7 @@ parseCheckAggregates(ParseState *pstate, Query *qry)
} }
Aggreg * Aggref *
ParseAgg(ParseState *pstate, char *aggname, Oid basetype, ParseAgg(ParseState *pstate, char *aggname, Oid basetype,
List *target, int precedence) List *target, int precedence)
{ {
@ -225,7 +225,7 @@ ParseAgg(ParseState *pstate, char *aggname, Oid basetype,
Oid vartype; Oid vartype;
Oid xfn1; Oid xfn1;
Form_pg_aggregate aggform; Form_pg_aggregate aggform;
Aggreg *aggreg; Aggref *aggref;
HeapTuple theAggTuple; HeapTuple theAggTuple;
bool usenulls = false; bool usenulls = false;
@ -324,18 +324,18 @@ ParseAgg(ParseState *pstate, char *aggname, Oid basetype,
} }
} }
aggreg = makeNode(Aggreg); aggref = makeNode(Aggref);
aggreg->aggname = pstrdup(aggname); aggref->aggname = pstrdup(aggname);
aggreg->basetype = aggform->aggbasetype; aggref->basetype = aggform->aggbasetype;
aggreg->aggtype = fintype; aggref->aggtype = fintype;
aggreg->target = lfirst(target); aggref->target = lfirst(target);
if (usenulls) if (usenulls)
aggreg->usenulls = true; aggref->usenulls = true;
pstate->p_hasAggs = true; pstate->p_hasAggs = true;
return aggreg; return aggref;
} }
/* /*

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.38 1998/12/13 23:56:43 thomas Exp $ * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.39 1999/01/24 00:28:29 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -586,8 +586,8 @@ exprType(Node *expr)
case T_ArrayRef: case T_ArrayRef:
type = ((ArrayRef *) expr)->refelemtype; type = ((ArrayRef *) expr)->refelemtype;
break; break;
case T_Aggreg: case T_Aggref:
type = ((Aggreg *) expr)->aggtype; type = ((Aggref *) expr)->aggtype;
break; break;
case T_Param: case T_Param:
type = ((Param *) expr)->paramtype; type = ((Param *) expr)->paramtype;

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.32 1998/12/13 23:56:44 thomas Exp $ * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.33 1999/01/24 00:28:30 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -872,8 +872,8 @@ FigureColname(Node *expr, Node *resval)
{ {
switch (nodeTag(expr)) switch (nodeTag(expr))
{ {
case T_Aggreg: case T_Aggref:
return (char *) ((Aggreg *) expr)->aggname; return (char *) ((Aggref *) expr)->aggname;
case T_Expr: case T_Expr:
if (((Expr *) expr)->opType == FUNC_EXPR) if (((Expr *) expr)->opType == FUNC_EXPR)
{ {

View File

@ -6,7 +6,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/rewrite/Attic/locks.c,v 1.14 1998/10/02 16:27:45 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/rewrite/Attic/locks.c,v 1.15 1999/01/24 00:28:30 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -66,9 +66,9 @@ nodeThisLockWasTriggered(Node *node, int varno, AttrNumber attnum,
sublevels_up); sublevels_up);
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *) node; Aggref *agg = (Aggref *) node;
return nodeThisLockWasTriggered(agg->target, varno, attnum, return nodeThisLockWasTriggered(agg->target, varno, attnum,
sublevels_up); sublevels_up);

View File

@ -6,7 +6,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.29 1999/01/21 16:08:48 vadim Exp $ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.30 1999/01/24 00:28:30 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -54,11 +54,11 @@ static RewriteInfo *gatherRewriteMeta(Query *parsetree,
bool *instead_flag); bool *instead_flag);
static bool rangeTableEntry_used(Node *node, int rt_index, int sublevels_up); static bool rangeTableEntry_used(Node *node, int rt_index, int sublevels_up);
static bool attribute_used(Node *node, int rt_index, int attno, int sublevels_up); static bool attribute_used(Node *node, int rt_index, int attno, int sublevels_up);
static void modifyAggregUplevel(Node *node); static void modifyAggrefUplevel(Node *node);
static void modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int sublevels_up); static void modifyAggrefChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int sublevels_up);
static void modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr); static void modifyAggrefDropQual(Node **nodePtr, Node *orignode, Expr *expr);
static SubLink *modifyAggregMakeSublink(Expr *origexp, Query *parsetree); static SubLink *modifyAggrefMakeSublink(Expr *origexp, Query *parsetree);
static void modifyAggregQual(Node **nodePtr, Query *parsetree); static void modifyAggrefQual(Node **nodePtr, Query *parsetree);
static Query *fireRIRrules(Query *parsetree); static Query *fireRIRrules(Query *parsetree);
@ -160,9 +160,9 @@ rangeTableEntry_used(Node *node, int rt_index, int sublevels_up)
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
return rangeTableEntry_used( return rangeTableEntry_used(
(Node *)(agg->target), (Node *)(agg->target),
@ -396,9 +396,9 @@ attribute_used(Node *node, int rt_index, int attno, int sublevels_up)
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
return attribute_used( return attribute_used(
(Node *)(agg->target), (Node *)(agg->target),
@ -584,13 +584,13 @@ attribute_used(Node *node, int rt_index, int attno, int sublevels_up)
/* /*
* modifyAggregUplevel - * modifyAggrefUplevel -
* In the newly created sublink for an aggregate column used in * In the newly created sublink for an aggregate column used in
* the qualification, we must adjust the varlevelsup in all the * the qualification, we must adjust the varlevelsup in all the
* var nodes. * var nodes.
*/ */
static void static void
modifyAggregUplevel(Node *node) modifyAggrefUplevel(Node *node)
{ {
if (node == NULL) if (node == NULL)
return; return;
@ -600,16 +600,16 @@ modifyAggregUplevel(Node *node)
{ {
TargetEntry *tle = (TargetEntry *)node; TargetEntry *tle = (TargetEntry *)node;
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(tle->expr)); (Node *)(tle->expr));
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(agg->target)); (Node *)(agg->target));
} }
break; break;
@ -618,7 +618,7 @@ modifyAggregUplevel(Node *node)
{ {
Expr *exp = (Expr *)node; Expr *exp = (Expr *)node;
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(exp->args)); (Node *)(exp->args));
} }
break; break;
@ -627,7 +627,7 @@ modifyAggregUplevel(Node *node)
{ {
Iter *iter = (Iter *)node; Iter *iter = (Iter *)node;
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(iter->iterexpr)); (Node *)(iter->iterexpr));
} }
break; break;
@ -636,13 +636,13 @@ modifyAggregUplevel(Node *node)
{ {
ArrayRef *ref = (ArrayRef *)node; ArrayRef *ref = (ArrayRef *)node;
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(ref->refupperindexpr)); (Node *)(ref->refupperindexpr));
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(ref->reflowerindexpr)); (Node *)(ref->reflowerindexpr));
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(ref->refexpr)); (Node *)(ref->refexpr));
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(ref->refassgnexpr)); (Node *)(ref->refassgnexpr));
} }
break; break;
@ -666,7 +666,7 @@ modifyAggregUplevel(Node *node)
List *l; List *l;
foreach (l, (List *)node) foreach (l, (List *)node)
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)lfirst(l)); (Node *)lfirst(l));
} }
break; break;
@ -675,13 +675,13 @@ modifyAggregUplevel(Node *node)
{ {
SubLink *sub = (SubLink *)node; SubLink *sub = (SubLink *)node;
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(sub->lefthand)); (Node *)(sub->lefthand));
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(sub->oper)); (Node *)(sub->oper));
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(sub->subselect)); (Node *)(sub->subselect));
} }
break; break;
@ -690,22 +690,22 @@ modifyAggregUplevel(Node *node)
{ {
Query *qry = (Query *)node; Query *qry = (Query *)node;
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(qry->targetList)); (Node *)(qry->targetList));
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(qry->qual)); (Node *)(qry->qual));
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(qry->havingQual)); (Node *)(qry->havingQual));
modifyAggregUplevel( modifyAggrefUplevel(
(Node *)(qry->groupClause)); (Node *)(qry->groupClause));
} }
break; break;
default: default:
elog(NOTICE, "unknown node tag %d in modifyAggregUplevel()", nodeTag(node)); elog(NOTICE, "unknown node tag %d in modifyAggrefUplevel()", nodeTag(node));
elog(NOTICE, "Node is: %s", nodeToString(node)); elog(NOTICE, "Node is: %s", nodeToString(node));
break; break;
@ -715,13 +715,13 @@ modifyAggregUplevel(Node *node)
/* /*
* modifyAggregChangeVarnodes - * modifyAggrefChangeVarnodes -
* Change the var nodes in a sublink created for an aggregate column * Change the var nodes in a sublink created for an aggregate column
* used in the qualification that is subject of the aggregate * used in the qualification that is subject of the aggregate
* function to point to the correct local RTE. * function to point to the correct local RTE.
*/ */
static void static void
modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int sublevels_up) modifyAggrefChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int sublevels_up)
{ {
Node *node = *nodePtr; Node *node = *nodePtr;
@ -733,7 +733,7 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
{ {
TargetEntry *tle = (TargetEntry *)node; TargetEntry *tle = (TargetEntry *)node;
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(tle->expr)), (Node **)(&(tle->expr)),
rt_index, rt_index,
new_index, new_index,
@ -741,11 +741,11 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(agg->target)), (Node **)(&(agg->target)),
rt_index, rt_index,
new_index, new_index,
@ -757,7 +757,7 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
{ {
GroupClause *grp = (GroupClause *)node; GroupClause *grp = (GroupClause *)node;
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(grp->entry)), (Node **)(&(grp->entry)),
rt_index, rt_index,
new_index, new_index,
@ -769,7 +769,7 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
{ {
Expr *exp = (Expr *)node; Expr *exp = (Expr *)node;
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(exp->args)), (Node **)(&(exp->args)),
rt_index, rt_index,
new_index, new_index,
@ -781,7 +781,7 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
{ {
Iter *iter = (Iter *)node; Iter *iter = (Iter *)node;
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(iter->iterexpr)), (Node **)(&(iter->iterexpr)),
rt_index, rt_index,
new_index, new_index,
@ -793,22 +793,22 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
{ {
ArrayRef *ref = (ArrayRef *)node; ArrayRef *ref = (ArrayRef *)node;
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(ref->refupperindexpr)), (Node **)(&(ref->refupperindexpr)),
rt_index, rt_index,
new_index, new_index,
sublevels_up); sublevels_up);
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(ref->reflowerindexpr)), (Node **)(&(ref->reflowerindexpr)),
rt_index, rt_index,
new_index, new_index,
sublevels_up); sublevels_up);
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(ref->refexpr)), (Node **)(&(ref->refexpr)),
rt_index, rt_index,
new_index, new_index,
sublevels_up); sublevels_up);
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(ref->refassgnexpr)), (Node **)(&(ref->refassgnexpr)),
rt_index, rt_index,
new_index, new_index,
@ -843,7 +843,7 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
List *l; List *l;
foreach (l, (List *)node) foreach (l, (List *)node)
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&lfirst(l)), (Node **)(&lfirst(l)),
rt_index, rt_index,
new_index, new_index,
@ -855,19 +855,19 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
{ {
SubLink *sub = (SubLink *)node; SubLink *sub = (SubLink *)node;
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(sub->lefthand)), (Node **)(&(sub->lefthand)),
rt_index, rt_index,
new_index, new_index,
sublevels_up); sublevels_up);
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(sub->oper)), (Node **)(&(sub->oper)),
rt_index, rt_index,
new_index, new_index,
sublevels_up); sublevels_up);
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(sub->subselect)), (Node **)(&(sub->subselect)),
rt_index, rt_index,
new_index, new_index,
@ -879,25 +879,25 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
{ {
Query *qry = (Query *)node; Query *qry = (Query *)node;
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(qry->targetList)), (Node **)(&(qry->targetList)),
rt_index, rt_index,
new_index, new_index,
sublevels_up); sublevels_up);
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(qry->qual)), (Node **)(&(qry->qual)),
rt_index, rt_index,
new_index, new_index,
sublevels_up); sublevels_up);
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(qry->havingQual)), (Node **)(&(qry->havingQual)),
rt_index, rt_index,
new_index, new_index,
sublevels_up); sublevels_up);
modifyAggregChangeVarnodes( modifyAggrefChangeVarnodes(
(Node **)(&(qry->groupClause)), (Node **)(&(qry->groupClause)),
rt_index, rt_index,
new_index, new_index,
@ -906,7 +906,7 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
break; break;
default: default:
elog(NOTICE, "unknown node tag %d in modifyAggregChangeVarnodes()", nodeTag(node)); elog(NOTICE, "unknown node tag %d in modifyAggrefChangeVarnodes()", nodeTag(node));
elog(NOTICE, "Node is: %s", nodeToString(node)); elog(NOTICE, "Node is: %s", nodeToString(node));
break; break;
@ -916,11 +916,11 @@ modifyAggregChangeVarnodes(Node **nodePtr, int rt_index, int new_index, int subl
/* /*
* modifyAggregDropQual - * modifyAggrefDropQual -
* remove the pure aggreg clase from a qualification * remove the pure aggref clase from a qualification
*/ */
static void static void
modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr) modifyAggrefDropQual(Node **nodePtr, Node *orignode, Expr *expr)
{ {
Node *node = *nodePtr; Node *node = *nodePtr;
@ -931,12 +931,12 @@ modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr)
case T_Var: case T_Var:
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
Aggreg *oagg = (Aggreg *)orignode; Aggref *oagg = (Aggref *)orignode;
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(agg->target)), (Node **)(&(agg->target)),
(Node *)(oagg->target), (Node *)(oagg->target),
expr); expr);
@ -973,7 +973,7 @@ modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr)
*nodePtr = (Node *)ctrue; *nodePtr = (Node *)ctrue;
} }
else else
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(this_expr->args)), (Node **)(&(this_expr->args)),
(Node *)(orig_expr->args), (Node *)(orig_expr->args),
expr); expr);
@ -985,7 +985,7 @@ modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr)
Iter *iter = (Iter *)node; Iter *iter = (Iter *)node;
Iter *oiter = (Iter *)orignode; Iter *oiter = (Iter *)orignode;
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(iter->iterexpr)), (Node **)(&(iter->iterexpr)),
(Node *)(oiter->iterexpr), (Node *)(oiter->iterexpr),
expr); expr);
@ -997,19 +997,19 @@ modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr)
ArrayRef *ref = (ArrayRef *)node; ArrayRef *ref = (ArrayRef *)node;
ArrayRef *oref = (ArrayRef *)orignode; ArrayRef *oref = (ArrayRef *)orignode;
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(ref->refupperindexpr)), (Node **)(&(ref->refupperindexpr)),
(Node *)(oref->refupperindexpr), (Node *)(oref->refupperindexpr),
expr); expr);
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(ref->reflowerindexpr)), (Node **)(&(ref->reflowerindexpr)),
(Node *)(oref->reflowerindexpr), (Node *)(oref->reflowerindexpr),
expr); expr);
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(ref->refexpr)), (Node **)(&(ref->refexpr)),
(Node *)(oref->refexpr), (Node *)(oref->refexpr),
expr); expr);
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(ref->refassgnexpr)), (Node **)(&(ref->refassgnexpr)),
(Node *)(oref->refassgnexpr), (Node *)(oref->refassgnexpr),
expr); expr);
@ -1023,7 +1023,7 @@ modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr)
int li = 0; int li = 0;
foreach (l, (List *)node) { foreach (l, (List *)node) {
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(lfirst(l))), (Node **)(&(lfirst(l))),
(Node *)nth(li, ol), (Node *)nth(li, ol),
expr); expr);
@ -1037,7 +1037,7 @@ modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr)
SubLink *sub = (SubLink *)node; SubLink *sub = (SubLink *)node;
SubLink *osub = (SubLink *)orignode; SubLink *osub = (SubLink *)orignode;
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(sub->subselect)), (Node **)(&(sub->subselect)),
(Node *)(osub->subselect), (Node *)(osub->subselect),
expr); expr);
@ -1049,12 +1049,12 @@ modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr)
Query *qry = (Query *)node; Query *qry = (Query *)node;
Query *oqry = (Query *)orignode; Query *oqry = (Query *)orignode;
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(qry->qual)), (Node **)(&(qry->qual)),
(Node *)(oqry->qual), (Node *)(oqry->qual),
expr); expr);
modifyAggregDropQual( modifyAggrefDropQual(
(Node **)(&(qry->havingQual)), (Node **)(&(qry->havingQual)),
(Node *)(oqry->havingQual), (Node *)(oqry->havingQual),
expr); expr);
@ -1062,7 +1062,7 @@ modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr)
break; break;
default: default:
elog(NOTICE, "unknown node tag %d in modifyAggregDropQual()", nodeTag(node)); elog(NOTICE, "unknown node tag %d in modifyAggrefDropQual()", nodeTag(node));
elog(NOTICE, "Node is: %s", nodeToString(node)); elog(NOTICE, "Node is: %s", nodeToString(node));
break; break;
@ -1072,38 +1072,38 @@ modifyAggregDropQual(Node **nodePtr, Node *orignode, Expr *expr)
/* /*
* modifyAggregMakeSublink - * modifyAggrefMakeSublink -
* Create a sublink node for a qualification expression that * Create a sublink node for a qualification expression that
* uses an aggregate column of a view * uses an aggregate column of a view
*/ */
static SubLink * static SubLink *
modifyAggregMakeSublink(Expr *origexp, Query *parsetree) modifyAggrefMakeSublink(Expr *origexp, Query *parsetree)
{ {
SubLink *sublink; SubLink *sublink;
Query *subquery; Query *subquery;
Node *subqual; Node *subqual;
RangeTblEntry *rte; RangeTblEntry *rte;
Aggreg *aggreg; Aggref *aggref;
Var *target; Var *target;
TargetEntry *tle; TargetEntry *tle;
Resdom *resdom; Resdom *resdom;
Expr *exp = copyObject(origexp); Expr *exp = copyObject(origexp);
if (nodeTag(nth(0, exp->args)) == T_Aggreg) if (nodeTag(nth(0, exp->args)) == T_Aggref)
{ {
if (nodeTag(nth(1, exp->args)) == T_Aggreg) if (nodeTag(nth(1, exp->args)) == T_Aggref)
elog(ERROR, "rewrite: comparision of 2 aggregate columns not supported"); elog(ERROR, "rewrite: comparision of 2 aggregate columns not supported");
else else
elog(ERROR, "rewrite: aggregate column of view must be at rigth side in qual"); elog(ERROR, "rewrite: aggregate column of view must be at rigth side in qual");
} }
aggreg = (Aggreg *)nth(1, exp->args); aggref = (Aggref *)nth(1, exp->args);
target = (Var *)(aggreg->target); target = (Var *)(aggref->target);
rte = (RangeTblEntry *)nth(target->varno - 1, parsetree->rtable); rte = (RangeTblEntry *)nth(target->varno - 1, parsetree->rtable);
tle = makeNode(TargetEntry); tle = makeNode(TargetEntry);
resdom = makeNode(Resdom); resdom = makeNode(Resdom);
aggreg->usenulls = TRUE; aggref->usenulls = TRUE;
resdom->resno = 1; resdom->resno = 1;
resdom->restype = ((Oper *)(exp->oper))->opresulttype; resdom->restype = ((Oper *)(exp->oper))->opresulttype;
@ -1114,10 +1114,10 @@ modifyAggregMakeSublink(Expr *origexp, Query *parsetree)
resdom->resjunk = 0; resdom->resjunk = 0;
tle->resdom = resdom; tle->resdom = resdom;
tle->expr = (Node *)aggreg; tle->expr = (Node *)aggref;
subqual = copyObject(parsetree->qual); subqual = copyObject(parsetree->qual);
modifyAggregDropQual((Node **)&subqual, (Node *)parsetree->qual, origexp); modifyAggrefDropQual((Node **)&subqual, (Node *)parsetree->qual, origexp);
sublink = makeNode(SubLink); sublink = makeNode(SubLink);
sublink->subLinkType = EXPR_SUBLINK; sublink->subLinkType = EXPR_SUBLINK;
@ -1148,13 +1148,13 @@ modifyAggregMakeSublink(Expr *origexp, Query *parsetree)
subquery->unionClause = NULL; subquery->unionClause = NULL;
modifyAggregUplevel((Node *)sublink); modifyAggrefUplevel((Node *)sublink);
modifyAggregChangeVarnodes((Node **)&(sublink->lefthand), target->varno, modifyAggrefChangeVarnodes((Node **)&(sublink->lefthand), target->varno,
1, target->varlevelsup); 1, target->varlevelsup);
modifyAggregChangeVarnodes((Node **)&(sublink->oper), target->varno, modifyAggrefChangeVarnodes((Node **)&(sublink->oper), target->varno,
1, target->varlevelsup); 1, target->varlevelsup);
modifyAggregChangeVarnodes((Node **)&(sublink->subselect), target->varno, modifyAggrefChangeVarnodes((Node **)&(sublink->subselect), target->varno,
1, target->varlevelsup); 1, target->varlevelsup);
return sublink; return sublink;
@ -1162,14 +1162,14 @@ modifyAggregMakeSublink(Expr *origexp, Query *parsetree)
/* /*
* modifyAggregQual - * modifyAggrefQual -
* Search for qualification expressions that contain aggregate * Search for qualification expressions that contain aggregate
* functions and substiture them by sublinks. These expressions * functions and substiture them by sublinks. These expressions
* originally come from qualifications that use aggregate columns * originally come from qualifications that use aggregate columns
* of a view. * of a view.
*/ */
static void static void
modifyAggregQual(Node **nodePtr, Query *parsetree) modifyAggrefQual(Node **nodePtr, Query *parsetree)
{ {
Node *node = *nodePtr; Node *node = *nodePtr;
@ -1190,7 +1190,7 @@ modifyAggregQual(Node **nodePtr, Query *parsetree)
{ {
GroupClause *grp = (GroupClause *)node; GroupClause *grp = (GroupClause *)node;
modifyAggregQual( modifyAggrefQual(
(Node **)(&(grp->entry)), (Node **)(&(grp->entry)),
parsetree); parsetree);
} }
@ -1203,22 +1203,22 @@ modifyAggregQual(Node **nodePtr, Query *parsetree)
if (length(exp->args) != 2) { if (length(exp->args) != 2) {
modifyAggregQual( modifyAggrefQual(
(Node **)(&(exp->args)), (Node **)(&(exp->args)),
parsetree); parsetree);
break; break;
} }
if (nodeTag(nth(0, exp->args)) != T_Aggreg && if (nodeTag(nth(0, exp->args)) != T_Aggref &&
nodeTag(nth(1, exp->args)) != T_Aggreg) { nodeTag(nth(1, exp->args)) != T_Aggref) {
modifyAggregQual( modifyAggrefQual(
(Node **)(&(exp->args)), (Node **)(&(exp->args)),
parsetree); parsetree);
break; break;
} }
sub = modifyAggregMakeSublink(exp, sub = modifyAggrefMakeSublink(exp,
parsetree); parsetree);
*nodePtr = (Node *)sub; *nodePtr = (Node *)sub;
@ -1231,11 +1231,11 @@ modifyAggregQual(Node **nodePtr, Query *parsetree)
/* We're calling recursively, /* We're calling recursively,
* and this routine knows how to handle lists * and this routine knows how to handle lists
* so let it do the work to handle the WHEN clauses... */ * so let it do the work to handle the WHEN clauses... */
modifyAggregQual( modifyAggrefQual(
(Node **)(&(((CaseExpr *)node)->args)), (Node **)(&(((CaseExpr *)node)->args)),
parsetree); parsetree);
modifyAggregQual( modifyAggrefQual(
(Node **)(&(((CaseExpr *)node)->defresult)), (Node **)(&(((CaseExpr *)node)->defresult)),
parsetree); parsetree);
} }
@ -1243,11 +1243,11 @@ modifyAggregQual(Node **nodePtr, Query *parsetree)
case T_CaseWhen: case T_CaseWhen:
{ {
modifyAggregQual( modifyAggrefQual(
(Node **)(&(((CaseWhen *)node)->expr)), (Node **)(&(((CaseWhen *)node)->expr)),
parsetree); parsetree);
modifyAggregQual( modifyAggrefQual(
(Node **)(&(((CaseWhen *)node)->result)), (Node **)(&(((CaseWhen *)node)->result)),
parsetree); parsetree);
} }
@ -1257,7 +1257,7 @@ modifyAggregQual(Node **nodePtr, Query *parsetree)
{ {
Iter *iter = (Iter *)node; Iter *iter = (Iter *)node;
modifyAggregQual( modifyAggrefQual(
(Node **)(&(iter->iterexpr)), (Node **)(&(iter->iterexpr)),
parsetree); parsetree);
} }
@ -1267,16 +1267,16 @@ modifyAggregQual(Node **nodePtr, Query *parsetree)
{ {
ArrayRef *ref = (ArrayRef *)node; ArrayRef *ref = (ArrayRef *)node;
modifyAggregQual( modifyAggrefQual(
(Node **)(&(ref->refupperindexpr)), (Node **)(&(ref->refupperindexpr)),
parsetree); parsetree);
modifyAggregQual( modifyAggrefQual(
(Node **)(&(ref->reflowerindexpr)), (Node **)(&(ref->reflowerindexpr)),
parsetree); parsetree);
modifyAggregQual( modifyAggrefQual(
(Node **)(&(ref->refexpr)), (Node **)(&(ref->refexpr)),
parsetree); parsetree);
modifyAggregQual( modifyAggrefQual(
(Node **)(&(ref->refassgnexpr)), (Node **)(&(ref->refassgnexpr)),
parsetree); parsetree);
} }
@ -1287,7 +1287,7 @@ modifyAggregQual(Node **nodePtr, Query *parsetree)
List *l; List *l;
foreach (l, (List *)node) foreach (l, (List *)node)
modifyAggregQual( modifyAggrefQual(
(Node **)(&(lfirst(l))), (Node **)(&(lfirst(l))),
parsetree); parsetree);
} }
@ -1297,7 +1297,7 @@ modifyAggregQual(Node **nodePtr, Query *parsetree)
{ {
SubLink *sub = (SubLink *)node; SubLink *sub = (SubLink *)node;
modifyAggregQual( modifyAggrefQual(
(Node **)(&(sub->subselect)), (Node **)(&(sub->subselect)),
(Query *)(sub->subselect)); (Query *)(sub->subselect));
} }
@ -1307,18 +1307,18 @@ modifyAggregQual(Node **nodePtr, Query *parsetree)
{ {
Query *qry = (Query *)node; Query *qry = (Query *)node;
modifyAggregQual( modifyAggrefQual(
(Node **)(&(qry->qual)), (Node **)(&(qry->qual)),
parsetree); parsetree);
modifyAggregQual( modifyAggrefQual(
(Node **)(&(qry->havingQual)), (Node **)(&(qry->havingQual)),
parsetree); parsetree);
} }
break; break;
default: default:
elog(NOTICE, "unknown node tag %d in modifyAggregQual()", nodeTag(node)); elog(NOTICE, "unknown node tag %d in modifyAggrefQual()", nodeTag(node));
elog(NOTICE, "Node is: %s", nodeToString(node)); elog(NOTICE, "Node is: %s", nodeToString(node));
break; break;
@ -1376,9 +1376,9 @@ apply_RIR_adjust_sublevel(Node *node, int sublevels_up)
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
apply_RIR_adjust_sublevel( apply_RIR_adjust_sublevel(
(Node *)(agg->target), (Node *)(agg->target),
@ -1525,9 +1525,9 @@ apply_RIR_view(Node **nodePtr, int rt_index, RangeTblEntry *rte, List *tlist, in
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
apply_RIR_view( apply_RIR_view(
(Node **)(&(agg->target)), (Node **)(&(agg->target)),
@ -1924,9 +1924,9 @@ fireRIRonSubselect(Node *node)
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
fireRIRonSubselect( fireRIRonSubselect(
(Node *)(agg->target)); (Node *)(agg->target));
@ -2143,7 +2143,7 @@ fireRIRrules(Query *parsetree)
} }
fireRIRonSubselect((Node *) parsetree); fireRIRonSubselect((Node *) parsetree);
modifyAggregQual((Node **) &(parsetree->qual), parsetree); modifyAggrefQual((Node **) &(parsetree->qual), parsetree);
return parsetree; return parsetree;
} }

View File

@ -6,7 +6,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.24 1999/01/18 00:09:56 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.25 1999/01/24 00:28:31 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -53,9 +53,9 @@ OffsetVarNodes(Node *node, int offset, int sublevels_up)
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
OffsetVarNodes( OffsetVarNodes(
(Node *)(agg->target), (Node *)(agg->target),
@ -271,9 +271,9 @@ ChangeVarNodes(Node *node, int rt_index, int new_index, int sublevels_up)
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *)node; Aggref *agg = (Aggref *)node;
ChangeVarNodes( ChangeVarNodes(
(Node *)(agg->target), (Node *)(agg->target),
@ -641,8 +641,8 @@ ResolveNew(RewriteInfo *info, List *targetlist, Node **nodePtr,
ResolveNew(info, targetlist, &((TargetEntry *) node)->expr, ResolveNew(info, targetlist, &((TargetEntry *) node)->expr,
sublevels_up); sublevels_up);
break; break;
case T_Aggreg: case T_Aggref:
ResolveNew(info, targetlist, &((Aggreg *) node)->target, ResolveNew(info, targetlist, &((Aggref *) node)->target,
sublevels_up); sublevels_up);
break; break;
case T_Expr: case T_Expr:
@ -746,9 +746,9 @@ nodeHandleRIRAttributeRule(Node **nodePtr,
sublevels_up); sublevels_up);
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *) node; Aggref *agg = (Aggref *) node;
nodeHandleRIRAttributeRule(&agg->target, rtable, targetlist, nodeHandleRIRAttributeRule(&agg->target, rtable, targetlist,
rt_index, attr_num, modified, badsql, rt_index, attr_num, modified, badsql,
@ -911,9 +911,9 @@ nodeHandleViewRule(Node **nodePtr,
rt_index, modified, sublevels_up); rt_index, modified, sublevels_up);
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *) node; Aggref *agg = (Aggref *) node;
nodeHandleViewRule(&(agg->target), rtable, targetlist, nodeHandleViewRule(&(agg->target), rtable, targetlist,
rt_index, modified, sublevels_up); rt_index, modified, sublevels_up);

View File

@ -3,7 +3,7 @@
* out of it's tuple * out of it's tuple
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.6 1998/10/26 01:01:35 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.7 1999/01/24 00:28:32 momjian Exp $
* *
* This software is copyrighted by Jan Wieck - Hamburg. * This software is copyrighted by Jan Wieck - Hamburg.
* *
@ -1245,9 +1245,9 @@ get_rule_expr(QryHier *qh, int rt_index, Node *node, bool varprefix)
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *) node; Aggref *agg = (Aggref *) node;
strcat(buf, "\""); strcat(buf, "\"");
strcat(buf, agg->aggname); strcat(buf, agg->aggname);
@ -1727,9 +1727,9 @@ check_if_rte_used(int rt_index, Node *node, int sup)
} }
break; break;
case T_Aggreg: case T_Aggref:
{ {
Aggreg *agg = (Aggreg *) node; Aggref *agg = (Aggref *) node;
return check_if_rte_used(rt_index, return check_if_rte_used(rt_index,
(Node *) (agg->target), sup); (Node *) (agg->target), sup);

View File

@ -6,7 +6,7 @@
* *
* Copyright (c) 1994, Regents of the University of California * Copyright (c) 1994, Regents of the University of California
* *
* $Id: nodes.h,v 1.34 1999/01/21 16:08:53 vadim Exp $ * $Id: nodes.h,v 1.35 1999/01/24 00:28:33 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -60,7 +60,7 @@ typedef enum NodeTag
T_Oper, T_Oper,
T_Const, T_Const,
T_Param, T_Param,
T_Aggreg, T_Aggref,
T_SubLink, T_SubLink,
T_Func, T_Func,
T_Array, T_Array,

View File

@ -6,7 +6,7 @@
* *
* Copyright (c) 1994, Regents of the University of California * Copyright (c) 1994, Regents of the University of California
* *
* $Id: primnodes.h,v 1.23 1998/09/01 04:36:47 momjian Exp $ * $Id: primnodes.h,v 1.24 1999/01/24 00:28:34 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -255,7 +255,7 @@ typedef struct Func
} Func; } Func;
/* ---------------- /* ----------------
* Aggreg * Aggref
* aggname - name of the aggregate * aggname - name of the aggregate
* basetype - base type Oid of the aggregate * basetype - base type Oid of the aggregate
* aggtype - type Oid of final result of the aggregate * aggtype - type Oid of final result of the aggregate
@ -263,7 +263,7 @@ typedef struct Func
* aggno - index to ecxt_values * aggno - index to ecxt_values
* ---------------- * ----------------
*/ */
typedef struct Aggreg typedef struct Aggref
{ {
NodeTag type; NodeTag type;
char *aggname; char *aggname;
@ -272,7 +272,7 @@ typedef struct Aggreg
Node *target; Node *target;
int aggno; int aggno;
bool usenulls; bool usenulls;
} Aggreg; } Aggref;
/* ---------------- /* ----------------
* SubLink * SubLink

View File

@ -6,7 +6,7 @@
* *
* Copyright (c) 1994, Regents of the University of California * Copyright (c) 1994, Regents of the University of California
* *
* $Id: parse_agg.h,v 1.7 1998/09/01 04:37:29 momjian Exp $ * $Id: parse_agg.h,v 1.8 1999/01/24 00:28:37 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -18,9 +18,9 @@
#include <nodes/primnodes.h> #include <nodes/primnodes.h>
#include <parser/parse_node.h> #include <parser/parse_node.h>
extern void AddAggToParseState(ParseState *pstate, Aggreg *aggreg); extern void AddAggToParseState(ParseState *pstate, Aggref *aggref);
extern void parseCheckAggregates(ParseState *pstate, Query *qry); extern void parseCheckAggregates(ParseState *pstate, Query *qry);
extern Aggreg *ParseAgg(ParseState *pstate, char *aggname, Oid basetype, extern Aggref *ParseAgg(ParseState *pstate, char *aggname, Oid basetype,
List *target, int precedence); List *target, int precedence);
extern void agg_error(char *caller, char *aggname, Oid basetypeID); extern void agg_error(char *caller, char *aggname, Oid basetypeID);