[
https://issues.apache.org/jira/browse/CARBONDATA-2960?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
MANISH NALLA updated CARBONDATA-2960:
-------------------------------------
Description: (was: /*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.apache.carbondata.spark.testsuite.createTable.TestCreateDDLForComplexMapType
import org.apache.hadoop.conf.Configuration
import org.apache.spark.sql.test.util.QueryTest
import org.scalatest.BeforeAndAfterAll
class TestCreateDDLForComplexMapType extends QueryTest with BeforeAndAfterAll{
private val conf: Configuration = new Configuration(false)
override def beforeAll(): Unit = {
sql("DROP TABLE IF EXISTS carbon")
}
test("Single Map One Level") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField map<STRING,STRING>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
assert(desc(0).get(1).asInstanceOf[String].trim.equals("map<string,string>"))
}
test("Single Map One Level 2") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField map<INT,STRING>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
sql("insert into carbon values('1:Nalla%2:Singh%1:Gupta%5000:Kumar')")
sql("select * from carbon").show(false)
// assert(desc(0).get(1).asInstanceOf[String].trim.equals("map<string,string>"))
}
test("Single Map with Two Nested Level") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField map<STRING,map<INT,STRING>>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
assert(desc(0).get(1).asInstanceOf[String].trim.equals("map<string,map<int,string>>"))
}
test("Map Type with array type as value") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField map<STRING,array<INT>>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
assert(desc(0).get(1).asInstanceOf[String].trim.equals("map<string,array<int>>"))
}
test("Map Type with struct type as value") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField map<STRING,struct<key:INT,val:INT>>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
assert(desc(0).get(1).asInstanceOf[String].trim.equals("map<string,struct<key:int,val:int>>"))
}
test("Map Type as child to struct type") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField struct<key:INT,val:map<INT,INT>>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
assert(desc(0).get(1).asInstanceOf[String].trim.equals("struct<key:int,val:map<int,int>>"))
}
test("Map Type as child to array type") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField array<map<INT,INT>>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
assert(desc(0).get(1).asInstanceOf[String].trim.equals("array<map<int,int>>"))
}
test("Map Type as child to array<array> type") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField array<array<map<INT,INT>>>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
assert(desc(0).get(1).asInstanceOf[String].trim.equals("array<array<map<int,int>>>"))
}
test("3 levels") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField array<struct<key:INT,val:INT>>
| )
| STORED BY 'carbondata'
""".stripMargin
)
/*val desc =*/ sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).show()/*.collect()*/
sql("INSERT into carbon values('1:3$2:3$4:3')")
//
assert(desc(0).get(1).asInstanceOf[String].trim.equals("array<array<map<int,int>>>"))
}
test("Test Load data in map") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField map<INT,STRING>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
sql("insert into carbon values('1:Nalla$2:Singh$3:Gupta$5000:Kumar')")
sql("select * from carbon").show(false)
}
test("Test Load duplicate keys data in map") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField map<INT,STRING>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
sql("insert into carbon values('1:Nalla$2:Singh$1:Gupta$5000:Kumar')")
sql("select * from carbon").show(false)
}
test("Test Load data in map of map") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField map<STRING,map<INT,STRING>>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
sql("insert into carbon
values('manish:1%nalla#2%gupta$kunal:1%kapoor#2%sharma')")
sql("select * from carbon").show(false)
}
test("Test Load duplicate keys data in map of map") {
sql("DROP TABLE IF EXISTS carbon")
sql(
s"""
| CREATE TABLE carbon(
| mapField map<STRING,map<INT,STRING>>
| )
| STORED BY 'carbondata'
""".stripMargin
)
val desc = sql(
s"""
| Describe Formatted
| carbon
""".stripMargin
).collect()
assert(desc(0).get(1).asInstanceOf[String].trim.equals("map<string,map<int,string>>"))
sql("insert into carbon
values('manish:1%nalla#1%gupta$kunal:1%kapoor#2%sharma')")
sql("select * from carbon").show(false)
}
})
> SDK reader not working without projection columns
> -------------------------------------------------
>
> Key: CARBONDATA-2960
> URL: https://issues.apache.org/jira/browse/CARBONDATA-2960
> Project: CarbonData
> Issue Type: Improvement
> Reporter: MANISH NALLA
> Assignee: MANISH NALLA
> Priority: Major
> Time Spent: 3h 20m
> Remaining Estimate: 0h
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)