You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by bo...@apache.org on 2018/11/19 10:45:17 UTC

[10/33] impala git commit: IMPALA-402: test for random partitioning in insert

IMPALA-402: test for random partitioning in insert

This adds a basic regression test for the bug reported in IMPALA-402.

Testing:
Exhaustive build.

Looped the modified test overnight.

Change-Id: I4bbca5c64977cadf79dabd72f0c8876a40fdf410
Reviewed-on: http://gerrit.cloudera.org:8080/11799
Reviewed-by: Impala Public Jenkins <im...@cloudera.com>
Tested-by: Impala Public Jenkins <im...@cloudera.com>


Project: http://git-wip-us.apache.org/repos/asf/impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/impala/commit/8e9298cc
Tree: http://git-wip-us.apache.org/repos/asf/impala/tree/8e9298cc
Diff: http://git-wip-us.apache.org/repos/asf/impala/diff/8e9298cc

Branch: refs/heads/branch-3.1.0
Commit: 8e9298ccf254311f49e4adb2206813094745c479
Parents: e0642c9
Author: Tim Armstrong <ta...@cloudera.com>
Authored: Thu Oct 25 11:40:17 2018 -0700
Committer: Zoltan Borok-Nagy <bo...@cloudera.com>
Committed: Tue Nov 13 12:50:23 2018 +0100

----------------------------------------------------------------------
 .../QueryTest/insert-random-partition.test      | 33 ++++++++++++++++++++
 tests/query_test/test_insert.py                 |  8 +++++
 2 files changed, 41 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/impala/blob/8e9298cc/testdata/workloads/functional-query/queries/QueryTest/insert-random-partition.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/functional-query/queries/QueryTest/insert-random-partition.test b/testdata/workloads/functional-query/queries/QueryTest/insert-random-partition.test
new file mode 100644
index 0000000..aa89c46
--- /dev/null
+++ b/testdata/workloads/functional-query/queries/QueryTest/insert-random-partition.test
@@ -0,0 +1,33 @@
+====
+---- QUERY
+create table t (i int) partitioned by (p string)
+---- RESULTS
+'Table has been created.'
+====
+---- QUERY
+# IMPALA-402: dynamic partitioning with random functions should behave sanely. Use uuid()
+# to guarantee that the partition keys will be unique.
+insert into t partition(p)
+select id, uuid() from functional.alltypestiny
+====
+---- QUERY
+select count(distinct p)
+from t
+---- TYPES
+BIGINT
+---- RESULTS
+8
+====
+---- QUERY
+# IMPALA-402: also test without clustering
+insert into t partition(p) /*+noclustered*/
+select id, uuid() from functional.alltypestiny
+====
+---- QUERY
+select count(distinct p)
+from t
+---- TYPES
+BIGINT
+---- RESULTS
+16
+====

http://git-wip-us.apache.org/repos/asf/impala/blob/8e9298cc/tests/query_test/test_insert.py
----------------------------------------------------------------------
diff --git a/tests/query_test/test_insert.py b/tests/query_test/test_insert.py
index 8ded894..f34ba51 100644
--- a/tests/query_test/test_insert.py
+++ b/tests/query_test/test_insert.py
@@ -22,6 +22,7 @@ import pytest
 from testdata.common import widetable
 from tests.common.impala_cluster import ImpalaCluster
 from tests.common.impala_test_suite import ImpalaTestSuite
+from tests.common.parametrize import UniqueDatabase
 from tests.common.skip import SkipIfABFS, SkipIfEC, SkipIfLocal, SkipIfNotHdfsMinicluster
 from tests.common.test_dimensions import (
     create_exec_option_dimension,
@@ -149,6 +150,13 @@ class TestInsertQueries(ImpalaTestSuite):
       self.run_test_case('QueryTest/insert_bad_expr', vector,
           multiple_impalad=vector.get_value('exec_option')['sync_ddl'] == 1)
 
+  @UniqueDatabase.parametrize(sync_ddl=True)
+  def test_insert_random_partition(self, vector, unique_database):
+    """Regression test for IMPALA-402: partitioning by rand() leads to strange behaviour
+    or crashes."""
+    self.run_test_case('QueryTest/insert-random-partition', vector, unique_database,
+        multiple_impalad=vector.get_value('exec_option')['sync_ddl'] == 1)
+
 class TestInsertWideTable(ImpalaTestSuite):
   @classmethod
   def get_workload(self):