Skip to content

Commit

Permalink
rename
Browse files Browse the repository at this point in the history
  • Loading branch information
Davies Liu committed Jun 5, 2015
1 parent 8c6d82d commit c5fb514
Show file tree
Hide file tree
Showing 10 changed files with 54 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package org.apache.spark.sql.catalyst.expressions

import org.apache.spark.Logging
import org.apache.spark.sql.catalyst.errors.attachTree
import org.apache.spark.sql.catalyst.expressions.codegen.{EvaluatedExpression, Code, CodeGenContext}
import org.apache.spark.sql.catalyst.expressions.codegen.{GeneratedExpressionCode, Code, CodeGenContext}
import org.apache.spark.sql.types._
import org.apache.spark.sql.catalyst.trees

Expand All @@ -43,7 +43,7 @@ case class BoundReference(ordinal: Int, dataType: DataType, nullable: Boolean)

override def exprId: ExprId = throw new UnsupportedOperationException

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
s"""
final boolean ${ev.nullTerm} = i.isNullAt($ordinal);
final ${ctx.primitiveType(dataType)} ${ev.primitiveTerm} = ${ev.nullTerm} ?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import java.sql.{Date, Timestamp}
import java.text.{DateFormat, SimpleDateFormat}

import org.apache.spark.Logging
import org.apache.spark.sql.catalyst.expressions.codegen.{EvaluatedExpression, Code, CodeGenContext}
import org.apache.spark.sql.catalyst.expressions.codegen.{GeneratedExpressionCode, Code, CodeGenContext}
import org.apache.spark.sql.catalyst.util.DateUtils
import org.apache.spark.sql.types._

Expand Down Expand Up @@ -435,15 +435,15 @@ case class Cast(child: Expression, dataType: DataType) extends UnaryExpression w
if (evaluated == null) null else cast(evaluated)
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = this match {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = this match {

case Cast(child @ BinaryType(), StringType) =>
castOrNull (ctx, ev, c =>
s"new org.apache.spark.sql.types.UTF8String().set($c)")
s"new ${ctx.stringType}().set($c)")

case Cast(child @ DateType(), StringType) =>
castOrNull(ctx, ev, c =>
s"""new org.apache.spark.sql.types.UTF8String().set(
s"""new ${ctx.stringType}().set(
org.apache.spark.sql.catalyst.util.DateUtils.toString($c))""")

case Cast(child @ BooleanType(), dt: NumericType) if !dt.isInstanceOf[DecimalType] =>
Expand All @@ -462,7 +462,7 @@ case class Cast(child: Expression, dataType: DataType) extends UnaryExpression w
// does not match the expected output.
case Cast(e, StringType) if e.dataType != TimestampType =>
castOrNull(ctx, ev, c =>
s"new org.apache.spark.sql.types.UTF8String().set(String.valueOf($c))")
s"new ${ctx.stringType}().set(String.valueOf($c))")

case other =>
super.genCode(ctx, ev)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
package org.apache.spark.sql.catalyst.expressions

import org.apache.spark.sql.catalyst.analysis.{TypeCheckResult, UnresolvedAttribute}
import org.apache.spark.sql.catalyst.expressions.codegen.{EvaluatedExpression, Code, CodeGenContext}
import org.apache.spark.sql.catalyst.expressions.codegen.{GeneratedExpressionCode, Code, CodeGenContext}
import org.apache.spark.sql.catalyst.trees
import org.apache.spark.sql.catalyst.trees.TreeNode
import org.apache.spark.sql.types._
Expand Down Expand Up @@ -53,17 +53,17 @@ abstract class Expression extends TreeNode[Expression] {
def eval(input: Row = null): Any

/**
* Returns an [[EvaluatedExpression]], which contains Java source code that
* Returns an [[GeneratedExpressionCode]], which contains Java source code that
* can be used to generate the result of evaluating the expression on an input row.
*
*
* @param ctx a [[CodeGenContext]]
* @return [[EvaluatedExpression]]
* @return [[GeneratedExpressionCode]]
*/
def gen(ctx: CodeGenContext): EvaluatedExpression = {
def gen(ctx: CodeGenContext): GeneratedExpressionCode = {
val nullTerm = ctx.freshName("nullTerm")
val primitiveTerm = ctx.freshName("primitiveTerm")
val objectTerm = ctx.freshName("objectTerm")
val ve = EvaluatedExpression("", nullTerm, primitiveTerm, objectTerm)
val ve = GeneratedExpressionCode("", nullTerm, primitiveTerm, objectTerm)
ve.code = genCode(ctx, ve)
ve
}
Expand All @@ -72,10 +72,10 @@ abstract class Expression extends TreeNode[Expression] {
* Returns Java source code for this expression.
*
* @param ctx a [[CodeGenContext]]
* @param ev an [[EvaluatedExpression]] with unique terms.
* @param ev an [[GeneratedExpressionCode]] with unique terms.
* @return Java source code
*/
def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val e = this.asInstanceOf[Expression]
ctx.references += e
s"""
Expand Down Expand Up @@ -164,7 +164,7 @@ abstract class BinaryExpression extends Expression with trees.BinaryNode[Express
* @param f a function from two primitive term names to a tree that evaluates them.
*/
def evaluate(ctx: CodeGenContext,
ev: EvaluatedExpression,
ev: GeneratedExpressionCode,
f: (String, String) => String): String = {
// TODO: Right now some timestamp tests fail if we enforce this...
if (left.dataType != right.dataType) {
Expand Down Expand Up @@ -198,7 +198,7 @@ abstract class LeafExpression extends Expression with trees.LeafNode[Expression]
abstract class UnaryExpression extends Expression with trees.UnaryNode[Expression] {
self: Product =>
def castOrNull(ctx: CodeGenContext,
ev: EvaluatedExpression,
ev: GeneratedExpressionCode,
f: String => String): String = {
val eval = child.gen(ctx)
eval.code + s"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
package org.apache.spark.sql.catalyst.expressions

import org.apache.spark.sql.catalyst.analysis.TypeCheckResult
import org.apache.spark.sql.catalyst.expressions.codegen.{Code, EvaluatedExpression, CodeGenContext}
import org.apache.spark.sql.catalyst.expressions.codegen.{Code, GeneratedExpressionCode, CodeGenContext}
import org.apache.spark.sql.catalyst.util.TypeUtils
import org.apache.spark.sql.types._

Expand Down Expand Up @@ -117,7 +117,7 @@ abstract class BinaryArithmetic extends BinaryExpression {
}
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
if (left.dataType.isInstanceOf[DecimalType]) {
evaluate(ctx, ev, { case (eval1, eval2) => s"$eval1.$decimalMethod($eval2)" } )
} else {
Expand Down Expand Up @@ -205,7 +205,7 @@ case class Divide(left: Expression, right: Expression) extends BinaryArithmetic
}
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val eval1 = left.gen(ctx)
val eval2 = right.gen(ctx)
val test = if (left.dataType.isInstanceOf[DecimalType]) {
Expand Down Expand Up @@ -263,7 +263,7 @@ case class Remainder(left: Expression, right: Expression) extends BinaryArithmet
}
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val eval1 = left.gen(ctx)
val eval2 = right.gen(ctx)
val test = if (left.dataType.isInstanceOf[DecimalType]) {
Expand Down Expand Up @@ -406,7 +406,7 @@ case class MaxOf(left: Expression, right: Expression) extends BinaryArithmetic {
}
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
if (ctx.isNativeType(left.dataType)) {
val eval1 = left.gen(ctx)
val eval2 = right.gen(ctx)
Expand Down Expand Up @@ -460,7 +460,7 @@ case class MinOf(left: Expression, right: Expression) extends BinaryArithmetic {
}
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
if (ctx.isNativeType(left.dataType)) {

val eval1 = left.gen(ctx)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@ class LongHashSet extends org.apache.spark.util.collection.OpenHashSet[Long]
* valid if `nullTerm` is set to `true`.
* @param objectTerm A possibly boxed version of the result of evaluating this expression.
*/
case class EvaluatedExpression(var code: Code,
nullTerm: Term,
primitiveTerm: Term,
objectTerm: Term)
case class GeneratedExpressionCode(var code: Code,
nullTerm: Term,
primitiveTerm: Term,
objectTerm: Term)

/**
* A context for codegen, which is used to bookkeeping the expressions those are not supported
Expand All @@ -58,8 +58,8 @@ class CodeGenContext {
*/
val references: Seq[Expression] = new mutable.ArrayBuffer[Expression]()

protected val stringType = classOf[UTF8String].getName
protected val decimalType = classOf[Decimal].getName
val stringType = classOf[UTF8String].getName
val decimalType = classOf[Decimal].getName

private val curId = new java.util.concurrent.atomic.AtomicInteger()

Expand All @@ -75,7 +75,7 @@ class CodeGenContext {

def getColumn(dataType: DataType, ordinal: Int): Code = {
dataType match {
case StringType => s"(org.apache.spark.sql.types.UTF8String)i.apply($ordinal)"
case StringType => s"($stringType)i.apply($ordinal)"
case dt: DataType if isNativeType(dt) => s"i.${accessorForType(dt)}($ordinal)"
case _ => s"(${boxedType(dataType)})i.apply($ordinal)"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package org.apache.spark.sql.catalyst.expressions

import org.apache.spark.sql.catalyst.expressions.codegen.{EvaluatedExpression, Code, CodeGenContext}
import org.apache.spark.sql.catalyst.expressions.codegen.{GeneratedExpressionCode, Code, CodeGenContext}
import org.apache.spark.sql.types._

/** Return the unscaled Long value of a Decimal, assuming it fits in a Long */
Expand All @@ -37,7 +37,7 @@ case class UnscaledValue(child: Expression) extends UnaryExpression {
}
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val eval = child.gen(ctx)
eval.code + s"""
boolean ${ev.nullTerm} = ${eval.nullTerm};
Expand All @@ -63,7 +63,7 @@ case class MakeDecimal(child: Expression, precision: Int, scale: Int) extends Un
}
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val eval = child.gen(ctx)
eval.code + s"""
boolean ${ev.nullTerm} = ${eval.nullTerm};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ package org.apache.spark.sql.catalyst.expressions
import java.sql.{Date, Timestamp}

import org.apache.spark.sql.catalyst.CatalystTypeConverters
import org.apache.spark.sql.catalyst.expressions.codegen.{Code, CodeGenContext, EvaluatedExpression}
import org.apache.spark.sql.catalyst.expressions.codegen.{Code, CodeGenContext, GeneratedExpressionCode}
import org.apache.spark.sql.catalyst.util.DateUtils
import org.apache.spark.sql.types._

Expand Down Expand Up @@ -81,7 +81,7 @@ case class Literal protected (value: Any, dataType: DataType) extends LeafExpres

override def eval(input: Row): Any = value

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
if (value == null) {
s"""
final boolean ${ev.nullTerm} = true;
Expand All @@ -94,8 +94,7 @@ case class Literal protected (value: Any, dataType: DataType) extends LeafExpres
val arr = s"new byte[]{${v.getBytes.map(_.toString).mkString(", ")}}"
s"""
final boolean ${ev.nullTerm} = false;
org.apache.spark.sql.types.UTF8String ${ev.primitiveTerm} =
new org.apache.spark.sql.types.UTF8String().set(${arr});
${ctx.stringType} ${ev.primitiveTerm} = new ${ctx.stringType}().set(${arr});
"""
case FloatType =>
s"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

package org.apache.spark.sql.catalyst.expressions

import org.apache.spark.sql.catalyst.expressions.codegen.{EvaluatedExpression, CodeGenContext}
import org.apache.spark.sql.catalyst.expressions.codegen.{GeneratedExpressionCode, CodeGenContext}
import org.apache.spark.sql.catalyst.trees
import org.apache.spark.sql.catalyst.analysis.UnresolvedException
import org.apache.spark.sql.types.DataType
Expand Down Expand Up @@ -53,7 +53,7 @@ case class Coalesce(children: Seq[Expression]) extends Expression {
result
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
s"""
boolean ${ev.nullTerm} = true;
${ctx.primitiveType(dataType)} ${ev.primitiveTerm} = ${ctx.defaultValue(dataType)};
Expand Down Expand Up @@ -81,7 +81,7 @@ case class IsNull(child: Expression) extends Predicate with trees.UnaryNode[Expr
child.eval(input) == null
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val eval = child.gen(ctx)
eval.code + s"""
final boolean ${ev.nullTerm} = false;
Expand All @@ -101,7 +101,7 @@ case class IsNotNull(child: Expression) extends Predicate with trees.UnaryNode[E
child.eval(input) != null
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val eval = child.gen(ctx)
eval.code + s"""
boolean ${ev.nullTerm} = false;
Expand Down Expand Up @@ -132,7 +132,7 @@ case class AtLeastNNonNulls(n: Int, children: Seq[Expression]) extends Predicate
numNonNulls >= n
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val nonnull = ctx.freshName("nonnull")
val code = children.map { e =>
val eval = e.gen(ctx)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package org.apache.spark.sql.catalyst.expressions

import org.apache.spark.sql.catalyst.analysis.TypeCheckResult
import org.apache.spark.sql.catalyst.util.TypeUtils
import org.apache.spark.sql.catalyst.expressions.codegen.{EvaluatedExpression, Code, CodeGenContext}
import org.apache.spark.sql.catalyst.expressions.codegen.{GeneratedExpressionCode, Code, CodeGenContext}
import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan
import org.apache.spark.sql.types._

Expand Down Expand Up @@ -84,7 +84,7 @@ case class Not(child: Expression) extends UnaryExpression with Predicate with Ex
}
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
castOrNull(ctx, ev, c => s"!($c)")
}
}
Expand Down Expand Up @@ -146,7 +146,7 @@ case class And(left: Expression, right: Expression)
}
}
}
override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val eval1 = left.gen(ctx)
val eval2 = right.gen(ctx)
s"""
Expand Down Expand Up @@ -192,7 +192,7 @@ case class Or(left: Expression, right: Expression)
}
}
}
override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val eval1 = left.gen(ctx)
val eval2 = right.gen(ctx)
s"""
Expand All @@ -218,7 +218,7 @@ case class Or(left: Expression, right: Expression)

abstract class BinaryComparison extends BinaryExpression with Predicate {
self: Product =>
override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
left.dataType match {
case dt: NumericType if ctx.isNativeType(dt) => evaluate (ctx, ev, {
(c1, c3) => s"$c1 $symbol $c3"
Expand Down Expand Up @@ -276,7 +276,7 @@ case class EqualTo(left: Expression, right: Expression) extends BinaryComparison
if (left.dataType != BinaryType) l == r
else java.util.Arrays.equals(l.asInstanceOf[Array[Byte]], r.asInstanceOf[Array[Byte]])
}
override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
evaluate(ctx, ev, ctx.equalFunc(left.dataType))
}
}
Expand All @@ -300,7 +300,7 @@ case class EqualNullSafe(left: Expression, right: Expression) extends BinaryComp
}
}

override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val eval1 = left.gen(ctx)
val eval2 = right.gen(ctx)
val equalCode = ctx.equalFunc(left.dataType)(eval1.primitiveTerm, eval2.primitiveTerm)
Expand Down Expand Up @@ -383,7 +383,7 @@ case class If(predicate: Expression, trueValue: Expression, falseValue: Expressi
falseValue.eval(input)
}
}
override def genCode(ctx: CodeGenContext, ev: EvaluatedExpression): Code = {
override def genCode(ctx: CodeGenContext, ev: GeneratedExpressionCode): Code = {
val condEval = predicate.gen(ctx)
val trueEval = trueValue.gen(ctx)
val falseEval = falseValue.gen(ctx)
Expand Down
Loading

0 comments on commit c5fb514

Please sign in to comment.