From 85f8d8a37dff7bababe89699b85dee90453cd2e2 Mon Sep 17 00:00:00 2001 From: Mark Hamstra Date: Mon, 14 Mar 2016 15:25:39 -0700 Subject: [PATCH] Fixed round(negativeValue, scale=0) --- .../sql/catalyst/expressions/mathExpressions.scala | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/mathExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/mathExpressions.scala index 28f616fbb9ca5..c6931802b0bb0 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/mathExpressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/mathExpressions.scala @@ -800,7 +800,11 @@ case class Round(child: Expression, scale: Expression) if (Float.isNaN(${ce.value}) || Float.isInfinite(${ce.value})){ ${ev.value} = ${ce.value}; } else { - ${ev.value} = Math.round(${ce.value}); + if (${ce.value} < 0) { + ${ev.value} = -1 * Math.round(-1 * ${ce.value}); + } else { + ${ev.value} = Math.round(${ce.value}); + } }""" } else { s""" @@ -817,7 +821,11 @@ case class Round(child: Expression, scale: Expression) if (Double.isNaN(${ce.value}) || Double.isInfinite(${ce.value})){ ${ev.value} = ${ce.value}; } else { - ${ev.value} = Math.round(${ce.value}); + if (${ce.value} < 0) { + ${ev.value} = -1 * Math.round(-1 * ${ce.value}); + } else { + ${ev.value} = Math.round(${ce.value}); + } }""" } else { s"""