prestodb/presto · error · ArithmeticException
Division by zero
Error message
Division by zero
What it means
throwDivisionByZeroException is the central helper raised whenever a DECIMAL division or modulo has a zero divisor; it fires from the unscaled-128 arithmetic paths when users execute decimal division by zero.
Source
Thrown at presto-common/src/main/java/com/facebook/presto/common/type/UnscaledDecimal128Arithmetic.java:1579
long remainder = getLong(decimal, 1);
long high = remainder / divisor;
remainder %= divisor;
remainder = (getInt(decimal, 1) & LONG_MASK) + (remainder << 32);
int z1 = (int) (remainder / divisor);
remainder %= divisor;
remainder = (getInt(decimal, 0) & LONG_MASK) + (remainder << 32);
int z0 = (int) (remainder / divisor);
pack(result, z0, z1, high, isNegative(decimal));
return (int) (remainder % divisor);
}
private static void throwDivisionByZeroException()
{
throw new ArithmeticException("Division by zero");
}
private static void multiplyShiftDestructive(Slice decimal, Slice multiplier, int rightShifts)
{
int[] product = new int[NUMBER_OF_INTS * 2];
Slice multiplicationResult = Slices.wrappedIntArray(product);
multiply256(decimal, multiplier, multiplicationResult);
shiftRightArray8(product, rightShifts, decimal);
}
private static void setNegative(Slice decimal, boolean negative)
{
setRawInt(decimal, SIGN_INT_INDEX, getInt(decimal, SIGN_INT_INDEX) | (negative ? SIGN_INT_MASK : 0));
}
private static void setNegativeInt(Slice decimal, int v3, boolean negative)
{
if (v3 < 0) {View on GitHub (pinned to 55bb57d202)
Solutions
- Filter or NULL out zero divisors before the division
- Use NULLIF(divisor, 0) in SQL to avoid the divide-by-zero path
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-common/src/main/java/com/facebook/presto/common/type/UnscaledDecimal128Arithmetic.java:1579 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/41692ae64dae2ef8.
Report an issue: GitHub.