Improve numeric overflow error message.

David Fetter
This commit is contained in:
Bruce Momjian 2006-10-03 21:25:56 +00:00
parent 45c8ed96b9
commit 0a42adcc32
2 changed files with 6 additions and 5 deletions

View File

@ -14,7 +14,7 @@
* Copyright (c) 1998-2006, PostgreSQL Global Development Group
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.94 2006/07/14 05:28:28 tgl Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.95 2006/10/03 21:25:55 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -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;

View 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;