spark git commit: [SPARK-16488] Fix codegen variable namespace collision in pmod and partitionBy
Repository: spark Updated Branches: refs/heads/branch-1.6 9808735e0 -> d1c992fea [SPARK-16488] Fix codegen variable namespace collision in pmod and partitionBy This patch fixes a variable namespace collision bug in pmod and partitionBy Regression test for one possible occurrence. A more general fix in `ExpressionEvalHelper.checkEvaluation` will be in a subsequent PR. Author: Sameer AgarwalCloses #14144 from sameeragarwal/codegen-bug. (cherry picked from commit 9cc74f95edb6e4f56151966139cd0dc24e377949) Signed-off-by: Reynold Xin (cherry picked from commit 689261465ad1dd443ebf764ad837243418b986ef) Signed-off-by: Reynold Xin Project: http://git-wip-us.apache.org/repos/asf/spark/repo Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/d1c992fe Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/d1c992fe Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/d1c992fe Branch: refs/heads/branch-1.6 Commit: d1c992fea3e5999a3494c398f5040d6102f30aff Parents: 9808735 Author: Sameer Agarwal Authored: Mon Jul 11 20:26:01 2016 -0700 Committer: Reynold Xin Committed: Tue Jul 12 23:13:19 2016 -0700 -- .../sql/catalyst/expressions/arithmetic.scala | 25 ++-- 1 file changed, 13 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/spark/blob/d1c992fe/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala -- diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala index 61a17fd..cfae285 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala @@ -445,34 +445,35 @@ case class Pmod(left: Expression, right: Expression) extends BinaryArithmetic { override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): String = { nullSafeCodeGen(ctx, ev, (eval1, eval2) => { + val remainder = ctx.freshName("remainder") dataType match { case dt: DecimalType => val decimalAdd = "$plus" s""" -${ctx.javaType(dataType)} r = $eval1.remainder($eval2); -if (r.compare(new org.apache.spark.sql.types.Decimal().set(0)) < 0) { - ${ev.value} = (r.$decimalAdd($eval2)).remainder($eval2); +${ctx.javaType(dataType)} $remainder = $eval1.remainder($eval2); +if ($remainder.compare(new org.apache.spark.sql.types.Decimal().set(0)) < 0) { + ${ev.value} = ($remainder.$decimalAdd($eval2)).remainder($eval2); } else { - ${ev.value} = r; + ${ev.value} = $remainder; } """ // byte and short are casted into int when add, minus, times or divide case ByteType | ShortType => s""" -${ctx.javaType(dataType)} r = (${ctx.javaType(dataType)})($eval1 % $eval2); -if (r < 0) { - ${ev.value} = (${ctx.javaType(dataType)})((r + $eval2) % $eval2); +${ctx.javaType(dataType)} $remainder = (${ctx.javaType(dataType)})($eval1 % $eval2); +if ($remainder < 0) { + ${ev.value} = (${ctx.javaType(dataType)})(($remainder + $eval2) % $eval2); } else { - ${ev.value} = r; + ${ev.value} = $remainder; } """ case _ => s""" -${ctx.javaType(dataType)} r = $eval1 % $eval2; -if (r < 0) { - ${ev.value} = (r + $eval2) % $eval2; +${ctx.javaType(dataType)} $remainder = $eval1 % $eval2; +if ($remainder < 0) { + ${ev.value} = ($remainder + $eval2) % $eval2; } else { - ${ev.value} = r; + ${ev.value} = $remainder; } """ } - To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org
spark git commit: [SPARK-16488] Fix codegen variable namespace collision in pmod and partitionBy
Repository: spark Updated Branches: refs/heads/branch-2.0 b37177c22 -> 689261465 [SPARK-16488] Fix codegen variable namespace collision in pmod and partitionBy This patch fixes a variable namespace collision bug in pmod and partitionBy Regression test for one possible occurrence. A more general fix in `ExpressionEvalHelper.checkEvaluation` will be in a subsequent PR. Author: Sameer AgarwalCloses #14144 from sameeragarwal/codegen-bug. (cherry picked from commit 9cc74f95edb6e4f56151966139cd0dc24e377949) Signed-off-by: Reynold Xin Project: http://git-wip-us.apache.org/repos/asf/spark/repo Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/68926146 Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/68926146 Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/68926146 Branch: refs/heads/branch-2.0 Commit: 689261465ad1dd443ebf764ad837243418b986ef Parents: b37177c Author: Sameer Agarwal Authored: Mon Jul 11 20:26:01 2016 -0700 Committer: Reynold Xin Committed: Mon Jul 11 20:29:35 2016 -0700 -- .../sql/catalyst/expressions/arithmetic.scala | 25 ++-- .../sql/test/DataFrameReaderWriterSuite.scala | 14 +++ 2 files changed, 27 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/spark/blob/68926146/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala -- diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala index 4db1352..91ffac0 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala @@ -498,34 +498,35 @@ case class Pmod(left: Expression, right: Expression) extends BinaryArithmetic wi override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = { nullSafeCodeGen(ctx, ev, (eval1, eval2) => { + val remainder = ctx.freshName("remainder") dataType match { case dt: DecimalType => val decimalAdd = "$plus" s""" -${ctx.javaType(dataType)} r = $eval1.remainder($eval2); -if (r.compare(new org.apache.spark.sql.types.Decimal().set(0)) < 0) { - ${ev.value} = (r.$decimalAdd($eval2)).remainder($eval2); +${ctx.javaType(dataType)} $remainder = $eval1.remainder($eval2); +if ($remainder.compare(new org.apache.spark.sql.types.Decimal().set(0)) < 0) { + ${ev.value} = ($remainder.$decimalAdd($eval2)).remainder($eval2); } else { - ${ev.value} = r; + ${ev.value} = $remainder; } """ // byte and short are casted into int when add, minus, times or divide case ByteType | ShortType => s""" -${ctx.javaType(dataType)} r = (${ctx.javaType(dataType)})($eval1 % $eval2); -if (r < 0) { - ${ev.value} = (${ctx.javaType(dataType)})((r + $eval2) % $eval2); +${ctx.javaType(dataType)} $remainder = (${ctx.javaType(dataType)})($eval1 % $eval2); +if ($remainder < 0) { + ${ev.value} = (${ctx.javaType(dataType)})(($remainder + $eval2) % $eval2); } else { - ${ev.value} = r; + ${ev.value} = $remainder; } """ case _ => s""" -${ctx.javaType(dataType)} r = $eval1 % $eval2; -if (r < 0) { - ${ev.value} = (r + $eval2) % $eval2; +${ctx.javaType(dataType)} $remainder = $eval1 % $eval2; +if ($remainder < 0) { + ${ev.value} = ($remainder + $eval2) % $eval2; } else { - ${ev.value} = r; + ${ev.value} = $remainder; } """ } http://git-wip-us.apache.org/repos/asf/spark/blob/68926146/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala -- diff --git a/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala index 27a0a2a..75834a3 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala @@ -424,6 +424,20 @@ class DataFrameReaderWriterSuite extends QueryTest with SharedSQLContext with Be spark.range(10).write.orc(dir) } +
spark git commit: [SPARK-16488] Fix codegen variable namespace collision in pmod and partitionBy
Repository: spark Updated Branches: refs/heads/master e50efd53f -> 9cc74f95e [SPARK-16488] Fix codegen variable namespace collision in pmod and partitionBy ## What changes were proposed in this pull request? This patch fixes a variable namespace collision bug in pmod and partitionBy ## How was this patch tested? Regression test for one possible occurrence. A more general fix in `ExpressionEvalHelper.checkEvaluation` will be in a subsequent PR. Author: Sameer AgarwalCloses #14144 from sameeragarwal/codegen-bug. Project: http://git-wip-us.apache.org/repos/asf/spark/repo Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/9cc74f95 Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/9cc74f95 Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/9cc74f95 Branch: refs/heads/master Commit: 9cc74f95edb6e4f56151966139cd0dc24e377949 Parents: e50efd5 Author: Sameer Agarwal Authored: Mon Jul 11 20:26:01 2016 -0700 Committer: Reynold Xin Committed: Mon Jul 11 20:26:01 2016 -0700 -- .../sql/catalyst/expressions/arithmetic.scala | 25 ++-- .../sql/test/DataFrameReaderWriterSuite.scala | 14 +++ 2 files changed, 27 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/spark/blob/9cc74f95/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala -- diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala index 4db1352..91ffac0 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala @@ -498,34 +498,35 @@ case class Pmod(left: Expression, right: Expression) extends BinaryArithmetic wi override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = { nullSafeCodeGen(ctx, ev, (eval1, eval2) => { + val remainder = ctx.freshName("remainder") dataType match { case dt: DecimalType => val decimalAdd = "$plus" s""" -${ctx.javaType(dataType)} r = $eval1.remainder($eval2); -if (r.compare(new org.apache.spark.sql.types.Decimal().set(0)) < 0) { - ${ev.value} = (r.$decimalAdd($eval2)).remainder($eval2); +${ctx.javaType(dataType)} $remainder = $eval1.remainder($eval2); +if ($remainder.compare(new org.apache.spark.sql.types.Decimal().set(0)) < 0) { + ${ev.value} = ($remainder.$decimalAdd($eval2)).remainder($eval2); } else { - ${ev.value} = r; + ${ev.value} = $remainder; } """ // byte and short are casted into int when add, minus, times or divide case ByteType | ShortType => s""" -${ctx.javaType(dataType)} r = (${ctx.javaType(dataType)})($eval1 % $eval2); -if (r < 0) { - ${ev.value} = (${ctx.javaType(dataType)})((r + $eval2) % $eval2); +${ctx.javaType(dataType)} $remainder = (${ctx.javaType(dataType)})($eval1 % $eval2); +if ($remainder < 0) { + ${ev.value} = (${ctx.javaType(dataType)})(($remainder + $eval2) % $eval2); } else { - ${ev.value} = r; + ${ev.value} = $remainder; } """ case _ => s""" -${ctx.javaType(dataType)} r = $eval1 % $eval2; -if (r < 0) { - ${ev.value} = (r + $eval2) % $eval2; +${ctx.javaType(dataType)} $remainder = $eval1 % $eval2; +if ($remainder < 0) { + ${ev.value} = ($remainder + $eval2) % $eval2; } else { - ${ev.value} = r; + ${ev.value} = $remainder; } """ } http://git-wip-us.apache.org/repos/asf/spark/blob/9cc74f95/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala -- diff --git a/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala index 05935ce..f706b20 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/test/DataFrameReaderWriterSuite.scala @@ -449,6 +449,20 @@ class DataFrameReaderWriterSuite extends QueryTest with SharedSQLContext with Be } } + test("pmod with partitionBy") { +val spark = this.spark +import