aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/numeric.c
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 /src/backend/utils/adt/numeric.c
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.
Diffstat (limited to 'src/backend/utils/adt/numeric.c')
-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);