I have a small db which I am using to test it. Moreover I am new to the terms. What would you mean by 'regression'?
Also, I am using eclipse for browsing the code. It resolves all references and function calls, declarations, definitions etc. Regards, Vaibhav On Fri, Apr 29, 2011 at 3:31 PM, Ashutosh Bapat < ashutosh.ba...@enterprisedb.com> wrote: > Is regression clean? > > Have you looked at how the member is used using some code browsing tool > like cscope by examining it's every occurrence? PG uses simulated run time > polymorphism a lot, so any Node should examined carefully from that angle > too. Even after all of that if you think that it's not being used, you can > submit a patch to community removing that member. Somebody from community > reviewers will review and commit the patch if they find it correct and > useful. > > Read http://wiki.postgresql.org/wiki/Submitting_a_Patch before submitting > the patch. > > > On Fri, Apr 29, 2011 at 3:22 PM, Vaibhav Kaushal < > vaibhavkaushal...@gmail.com> wrote: > >> I tried all aggregates - min,max,sum,count and avg. all are working. What >> do you suggest now? >> >> >> On Fri, Apr 29, 2011 at 11:30 AM, Ashutosh Bapat < >> ashutosh.ba...@enterprisedb.com> wrote: >> >>> >>> >>> On Thu, Apr 28, 2011 at 4:21 PM, Vaibhav Kaushal < >>> vaibhavkaushal...@gmail.com> wrote: >>> >>>> Thanks a lot. I was browsing the code and was thinking this would be the >>>> most probable scenario. >>>> >>>> But, the point is that even after removing the args initialization part >>>> in the ExecInitExpr for AggrefState, the sum() function is working. I >>>> believe that is also a aggregate function! If yes, then how is it working >>>> if >>>> I dd not allow the args to be initialized. The debugger says that >>>> ExecEvalAggref was called and the results returned are true. >>>> >>>> >>> Did you check the same thing with avg, or any statistical aggregates. Sum >>> does not need all the aggregate infrastructure in place, for example >>> finalisation function. May be after removing initialization part you want to >>> run regression (or at least aggregates.sql) to see what it breaks. >>> >>> >>>> Regards, >>>> Vaibhav >>>> >>>> >>>> On Thu, Apr 28, 2011 at 2:38 PM, Ashutosh Bapat < >>>> ashutosh.ba...@enterprisedb.com> wrote: >>>> >>>>> The args in AggrefExprState, are used in the functions ExecAgg, >>>>> ExecInitAgg and their minions to evaluate the aggregates. The >>>>> ExecEvalAggref() merely retrieves the results of aggregation calculated >>>>> during ExecAgg. >>>>> >>>>> >>>>> On Tue, Apr 26, 2011 at 12:04 PM, Vaibhav Kaushal < >>>>> vaibhavkaushal...@gmail.com> wrote: >>>>> >>>>>> Hello all, >>>>>> >>>>>> While examining the executor, I was wondering what the *args part of >>>>>> AggrefExprState nodes contain. I found that the Aggref (Expr)'s args >>>>>> list >>>>>> is a list of TargetEntry nodes. But the state node's args is initialized >>>>>> in >>>>>> ExecInitExpr as: >>>>>> >>>>>> astate->args = (List *) ExecInitExpr((Expr *) aggref->args, >>>>>> parent); >>>>>> >>>>>> This would mean that the args is actually a ExprState node list with >>>>>> one single item (the ExprState node / tree). I believe it potentially >>>>>> contains the execution tree to determine the state / value of the aggref >>>>>> (sub)expression. But then in the ExecEvalAggref function I do not see the >>>>>> args coming into picture at all! I am also unable to find a call to some >>>>>> function for executing the state node created in the args list. Also, no >>>>>> value is being extracted from that node! Why is it so? >>>>>> >>>>>> For quick reference I am adding the function (may be you don't need it >>>>>> but still... its a small one): >>>>>> >>>>>> /* ---------------------------------------------------------------- >>>>>> * ExecEvalAggref >>>>>> * >>>>>> * Returns a Datum whose value is the value of the precomputed >>>>>> * aggregate found in the given expression context. >>>>>> * ---------------------------------------------------------------- >>>>>> */ >>>>>> static Datum >>>>>> ExecEvalAggref(AggrefExprState *aggref, ExprContext *econtext, >>>>>> bool *isNull, ExprDoneCond *isDone) >>>>>> { >>>>>> if (isDone) >>>>>> *isDone = ExprSingleResult; >>>>>> >>>>>> if (econtext->ecxt_aggvalues == NULL) /* safety check */ >>>>>> elog(ERROR, "no aggregates in this expression context"); >>>>>> >>>>>> *isNull = econtext->ecxt_aggnulls[aggref->aggno]; >>>>>> return econtext->ecxt_aggvalues[aggref->aggno]; >>>>>> } >>>>>> >>>>>> >>>>>> What is the use of args in AggrefExprState node here? Is it there just >>>>>> for some historical reason? >>>>>> >>>>>> Regards, >>>>>> Vaibhav >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Best Wishes, >>>>> Ashutosh Bapat >>>>> EntepriseDB Corporation >>>>> The Enterprise Postgres Company >>>>> >>>>> >>>> >>> >>> >>> -- >>> Best Wishes, >>> Ashutosh Bapat >>> EntepriseDB Corporation >>> The Enterprise Postgres Company >>> >>> >> > > > -- > Best Wishes, > Ashutosh Bapat > EntepriseDB Corporation > The Enterprise Postgres Company > >