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

    https://github.com/apache/spark/pull/14158#discussion_r119008402
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/parser/ParseDriver.scala
 ---
    @@ -65,13 +65,29 @@ abstract class AbstractSqlParser extends 
ParserInterface with Logging {
       }
     
       /** Creates LogicalPlan for a given SQL string. */
    -  override def parsePlan(sqlText: String): LogicalPlan = parse(sqlText) { 
parser =>
    -    astBuilder.visitSingleStatement(parser.singleStatement()) match {
    -      case plan: LogicalPlan => plan
    -      case _ =>
    -        val position = Origin(None, None)
    -        throw new ParseException(Option(sqlText), "Unsupported SQL 
statement", position, position)
    +  override def parsePlan(sqlText: String): LogicalPlan = {
    +    val logicalPlan = parse(sqlText) { parser =>
    +      astBuilder.visitSingleStatement(parser.singleStatement()) match {
    +        case plan: LogicalPlan => plan
    +        case _ =>
    +          val position = Origin(None, None)
    +          throw new ParseException(Option(sqlText), "Unsupported SQL 
statement", position, position)
    +      }
    +    }
    +    // Record the original sql text in the top logical plan for checking 
in the web UI.
    +    // Truncate the text to avoid downing browsers or web UI servers by 
running out of memory.
    +    val maxLength = 1000
    +    val suffix = " ... (truncated)"
    +    val truncateLength = maxLength - suffix.length
    +    val truncatedSqlText = {
    +      if (sqlText.length <= maxLength) {
    +        sqlText
    +      } else {
    +        sqlText.substring(0, truncateLength) + suffix
    +      }
         }
    +    logicalPlan.sqlText = Some(truncatedSqlText)
    +    logicalPlan
    --- End diff --
    
    The solution in this PR looks intrusive to me. If we really want to store 
the original sql text, we can add it into the QueryExecution. The value can be 
initialized when we build the QueryExecution


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

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

Reply via email to