Github user viirya commented on a diff in the pull request: https://github.com/apache/spark/pull/19813#discussion_r155538158 --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala --- @@ -55,8 +55,23 @@ import org.apache.spark.util.{ParentClassLoader, Utils} * to null. * @param value A term for a (possibly primitive) value of the result of the evaluation. Not * valid if `isNull` is set to `true`. + * @param inputRow A term that holds the input row name when generating this code. + * @param inputVars A list of [[ExprInputVar]] that holds input variables when generating this code. */ -case class ExprCode(var code: String, var isNull: String, var value: String) +case class ExprCode( + var code: String, + var isNull: String, + var value: String, + var inputRow: String = null, + var inputVars: Seq[ExprInputVar] = Seq.empty) + +/** + * Represents an input variable [[ExprCode]] to an evaluation of an [[Expression]]. + * + * @param expr The expression that is evaluated to the input variable. + * @param exprCode The [[ExprCode]] that represents the evaluation result for the input variable. + */ +case class ExprInputVar(expr: Expression, exprCode: ExprCode) --- End diff -- Yea, I also think about this before. Just thinking taking an expression is simpler. I will change it.
--- --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org