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

    https://github.com/apache/spark/pull/20521#discussion_r166407366
  
    --- Diff: 
sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSource.scala
 ---
    @@ -493,9 +510,23 @@ case class DataSource(
             dataSource.createRelation(
               sparkSession.sqlContext, mode, caseInsensitiveOptions, 
Dataset.ofRows(sparkSession, data))
           case format: FileFormat =>
    -        
sparkSession.sessionState.executePlan(planForWritingFileFormat(format, mode, 
data)).toRdd
    +        val cmd = planForWritingFileFormat(format, mode, data)
    +        val resolvedPartCols = cmd.partitionColumns.map { col =>
    +          // The partition columns created in `planForWritingFileFormat` 
should always be
    +          // `UnresolvedAttribute` with a single name part.
    +          assert(col.isInstanceOf[UnresolvedAttribute])
    +          val unresolved = col.asInstanceOf[UnresolvedAttribute]
    +          assert(unresolved.nameParts.length == 1)
    +          val name = unresolved.nameParts.head
    +          outputColumns.find(a => equality(a.name, name)).getOrElse {
    +            throw new AnalysisException(
    +              s"Unable to resolve $name given 
[${data.output.map(_.name).mkString(", ")}]")
    +          }
    +        }
    +        val resolved = cmd.copy(partitionColumns = resolvedPartCols, 
outputColumns = outputColumns)
    --- End diff --
    
    I get the point of passing the physical plan, and I think that's a good 
idea. What I don't understand is why the command doesn't match the physical 
plan that is passed in. Is that physical plan based on a different logical 
plan? I would expect that the physical plan is created once and passed into 
run, but that it was created from the logical plan that is also passed in.


---

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

Reply via email to