This is an automated email from the ASF dual-hosted git repository.

ajantha pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/carbondata.git


The following commit(s) were added to refs/heads/master by this push:
     new 9a2246d  [CARBONDATA-3556] Added testcases for Insert into Complex 
data type of all Primitive types with 2 levels
9a2246d is described below

commit 9a2246ddf732364c075d0801743cba627c94688e
Author: Indhumathi27 <[email protected]>
AuthorDate: Wed Aug 28 14:56:06 2019 +0530

    [CARBONDATA-3556] Added testcases for Insert into Complex data type of all 
Primitive types with 2 levels
    
    Added testcases for Insert into Complex data type of all Primitive types
    with 2 levels with CarbonSession and SparkFileFormat
    
    This closes #3384
---
 .../complexType/TestAllComplexDataType.scala       | 722 +++++++++++++++++++++
 .../complexType/TestComplexDataType.scala          |  17 +
 2 files changed, 739 insertions(+)

diff --git 
a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestAllComplexDataType.scala
 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestAllComplexDataType.scala
new file mode 100644
index 0000000..15118db
--- /dev/null
+++ 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestAllComplexDataType.scala
@@ -0,0 +1,722 @@
+/*
+ * 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.integration.spark.testsuite.complexType
+
+import org.apache.spark.sql.test.util.QueryTest
+import org.scalatest.BeforeAndAfterAll
+
+import org.apache.carbondata.core.constants.CarbonCommonConstants
+import org.apache.carbondata.core.util.CarbonProperties
+
+class TestAllComplexDataType extends QueryTest with BeforeAndAfterAll {
+
+  private val timestampFormat = CarbonProperties.getInstance()
+    .getProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT)
+  private val dateFormat = CarbonProperties.getInstance()
+    .getProperty(CarbonCommonConstants.CARBON_DATE_FORMAT)
+
+  override def beforeAll: Unit = {
+    CarbonProperties.getInstance()
+      .addProperty(CarbonCommonConstants.CARBON_DATE_FORMAT,
+        CarbonCommonConstants.CARBON_DATE_DEFAULT_FORMAT)
+    CarbonProperties.getInstance()
+      .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT,
+        CarbonCommonConstants.CARBON_TIMESTAMP_DEFAULT_FORMAT)
+    dropTables()
+  }
+
+  override def afterAll: Unit = {
+    if(null != dateFormat) {
+      CarbonProperties.getInstance()
+        .addProperty(CarbonCommonConstants.CARBON_DATE_FORMAT, dateFormat)
+    }
+    if(null != timestampFormat) {
+      CarbonProperties.getInstance()
+        .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, 
timestampFormat)
+    }
+    dropTables()
+  }
+
+  def dropTables(): Unit = {
+    sql("drop table if exists complextable")
+    sql("drop table if exists hivetable")
+    sql("drop table if exists fileformatTable")
+  }
+
+  def checkResults(): Unit = {
+    checkAnswer(sql("select * from fileformatTable"), sql("select * from 
hivetable"))
+    checkAnswer(sql("select * from complextable"), sql("select * from 
hivetable"))
+    dropTables()
+  }
+
+  def createTables(schema: String): Unit = {
+    dropTables()
+    sql("create table complextable" + schema + " stored by 'carbondata'")
+    sql("create table hivetable" + schema + " row format delimited fields 
terminated by ','")
+    sql("create table fileformatTable" + schema + " using carbon")
+  }
+
+  test("test insert into array of all primitive types") {
+    val schema = "(smallintColumn array<short>, intColumn array<int>, " +
+    "bigintColumn array<bigint>, doubleColumn array<double>, decimalColumn 
array<decimal(10,3)>, " +
+    "floatColumn array<float>,timestampColumn array<timestamp>, dateColumn 
array<date>, " +
+    "stringColumn array<string>, booleanColumn array<boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(array(1,2,3), array(4,5,6), 
array(456,789,123), array(1.2,2.3,3.4), " +
+      "array(23.2,23.4,34.5), array(23,56,78), array('2017-01-01 
12:00:00.0','2017-04-01 12:00:00.0','2017-05-01 12:00:00.0'), " +
+      "array('2017-09-08','2018-08-03','2016-01-08'), 
array('abc','cde','def'), array(true, false, true))")
+    }
+    insertData("fileformatTable")
+    insertData("complextable")
+    insertData("hivetable")
+    checkResults()
+  }
+
+  test("test insert into array of array of all primitive types") {
+    val schema = "(smallintColumn array<array<short>>, intColumn 
array<array<int>>," +
+    "bigintColumn array<array<bigint>>, doubleColumn array<array<double>>, 
decimalColumn array<array<decimal(10,3)>>, " +
+    "floatColumn array<array<float>>,timestampColumn array<array<timestamp>>, 
dateColumn array<array<date>>, " +
+    "stringColumn array<array<string>>, booleanColumn array<array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(array(array(1,2,3)), 
array(array(4,5,6)), array(array(456," +
+        "789,123)), array(array(1.2,2.3,3.4)), array(array(23.2,23.4,34.5)), 
array(array(23,56,78))," +
+        "array(array('2017-01-01 12:00:00.0','2017-04-01 
12:00:00.0','2017-05-01 12:00:00.0')), " +
+        "array(array('2017-09-08','2018-08-03','2016-01-08')), 
array(array('abc','cde','def'))," +
+        "array(array(true, false, true)))")
+    }
+    insertData("hivetable")
+    insertData("complextable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test insert into array of struct of all primitive types") {
+    val schema = "(smallintColumn array<struct<s:short>>, intColumn 
array<struct<i:int>>, " +
+    "bigintColumn array<struct<b:bigint>>, doubleColumn 
array<struct<d:double>>, decimalColumn array<struct<d:decimal(10,3)>>, " +
+    "floatColumn array<struct<f:float>>,timestampColumn 
array<struct<t:timestamp>>, dateColumn array<struct<d:date>>, " +
+    "stringColumn array<struct<s:string>>, booleanColumn 
array<struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(array(named_struct('s',1)), 
array(named_struct('i',4)), " +
+          "array(named_struct('b',456)), array(named_struct('d',1.2)), 
array(named_struct('d',23.2))," +
+          "array(named_struct('f',23)), array(named_struct('t','2017-01-01 
12:00:00.0')), " +
+          "array(named_struct('d','2017-09-08')), 
array(named_struct('s','abc')),array(named_struct('b',true)))")
+    }
+    insertData("hivetable")
+    insertData("complextable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test insert into struct of all primitive types") {
+    val schema = "(smallintColumn struct<s:short>, intColumn struct<i:int>, " +
+    "bigintColumn struct<b:bigint>, doubleColumn struct<d:double>, 
decimalColumn struct<d:decimal(10,3)>, " +
+    "floatColumn struct<f:float>,timestampColumn struct<t:timestamp>, 
dateColumn struct<d:date>, " +
+    "stringColumn struct<s:string>, booleanColumn struct<b:boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(named_struct('s',1), 
named_struct('i',4), named_struct('b',456), " +
+        "named_struct('d',1.2), named_struct('d',23.2), 
named_struct('f',23),named_struct('t','2017-01-01 12:00:00.0'), " +
+        "named_struct('d','2017-09-08'), named_struct('s','abc'), 
named_struct('b',true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test insert into struct of array of all primitive types") {
+    val schema = "(smallintColumn struct<s:array<short>>, intColumn 
struct<i:array<int>>, " +
+    "bigintColumn struct<b:array<bigint>>, doubleColumn 
struct<d:array<double>>, decimalColumn struct<d:array<decimal(10,3)>>, " +
+    "floatColumn struct<f:array<float>>,timestampColumn 
struct<t:array<timestamp>>, dateColumn struct<d:array<date>>, " +
+    "stringColumn struct<s:array<string>>, booleanColumn 
struct<b:array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(named_struct('s',array(1)), 
named_struct('i',array(4)), " +
+        "named_struct('b',array(456)), named_struct('d',array(1.2)), 
named_struct('d',array(23.2))," +
+        "named_struct('f',array(23)), named_struct('t',array('2017-01-01 
12:00:00.0')), " +
+        "named_struct('d',array('2017-09-08')), 
named_struct('s',array('abc')),named_struct('b',array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test insert into struct of struct of all primitive types") {
+    val schema = "(smallintColumn struct<s:struct<s1:short>>, intColumn 
struct<i:struct<i1:int>>, " +
+    "bigintColumn struct<b:struct<b1:bigint>>, doubleColumn 
struct<d:struct<d1:double>>, decimalColumn struct<d:struct<d1:decimal(10,3)>>, 
" +
+    "floatColumn struct<f:struct<f1:float>>,timestampColumn 
struct<t:struct<t1:timestamp>>, dateColumn struct<d:struct<d1:date>>, " +
+    "stringColumn struct<s:struct<s1:string>>, booleanColumn 
struct<b:struct<b1:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName 
values(named_struct('s',named_struct('s1',1)), 
named_struct('i',named_struct('i1',4)), " +
+          "named_struct('b',named_struct('b1',456)), 
named_struct('d',named_struct('d1',1.2)), 
named_struct('d',named_struct('d1',23.2)), " +
+          "named_struct('f',named_struct('f1',23)), 
named_struct('t',named_struct('t1','2017-01-01 12:00:00.0')), " +
+          "named_struct('d',named_struct('d1','2017-09-08')), 
named_struct('s',named_struct('s1','abc')), 
named_struct('b',named_struct('b1',true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as short") {
+    val schema = "(smallintColumn map<short,short>, intColumn map<short,int>, 
" +
+    "bigintColumn map<short,bigint>, doubleColumn map<short,double>, 
decimalColumn map<short,decimal(10,3)>, " +
+    "floatColumn map<short,float>,timestampColumn map<short,timestamp>, 
dateColumn map<short,date>, " +
+    "stringColumn map<short,string>, booleanColumn map<short,boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1,1),map(4,5), map(4,789), 
map(1,2.3), map(2,23), map(2,56)," +
+        "map(2,'2017-04-01 12:00:00.0'), map(1,'2017-09-08'), map(4,'abc'), 
map(1,true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as int") {
+    val schema = "(smallintColumn map<int,short>, intColumn map<int,int>, " +
+    "bigintColumn map<int,bigint>, doubleColumn map<int,double>, decimalColumn 
map<int,decimal(10,3)>, " +
+    "floatColumn map<int,float>,timestampColumn map<int,timestamp>, dateColumn 
map<int,date>," +
+    "stringColumn map<int,string>, booleanColumn map<int,boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1,1),map(4,5), map(4,789), 
map(1,2.3), map(2,23), map(2,56), " +
+        "map(2,'2017-04-01 12:00:00.0'), map(1,'2017-09-08'), map(4,'abc'), 
map(1,true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as bigint") {
+    val schema = "(smallintColumn map<bigint,short>, intColumn 
map<bigint,int>, " +
+    "bigintColumn map<bigint,bigint>, doubleColumn map<bigint,double>, 
decimalColumn map<bigint,decimal(10,3)>, " +
+    "floatColumn map<bigint,float>,timestampColumn map<bigint,timestamp>, 
dateColumn map<bigint,date>, " +
+    "stringColumn map<bigint,string>, booleanColumn map<bigint,boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1,1),map(4,5), map(4,789), 
map(1,2.3), map(2,23), map(2,56), " +
+        "map(2,'2017-04-01 12:00:00.0'), map(1,'2017-09-08'), map(4,'abc'), 
map(1,true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as double") {
+    val schema = "(smallintColumn map<double,short>, intColumn 
map<double,int>, " +
+    "bigintColumn map<double,bigint>, doubleColumn map<double,double>, 
decimalColumn map<double,decimal(10,3)>, " +
+    "floatColumn map<double,float>,timestampColumn map<double,timestamp>, 
dateColumn map<double,date>, " +
+    "stringColumn map<double,string>, booleanColumn map<double,boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1.1,1),map(4.1,5), map(4.1,789), 
map(1.1,2.3), map(2.1,23), map(2.1,56), " +
+        "map(2.1,'2017-04-01 12:00:00.0'), map(1.1,'2017-09-08'), 
map(4.1,'abc'), map(1.1,true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as decimal") {
+    val schema = "(smallintColumn map<decimal(10,2),short>, intColumn 
map<decimal(10,2),int>, " +
+    "bigintColumn map<decimal(10,2),bigint>, doubleColumn 
map<decimal(10,2),double>, decimalColumn map<decimal(10,2),decimal(10,3)>," +
+    "floatColumn map<decimal(10,2),float>,timestampColumn 
map<decimal(10,2),timestamp>, dateColumn map<decimal(10,2),date>, " +
+    "stringColumn map<decimal(10,2),string>, booleanColumn 
map<decimal(10,2),boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map((cast(\"12\" as decimal(10,2))),1),map((cast(\"12\" as 
decimal(10,2))),5), " +
+          "map((cast(\"12\" as decimal(10,2))),789), map((cast(\"12\" as 
decimal(10,2))),2.3), " +
+          "map((cast(\"12\" as decimal(10,2))),23), map((cast(\"12\" as 
decimal(10,2))),56), " +
+          "map((cast(\"12\" as decimal(10,2))),'2017-04-01 12:00:00.0'), 
map((cast(\"12\" as decimal(10,2))),'2017-09-08'), " +
+          "map((cast(\"12\" as decimal(10,2))),'abc'), map((cast(\"12\" as 
decimal(10,2))),true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as float") {
+    val schema = "(smallintColumn map<float,short>, intColumn map<float,int>, 
" +
+    "bigintColumn map<float,bigint>, doubleColumn map<float,double>, 
decimalColumn map<float,decimal(10,3)>, " +
+    "floatColumn map<float,float>,timestampColumn map<float,timestamp>, 
dateColumn map<float,date>, " +
+    "stringColumn map<float,string>, booleanColumn map<float,boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1,1),map(4,5), map(4,789), 
map(1,2.3), map(2,23), map(2,56), " +
+        "map(2,'2017-04-01 12:00:00.0'), map(1,'2017-09-08'), map(4,'abc'), 
map(1,true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as timestamp") {
+    val schema = "(smallintColumn map<timestamp,short>, intColumn 
map<timestamp,int>, " +
+    "bigintColumn map<timestamp,bigint>, doubleColumn map<timestamp,double>, 
decimalColumn map<timestamp,decimal(10,3)>, " +
+    "floatColumn map<timestamp,float>, timestampColumn 
map<timestamp,timestamp>, dateColumn map<timestamp,date>, " +
+    "stringColumn map<timestamp,string>, booleanColumn map<timestamp,boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),1),map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),5), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),789), 
map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),2.3), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),23), 
map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),56), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),'2017-04-01 
12:00:00.0'), map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),'2017-09-08'), 
" +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),'abc'), 
map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as date") {
+    val schema = "(smallintColumn map<date,short>, intColumn map<date,int>, 
bigintColumn map<date,bigint>, " +
+    "doubleColumn map<date,double>, decimalColumn map<date,decimal(10,3)>, 
floatColumn map<date,float>,timestampColumn map<date,timestamp>, " +
+    "dateColumn map<date,date>, stringColumn map<date,string>, booleanColumn 
map<date,boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map((cast(\"2017-04-01\" as date)),1), map((cast(\"2017-04-01\" as 
date)),5), " +
+          "map((cast(\"2017-04-01\" as date)),789), map((cast(\"2017-04-01\" 
as date)),2.3), " +
+          "map((cast(\"2017-04-01\" as date)),23), map((cast(\"2017-04-01\" as 
date)),56), " +
+          "map((cast(\"2017-04-01\" as date)),'2017-04-01 12:00:00.0'), 
map((cast(\"2017-04-01\" as date)),'2017-09-08'), " +
+          "map((cast(\"2017-04-01\" as date)),'abc'), map((cast(\"2017-04-01\" 
as date)),true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as string") {
+    val schema = "(smallintColumn map<string,short>, intColumn 
map<string,int>, bigintColumn map<string,bigint>, " +
+    "doubleColumn map<string,double>, decimalColumn map<string,decimal(10,3)>, 
floatColumn map<string,float>,timestampColumn map<string,timestamp>, " +
+    "dateColumn map<string,date>, stringColumn map<string,string>, 
booleanColumn map<string,boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map('abcd',1),map('2017-04-01',5), 
map('abcd',789), map('abcd',2.3), map('abcd',23)," +
+        "map('abcd',56), map('abcd','2017-04-01 12:00:00.0'), 
map('abcd','2017-09-08'), map('abcd','abc'), map('abcd',true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as boolean") {
+    val schema = "(smallintColumn map<boolean,short>, intColumn 
map<boolean,int>, bigintColumn map<boolean,bigint>, " +
+    "doubleColumn map<boolean,double>, decimalColumn 
map<boolean,decimal(10,3)>, floatColumn map<boolean,float>,timestampColumn 
map<boolean,timestamp>, " +
+    "dateColumn map<boolean,date>, stringColumn map<boolean,string>, 
booleanColumn map<boolean,boolean>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(true,1),map(true,5), 
map(true,789), map(false,2.3), map(false,23)," +
+          "map(false,56), map(false,'2017-04-01 12:00:00.0'), 
map(true,'2017-09-08'), map(false,'abc'), map(false,true))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as short and value as array") 
{
+    val schema = "(smallintColumn map<short,array<short>>, intColumn 
map<short,array<int>>, " +
+    "bigintColumn map<short,array<bigint>>, doubleColumn 
map<short,array<double>>, decimalColumn map<short,array<decimal(10,3)>>, " +
+    "floatColumn map<short,array<float>>,timestampColumn 
map<short,array<timestamp>>, dateColumn map<short,array<date>>, " +
+    "stringColumn map<short,array<string>>, booleanColumn 
map<short,array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1,array(1)),map(4,array(5)), 
map(4,array(789)), map(1,array(2.3)), map(2,array(23)), " +
+        "map(2,array(56)), map(2,array('2017-04-01 12:00:00.0')), 
map(1,array('2017-09-08')), map(4,array('abc')), map(1,array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as int and value as array") {
+    val schema = "(smallintColumn map<bigint,array<short>>, intColumn 
map<bigint,array<int>>, " +
+    "bigintColumn map<bigint,array<bigint>>, doubleColumn 
map<bigint,array<double>>, decimalColumn map<bigint,array<decimal(10,3)>>, " +
+    "floatColumn map<bigint,array<float>>,timestampColumn 
map<bigint,array<timestamp>>, dateColumn map<bigint,array<date>>, " +
+    "stringColumn map<bigint,array<string>>, booleanColumn 
map<bigint,array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1,array(1)),map(4,array(5)), 
map(4,array(789)), map(1,array(2.3)), map(2,array(23)), " +
+          "map(2,array(56)), map(2,array('2017-04-01 12:00:00.0')), 
map(1,array('2017-09-08')), map(4,array('abc')), map(1,array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as bigint and value as 
array") {
+    val schema = "(smallintColumn map<bigint,array<short>>, intColumn 
map<bigint,array<int>>, " +
+    "bigintColumn map<bigint,array<bigint>>, doubleColumn 
map<bigint,array<double>>, decimalColumn map<bigint,array<decimal(10,3)>>, " +
+    "floatColumn map<bigint,array<float>>,timestampColumn 
map<bigint,array<timestamp>>, dateColumn map<bigint,array<date>>, " +
+    "stringColumn map<bigint,array<string>>, booleanColumn 
map<bigint,array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1,array(1)),map(4,array(5)), 
map(4,array(789)), map(1,array(2.3)), map(2,array(23)), " +
+          "map(2,array(56)), map(2,array('2017-04-01 12:00:00.0')), 
map(1,array('2017-09-08')), map(4,array('abc')), map(1,array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as double and value as 
array") {
+    val schema = "(smallintColumn map<double,array<short>>, intColumn 
map<double,array<int>>, bigintColumn map<double,array<bigint>>, " +
+    "doubleColumn map<double,array<double>>, decimalColumn 
map<double,array<decimal(10,3)>>, floatColumn 
map<double,array<float>>,timestampColumn map<double,array<timestamp>>, " +
+    "dateColumn map<double,array<date>>, stringColumn 
map<double,array<string>>, booleanColumn map<double,array<boolean>>)"
+    sql("create table complextable" + schema + " stored by 'carbondata'")
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1.1,array(1)),map(4.1,array(5)), 
map(4.1,array(789)), map(1.1,array(2.3)), map(2.1,array(23)), " +
+          "map(2.1,array(56)), map(2.1,array('2017-04-01 12:00:00.0')), 
map(1.1,array('2017-09-08')), map(4.1,array('abc')), map(1.1,array(true)))")
+    }
+    insertData("complextable")
+    sql("create table hivetable" + schema + " row format delimited fields 
terminated by ','")
+    insertData("hivetable")
+    sql("create table fileformatTable" + schema + " using carbon")
+    insertData("fileformatTable")
+    checkResults()
+    dropTables()
+  }
+
+  test("test map of all primitive types with key as decimal and value as 
array") {
+    val schema = "(smallintColumn map<decimal(10,2),array<short>>, intColumn 
map<decimal(10,2),array<int>>, bigintColumn map<decimal(10,2),array<bigint>>, " 
+
+    "doubleColumn map<decimal(10,2), array<double>>, decimalColumn 
map<decimal(10,2),array<decimal(10,3)>>, floatColumn 
map<decimal(10,2),array<float>>, " +
+    "timestampColumn map<decimal(10,2),array<timestamp>>, dateColumn 
map<decimal(10,2),array<date>>, stringColumn map<decimal(10,2),array<string>>, 
" +
+    "booleanColumn map<decimal(10,2),array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map((cast(\"12\" as decimal(10,2))),array(1)), map((cast(\"12\" as 
decimal(10,2))),array(5)), " +
+          "map((cast(\"12\" as decimal(10,2))),array(789)), map((cast(\"12\" 
as decimal(10,2))),array(2.3)), " +
+          "map((cast(\"12\" as decimal(10,2))),array(23)), map((cast(\"12\" as 
decimal(10,2))),array(56))," +
+          "map((cast(\"12\" as decimal(10,2))),array('2017-04-01 
12:00:00.0')), map((cast(\"12\" as decimal(10,2))),array('2017-09-08')), " +
+          "map((cast(\"12\" as decimal(10,2))),array('abc')), map((cast(\"12\" 
as decimal(10,2))),array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as float and value as array") 
{
+    val schema = "(smallintColumn map<float,array<short>>, intColumn 
map<float,array<int>>, bigintColumn map<float,array<bigint>>, " +
+    "doubleColumn map<float,array<double>>, decimalColumn 
map<float,array<decimal(10,3)>>, floatColumn map<float,array<float>>, 
timestampColumn map<float,array<timestamp>>, " +
+    "dateColumn map<float,array<date>>, stringColumn map<float,array<string>>, 
booleanColumn map<float,array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(map(1,array(1)),map(4,array(5)), 
map(4,array(789)), map(1,array(2.3)), map(2,array(23)), map(2,array(56)), " +
+        "map(2,array('2017-04-01 12:00:00.0')), map(1,array('2017-09-08')), 
map(4,array('abc')), map(1,array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as timestamp and value as 
array") {
+    val schema = "(smallintColumn map<timestamp,array<short>>, intColumn 
map<timestamp,array<int>>, bigintColumn map<timestamp,array<bigint>>, " +
+    "doubleColumn map<timestamp,array<double>>, decimalColumn 
map<timestamp,array<decimal(10,3)>>, floatColumn map<timestamp,array<float>>, " 
+
+    "timestampColumn map<timestamp,array<timestamp>>, dateColumn 
map<timestamp,array<date>>, stringColumn map<timestamp,array<string>>, " +
+    "booleanColumn map<timestamp,array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),array(1))," +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),array(5)), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),array(789)), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),array(2.3)), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),array(23))," +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),array(56)), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),array('2017-04-01 12:00:00.0')), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),array('2017-09-08')), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),array('abc'))," +
+          "map((cast(\"2017-04-01 12:00:00.0\" as timestamp)),array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as date and value as array") {
+    val schema = "(smallintColumn map<date,array<short>>, intColumn 
map<date,array<int>>, bigintColumn map<date,array<bigint>>, " +
+    "doubleColumn map<date,array<double>>, decimalColumn 
map<date,array<decimal(10,3)>>, floatColumn 
map<date,array<float>>,timestampColumn map<date,array<timestamp>>, " +
+    "dateColumn map<date,array<date>>, stringColumn map<date,array<string>>, 
booleanColumn map<date,array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map((cast(\"2017-04-01\" as date)),array(1))," +
+          "map((cast(\"2017-04-01\" as date)),array(5)), " +
+          "map((cast(\"2017-04-01\" as date)),array(789)), " +
+          "map((cast(\"2017-04-01\" as date)),array(2.3)), " +
+          "map((cast(\"2017-04-01\" as date)),array(23))," +
+          "map((cast(\"2017-04-01\" as date)),array(56))," +
+          "map((cast(\"2017-04-01\" as date)),array('2017-04-01 12:00:00.0')), 
" +
+          "map((cast(\"2017-04-01\" as date)),array('2017-09-08')), " +
+          "map((cast(\"2017-04-01\" as date)),array('abc'))," +
+          "map((cast(\"2017-04-01\" as date)),array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as string and value as 
array") {
+    val schema = "(smallintColumn map<string,array<short>>, intColumn 
map<string,array<int>>, bigintColumn map<string,array<bigint>>, " +
+    "doubleColumn map<string,array<double>>, decimalColumn 
map<string,array<decimal(10,3)>>, floatColumn map<string,array<float>>," +
+    "timestampColumn map<string,array<timestamp>>, dateColumn 
map<string,array<date>>, stringColumn map<string,array<string>>, " +
+    "booleanColumn map<string,array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName 
values(map('abcd',array(1)),map('2017-04-01',array(5)), map('abcd',array(789)), 
map('abcd',array(2.3)), map('abcd',array(23))," +
+        "map('abcd',array(56)), map('abcd',array('2017-04-01 12:00:00.0')), 
map('abcd',array('2017-09-08')), map('abcd',array('abc')), 
map('abcd',array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as boolean and value as 
array") {
+    val schema = "(smallintColumn map<boolean,array<short>>, intColumn 
map<boolean,array<int>>, bigintColumn map<boolean,array<bigint>>, " +
+    "doubleColumn map<boolean,array<double>>, decimalColumn 
map<boolean,array<decimal(10,3)>>, floatColumn map<boolean,array<float>>, 
timestampColumn map<boolean,array<timestamp>>," +
+    "dateColumn map<boolean,array<date>>, stringColumn 
map<boolean,array<string>>, booleanColumn map<boolean,array<boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName 
values(map(true,array(1)),map(true,array(5)), map(true,array(789)), 
map(false,array(2.3)), map(false,array(23))," +
+        "map(false,array(56)), map(false,array('2017-04-01 12:00:00.0')), 
map(true,array('2017-09-08')), map(false,array('abc')), 
map(false,array(true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as short and value as 
struct") {
+    val schema = "(smallintColumn map<short,struct<s:short>>, intColumn 
map<short,struct<i:int>>, bigintColumn map<short,struct<b:bigint>>, " +
+    "doubleColumn map<short,struct<d:double>>, decimalColumn 
map<short,struct<d:decimal(10,3)>>, floatColumn 
map<short,struct<f:float>>,timestampColumn map<short,struct<t:timestamp>>," +
+    "dateColumn map<short,struct<d:date>>, stringColumn 
map<short,struct<s:string>>, booleanColumn map<short,struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName 
values(map(1,named_struct('s',1)),map(4,named_struct('i',5)), 
map(4,named_struct('b',789)), map(1,named_struct('d',2.3)), " +
+          "map(2,named_struct('d',23)), map(2,named_struct('f',56)), 
map(2,named_struct('t','2017-04-01 12:00:00.0')), 
map(1,named_struct('d','2017-09-08'))," +
+          "map(4,named_struct('s','abc')), map(1,named_struct('b', true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as int and value as struct") {
+    val schema = "(smallintColumn map<int,struct<s:short>>, intColumn 
map<int,struct<i:int>>, bigintColumn map<int,struct<b:bigint>>, " +
+    "doubleColumn map<int,struct<d:double>>, decimalColumn 
map<int,struct<d:decimal(10,3)>>, floatColumn 
map<int,struct<f:float>>,timestampColumn map<int,struct<t:timestamp>>, " +
+    "dateColumn map<int,struct<d:date>>, stringColumn 
map<int,struct<s:string>>, booleanColumn map<int,struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName 
values(map(1,named_struct('s',1)),map(4,named_struct('i',5)),map(4,named_struct('b',789)),
 map(1,named_struct('d',2.3)), " +
+          "map(2,named_struct('d',23)),map(2,named_struct('f',56)), 
map(2,named_struct('t','2017-04-01 12:00:00.0')), 
map(1,named_struct('d','2017-09-08'))," +
+          "map(4,named_struct('s','abc')), map(1,named_struct('b', true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as bigint and value as 
struct") {
+    val schema = "(smallintColumn map<bigint,struct<s:short>>, intColumn 
map<bigint,struct<i:int>>, bigintColumn map<bigint,struct<b:bigint>>, " +
+    "doubleColumn map<bigint,struct<d:double>>, decimalColumn 
map<bigint,struct<d:decimal(10,3)>>, floatColumn 
map<bigint,struct<f:float>>,timestampColumn map<bigint,struct<t:timestamp>>, " +
+    "dateColumn map<bigint,struct<d:date>>, stringColumn 
map<bigint,struct<s:string>>, booleanColumn map<bigint,struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName 
values(map(1,named_struct('s',1)),map(4,named_struct('i',5)), 
map(4,named_struct('b',789)), map(1,named_struct('d',2.3)), " +
+          "map(2,named_struct('d',23)), map(2,named_struct('f',56)), 
map(2,named_struct('t','2017-04-01 12:00:00.0')), 
map(1,named_struct('d','2017-09-08'))," +
+          "map(4,named_struct('s','abc')), map(1,named_struct('b', true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as double and value as 
struct") {
+    val schema = "(smallintColumn map<double,struct<s:short>>, intColumn 
map<double,struct<i:int>>, " +
+    "bigintColumn map<double,struct<b:bigint>>, doubleColumn 
map<double,struct<d:double>>, decimalColumn 
map<double,struct<d:decimal(10,3)>>, " +
+    "floatColumn map<double,struct<f:float>>,timestampColumn 
map<double,struct<t:timestamp>>, dateColumn map<double,struct<d:date>>, " +
+    "stringColumn map<double,struct<s:string>>, booleanColumn 
map<double,struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map(1.1,named_struct('s',1)),map(4.1,named_struct('i',5))," +
+          "map(4.1,named_struct('b',789)), map(1.1,named_struct('d',2.3)), " +
+          "map(2.1,named_struct('d',23)), map(2.1,named_struct('d',56)), " +
+          "map(2.1,named_struct('t','2017-04-01 12:00:00.0')), 
map(1.1,named_struct('d','2017-09-08')), " +
+          "map(4.1,named_struct('s','abc')), map(1.1,named_struct('b',true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as decimal and value as 
struct") {
+    val schema = "(smallintColumn map<decimal(10,2),struct<s:short>>, 
intColumn map<decimal(10,2),struct<i:int>>, " +
+    "bigintColumn map<decimal(10,2),struct<b:bigint>>, doubleColumn 
map<decimal(10,2),struct<d:double>>, decimalColumn 
map<decimal(10,2),struct<d:decimal(10,3)>>, " +
+    "floatColumn map<decimal(10,2),struct<f:float>>,timestampColumn 
map<decimal(10,2),struct<t:timestamp>>, dateColumn 
map<decimal(10,2),struct<d:date>>, " +
+    "stringColumn map<decimal(10,2),struct<s:string>>, booleanColumn 
map<decimal(10,2),struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(
+        s"insert into $tableName values(" +
+        "map((cast(\"12\" as 
decimal(10,2))),named_struct('s',1)),map((cast(\"12\" as 
decimal(10,2))),named_struct('i',5)), " +
+        "map((cast(\"12\" as decimal(10,2))),named_struct('b',789)), 
map((cast(\"12\" as decimal(10,2))),named_struct('d',2.3)), " +
+        "map((cast(\"12\" as decimal(10,2))),named_struct('d',23)), 
map((cast(\"12\" as decimal(10,2))),named_struct('f',56)), " +
+        "map((cast(\"12\" as decimal(10,2))),named_struct('t','2017-04-01 
12:00:00.0')), map((cast(\"12\" as 
decimal(10,2))),named_struct('d','2017-09-08')), " +
+        "map((cast(\"12\" as decimal(10,2))),named_struct('s','abc')), 
map((cast(\"12\" as decimal(10,2))),named_struct('b',true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as float and value as 
struct") {
+    val schema = "(smallintColumn map<float,struct<s:short>>, intColumn 
map<float,struct<i:int>>, bigintColumn map<float,struct<b:bigint>>, " +
+    "doubleColumn map<float,struct<d:double>>, decimalColumn 
map<float,struct<d:decimal(10,3)>>, floatColumn map<float,struct<f:float>>, 
timestampColumn map<float,struct<t:timestamp>>, " +
+    "dateColumn map<float,struct<d:date>>, stringColumn 
map<float,struct<s:string>>, booleanColumn map<float,struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map(1,named_struct('s',1)),map(4,named_struct('i',5)), " +
+          "map(4,named_struct('b',789)), map(1,named_struct('d',2.3)), 
map(2,named_struct('d',23)), " +
+          "map(2,named_struct('f',56)), map(2,named_struct('t','2017-04-01 
12:00:00.0')), map(1,named_struct('d','2017-09-08'))," +
+          "map(4,named_struct('s','abc')), map(1,named_struct('b',true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as timestamp and value as 
struct") {
+    val schema = "(smallintColumn map<timestamp,struct<s:short>>, intColumn 
map<timestamp,struct<i:int>>, bigintColumn map<timestamp,struct<b:bigint>>, " +
+    "doubleColumn map<timestamp,struct<d:double>>, decimalColumn 
map<timestamp,struct<d:decimal(10,3)>>, floatColumn 
map<timestamp,struct<f:float>>,timestampColumn 
map<timestamp,struct<t:timestamp>>, " +
+    "dateColumn map<timestamp,struct<d:date>>, stringColumn 
map<timestamp,struct<s:string>>, booleanColumn 
map<timestamp,struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('s',1)), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('i',5)), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('b',789)), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('d',2.3)), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('d',23))," +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('f',56)), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('t','2017-04-01 12:00:00.0')), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('d','2017-09-08')), " +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('s','abc'))," +
+          "map((cast(\"2017-04-01 12:00:00.0\" as 
timestamp)),named_struct('b',true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as date and value as struct") 
{
+    val schema = "(smallintColumn map<date,struct<s:short>>, intColumn 
map<date,struct<i:int>>, bigintColumn map<date,struct<b:bigint>>, " +
+    "doubleColumn map<date,struct<d:double>>, decimalColumn 
map<date,struct<d:decimal(10,3)>>, floatColumn 
map<date,struct<f:float>>,timestampColumn map<date,struct<t:timestamp>>, " +
+    "dateColumn map<date,struct<d:date>>, stringColumn 
map<date,struct<s:string>>, booleanColumn map<date,struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+          "map((cast(\"2017-04-01\" as date)),named_struct('s',1)), " +
+          "map((cast(\"2017-04-01\" as date)),named_struct('i',5)), " +
+          "map((cast(\"2017-04-01\" as date)),named_struct('b',789)), " +
+          "map((cast(\"2017-04-01\" as date)),named_struct('d',2.3)), " +
+          "map((cast(\"2017-04-01\" as date)),named_struct('d',23))," +
+          "map((cast(\"2017-04-01\" as date)),named_struct('f',56)), " +
+          "map((cast(\"2017-04-01\" as date)),named_struct('t','2017-04-01 
12:00:00.0')), " +
+          "map((cast(\"2017-04-01\" as date)),named_struct('d','2017-09-08')), 
" +
+          "map((cast(\"2017-04-01\" as date)),named_struct('s','abc'))," +
+          "map((cast(\"2017-04-01\" as date)),named_struct('b',true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as string and value as 
struct") {
+    val schema = "(smallintColumn map<string,struct<s:short>>, intColumn 
map<string,struct<i:int>>, bigintColumn map<string,struct<b:bigint>>, " +
+    "doubleColumn map<string,struct<d:double>>, decimalColumn 
map<string,struct<d:decimal(10,3)>>, floatColumn 
map<string,struct<f:float>>,timestampColumn map<string,struct<t:timestamp>>, " +
+    "dateColumn map<string,struct<d:date>>, stringColumn 
map<string,struct<s:string>>, booleanColumn map<string,struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+        
"map('abcd',named_struct('s',1)),map('2017-04-01',named_struct('i',5)), " +
+        "map('abcd',named_struct('b',789)), map('abcd',named_struct('d',2.3)), 
" +
+        "map('abcd',named_struct('d',23)),map('abcd',named_struct('f',56)), " +
+        "map('abcd',named_struct('t','2017-04-01 
12:00:00.0')),map('abcd',named_struct('d','2017-09-08')), " +
+        "map('abcd',named_struct('s','abc')), 
map('abcd',named_struct('b',true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+
+  test("test map of all primitive types with key as boolean and value as 
struct") {
+    val schema = "(smallintColumn map<boolean,struct<s:short>>, intColumn 
map<boolean,struct<i:int>>, bigintColumn map<boolean,struct<b:bigint>>, " +
+    "doubleColumn map<boolean,struct<d:double>>, decimalColumn 
map<boolean,struct<d:decimal(10,3)>>, floatColumn 
map<boolean,struct<f:float>>,timestampColumn map<boolean,struct<t:timestamp>>, 
" +
+    "dateColumn map<boolean,struct<d:date>>, stringColumn 
map<boolean,struct<s:string>>, booleanColumn map<boolean,struct<b:boolean>>)"
+    createTables(schema)
+    def insertData(tableName: String) = {
+      sql(s"insert into $tableName values(" +
+        "map(true,named_struct('s',1)),map(true,named_struct('i',5)), " +
+        "map(true,named_struct('b',789)), map(false,named_struct('d',2.3)), " +
+        "map(false,named_struct('d',23)),map(false,named_struct('f',56)), " +
+        "map(false,named_struct('t','2017-04-01 12:00:00.0')), 
map(true,named_struct('d','2017-09-08')), " +
+        "map(false,named_struct('s','abc')), 
map(false,named_struct('b',true)))")
+    }
+    insertData("complextable")
+    insertData("hivetable")
+    insertData("fileformatTable")
+    checkResults()
+  }
+}
diff --git 
a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestComplexDataType.scala
 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestComplexDataType.scala
index 8ec1420..4fe0c46 100644
--- 
a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestComplexDataType.scala
+++ 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestComplexDataType.scala
@@ -1,3 +1,20 @@
+/*
+ * 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.integration.spark.testsuite.complexType
 
 import java.sql.Timestamp

Reply via email to