From: Bruce Momjian Date: Tue, 3 Oct 2006 21:25:56 +0000 (+0000) Subject: Improve numeric overflow error message. X-Git-Tag: REL8_2_BETA2~135 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0a42adcc320b0917d44a95029c35ec0343192268;p=postgresql Improve numeric overflow error message. David Fetter --- diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index fb15a6222f..6d77c49c12 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -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; diff --git a/src/test/regress/expected/numeric.out b/src/test/regress/expected/numeric.out index 08a4841458..96c70a8a09 100644 --- a/src/test/regress/expected/numeric.out +++ b/src/test/regress/expected/numeric.out @@ -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;