aboutsummaryrefslogtreecommitdiff
path: root/sql/core/src
diff options
context:
space:
mode:
Diffstat (limited to 'sql/core/src')
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSource.scala14
1 files changed, 12 insertions, 2 deletions
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSource.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSource.scala
index 10fde152ab..23a7071086 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSource.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSource.scala
@@ -310,7 +310,17 @@ case class DataSource(
val fileCatalog: FileCatalog =
new HDFSFileCatalog(sqlContext, options, globbedPaths, partitionSchema)
- val dataSchema = userSpecifiedSchema.orElse {
+
+ val dataSchema = userSpecifiedSchema.map { schema =>
+ val equality =
+ if (sqlContext.conf.caseSensitiveAnalysis) {
+ org.apache.spark.sql.catalyst.analysis.caseSensitiveResolution
+ } else {
+ org.apache.spark.sql.catalyst.analysis.caseInsensitiveResolution
+ }
+
+ StructType(schema.filterNot(f => partitionColumns.exists(equality(_, f.name))))
+ }.orElse {
format.inferSchema(
sqlContext,
caseInsensitiveOptions,
@@ -318,7 +328,7 @@ case class DataSource(
}.getOrElse {
throw new AnalysisException(
s"Unable to infer schema for $format at ${allPaths.take(2).mkString(",")}. " +
- "It must be specified manually")
+ "It must be specified manually")
}
val enrichedOptions =