blob: 2589b13221da6afcfc40be5799a4df89e0525e7c [file] [log] [blame]
/*
* 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.detailquery
import org.apache.spark.sql.Row
import org.scalatest.BeforeAndAfterAll
import org.apache.carbondata.core.constants.CarbonCommonConstants
import org.apache.carbondata.core.util.CarbonProperties
import org.apache.spark.sql.test.util.QueryTest
/**
* Test Class for verifying NO_DICTIONARY_COLUMN feature.
*/
class NO_DICTIONARY_COL_TestCase extends QueryTest with BeforeAndAfterAll {
override def beforeAll {
//For the Hive table creation and data loading
sql("drop table if exists filtertestTable")
sql("drop table if exists NO_DICTIONARY_HIVE_6")
sql("drop table if exists NO_DICTIONARY_CARBON_6")
sql("drop table if exists NO_DICTIONARY_CARBON_7")
sql(
"create table NO_DICTIONARY_HIVE_6(empno string,empname string,designation string,doj " +
"Timestamp,workgroupcategory int, " +
"workgroupcategoryname string,deptno int, deptname string, projectcode int, " +
"projectjoindate Timestamp,projectenddate Timestamp,attendance int, "
+ "utilization int,salary int) row format delimited fields terminated by ',' " +
"tblproperties(\"skip.header.line.count\"=\"1\") " +
""
)
sql(
s"load data local inpath '$resourcesPath/datawithoutheader.csv' into table " +
"NO_DICTIONARY_HIVE_6"
);
//For Carbon cube creation.
sql("CREATE TABLE NO_DICTIONARY_CARBON_6 (empno string, " +
"doj Timestamp, workgroupcategory Int, empname String,workgroupcategoryname String, " +
"deptno Int, deptname String, projectcode Int, projectjoindate Timestamp, " +
"projectenddate Timestamp, designation String,attendance Int,utilization " +
"Int,salary Int) STORED BY 'org.apache.carbondata.format' "
)
sql(
s"LOAD DATA LOCAL INPATH '$resourcesPath/data.csv' INTO TABLE NO_DICTIONARY_CARBON_6 " +
"OPTIONS('DELIMITER'= ',', 'QUOTECHAR'= '\"')"
)
sql("CREATE TABLE NO_DICTIONARY_CARBON_7 (empno string, " +
"doj Timestamp, workgroupcategory Int, empname String,workgroupcategoryname String, " +
"deptno Int, deptname String, projectcode Int, projectjoindate Timestamp, " +
"projectenddate Timestamp, designation String,attendance Int,utilization " +
"Int,salary Int) STORED BY 'org.apache.carbondata.format' "
)
sql(
s"LOAD DATA LOCAL INPATH '$resourcesPath/data.csv' INTO TABLE NO_DICTIONARY_CARBON_7 " +
"OPTIONS('DELIMITER'= ',', 'QUOTECHAR'= '\"')"
)
sql("CREATE TABLE filtertestTable (ID string,date Timestamp, country String, " +
"name String, phonetype String, serialname String, salary Int) " +
"STORED BY 'org.apache.carbondata.format' "
)
CarbonProperties.getInstance()
.addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, "yyyy-MM-dd HH:mm:ss")
sql(
s"LOAD DATA LOCAL INPATH '$resourcesPath/data2.csv' INTO TABLE filtertestTable OPTIONS"+
s"('DELIMITER'= ',', " +
s"'FILEHEADER'= '')"
)
}
test("Count (*) with filter") {
sql("select * from NO_DICTIONARY_CARBON_6 where empno > '11' and empno <= '30'")
checkAnswer(
sql("select count(*) from NO_DICTIONARY_CARBON_6 where empno='11'"),
Seq(Row(1))
)
}
test("Detail Query with NO_DICTIONARY_COLUMN Compare With HIVE RESULT") {
checkAnswer(
sql("select empno from NO_DICTIONARY_CARBON_6"),
Seq(Row("11"), Row("12"), Row("13"), Row("14"), Row("15"), Row("16"), Row("17"), Row("18"), Row("19"), Row("20"))
)
}
test("Detail Query with NO_DICTIONARY_COLUMN with Like range filter") {
checkAnswer(
sql("select empno from NO_DICTIONARY_CARBON_7 where empno like '12%'"),
Seq(Row("12"))
)
}
test("Detail Query with NO_DICTIONARY_COLUMN with greater than range filter") {
checkAnswer(
sql("select empno from NO_DICTIONARY_CARBON_7 where empno>'19'"),
Seq(Row("20"))
)
}
test("Detail Query with NO_DICTIONARY_COLUMN with in filter Compare With HIVE RESULT") {
checkAnswer(
sql("select empno from NO_DICTIONARY_CARBON_6 where empno in('11','12','13')"),
Seq(Row("11"), Row("12"), Row("13"))
)
}
test("Detail Query with NO_DICTIONARY_COLUMN with not in filter Compare With HIVE RESULT") {
checkAnswer(
sql("select empno from NO_DICTIONARY_CARBON_6 where empno not in('11','12','13','14','15','16','17')"),
Seq(Row("18"), Row("19"), Row("20"))
)
}
test("Detail Query with NO_DICTIONARY_COLUMN with equals filter Compare With HIVE RESULT") {
checkAnswer(
sql("select empno from NO_DICTIONARY_CARBON_6 where empno='17'"),
Seq(Row("17"))
)
}
test("Detail Query with NO_DICTIONARY_COLUMN with IS NOT NULL filter") {
checkAnswer(
sql("select id from filtertestTable where id is not null"),
Seq(Row("4"),Row("6"),Row("abc"))
)
}
test("filter with arithmetic expression") {
checkAnswer(
sql("select id from filtertestTable " + "where id+2 = 6"),
Seq(Row("4"))
)
}
test("Detail Query with NO_DICTIONARY_COLUMN with equals multiple filter Compare With HIVE " +
"RESULT"
) {
checkAnswer(
sql("select empno,empname,workgroupcategory from NO_DICTIONARY_CARBON_6 where empno='17'"),
sql("select empno,empname,workgroupcategory from NO_DICTIONARY_HIVE_6 where empno='17'")
)
}
test("ORDER Query with NO_DICTIONARY_COLUMN Compare With HIVE RESULT") {
checkAnswer(
sql("select empno from NO_DICTIONARY_HIVE_6 order by empno"),
sql("select empno from NO_DICTIONARY_CARBON_6 order by empno")
)
}
//TODO need to add filter test cases for no dictionary columns
//
// test("Filter Query with NO_DICTIONARY_COLUMN and DICTIONARY_COLUMN Compare With HIVE
// RESULT") {
//
// checkAnswer(
// sql("select empno from NO_DICTIONARY_HIVE_6 where empno=15 and deptno=12"),
// sql("select empno from NO_DICTIONARY_CARBON_6 where empno=15 and deptno=12"))
// }
test("Distinct Query with NO_DICTIONARY_COLUMN Compare With HIVE RESULT") {
checkAnswer(
sql("select count(distinct empno) from NO_DICTIONARY_HIVE_6"),
sql("select count(distinct empno) from NO_DICTIONARY_CARBON_6")
)
}
test("Sum Query with NO_DICTIONARY_COLUMN Compare With HIVE RESULT") {
checkAnswer(
sql("select sum(empno) from NO_DICTIONARY_HIVE_6"),
sql("select sum(empno) from NO_DICTIONARY_CARBON_6")
)
}
test("average Query with NO_DICTIONARY_COLUMN Compare With HIVE RESULT") {
checkAnswer(
sql("select avg(empno) from NO_DICTIONARY_HIVE_6"),
sql("select avg(empno) from NO_DICTIONARY_CARBON_6")
)
}
test("Multiple column group Query with NO_DICTIONARY_COLUMN Compare With HIVE RESULT") {
checkAnswer(
sql(
"select empno,empname,workgroupcategory from NO_DICTIONARY_HIVE_6 group by empno,empname," +
"workgroupcategory"
),
sql(
"select empno,empname,workgroupcategory from NO_DICTIONARY_CARBON_6 group by empno," +
"empname,workgroupcategory"
)
)
}
test("Multiple column Detail Query with NO_DICTIONARY_COLUMN Compare With HIVE RESULT") {
checkAnswer(
sql("select empno,empname,workgroupcategory from NO_DICTIONARY_HIVE_6"),
sql("select empno,empname,workgroupcategory from NO_DICTIONARY_CARBON_6 ")
)
}
override def afterAll {
sql("drop table if exists filtertestTable")
sql("drop table if exists NO_DICTIONARY_HIVE_6")
sql("drop table if exists NO_DICTIONARY_CARBON_6")
sql("drop table if exists NO_DICTIONARY_CARBON_7")
//sql("drop cube NO_DICTIONARY_CARBON_1")
}
}