diff --git a/sql/core/src/test/scala/org/apache/spark/sql/MetadataSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/MetadataSuite.scala index f289461d8034a..94ca949ab40f7 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/MetadataSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/MetadataSuite.scala @@ -3,26 +3,31 @@ package org.apache.spark.sql import org.apache.spark.sql.test.TestSQLContext import org.scalatest.FunSuite -case class Person(name: String, age: Int) +case class Person(id: Int, name: String, age: Int) + +case class Score(personId: Int, score: Double) class MetadataSuite extends FunSuite { test("metadata") { val sqlContext = TestSQLContext import sqlContext._ - val members = sqlContext.sparkContext.makeRDD(Seq( - Person("mike", 10), - Person("jim", 20))) - val person: SchemaRDD = sqlContext.createSchemaRDD(members) - val schema: StructType = person.schema - println("schema: " + schema) - val ageField = schema("age").copy(metadata = Map("doc" -> "age (must be nonnegative)")) - val newSchema = schema.copy(Seq(schema("name"), ageField)) - val newTable = sqlContext.applySchema(person, newSchema) - newTable.registerTempTable("person") - val selectByExprAgeField = newTable.select('age).schema("age") + val person = sqlContext.sparkContext.makeRDD(Seq( + Person(0, "mike", 10), + Person(1, "jim", 20))).toSchemaRDD + val score = sqlContext.sparkContext.makeRDD(Seq( + Score(0, 4.0), + Score(1, 5.0))).toSchemaRDD + val personSchema: StructType = person.schema + println("schema: " + personSchema) + val ageField = personSchema("age").copy(metadata = Map("doc" -> "age (must be nonnegative)")) + val newPersonSchema = personSchema.copy(Seq(personSchema("id"), personSchema("name"), ageField)) + val newPerson = sqlContext.applySchema(person, newPersonSchema) + newPerson.registerTempTable("person") + score.registerTempTable("score") + val selectByExprAgeField = newPerson.select('age).schema("age") assert(selectByExprAgeField.metadata.contains("doc")) - val selectByNameAttrAgeField = newTable.select("age".attr).schema("age") + val selectByNameAttrAgeField = newPerson.select("age".attr).schema("age") assert(selectByNameAttrAgeField.metadata.contains("doc")) val selectAgeBySQL = sql("SELECT age FROM person").schema("age") println(selectAgeBySQL) @@ -30,5 +35,11 @@ class MetadataSuite extends FunSuite { val selectStarBySQL = sql("SELECT * FROM person").schema("age") println(selectStarBySQL) assert(selectStarBySQL.metadata.contains("doc")) + val selectStarJoinBySQL = sql("SELECT * FROM person JOIN score ON id = personId").schema("age") + println(selectStarJoinBySQL) + assert(selectStarJoinBySQL.metadata.contains("doc")) + val selectAgeJoinBySQL = sql("SELECT age, score FROM person JOIN score ON id = personId").schema("age") + println(selectAgeJoinBySQL) + assert(selectAgeJoinBySQL.metadata.contains("doc")) } }