Improve numeric overflow error message.
authorBruce Momjian <bruce@momjian.us>
Tue, 3 Oct 2006 21:25:56 +0000 (21:25 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 3 Oct 2006 21:25:56 +0000 (21:25 +0000)
David Fetter

src/backend/utils/adt/numeric.c
src/test/regress/expected/numeric.out

index 7be72cd61ef193036ab39fd6839dfd0f929dbd2f..f9138956d8a4782d6e9529febf6136fc4943c333 100644 (file)
@@ -3217,11 +3217,12 @@ apply_typmod(NumericVar *var, int32 typmod)
                                        ereport(ERROR,
                                                        (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
                                                         errmsg("numeric field overflow"),
-                                                        errdetail("A field with precision %d, scale %d must have an absolute value less than %s%d.",
+                                                        errdetail("A field with precision %d, scale %d must round to an absolute value less than %s%d.",
                                                                           precision, scale,
                                                                           /* Display 10^0 as 1 */
                                                                           maxdigits ? "10^" : "",
-                                                                          maxdigits ? maxdigits : 1)));
+                                                                          maxdigits ? maxdigits : 1
+                                                                          )));
                                break;
                        }
                        ddigits -= DEC_DIGITS;
index 08a4841458c097bab602846251c22ed6829de7a6..96c70a8a0978ceb15cf9c1a061b419f1a3945516 100644 (file)
@@ -688,12 +688,12 @@ 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:  numeric field overflow
-DETAIL:  A field with precision 4, scale 4 must have an absolute value less than 1.
+DETAIL:  A field with precision 4, scale 4 must round to an absolute value less than 1.
 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:  numeric field overflow
-DETAIL:  A field with precision 4, scale 4 must have an absolute value less than 1.
+DETAIL:  A field with precision 4, scale 4 must round to an absolute value less than 1.
 INSERT INTO fract_only VALUES (7, '0.00001');
 INSERT INTO fract_only VALUES (8, '0.00017');
 SELECT * FROM fract_only;