You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by xu...@apache.org on 2019/06/10 16:18:29 UTC
[carbondata] branch master updated: [CARBONDATA-3258] Add more test
cases for mv datamap
This is an automated email from the ASF dual-hosted git repository.
xubo245 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 1baa485 [CARBONDATA-3258] Add more test cases for mv datamap
1baa485 is described below
commit 1baa485d8345f606457edfcecf8b53f9fed6efc0
Author: qiuchenjian <80...@qq.com>
AuthorDate: Sun Jan 20 21:33:20 2019 +0800
[CARBONDATA-3258] Add more test cases for mv datamap
This closes #3084
---
.../mv/rewrite/MVExceptionTestCase.scala | 55 +++++++++++++++++
.../mv/rewrite/MVFilterAndJoinTest.scala | 70 ++++++++++++++++++++++
.../carbondata/mv/rewrite/MVInvalidTestCase.scala | 47 +++++++++++++++
3 files changed, 172 insertions(+)
diff --git a/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVExceptionTestCase.scala b/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVExceptionTestCase.scala
new file mode 100644
index 0000000..7823d46
--- /dev/null
+++ b/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVExceptionTestCase.scala
@@ -0,0 +1,55 @@
+/*
+ * 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.mv.rewrite
+
+import org.apache.carbondata.common.exceptions.sql.MalformedDataMapCommandException
+import org.apache.spark.sql.catalyst.analysis.NoSuchTableException
+import org.apache.spark.sql.test.util.QueryTest
+import org.scalatest.BeforeAndAfterAll
+
+class MVExceptionTestCase extends QueryTest with BeforeAndAfterAll {
+ override def beforeAll: Unit = {
+ drop()
+ sql("create table main_table (name string,age int,height int) stored by 'carbondata'")
+ }
+
+ test("test mv no base table") {
+ val ex = intercept[NoSuchTableException] {
+ sql("create datamap main_table_mv on table main_table_error using 'mv' as select sum(age),name from main_table group by name")
+ }
+ assertResult("Table or view 'main_table_error' not found in database 'default';")(ex.getMessage())
+ }
+
+ test("test mv reduplicate mv table") {
+ val ex = intercept[MalformedDataMapCommandException] {
+ sql("create datamap main_table_mv1 on table main_table using 'mv' as select sum(age),name from main_table group by name")
+ sql("create datamap main_table_mv1 on table main_table using 'mv' as select sum(age),name from main_table group by name")
+ }
+ assertResult("DataMap with name main_table_mv1 already exists in storage")(ex.getMessage)
+ }
+
+ def drop(): Unit = {
+ sql("drop table IF EXISTS main_table")
+ sql("drop table if exists main_table_error")
+ sql("drop datamap if exists main_table_mv")
+ sql("drop datamap if exists main_table_mv1")
+ }
+
+ override def afterAll(): Unit = {
+ drop()
+ }
+}
diff --git a/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVFilterAndJoinTest.scala b/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVFilterAndJoinTest.scala
new file mode 100644
index 0000000..0f1301c
--- /dev/null
+++ b/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVFilterAndJoinTest.scala
@@ -0,0 +1,70 @@
+/*
+ * 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.mv.rewrite
+
+import org.apache.spark.sql.Row
+import org.apache.spark.sql.test.util.QueryTest
+import org.scalatest.BeforeAndAfterAll
+
+class MVFilterAndJoinTest extends QueryTest with BeforeAndAfterAll {
+
+ override def beforeAll(): Unit = {
+ drop
+ sql("create table main_table (name string,age int,height int) stored by 'carbondata'")
+ sql("create table dim_table (name string,age int,height int) stored by 'carbondata'")
+ sql("create table sdr_table (name varchar(20),score int) stored by 'carbondata'")
+ }
+
+ def drop() {
+ sql("drop table if exists main_table")
+ sql("drop datamap if exists main_table_mv")
+ sql("drop table if exists dim_table")
+ sql("drop table if exists sdr_table")
+ sql("drop datamap if exists main_table_mv1")
+ }
+
+ test("test mv no filter and query with filter") {
+ val querySQL = "select sum(age),name from main_table where name = 'tom' group by name"
+ sql("insert into main_table select 'tom',20,170")
+ sql("insert into main_table select 'lily',30,160")
+ sql("create datamap main_table_mv on table main_table using 'mv' as select sum(age),name from main_table group by name")
+ sql("rebuild datamap main_table_mv")
+ assert(TestUtil.verifyMVDataMap(sql(querySQL).queryExecution.analyzed, "main_table_mv"))
+ checkAnswer(sql(querySQL), Seq(Row(20,"tom")))
+ }
+
+ test("test mv rebuild twice and varchar string") {
+ val querySQL = "select A.sum_score,A.name from (select sum(score) as sum_score,age,sdr.name as name from sdr_table sdr " +
+ "left join dim_table dim on sdr.name = dim.name where sdr.name in ('tom','lily') group by sdr.name,age) A where name = 'tom'"
+ sql("insert into dim_table select 'tom',20,170")
+ sql("insert into dim_table select 'lily',30,160")
+ sql("create datamap main_table_mv1 using 'mv' " +
+ "as select count(score),sum(score),count(dim.name),age,sdr.name from sdr_table sdr left join dim_table dim on sdr.name = dim.name group by sdr.name,age")
+ sql("rebuild datamap main_table_mv1")
+ sql("insert into sdr_table select 'tom',70")
+ sql("insert into sdr_table select 'tom',50")
+ sql("insert into sdr_table select 'lily',80")
+ sql("rebuild datamap main_table_mv1")
+ assert(TestUtil.verifyMVDataMap(sql(querySQL).queryExecution.analyzed, "main_table_mv1"))
+ checkAnswer(sql(querySQL), Seq(Row(120,"tom")))
+ }
+
+ override def afterAll(): Unit = {
+ drop
+ }
+
+}
diff --git a/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVInvalidTestCase.scala b/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVInvalidTestCase.scala
new file mode 100644
index 0000000..cd57564
--- /dev/null
+++ b/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVInvalidTestCase.scala
@@ -0,0 +1,47 @@
+/*
+ * 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.mv.rewrite
+
+import org.apache.spark.sql.test.util.QueryTest
+import org.scalatest.BeforeAndAfterAll
+
+class MVInvalidTestCase extends QueryTest with BeforeAndAfterAll {
+
+ override def beforeAll(): Unit = {
+ drop
+ sql("create table main_table (name string,age int,height int) stored by 'carbondata'")
+ }
+
+ def drop {
+ sql("drop datamap if exists main_table_mv")
+ sql("drop table if exists main_table")
+ }
+
+ test("test mv different filter") {
+ val querySQL = "select age,name from main_table where name = 'lily' order by name limit 10"
+ sql("insert into main_table select 'tom',20,170")
+ sql("insert into main_table select 'lily',30,160")
+ sql("create datamap main_table_mv on table main_table using 'mv' as select age,name,height from main_table where name = 'tom'")
+ sql("rebuild datamap main_table_mv")
+
+ assert(!TestUtil.verifyMVDataMap(sql(querySQL).queryExecution.analyzed, "main_table_mv"))
+ }
+
+ override def afterAll(): Unit = {
+ drop
+ }
+}