Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 6244c2d

Browse files
committed
Fix stddev_pop(numeric) and var_pop(numeric), which were incorrectly producing
the same outputs as stddev_samp() and var_samp() respectively.
1 parent 9e09e3b commit 6244c2d

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/backend/utils/adt/numeric.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* Copyright (c) 1998-2007, PostgreSQL Global Development Group
1515
*
1616
* IDENTIFICATION
17-
* $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.105 2007/06/15 20:56:50 tgl Exp $
17+
* $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.106 2007/07/09 16:13:57 tgl Exp $
1818
*
1919
*-------------------------------------------------------------------------
2020
*/
@@ -2435,7 +2435,10 @@ numeric_stddev_internal(ArrayType *transarray,
24352435
}
24362436
else
24372437
{
2438-
mul_var(&vN, &vNminus1, &vNminus1, 0); /* N * (N - 1) */
2438+
if (sample)
2439+
mul_var(&vN, &vNminus1, &vNminus1, 0); /* N * (N - 1) */
2440+
else
2441+
mul_var(&vN, &vN, &vNminus1, 0); /* N * N */
24392442
rscale = select_div_scale(&vsumX2, &vNminus1);
24402443
div_var(&vsumX2, &vNminus1, &vsumX, rscale, true); /* variance */
24412444
if (!variance)

src/test/regress/expected/aggregates.out

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ SELECT var_samp(b) FROM aggtest;
102102
SELECT stddev_pop(b::numeric) FROM aggtest;
103103
stddev_pop
104104
------------------
105-
151.389361431288
105+
131.107032862199
106106
(1 row)
107107

108108
SELECT stddev_samp(b::numeric) FROM aggtest;
@@ -114,7 +114,7 @@ SELECT stddev_samp(b::numeric) FROM aggtest;
114114
SELECT var_pop(b::numeric) FROM aggtest;
115115
var_pop
116116
--------------------
117-
22918.738754573025
117+
17189.054065929769
118118
(1 row)
119119

120120
SELECT var_samp(b::numeric) FROM aggtest;

0 commit comments

Comments
 (0)