diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2000-01-20 02:21:44 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2000-01-20 02:21:44 +0000 |
commit | 08195a43f318581e373792fd30e00813ab3ad9fc (patch) | |
tree | f8c9b94a65f383885cc5e1bd2df5dc3a5a1ca3b5 /src/backend/utils/adt/numeric.c | |
parent | 6d1efd76fb9852b8bc242dcaf35916090d7c5899 (diff) | |
download | postgresql-08195a43f318581e373792fd30e00813ab3ad9fc.tar.gz postgresql-08195a43f318581e373792fd30e00813ab3ad9fc.zip |
Fix bugs in NUMERIC ceil() and floor() functions. ceil(0) returned 1,
and both would insert random junk digits if given an input that was an
exact multiple of 10.
Diffstat (limited to 'src/backend/utils/adt/numeric.c')
-rw-r--r-- | src/backend/utils/adt/numeric.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 20b2a001d7e..e9443ddd9d3 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.23 2000/01/18 03:44:41 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.24 2000/01/20 02:21:44 tgl Exp $ * * ---------- */ @@ -2932,7 +2932,7 @@ ceil_var(NumericVar *var, NumericVar *result) set_var_from_var(var, &tmp); tmp.rscale = 0; - tmp.ndigits = MAX(0, tmp.weight + 1); + tmp.ndigits = MIN(tmp.ndigits, MAX(0, tmp.weight + 1)); if (tmp.sign == NUMERIC_POS && cmp_var(var, &tmp) != 0) add_var(&tmp, &const_one, &tmp); @@ -2957,7 +2957,7 @@ floor_var(NumericVar *var, NumericVar *result) set_var_from_var(var, &tmp); tmp.rscale = 0; - tmp.ndigits = MAX(0, tmp.weight + 1); + tmp.ndigits = MIN(tmp.ndigits, MAX(0, tmp.weight + 1)); if (tmp.sign == NUMERIC_NEG && cmp_var(var, &tmp) != 0) sub_var(&tmp, &const_one, &tmp); |