diff options
Diffstat (limited to 'sql/catalyst')
3 files changed, 35 insertions, 44 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatter.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatter.scala index c98182c96b..9b8b6382d7 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatter.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatter.scala @@ -32,6 +32,7 @@ private class CodeFormatter { private var indentLevel = 0 private val indentSize = 2 private var indentString = "" + private var currentLine = 1 private def addLine(line: String): Unit = { val indentChange = @@ -44,11 +45,13 @@ private class CodeFormatter { } else { indentString } + code.append(f"/* ${currentLine}%03d */ ") code.append(thisLineIndent) code.append(line) code.append("\n") indentLevel = newIndentLevel indentString = " " * (indentSize * newIndentLevel) + currentLine += 1 } private def addLines(code: String): CodeFormatter = { diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala index 7544d27e3d..a4ec5085fa 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala @@ -391,26 +391,24 @@ abstract class CodeGenerator[InType <: AnyRef, OutType <: AnyRef] extends Loggin classOf[ArrayData].getName, classOf[UnsafeArrayData].getName, classOf[MapData].getName, - classOf[UnsafeMapData].getName + classOf[UnsafeMapData].getName, + classOf[MutableRow].getName )) evaluator.setExtendedClass(classOf[GeneratedClass]) def formatted = CodeFormatter.format(code) - def withLineNums = formatted.split("\n").zipWithIndex.map { - case (l, n) => f"${n + 1}%03d $l" - }.mkString("\n") logDebug({ // Only add extra debugging info to byte code when we are going to print the source code. evaluator.setDebuggingInformation(true, true, false) - withLineNums + formatted }) try { evaluator.cook("generated.java", code) } catch { case e: Exception => - val msg = s"failed to compile: $e\n$withLineNums" + val msg = s"failed to compile: $e\n$formatted" logError(msg, e) throw new Exception(msg, e) } diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatterSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatterSuite.scala index 46daa3eb8b..9da1068e9c 100644 --- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatterSuite.scala +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatterSuite.scala @@ -29,78 +29,68 @@ class CodeFormatterSuite extends SparkFunSuite { } testCase("basic example") { - """ - |class A { + """class A { |blahblah; - |} - """.stripMargin + |}""".stripMargin }{ """ - |class A { - | blahblah; - |} + |/* 001 */ class A { + |/* 002 */ blahblah; + |/* 003 */ } """.stripMargin } testCase("nested example") { - """ - |class A { + """class A { | if (c) { |duh; |} - |} - """.stripMargin + |}""".stripMargin } { """ - |class A { - | if (c) { - | duh; - | } - |} + |/* 001 */ class A { + |/* 002 */ if (c) { + |/* 003 */ duh; + |/* 004 */ } + |/* 005 */ } """.stripMargin } testCase("single line") { - """ - |class A { + """class A { | if (c) {duh;} - |} - """.stripMargin + |}""".stripMargin }{ """ - |class A { - | if (c) {duh;} - |} + |/* 001 */ class A { + |/* 002 */ if (c) {duh;} + |/* 003 */ } """.stripMargin } testCase("if else on the same line") { - """ - |class A { + """class A { | if (c) {duh;} else {boo;} - |} - """.stripMargin + |}""".stripMargin }{ """ - |class A { - | if (c) {duh;} else {boo;} - |} + |/* 001 */ class A { + |/* 002 */ if (c) {duh;} else {boo;} + |/* 003 */ } """.stripMargin } testCase("function calls") { - """ - |foo( + """foo( |a, |b, - |c) - """.stripMargin + |c)""".stripMargin }{ """ - |foo( - | a, - | b, - | c) + |/* 001 */ foo( + |/* 002 */ a, + |/* 003 */ b, + |/* 004 */ c) """.stripMargin } } |