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 | |
| parent | 6d1efd76fb9852b8bc242dcaf35916090d7c5899 (diff) | |
| download | postgresql-08195a43f318581e373792fd30e00813ab3ad9fc.tar.gz | |
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')
| -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 20b2a001d7..e9443ddd9d 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); |
