Github user kiszk commented on a diff in the pull request:

    https://github.com/apache/spark/pull/19811#discussion_r157410164
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/regexpExpressions.scala
 ---
    @@ -112,15 +112,14 @@ case class Like(left: Expression, right: Expression) 
extends StringRegexExpressi
       override protected def doGenCode(ctx: CodegenContext, ev: ExprCode): 
ExprCode = {
         val patternClass = classOf[Pattern].getName
         val escapeFunc = StringUtils.getClass.getName.stripSuffix("$") + 
".escapeLikeRegex"
    -    val pattern = ctx.freshName("pattern")
     
         if (right.foldable) {
           val rVal = right.eval()
           if (rVal != null) {
             val regexStr =
               
StringEscapeUtils.escapeJava(escape(rVal.asInstanceOf[UTF8String].toString()))
    -        ctx.addMutableState(patternClass, pattern,
    -          s"""$pattern = ${patternClass}.compile("$regexStr");""")
    +        val pattern = ctx.addMutableState(patternClass, "patternLike",
    +          v => s"""$v = ${patternClass}.compile("$regexStr");""", 
forceInline = true)
    --- End diff --
    
    Now, we have three rules to apply inlining
    1. Have to use the original name
    2. Frequently used in the hot spot
    3. [Not expected to be frequently 
generated](https://github.com/apache/spark/pull/19811#discussion_r157110933) 
proposed by @viirya 
    
    Now, we have no rule for 2. I will try to run microbenchmark for 2. Is it 
better to add these benchmarks into the benchmark directory?



---

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

Reply via email to