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

    https://github.com/apache/spark/pull/21472#discussion_r192358871
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/jsonExpressions.scala
 ---
    @@ -747,8 +748,13 @@ case class StructsToJson(
     
     object JsonExprUtils {
     
    -  def validateSchemaLiteral(exp: Expression): StructType = exp match {
    -    case Literal(s, StringType) => 
CatalystSqlParser.parseTableSchema(s.toString)
    +  def validateSchemaLiteral(exp: Expression): DataType = exp match {
    +    case Literal(s, StringType) =>
    +      try {
    +        DataType.fromJson(s.toString)
    --- End diff --
    
    > Shall we add the support with type itself with 
CatalystSqlParser.parseDataType too?
    
    I will do but it won't solve customer's problem fully.
    
    > Also, are you able to use catalogString?
    
    I just check that:
    ```scala
    val schema = MapType(StringType, IntegerType).catalogString
    val ds = spark.sql(
          s"""
            |select from_json('{"a":1}', '$schema')
          """.stripMargin)
    ds.show()
    ```
    and got this one:
    
    ```
    extraneous input '<' expecting {'SELECT', 'FROM', ...}(line 1, pos 3)
    
    == SQL ==
    map<string,int>
    ---^^^
    ; line 2 pos 7
    ```
    
    The same with ` val schema = new StructType().add("a", 
IntegerType).catalogString
    `
    
    ```
    == SQL ==
    struct<a:int>
    ------^^^
    ; line 2 pos 7
    org.apache.spark.sql.AnalysisException
    ```
    
    Am I doing something wrong?


---

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

Reply via email to