aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/numeric.c
diff options
context:
space:
mode:
authorJan Wieck <JanWieck@Yahoo.com>1999-01-04 11:20:33 +0000
committerJan Wieck <JanWieck@Yahoo.com>1999-01-04 11:20:33 +0000
commite3a5ac283b7280d6b2cc794588b5fcc8caeb89b1 (patch)
tree90ea4d1b950b849ca234fcbe911835fb3110a906 /src/backend/utils/adt/numeric.c
parent9f65dfeefa6356189c8f43e5acfc1123595c0bfa (diff)
downloadpostgresql-e3a5ac283b7280d6b2cc794588b5fcc8caeb89b1.tar.gz
postgresql-e3a5ac283b7280d6b2cc794588b5fcc8caeb89b1.zip
Little fix for round() function
Jan
Diffstat (limited to 'src/backend/utils/adt/numeric.c')
-rw-r--r--src/backend/utils/adt/numeric.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c
index 2427ba23861..8e19c1e6c98 100644
--- a/src/backend/utils/adt/numeric.c
+++ b/src/backend/utils/adt/numeric.c
@@ -5,7 +5,7 @@
*
* 1998 Jan Wieck
*
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.5 1999/01/03 05:30:47 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.6 1999/01/04 11:20:33 wieck Exp $
*
* ----------
*/
@@ -523,6 +523,7 @@ Numeric
numeric_round(Numeric num, int32 scale)
{
int32 typmod;
+ int precision;
/* ----------
* Handle NULL
@@ -553,7 +554,9 @@ numeric_round(Numeric num, int32 scale)
* Let numeric() and in turn apply_typmod() do the job
* ----------
*/
- typmod = (((num->n_weight + scale + 1) << 16) | scale) + VARHDRSZ;
+ precision = MAX(0, num->n_weight) + scale;
+ precision = MIN(precision, NUMERIC_MAX_PRECISION);
+ typmod = (((precision + 2) << 16) | scale) + VARHDRSZ;
return numeric(num, typmod);
}