From d0fcefdcb0a7a2fef8f8c00aeba6c419c7bf009c Mon Sep 17 00:00:00 2001 From: Pavan Deolasee Date: Fri, 12 Aug 2016 15:19:46 +0530 Subject: [PATCH] Correct aggregation function for "money" data type. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Per report by Sergio Hernández Martínez --- src/include/catalog/pg_aggregate.h | 2 +- src/test/regress/expected/money.out | 23 +++++++++++++++++++++++ src/test/regress/sql/money.sql | 15 +++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h index 6d8ade4156..e75ed80311 100644 --- a/src/include/catalog/pg_aggregate.h +++ b/src/include/catalog/pg_aggregate.h @@ -161,7 +161,7 @@ DATA(insert ( 2108 n 0 int4_sum int8_sum_to_int8 - int4_avg_accum int4_avg_a DATA(insert ( 2109 n 0 int2_sum int8_sum_to_int8 - int2_avg_accum int2_avg_accum_inv int2int4_sum f f 0 20 20 0 1016 0 _null_ _null_ "{0,0}" )); DATA(insert ( 2110 n 0 float4pl float4pl - - - - f f 0 700 700 0 0 0 _null_ _null_ _null_ )); DATA(insert ( 2111 n 0 float8pl float8pl - - - - f f 0 701 701 0 0 0 _null_ _null_ _null_ )); -DATA(insert ( 2112 n 0 cash_pl cash_pl - cash_pl cash_mi - f f 0 790 0 790 790 0 _null_ _null_ _null_ )); +DATA(insert ( 2112 n 0 cash_pl cash_pl - cash_pl cash_mi - f f 0 790 790 0 790 0 _null_ _null_ _null_ )); DATA(insert ( 2113 n 0 interval_pl interval_pl - interval_pl interval_mi - f f 0 1186 1186 0 1186 0 _null_ _null_ _null_ )); DATA(insert ( 2114 n 0 numeric_avg_accum numeric_collect numeric_sum numeric_avg_accum numeric_accum_inv numeric_sum f f 0 7018 7018 128 7018 128 _null_ _null_ _null_ )); diff --git a/src/test/regress/expected/money.out b/src/test/regress/expected/money.out index 538235c4cc..52457bace2 100644 --- a/src/test/regress/expected/money.out +++ b/src/test/regress/expected/money.out @@ -248,3 +248,26 @@ SELECT (-12345678901234567)::int8::money; -$12,345,678,901,234,567.00 (1 row) +INSERT INTO money_data VALUES ('$223.459'); +INSERT INTO money_data VALUES ('$323.459'); +INSERT INTO money_data VALUES ('$423.459'); +INSERT INTO money_data VALUES ('$523.459'); +SELECT sum(m) FROM money_data; + sum +----------- + $1,617.30 +(1 row) + +CREATE TABLE money_data2 (a int, m money); +INSERT INTO money_data2 VALUES (1, '$123.459'); +INSERT INTO money_data2 VALUES (2, '$223.459'); +INSERT INTO money_data2 VALUES (3, '$323.459'); +INSERT INTO money_data2 VALUES (4, '$423.459'); +INSERT INTO money_data2 VALUES (5, '$523.459'); +SELECT sum(m) FROM money_data2; + sum +----------- + $1,617.30 +(1 row) + +DROP TABLE money_data2; diff --git a/src/test/regress/sql/money.sql b/src/test/regress/sql/money.sql index 09b9476b70..1aad4f54b0 100644 --- a/src/test/regress/sql/money.sql +++ b/src/test/regress/sql/money.sql @@ -71,3 +71,18 @@ SELECT 1234567890::int4::money; SELECT 12345678901234567::int8::money; SELECT (-1234567890)::int4::money; SELECT (-12345678901234567)::int8::money; + +INSERT INTO money_data VALUES ('$223.459'); +INSERT INTO money_data VALUES ('$323.459'); +INSERT INTO money_data VALUES ('$423.459'); +INSERT INTO money_data VALUES ('$523.459'); +SELECT sum(m) FROM money_data; + +CREATE TABLE money_data2 (a int, m money); +INSERT INTO money_data2 VALUES (1, '$123.459'); +INSERT INTO money_data2 VALUES (2, '$223.459'); +INSERT INTO money_data2 VALUES (3, '$323.459'); +INSERT INTO money_data2 VALUES (4, '$423.459'); +INSERT INTO money_data2 VALUES (5, '$523.459'); +SELECT sum(m) FROM money_data2; +DROP TABLE money_data2; -- 2.39.5