SuccessChanges

Summary

  1. [SPARK-23523][SQL][BACKPORT-2.3] Fix the incorrect result caused by the (commit: 33ba8db8d8c8bf388606a6f5e34b082469038205) (details)
Commit 33ba8db8d8c8bf388606a6f5e34b082469038205 by gatorsmile
[SPARK-23523][SQL][BACKPORT-2.3] Fix the incorrect result caused by the
rule OptimizeMetadataOnlyQuery
This PR is to backport https://github.com/apache/spark/pull/20684 and
https://github.com/apache/spark/pull/20693 to Spark 2.3 branch
---
## What changes were proposed in this pull request?
```Scala val tablePath = new
File(s"${path.getCanonicalPath}/cOl3=c/cOl1=a/cOl5=e")
Seq(("a", "b", "c", "d", "e")).toDF("cOl1", "cOl2", "cOl3", "cOl4",
"cOl5")
.write.json(tablePath.getCanonicalPath)
val df = spark.read.json(path.getCanonicalPath).select("CoL1", "CoL5",
"CoL3").distinct()
df.show()
```
It generates a wrong result.
```
[c,e,a]
```
We have a bug in the rule `OptimizeMetadataOnlyQuery `. We should
respect the attribute order in the original leaf node. This PR is to fix
it.
## How was this patch tested? Added a test case
Author: Xingbo Jiang <xingbo.jiang@databricks.com> Author: gatorsmile
<gatorsmile@gmail.com>
Closes #20763 from gatorsmile/backport23523.
(commit: 33ba8db8d8c8bf388606a6f5e34b082469038205)
The file was modifiedsql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/LocalRelation.scala (diff)
The file was modifiedsql/core/src/main/scala/org/apache/spark/sql/execution/OptimizeMetadataOnlyQuery.scala (diff)
The file was modifiedsql/core/src/main/scala/org/apache/spark/sql/execution/datasources/HadoopFsRelation.scala (diff)
The file was modifiedsql/core/src/test/scala/org/apache/spark/sql/execution/OptimizeMetadataOnlyQuerySuite.scala (diff)