aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/numeric.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2018-06-21 16:18:33 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2018-06-21 16:18:39 -0400
commitec4719cd155d1d58c8aa7c06c7ef24aef6e67622 (patch)
tree0bc2efb8aece2b6af1418222bbbcbb9ebe575f5a /src/backend/utils/adt/numeric.c
parente474c2b7e4b656895d6afcbd36857c9ebb0fcedd (diff)
downloadpostgresql-ec4719cd155d1d58c8aa7c06c7ef24aef6e67622.tar.gz
postgresql-ec4719cd155d1d58c8aa7c06c7ef24aef6e67622.zip
Fix partial aggregation for variance(int4) and related aggregates.
A typo in numeric_poly_combine caused bogus results for queries using it, but of course would only manifest if parallel aggregation is performed. Reported by Rajkumar Raghuwanshi. David Rowley did the diagnosis and the fix; I editorialized rather heavily on his regression test additions. Back-patch to v10 where the breakage was introduced (by 9cca11c91). Discussion: https://postgr.es/m/CAKcux6nU4E2x8nkSBpLOT2DPvQ5LviJ3SGyAN6Sz7qDH4G4+Pw@mail.gmail.com
Diffstat (limited to 'src/backend/utils/adt/numeric.c')
-rw-r--r--src/backend/utils/adt/numeric.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c
index 074294cbcc1..82a14295ee1 100644
--- a/src/backend/utils/adt/numeric.c
+++ b/src/backend/utils/adt/numeric.c
@@ -4218,8 +4218,8 @@ numeric_poly_combine(PG_FUNCTION_ARGS)
state1->sumX = state2->sumX;
state1->sumX2 = state2->sumX2;
#else
- accum_sum_copy(&state2->sumX, &state1->sumX);
- accum_sum_copy(&state2->sumX2, &state1->sumX2);
+ accum_sum_copy(&state1->sumX, &state2->sumX);
+ accum_sum_copy(&state1->sumX2, &state2->sumX2);
#endif
MemoryContextSwitchTo(old_context);