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

    https://github.com/apache/spark/pull/18975#discussion_r137929091
  
    --- Diff: 
sql/core/src/main/scala/org/apache/spark/sql/execution/SparkSqlParser.scala ---
    @@ -1512,4 +1512,81 @@ class SparkSqlAstBuilder(conf: SQLConf) extends 
AstBuilder(conf) {
           query: LogicalPlan): LogicalPlan = {
         RepartitionByExpression(expressions, query, conf.numShufflePartitions)
       }
    +
    +  /**
    +   * Return the parameters for [[InsertIntoDir]] logical plan.
    +   *
    +   * Expected format:
    +   * {{{
    +   *   INSERT OVERWRITE DIRECTORY
    +   *   [path]
    +   *   [OPTIONS table_property_list]
    +   *   select_statement;
    +   * }}}
    +   */
    +  override def visitInsertOverwriteDir(
    +      ctx: InsertOverwriteDirContext): InsertDirParams = withOrigin(ctx) {
    +    if (ctx.LOCAL != null) {
    +      throw new ParseException(
    +        "LOCAL is not supported in INSERT OVERWRITE DIRECTORY to data 
source", ctx)
    +    }
    +
    +    val options = 
Option(ctx.options).map(visitPropertyKeyValues).getOrElse(Map.empty)
    +    var storage = DataSource.buildStorageFormatFromOptions(options)
    +
    +    val path = Option(ctx.path).map(string).getOrElse("")
    +
    +    if (!(path.isEmpty ^ storage.locationUri.isEmpty)) {
    +      throw new ParseException(
    +        "Directory path and 'path' in OPTIONS should be specified one, but 
not both", ctx)
    --- End diff --
    
    I think the original message is clear and simple. 


---

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

Reply via email to