Add some examples to numeric regress test to verify that recently-fixed

problems are indeed fixed.
This commit is contained in:
Tom Lane 2000-01-15 23:44:17 +00:00
parent 3cb8c8da68
commit b0b3187bb4
2 changed files with 52 additions and 0 deletions

View File

@ -660,3 +660,37 @@ SELECT t1.id1, t1.result, t2.expected
-----+--------+----------
(0 rows)
-- ******************************
-- * miscellaneous checks for things that have been broken in the past...
-- ******************************
-- numeric AVG used to fail on some platforms
SELECT AVG(val) FROM num_data;
avg
----------------------
-13430913.5922423207
(1 row)
-- Check for appropriate rounding and overflow
CREATE TABLE fract_only (id int, val numeric(4,4));
INSERT INTO fract_only VALUES (1, '0.0');
INSERT INTO fract_only VALUES (2, '0.1');
INSERT INTO fract_only VALUES (3, '1.0'); -- should fail
ERROR: overflow on numeric ABS(value) >= 10^0 for field with precision 4 scale 4
INSERT INTO fract_only VALUES (4, '-0.9999');
INSERT INTO fract_only VALUES (5, '0.99994');
INSERT INTO fract_only VALUES (6, '0.99995'); -- should fail
ERROR: overflow on numeric ABS(value) >= 10^0 for field with precision 4 scale 4
INSERT INTO fract_only VALUES (7, '0.00001');
INSERT INTO fract_only VALUES (8, '0.00017');
SELECT * FROM fract_only;
id | val
----+---------
1 | 0.0000
2 | 0.1000
4 | -0.9999
5 | 0.9999
7 | 0.0000
8 | 0.0002
(6 rows)
DROP TABLE fract_only;

View File

@ -634,3 +634,21 @@ SELECT t1.id1, t1.result, t2.expected
WHERE t1.id1 = t2.id
AND t1.result != t2.expected;
-- ******************************
-- * miscellaneous checks for things that have been broken in the past...
-- ******************************
-- numeric AVG used to fail on some platforms
SELECT AVG(val) FROM num_data;
-- Check for appropriate rounding and overflow
CREATE TABLE fract_only (id int, val numeric(4,4));
INSERT INTO fract_only VALUES (1, '0.0');
INSERT INTO fract_only VALUES (2, '0.1');
INSERT INTO fract_only VALUES (3, '1.0'); -- should fail
INSERT INTO fract_only VALUES (4, '-0.9999');
INSERT INTO fract_only VALUES (5, '0.99994');
INSERT INTO fract_only VALUES (6, '0.99995'); -- should fail
INSERT INTO fract_only VALUES (7, '0.00001');
INSERT INTO fract_only VALUES (8, '0.00017');
SELECT * FROM fract_only;
DROP TABLE fract_only;