diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/numeric.c | 4 | ||||
-rw-r--r-- | src/test/regress/expected/aggregates.out | 27 | ||||
-rw-r--r-- | src/test/regress/sql/aggregates.sql | 18 |
3 files changed, 47 insertions, 2 deletions
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 7dc0df52634..dce3095b3f3 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -4054,8 +4054,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); diff --git a/src/test/regress/expected/aggregates.out b/src/test/regress/expected/aggregates.out index 11674a077bc..56d5fbb4fba 100644 --- a/src/test/regress/expected/aggregates.out +++ b/src/test/regress/expected/aggregates.out @@ -2054,3 +2054,30 @@ SELECT balk(hundred) FROM tenk1; (1 row) ROLLBACK; +-- test coverage for aggregate combine/serial/deserial functions +BEGIN ISOLATION LEVEL REPEATABLE READ; +SET parallel_setup_cost = 0; +SET parallel_tuple_cost = 0; +SET min_parallel_table_scan_size = 0; +SET max_parallel_workers_per_gather = 4; +SET enable_indexonlyscan = off; +-- variance(int4) covers numeric_poly_combine +-- sum(int8) covers int8_avg_combine +EXPLAIN (COSTS OFF) + SELECT variance(unique1::int4), sum(unique1::int8) FROM tenk1; + QUERY PLAN +---------------------------------------------- + Finalize Aggregate + -> Gather + Workers Planned: 4 + -> Partial Aggregate + -> Parallel Seq Scan on tenk1 +(5 rows) + +SELECT variance(unique1::int4), sum(unique1::int8) FROM tenk1; + variance | sum +----------------------+---------- + 8334166.666666666667 | 49995000 +(1 row) + +ROLLBACK; diff --git a/src/test/regress/sql/aggregates.sql b/src/test/regress/sql/aggregates.sql index 4ead553479c..651ca02536c 100644 --- a/src/test/regress/sql/aggregates.sql +++ b/src/test/regress/sql/aggregates.sql @@ -900,3 +900,21 @@ EXPLAIN (COSTS OFF) SELECT balk(hundred) FROM tenk1; SELECT balk(hundred) FROM tenk1; ROLLBACK; + +-- test coverage for aggregate combine/serial/deserial functions +BEGIN ISOLATION LEVEL REPEATABLE READ; + +SET parallel_setup_cost = 0; +SET parallel_tuple_cost = 0; +SET min_parallel_table_scan_size = 0; +SET max_parallel_workers_per_gather = 4; +SET enable_indexonlyscan = off; + +-- variance(int4) covers numeric_poly_combine +-- sum(int8) covers int8_avg_combine +EXPLAIN (COSTS OFF) + SELECT variance(unique1::int4), sum(unique1::int8) FROM tenk1; + +SELECT variance(unique1::int4), sum(unique1::int8) FROM tenk1; + +ROLLBACK; |