summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Deolasee2016-08-12 09:49:46 +0000
committerPavan Deolasee2016-10-18 10:07:43 +0000
commitd3e378c95cbc73b8a30994599d73ec4add902c91 (patch)
treee6f2d32cc3f28a57214ae56a1591a1b64b5b90b5
parent82619b7a461aa9481a01d9b2610a6aa90f1d01e6 (diff)
Correct aggregation function for "money" data type.
Per report by Sergio Hernández Martínez
-rw-r--r--src/include/catalog/pg_aggregate.h2
-rw-r--r--src/test/regress/expected/money.out23
-rw-r--r--src/test/regress/sql/money.sql15
3 files changed, 39 insertions, 1 deletions
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;