aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorTarek Auel <tarek.auel@googlemail.com>2015-07-20 15:23:28 -0700
committerReynold Xin <rxin@databricks.com>2015-07-20 15:23:28 -0700
commit4863c11ea9d9f94799fbe6ae5a60860f0740a44d (patch)
tree015c2adfa7ac637de58bff7970e4694fef10cca9 /sql
parentdde0e12f32e3a0448d8308ec78ad59cbb2c55d23 (diff)
downloadspark-4863c11ea9d9f94799fbe6ae5a60860f0740a44d.tar.gz
spark-4863c11ea9d9f94799fbe6ae5a60860f0740a44d.tar.bz2
spark-4863c11ea9d9f94799fbe6ae5a60860f0740a44d.zip
[SPARK-9155][SQL] codegen StringSpace
Jira https://issues.apache.org/jira/browse/SPARK-9155 Author: Tarek Auel <tarek.auel@googlemail.com> Closes #7531 from tarekauel/SPARK-9155 and squashes the following commits: 423c426 [Tarek Auel] [SPARK-9155] language typo fix e34bd1b [Tarek Auel] [SPARK-9155] moved creation of blank string to UTF8String 4bc33e6 [Tarek Auel] [SPARK-9155] codegen StringSpace
Diffstat (limited to 'sql')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala12
1 files changed, 7 insertions, 5 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala
index 6608036f01..e42be85367 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringOperations.scala
@@ -593,17 +593,19 @@ case class StringReverse(child: Expression) extends UnaryExpression with String2
* Returns a n spaces string.
*/
case class StringSpace(child: Expression)
- extends UnaryExpression with ImplicitCastInputTypes with CodegenFallback {
+ extends UnaryExpression with ImplicitCastInputTypes {
override def dataType: DataType = StringType
override def inputTypes: Seq[DataType] = Seq(IntegerType)
override def nullSafeEval(s: Any): Any = {
- val length = s.asInstanceOf[Integer]
+ val length = s.asInstanceOf[Int]
+ UTF8String.blankString(if (length < 0) 0 else length)
+ }
- val spaces = new Array[Byte](if (length < 0) 0 else length)
- java.util.Arrays.fill(spaces, ' '.asInstanceOf[Byte])
- UTF8String.fromBytes(spaces)
+ override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): String = {
+ nullSafeCodeGen(ctx, ev, (length) =>
+ s"""${ev.primitive} = UTF8String.blankString(($length < 0) ? 0 : $length);""")
}
override def prettyName: String = "space"