Skip to content

Commit 9632719

Browse files
yhuaimarmbrus
authored andcommitted
[SPARK-2779] [SQL] asInstanceOf[Map[...]] should use scala.collection.Map instead of scala.collection.immutable.Map
Since we let users create Rows. It makes sense to accept mutable Maps as values of MapType columns. JIRA: https://issues.apache.org/jira/browse/SPARK-2779 Author: Yin Huai <[email protected]> Closes apache#1705 from yhuai/SPARK-2779 and squashes the following commits: 00d72fd [Yin Huai] Use scala.collection.Map.
1 parent b124de5 commit 9632719

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypes.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
package org.apache.spark.sql.catalyst.expressions
1919

20+
import scala.collection.Map
21+
2022
import org.apache.spark.sql.catalyst.types._
2123

2224
/**

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/generators.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
package org.apache.spark.sql.catalyst.expressions
1919

20+
import scala.collection.Map
21+
2022
import org.apache.spark.sql.catalyst.trees
2123
import org.apache.spark.sql.catalyst.types._
2224

sql/core/src/main/scala/org/apache/spark/sql/json/JsonRDD.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.apache.spark.sql.json
1919

20+
import scala.collection.Map
2021
import scala.collection.convert.Wrappers.{JMapWrapper, JListWrapper}
2122
import scala.math.BigDecimal
2223

sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,5 +505,24 @@ class SQLQuerySuite extends QueryTest {
505505
(2, null) ::
506506
(3, null) ::
507507
(4, 2147483644) :: Nil)
508+
509+
// The value of a MapType column can be a mutable map.
510+
val rowRDD3 = unparsedStrings.map { r =>
511+
val values = r.split(",").map(_.trim)
512+
val v4 = try values(3).toInt catch {
513+
case _: NumberFormatException => null
514+
}
515+
Row(Row(values(0).toInt, values(2).toBoolean), scala.collection.mutable.Map(values(1) -> v4))
516+
}
517+
518+
val schemaRDD3 = applySchema(rowRDD3, schema2)
519+
schemaRDD3.registerAsTable("applySchema3")
520+
521+
checkAnswer(
522+
sql("SELECT f1.f11, f2['D4'] FROM applySchema3"),
523+
(1, null) ::
524+
(2, null) ::
525+
(3, null) ::
526+
(4, 2147483644) :: Nil)
508527
}
509528
}

0 commit comments

Comments
 (0)