aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2000-01-20 02:21:44 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2000-01-20 02:21:44 +0000
commit08195a43f318581e373792fd30e00813ab3ad9fc (patch)
treef8c9b94a65f383885cc5e1bd2df5dc3a5a1ca3b5
parent6d1efd76fb9852b8bc242dcaf35916090d7c5899 (diff)
downloadpostgresql-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.
-rw-r--r--src/backend/utils/adt/numeric.c6
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);