Correct aggregation function for "money" data type.
authorPavan Deolasee <[email protected]>
Fri, 12 Aug 2016 09:49:46 +0000 (15:19 +0530)
committerPavan Deolasee <[email protected]>
Fri, 12 Aug 2016 10:45:13 +0000 (16:15 +0530)
Per report by Sergio Hernández Martínez

src/include/catalog/pg_aggregate.h
src/test/regress/expected/money.out
src/test/regress/sql/money.sql

index 6d8ade4156e43ea28778cf799f14cc70a67920e2..e75ed80311ac167303ee6d657d14b432db9368a2 100644 (file)
@@ -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_ ));
 
index 538235c4cc26820660e95fc88474f0bbbc197c45..52457bace285c10f458ca8d65948476545d7f415 100644 (file)
@@ -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;
index 09b9476b706172f2e2d1758e95f8c684029f06dc..1aad4f54b019abbf80b2e0a268cdc6f9cb1363c3 100644 (file)
@@ -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;