Github user viirya commented on a diff in the pull request:
https://github.com/apache/spark/pull/19813#discussion_r156286015
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala
---
@@ -55,8 +55,45 @@ 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) {
+
+ // Returns true if this value is a literal.
+ def isLiteral(): Boolean = {
+ assert(value.nonEmpty, "ExprCode.value can't be empty string.")
+
+ if (value == "true" || value == "false" || value == "null") {
+ true
+ } else {
+ // The valid characters for the first character of a Java variable
is [a-zA-Z_$].
+ value.head match {
+ case v if v >= 'a' && v <= 'z' => false
--- End diff --
Is array accessing like `arr[1]` all global variables or not?
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]