aboutsummaryrefslogtreecommitdiff
path: root/sql/core
diff options
context:
space:
mode:
authorDavies Liu <davies@databricks.com>2016-02-02 22:13:10 -0800
committerDavies Liu <davies.liu@gmail.com>2016-02-02 22:13:10 -0800
commite86f8f63bfa3c15659b94e831b853b1bc9ddae32 (patch)
tree3e0de83a60c33c153d6e2876121dfe2e196d5108 /sql/core
parent335f10edad8c759bad3dbd0660ed4dd5d70ddd8b (diff)
downloadspark-e86f8f63bfa3c15659b94e831b853b1bc9ddae32.tar.gz
spark-e86f8f63bfa3c15659b94e831b853b1bc9ddae32.tar.bz2
spark-e86f8f63bfa3c15659b94e831b853b1bc9ddae32.zip
[SPARK-13147] [SQL] improve readability of generated code
1. try to avoid the suffix (unique id) 2. remove the comment if there is no code generated. 3. re-arrange the order of functions 4. trop the new line for inlined blocks. Author: Davies Liu <davies@databricks.com> Closes #11032 from davies/better_suffix.
Diffstat (limited to 'sql/core')
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/execution/WholeStageCodegen.scala13
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/execution/aggregate/TungstenAggregate.scala14
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/execution/basicOperators.scala7
-rw-r--r--sql/core/src/test/scala/org/apache/spark/sql/execution/BenchmarkWholeStageCodegen.scala2
4 files changed, 21 insertions, 15 deletions
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/WholeStageCodegen.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/WholeStageCodegen.scala
index 02b0f423ed..1475496907 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/WholeStageCodegen.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/WholeStageCodegen.scala
@@ -170,8 +170,8 @@ case class InputAdapter(child: SparkPlan) extends LeafNode with CodegenSupport {
s"""
| while (input.hasNext()) {
| InternalRow $row = (InternalRow) input.next();
- | ${columns.map(_.code).mkString("\n")}
- | ${consume(ctx, columns)}
+ | ${columns.map(_.code).mkString("\n").trim}
+ | ${consume(ctx, columns).trim}
| }
""".stripMargin
}
@@ -236,15 +236,16 @@ case class WholeStageCodegen(plan: CodegenSupport, children: Seq[SparkPlan])
private Object[] references;
${ctx.declareMutableStates()}
- ${ctx.declareAddedFunctions()}
public GeneratedIterator(Object[] references) {
- this.references = references;
- ${ctx.initMutableStates()}
+ this.references = references;
+ ${ctx.initMutableStates()}
}
+ ${ctx.declareAddedFunctions()}
+
protected void processNext() throws java.io.IOException {
- $code
+ ${code.trim}
}
}
"""
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/aggregate/TungstenAggregate.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/aggregate/TungstenAggregate.scala
index f61db8594d..d024477061 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/aggregate/TungstenAggregate.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/aggregate/TungstenAggregate.scala
@@ -211,9 +211,9 @@ case class TungstenAggregate(
| $doAgg();
|
| // output the result
- | $genResult
+ | ${genResult.trim}
|
- | ${consume(ctx, resultVars)}
+ | ${consume(ctx, resultVars).trim}
| }
""".stripMargin
}
@@ -242,9 +242,9 @@ case class TungstenAggregate(
}
s"""
| // do aggregate
- | ${aggVals.map(_.code).mkString("\n")}
+ | ${aggVals.map(_.code).mkString("\n").trim}
| // update aggregation buffer
- | ${updates.mkString("")}
+ | ${updates.mkString("\n").trim}
""".stripMargin
}
@@ -523,7 +523,7 @@ case class TungstenAggregate(
// Finally, sort the spilled aggregate buffers by key, and merge them together for same key.
s"""
// generate grouping key
- ${keyCode.code}
+ ${keyCode.code.trim}
UnsafeRow $buffer = null;
if ($checkFallback) {
// try to get the buffer from hash map
@@ -547,9 +547,9 @@ case class TungstenAggregate(
$incCounter
// evaluate aggregate function
- ${evals.map(_.code).mkString("\n")}
+ ${evals.map(_.code).mkString("\n").trim}
// update aggregate buffer
- ${updates.mkString("\n")}
+ ${updates.mkString("\n").trim}
"""
}
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/basicOperators.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/basicOperators.scala
index fd81531c93..ae4422195c 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/basicOperators.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/basicOperators.scala
@@ -93,9 +93,14 @@ case class Filter(condition: Expression, child: SparkPlan) extends UnaryNode wit
BindReferences.bindReference(condition, child.output))
ctx.currentVars = input
val eval = expr.gen(ctx)
+ val nullCheck = if (expr.nullable) {
+ s"!${eval.isNull} &&"
+ } else {
+ s""
+ }
s"""
| ${eval.code}
- | if (!${eval.isNull} && ${eval.value}) {
+ | if ($nullCheck ${eval.value}) {
| ${consume(ctx, ctx.currentVars)}
| }
""".stripMargin
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/BenchmarkWholeStageCodegen.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/BenchmarkWholeStageCodegen.scala
index 1ccf0e3d06..ec2b9ab2cb 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/BenchmarkWholeStageCodegen.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/BenchmarkWholeStageCodegen.scala
@@ -199,7 +199,7 @@ class BenchmarkWholeStageCodegen extends SparkFunSuite {
// These benchmark are skipped in normal build
ignore("benchmark") {
// testWholeStage(200 << 20)
- // testStddev(20 << 20)
+ // testStatFunctions(20 << 20)
// testAggregateWithKey(20 << 20)
// testBytesToBytesMap(1024 * 1024 * 50)
}