On Thu, Jan 16, 2014 at 9:45 AM, Florian Pflug <f...@phlo.org> wrote:

> BTW, AVG() and STDDEV() have the same issue. The problem is just partially
> masked by the division by N (or N-1) at the end, because we always emit as
> least 16 fractional digits when dividing. So you have to have an input
> value with a larger scale than that to trigger it.
>
> For the following query
>
>   select avg(x) over (order by i rows between current row and 1 following)
>   from (values
>     (1,1), (2,1), (3,0.000000000000000000000000000000001), (4,1), (5,1)
>   ) t(i,x);
>
> 9.3 returns
>                  avg
> -------------------------------------
>               1.00000000000000000000
>  0.500000000000000000000000000000001
>  0.500000000000000000000000000000001
>               1.00000000000000000000
>               1.00000000000000000000
>
> but HEAD+patch returns
>                  avg
> -------------------------------------
>               1.00000000000000000000
>  0.500000000000000000000000000000001
>  0.500000000000000000000000000000001
>  1.000000000000000000000000000000000
>  1.000000000000000000000000000000000
>
>
Uhhh, that's bad news indeed. That means that I'll need to remove not only
all inverse transition functions for all aggregates on numeric types, but
also avg for int types, the stddev* functions for everything, since they
internally use numeric. I guess that only leaves SUM for smallint, int,
bigint, cash and interval, along with count(exp), count(*)...



> I have to admit that I'm *very* tempted to suggest we simply ignore this -
> but that *would* mean accepting that windowed aggregates are non-
> deterministic in the sense that their result (even if only in the number
> of trailing zeros) depends on values outside of the frame. Which, I guess,
> is a box that best stays closed...
>
>
Yeah, I can understand the temptation but I agree we can't go changing
results.


> I'm currently thinking the best way forward is to get a basic patch
> without any NUMERIC stuff committed, and to revisit this after that's done.
>
>
Agreed... I'll warm up my delete key.

Regards

David Rowley


> best regards,
> Florian Pflug
>
>

Reply via email to