Github user cloud-fan commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20085#discussion_r160347559
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala
 ---
    @@ -182,6 +182,111 @@ case class StaticInvoke(
       }
     }
     
    +/**
    + * Invokes a call to reference to a static field.
    + *
    + * @param staticObject The target of the static call.  This can either be 
the object itself
    + *                     (methods defined on scala objects), or the class 
object
    + *                     (static methods defined in java).
    + * @param dataType The expected return type of the function call.
    + * @param fieldName The field to reference.
    + */
    +case class StaticField(
    +  staticObject: Class[_],
    +  dataType: DataType,
    +  fieldName: String) extends Expression with NonSQLExpression {
    +
    +  val objectName = staticObject.getName.stripSuffix("$")
    +
    +  override def nullable: Boolean = false
    +  override def children: Seq[Expression] = Nil
    +
    +  override def eval(input: InternalRow): Any =
    +    throw new UnsupportedOperationException("Only code-generated 
evaluation is supported.")
    +
    +  override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode = {
    +    val javaType = ctx.javaType(dataType)
    +
    +    val code = s"""
    +      final $javaType ${ev.value} = $objectName.$fieldName;
    --- End diff --
    
    do we need this expression for such a simple function?


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to