aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst/src
diff options
context:
space:
mode:
authorNathan Howell <nhowell@godaddy.com>2016-12-07 16:52:05 -0800
committerReynold Xin <rxin@databricks.com>2016-12-07 16:52:05 -0800
commitbec0a9217b896a596c0a0919888da34589fc720d (patch)
tree1d548a718abb546459dbeaf209e6b8ec83471c6d /sql/catalyst/src
parent70b2bf717d367d598c5a238d569d62c777e63fde (diff)
downloadspark-bec0a9217b896a596c0a0919888da34589fc720d.tar.gz
spark-bec0a9217b896a596c0a0919888da34589fc720d.tar.bz2
spark-bec0a9217b896a596c0a0919888da34589fc720d.zip
[SPARK-18654][SQL] Remove unreachable patterns in makeRootConverter
## What changes were proposed in this pull request? `makeRootConverter` is only called with a `StructType` value. By making this method less general we can remove pattern matches, which are never actually hit outside of the test suite. ## How was this patch tested? The existing tests. Author: Nathan Howell <nhowell@godaddy.com> Closes #16084 from NathanHowell/SPARK-18654.
Diffstat (limited to 'sql/catalyst/src')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala56
1 files changed, 21 insertions, 35 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala
index e476cb11a3..03e27ba934 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala
@@ -119,47 +119,33 @@ class JacksonParser(
* to a value according to a desired schema. This is a wrapper for the method
* `makeConverter()` to handle a row wrapped with an array.
*/
- def makeRootConverter(dataType: DataType): ValueConverter = dataType match {
- case st: StructType =>
- val elementConverter = makeConverter(st)
- val fieldConverters = st.map(_.dataType).map(makeConverter)
- (parser: JsonParser) => parseJsonToken(parser, dataType) {
- case START_OBJECT => convertObject(parser, st, fieldConverters)
- // SPARK-3308: support reading top level JSON arrays and take every element
- // in such an array as a row
- //
- // For example, we support, the JSON data as below:
- //
- // [{"a":"str_a_1"}]
- // [{"a":"str_a_2"}, {"b":"str_b_3"}]
- //
- // resulting in:
- //
- // List([str_a_1,null])
- // List([str_a_2,null], [null,str_b_3])
- //
- case START_ARRAY => convertArray(parser, elementConverter)
- }
-
- case ArrayType(st: StructType, _) =>
- val elementConverter = makeConverter(st)
- val fieldConverters = st.map(_.dataType).map(makeConverter)
- (parser: JsonParser) => parseJsonToken(parser, dataType) {
- // the business end of SPARK-3308:
- // when an object is found but an array is requested just wrap it in a list.
- // This is being wrapped in `JacksonParser.parse`.
- case START_OBJECT => convertObject(parser, st, fieldConverters)
- case START_ARRAY => convertArray(parser, elementConverter)
- }
-
- case _ => makeConverter(dataType)
+ private def makeRootConverter(st: StructType): ValueConverter = {
+ val elementConverter = makeConverter(st)
+ val fieldConverters = st.map(_.dataType).map(makeConverter)
+ (parser: JsonParser) => parseJsonToken(parser, st) {
+ case START_OBJECT => convertObject(parser, st, fieldConverters)
+ // SPARK-3308: support reading top level JSON arrays and take every element
+ // in such an array as a row
+ //
+ // For example, we support, the JSON data as below:
+ //
+ // [{"a":"str_a_1"}]
+ // [{"a":"str_a_2"}, {"b":"str_b_3"}]
+ //
+ // resulting in:
+ //
+ // List([str_a_1,null])
+ // List([str_a_2,null], [null,str_b_3])
+ //
+ case START_ARRAY => convertArray(parser, elementConverter)
+ }
}
/**
* Create a converter which converts the JSON documents held by the `JsonParser`
* to a value according to a desired schema.
*/
- private def makeConverter(dataType: DataType): ValueConverter = dataType match {
+ private[sql] def makeConverter(dataType: DataType): ValueConverter = dataType match {
case BooleanType =>
(parser: JsonParser) => parseJsonToken(parser, dataType) {
case VALUE_TRUE => true