diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index a83feea396..8d575f1853 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -8028,7 +8028,7 @@ int64_to_numericvar(int64 val, NumericVar *var) int ndigits; /* int64 can require at most 19 decimal digits; add one for safety */ - alloc_var(var, 20 / DEC_DIGITS); + alloc_var(var, (20 + DEC_DIGITS - 1) / DEC_DIGITS); if (val < 0) { var->sign = NUMERIC_NEG; @@ -8219,7 +8219,7 @@ int128_to_numericvar(int128 val, NumericVar *var) int ndigits; /* int128 can require at most 39 decimal digits; add one for safety */ - alloc_var(var, 40 / DEC_DIGITS); + alloc_var(var, (40 + DEC_DIGITS - 1) / DEC_DIGITS); if (val < 0) { var->sign = NUMERIC_NEG;