diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2018-06-21 16:18:33 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2018-06-21 16:18:39 -0400 |
commit | ec4719cd155d1d58c8aa7c06c7ef24aef6e67622 (patch) | |
tree | 0bc2efb8aece2b6af1418222bbbcbb9ebe575f5a /src/backend/utils/adt/numeric.c | |
parent | e474c2b7e4b656895d6afcbd36857c9ebb0fcedd (diff) | |
download | postgresql-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.c | 4 |
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); |