You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by ta...@apache.org on 2018/01/18 04:27:44 UTC

[04/12] impala git commit: IMPALA-5478: Run TPCDS queries with decimal_v2 enabled

http://git-wip-us.apache.org/repos/asf/impala/blob/35a3e186/testdata/workloads/tpcds/queries/tpcds-decimal_v2-q99.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/tpcds/queries/tpcds-decimal_v2-q99.test b/testdata/workloads/tpcds/queries/tpcds-decimal_v2-q99.test
new file mode 100644
index 0000000..7ae3c9e
--- /dev/null
+++ b/testdata/workloads/tpcds/queries/tpcds-decimal_v2-q99.test
@@ -0,0 +1,128 @@
+====
+---- QUERY: TPCDS-Q99
+select
+   substr(w_warehouse_name,1,20)
+  ,sm_type
+  ,cc_name
+  ,sum(case when (cs_ship_date_sk - cs_sold_date_sk <= 30 ) then 1 else 0 end)  as "30 days"
+  ,sum(case when (cs_ship_date_sk - cs_sold_date_sk > 30) and
+                 (cs_ship_date_sk - cs_sold_date_sk <= 60) then 1 else 0 end )  as "31-60 days"
+  ,sum(case when (cs_ship_date_sk - cs_sold_date_sk > 60) and
+                 (cs_ship_date_sk - cs_sold_date_sk <= 90) then 1 else 0 end)  as "61-90 days"
+  ,sum(case when (cs_ship_date_sk - cs_sold_date_sk > 90) and
+                 (cs_ship_date_sk - cs_sold_date_sk <= 120) then 1 else 0 end)  as "91-120 days"
+  ,sum(case when (cs_ship_date_sk - cs_sold_date_sk  > 120) then 1 else 0 end)  as ">120 days"
+from
+   catalog_sales
+  ,warehouse
+  ,ship_mode
+  ,call_center
+  ,date_dim
+where
+    d_month_seq between 1200 and 1200 + 11
+and cs_ship_date_sk   = d_date_sk
+and cs_warehouse_sk   = w_warehouse_sk
+and cs_ship_mode_sk   = sm_ship_mode_sk
+and cs_call_center_sk = cc_call_center_sk
+group by
+   substr(w_warehouse_name,1,20)
+  ,sm_type
+  ,cc_name
+order by substr(w_warehouse_name,1,20)
+        ,sm_type
+        ,cc_name
+limit 100;
+---- RESULTS
+'Bad cards must make.','EXPRESS','Mid Atlantic',1270,1318,1281,0,0
+'Bad cards must make.','EXPRESS','NY Metro',1226,1287,1282,0,0
+'Bad cards must make.','EXPRESS','North Midwest',1208,1242,1294,0,0
+'Bad cards must make.','LIBRARY','Mid Atlantic',962,976,1009,0,0
+'Bad cards must make.','LIBRARY','NY Metro',978,984,999,0,0
+'Bad cards must make.','LIBRARY','North Midwest',898,959,958,0,0
+'Bad cards must make.','NEXT DAY','Mid Atlantic',1225,1328,1327,0,0
+'Bad cards must make.','NEXT DAY','NY Metro',1262,1325,1246,0,0
+'Bad cards must make.','NEXT DAY','North Midwest',1227,1300,1276,0,0
+'Bad cards must make.','OVERNIGHT','Mid Atlantic',956,935,990,0,0
+'Bad cards must make.','OVERNIGHT','NY Metro',982,930,993,0,0
+'Bad cards must make.','OVERNIGHT','North Midwest',907,990,955,0,0
+'Bad cards must make.','REGULAR','Mid Atlantic',928,974,1005,0,0
+'Bad cards must make.','REGULAR','NY Metro',942,1009,948,0,0
+'Bad cards must make.','REGULAR','North Midwest',921,968,925,0,0
+'Bad cards must make.','TWO DAY','Mid Atlantic',954,971,979,0,0
+'Bad cards must make.','TWO DAY','NY Metro',947,1013,952,0,0
+'Bad cards must make.','TWO DAY','North Midwest',904,930,947,0,0
+'Conventional childr','EXPRESS','Mid Atlantic',1214,1296,1243,0,0
+'Conventional childr','EXPRESS','NY Metro',1284,1331,1277,0,0
+'Conventional childr','EXPRESS','North Midwest',1180,1287,1226,0,0
+'Conventional childr','LIBRARY','Mid Atlantic',990,1008,962,0,0
+'Conventional childr','LIBRARY','NY Metro',983,976,981,0,0
+'Conventional childr','LIBRARY','North Midwest',925,892,953,0,0
+'Conventional childr','NEXT DAY','Mid Atlantic',1284,1315,1274,0,0
+'Conventional childr','NEXT DAY','NY Metro',1288,1280,1284,0,0
+'Conventional childr','NEXT DAY','North Midwest',1249,1278,1308,0,0
+'Conventional childr','OVERNIGHT','Mid Atlantic',897,973,926,0,0
+'Conventional childr','OVERNIGHT','NY Metro',958,963,897,0,0
+'Conventional childr','OVERNIGHT','North Midwest',942,934,937,0,0
+'Conventional childr','REGULAR','Mid Atlantic',941,1007,945,0,0
+'Conventional childr','REGULAR','NY Metro',949,928,987,0,0
+'Conventional childr','REGULAR','North Midwest',920,927,925,0,0
+'Conventional childr','TWO DAY','Mid Atlantic',926,979,1047,0,0
+'Conventional childr','TWO DAY','NY Metro',925,1007,962,0,0
+'Conventional childr','TWO DAY','North Midwest',879,980,971,0,0
+'Doors canno','EXPRESS','Mid Atlantic',1240,1245,1267,0,0
+'Doors canno','EXPRESS','NY Metro',1234,1270,1349,0,0
+'Doors canno','EXPRESS','North Midwest',1185,1238,1197,0,0
+'Doors canno','LIBRARY','Mid Atlantic',873,974,948,0,0
+'Doors canno','LIBRARY','NY Metro',987,1005,990,0,0
+'Doors canno','LIBRARY','North Midwest',947,952,1025,0,0
+'Doors canno','NEXT DAY','Mid Atlantic',1264,1276,1185,0,0
+'Doors canno','NEXT DAY','NY Metro',1263,1337,1310,0,0
+'Doors canno','NEXT DAY','North Midwest',1202,1247,1278,0,0
+'Doors canno','OVERNIGHT','Mid Atlantic',912,888,934,0,0
+'Doors canno','OVERNIGHT','NY Metro',942,1003,959,0,0
+'Doors canno','OVERNIGHT','North Midwest',896,903,911,0,0
+'Doors canno','REGULAR','Mid Atlantic',888,953,974,0,0
+'Doors canno','REGULAR','NY Metro',971,1028,946,0,0
+'Doors canno','REGULAR','North Midwest',937,974,914,0,0
+'Doors canno','TWO DAY','Mid Atlantic',974,898,985,0,0
+'Doors canno','TWO DAY','NY Metro',982,1017,997,0,0
+'Doors canno','TWO DAY','North Midwest',985,937,959,0,0
+'Important issues liv','EXPRESS','Mid Atlantic',1322,1329,1293,0,0
+'Important issues liv','EXPRESS','NY Metro',1301,1300,1239,0,0
+'Important issues liv','EXPRESS','North Midwest',1266,1228,1285,0,0
+'Important issues liv','LIBRARY','Mid Atlantic',988,997,925,0,0
+'Important issues liv','LIBRARY','NY Metro',947,963,988,0,0
+'Important issues liv','LIBRARY','North Midwest',937,972,964,0,0
+'Important issues liv','NEXT DAY','Mid Atlantic',1221,1268,1217,0,0
+'Important issues liv','NEXT DAY','NY Metro',1281,1311,1310,0,0
+'Important issues liv','NEXT DAY','North Midwest',1219,1214,1327,0,0
+'Important issues liv','OVERNIGHT','Mid Atlantic',929,1018,991,0,0
+'Important issues liv','OVERNIGHT','NY Metro',950,965,931,0,0
+'Important issues liv','OVERNIGHT','North Midwest',936,989,932,0,0
+'Important issues liv','REGULAR','Mid Atlantic',961,995,949,0,0
+'Important issues liv','REGULAR','NY Metro',972,934,1018,0,0
+'Important issues liv','REGULAR','North Midwest',905,947,941,0,0
+'Important issues liv','TWO DAY','Mid Atlantic',954,982,944,0,0
+'Important issues liv','TWO DAY','NY Metro',844,972,1006,0,0
+'Important issues liv','TWO DAY','North Midwest',914,969,960,0,0
+'NULL','EXPRESS','Mid Atlantic',1223,1314,1257,0,0
+'NULL','EXPRESS','NY Metro',1274,1296,1286,0,0
+'NULL','EXPRESS','North Midwest',1159,1329,1276,0,0
+'NULL','LIBRARY','Mid Atlantic',941,978,948,0,0
+'NULL','LIBRARY','NY Metro',886,1001,1009,0,0
+'NULL','LIBRARY','North Midwest',917,943,991,0,0
+'NULL','NEXT DAY','Mid Atlantic',1304,1264,1349,0,0
+'NULL','NEXT DAY','NY Metro',1271,1251,1291,0,0
+'NULL','NEXT DAY','North Midwest',1199,1233,1273,0,0
+'NULL','OVERNIGHT','Mid Atlantic',965,989,967,0,0
+'NULL','OVERNIGHT','NY Metro',979,993,1039,0,0
+'NULL','OVERNIGHT','North Midwest',946,1016,905,0,0
+'NULL','REGULAR','Mid Atlantic',933,994,997,0,0
+'NULL','REGULAR','NY Metro',961,1022,1034,0,0
+'NULL','REGULAR','North Midwest',893,921,949,0,0
+'NULL','TWO DAY','Mid Atlantic',972,968,972,0,0
+'NULL','TWO DAY','NY Metro',926,974,1004,0,0
+'NULL','TWO DAY','North Midwest',941,921,981,0,0
+---- TYPES
+STRING, STRING, STRING, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT
+====
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/impala/blob/35a3e186/testdata/workloads/tpcds/queries/tpcds-q22a.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/tpcds/queries/tpcds-q22a.test b/testdata/workloads/tpcds/queries/tpcds-q22a.test
deleted file mode 100644
index 3e40c35..0000000
--- a/testdata/workloads/tpcds/queries/tpcds-q22a.test
+++ /dev/null
@@ -1,148 +0,0 @@
-====
----- QUERY: TPCDS-Q22A
--- RESULT MISMATCH FROM ORIGINAL in LSD of AVG() values
--- FIXED, HAND_ROUNDED AVG() VALUES IN RESULT SET
-set decimal_v2=1;
-with results as
-(select  i_product_name
-             ,i_brand
-             ,i_class
-             ,i_category
-             ,inv_quantity_on_hand qoh
-       from inventory
-           ,date_dim
-           ,item
-           ,warehouse
-       where  inv_date_sk=d_date_sk
-              and inv_item_sk=i_item_sk
-              and inv_warehouse_sk = w_warehouse_sk
-              and d_month_seq between 1200 and 1200 + 11
-       -- group by i_product_name,i_brand,i_class,i_category
-),
-results_rollup as
-(select i_product_name, i_brand, i_class, i_category,avg(qoh) qoh
-from results
-group by i_product_name,i_brand,i_class,i_category
-union all
-select i_product_name, i_brand, i_class, null i_category,avg(qoh) qoh
-from results
-group by i_product_name,i_brand,i_class
-union all
-select i_product_name, i_brand, null i_class, null i_category,avg(qoh) qoh
-from results
-group by i_product_name,i_brand
-union all
-select i_product_name, null i_brand, null i_class, null i_category,avg(qoh)  qoh
-from results
-group by i_product_name
-union all
-select null i_product_name, null i_brand, null i_class, null i_category,avg(qoh) qoh
-from results)
- select  i_product_name, i_brand, i_class, i_category, cast(qoh as decimal(12, 2))
-      from results_rollup
-      order by qoh, i_product_name, i_brand, i_class, i_category
-limit 100;
----- RESULTS
-'ationbarn station','amalgbrand #8','bathroom','Home',430.36
-'ationbarn station','amalgbrand #8','bathroom','NULL',430.36
-'ationbarn station','amalgbrand #8','NULL','NULL',430.36
-'ationbarn station','NULL','NULL','NULL',430.36
-'ationoughtn stn st','edu packimporto #2','sports-apparel','Men',435.27
-'ationoughtn stn st','edu packimporto #2','sports-apparel','NULL',435.27
-'ationoughtn stn st','edu packimporto #2','NULL','NULL',435.27
-'ationoughtn stn st','NULL','NULL','NULL',435.27
-'ationationprin st','amalgexporti #2','newborn','Children',435.51
-'ationationprin st','amalgexporti #2','newborn','NULL',435.51
-'ationationprin st','amalgexporti #2','NULL','NULL',435.51
-'ationationprin st','NULL','NULL','NULL',435.51
-'oughtcallyn stantiought','corpcorp #2','rings','Jewelry',436.49
-'oughtcallyn stantiought','corpcorp #2','rings','NULL',436.49
-'oughtcallyn stantiought','corpcorp #2','NULL','NULL',436.49
-'oughtcallyn stantiought','NULL','NULL','NULL',436.49
-'callyesebaration','namelesscorp #7','mens watch','Jewelry',437.39
-'callyesebaration','namelesscorp #7','mens watch','NULL',437.39
-'callyesebaration','namelesscorp #7','NULL','NULL',437.39
-'callyesebaration','NULL','NULL','NULL',437.39
-'n stprieingationought','namelesscorp #8','mens watch','Jewelry',439.06
-'n stprieingationought','namelesscorp #8','mens watch','NULL',439.06
-'n stprieingationought','namelesscorp #8','NULL','NULL',439.06
-'n stprieingationought','NULL','NULL','NULL',439.06
-'priationn stn st','importoscholar #2','country','Music',439.10
-'priationn stn st','importoscholar #2','country','NULL',439.10
-'priationn stn st','importoscholar #2','NULL','NULL',439.10
-'priationn stn st','NULL','NULL','NULL',439.10
-'n stcallyableoughtought','amalgimporto #2','accessories','Men',439.72
-'n stcallyableoughtought','amalgimporto #2','accessories','NULL',439.72
-'n stcallyableoughtought','amalgimporto #2','NULL','NULL',439.72
-'n stcallyableoughtought','NULL','NULL','NULL',439.72
-'n stbarought','corpbrand #10','rugs','Home',440.31
-'n stbarought','corpbrand #10','rugs','NULL',440.31
-'n stbarought','corpbrand #10','NULL','NULL',440.31
-'n stbarought','NULL','NULL','NULL',440.31
-'n stn stantioughtought','exportimaxi #8','computers','Books',440.93
-'n stn stantioughtought','exportimaxi #8','computers','NULL',440.93
-'n stn stantioughtought','exportimaxi #8','NULL','NULL',440.93
-'n stn stantioughtought','NULL','NULL','NULL',440.93
-'n stcallyesepriought','edu packscholar #2','classical','Music',441.54
-'n stcallyesepriought','edu packscholar #2','classical','NULL',441.54
-'n stcallyesepriought','edu packscholar #2','NULL','NULL',441.54
-'n stcallyesepriought','NULL','NULL','NULL',441.54
-'priantiationation','importoimporto #2','shirts','Men',441.67
-'priantiationation','importoimporto #2','shirts','NULL',441.67
-'priantiationation','importoimporto #2','NULL','NULL',441.67
-'priantiationation','NULL','NULL','NULL',441.67
-'oughtbarantiese','exportiedu pack #2','kids','Shoes',441.75
-'oughtbarantiese','exportiedu pack #2','kids','NULL',441.75
-'oughtbarantiese','exportiedu pack #2','NULL','NULL',441.75
-'oughtbarantiese','NULL','NULL','NULL',441.75
-'oughtbarprin st','edu packscholar #2','classical','Music',442.07
-'oughtbarprin st','edu packscholar #2','classical','NULL',442.07
-'oughtbarprin st','edu packscholar #2','NULL','NULL',442.07
-'oughtbarprin st','NULL','NULL','NULL',442.07
-'ationeingation','amalgexporti #2','newborn','Children',443.78
-'ationeingation','amalgexporti #2','newborn','NULL',443.78
-'ationeingation','amalgexporti #2','NULL','NULL',443.78
-'ationeingation','NULL','NULL','NULL',443.78
-'ationbarn stableought','corpbrand #8','rugs','Home',444.09
-'ationbarn stableought','corpbrand #8','rugs','NULL',444.09
-'ationbarn stableought','corpbrand #8','NULL','NULL',444.09
-'ationbarn stableought','NULL','NULL','NULL',444.09
-'eseationcallyableought','importoexporti #1','infants','Children',444.54
-'eseationcallyableought','importoexporti #1','infants','NULL',444.54
-'eseationcallyableought','importoexporti #1','NULL','NULL',444.54
-'eseationcallyableought','NULL','NULL','NULL',444.54
-'eingableableationought','amalgimporto #1','accessories','Men',444.71
-'eingableableationought','amalgimporto #1','accessories','NULL',444.71
-'eingableableationought','amalgimporto #1','NULL','NULL',444.71
-'eingableableationought','NULL','NULL','NULL',444.71
-'n steseantiation','univmaxi #10','pools','Sports',445.33
-'n steseantiation','univmaxi #10','pools','NULL',445.33
-'n steseantiation','univmaxi #10','NULL','NULL',445.33
-'n steseantiation','NULL','NULL','NULL',445.33
-'antibareingantiought','importoimporto #2','shirts','Men',445.41
-'antibareingantiought','importoimporto #2','shirts','NULL',445.41
-'antibareingantiought','importoimporto #2','NULL','NULL',445.41
-'antibareingantiought','NULL','NULL','NULL',445.41
-'ationantibarationought','univmaxi #8','pools','Sports',445.42
-'ationantibarationought','univmaxi #8','pools','NULL',445.42
-'ationantibarationought','univmaxi #8','NULL','NULL',445.42
-'ationantibarationought','NULL','NULL','NULL',445.42
-'oughtpricallybarought','edu packexporti #2','school-uniforms','Children',445.49
-'oughtpricallybarought','edu packexporti #2','school-uniforms','NULL',445.49
-'oughtpricallybarought','edu packexporti #2','NULL','NULL',445.49
-'oughtpricallybarought','NULL','NULL','NULL',445.49
-'ableationprieing','amalgamalg #1','dresses','Women',446.00
-'ableationprieing','amalgamalg #1','dresses','NULL',446.00
-'ableationprieing','amalgamalg #1','NULL','NULL',446.00
-'ableationprieing','NULL','NULL','NULL',446.00
-'pribarpribarought','edu packimporto #2','sports-apparel','Men',446.04
-'pribarpribarought','edu packimporto #2','sports-apparel','NULL',446.04
-'pribarpribarought','edu packimporto #2','NULL','NULL',446.04
-'pribarpribarought','NULL','NULL','NULL',446.04
-'oughtn stprin st','exportiamalgamalg #8','stereo','Electronics',447.27
-'oughtn stprin st','exportiamalgamalg #8','stereo','NULL',447.27
-'oughtn stprin st','exportiamalgamalg #8','NULL','NULL',447.27
-'oughtn stprin st','NULL','NULL','NULL',447.27
----- TYPES
-STRING, STRING, STRING, STRING, DECIMAL
-====

http://git-wip-us.apache.org/repos/asf/impala/blob/35a3e186/tests/common/test_vector.py
----------------------------------------------------------------------
diff --git a/tests/common/test_vector.py b/tests/common/test_vector.py
index 9ae7355..4d22269 100644
--- a/tests/common/test_vector.py
+++ b/tests/common/test_vector.py
@@ -99,6 +99,10 @@ class ImpalaTestMatrix(object):
   def add_dimension(self, dimension):
     self.dimensions[dimension.name] = dimension
 
+  def add_mandatory_exec_option(self, exec_option_key, exec_option_value):
+    for vector in self.dimensions['exec_option']:
+      vector.value[exec_option_key] = exec_option_value
+
   def clear(self):
     self.dimensions.clear()
 

http://git-wip-us.apache.org/repos/asf/impala/blob/35a3e186/tests/query_test/test_tpcds_queries.py
----------------------------------------------------------------------
diff --git a/tests/query_test/test_tpcds_queries.py b/tests/query_test/test_tpcds_queries.py
index 099d8a9..9cec9f7 100644
--- a/tests/query_test/test_tpcds_queries.py
+++ b/tests/query_test/test_tpcds_queries.py
@@ -105,9 +105,6 @@ class TestTpcdsQuery(ImpalaTestSuite):
   def test_tpcds_q21(self, vector):
     self.run_test_case(self.get_workload() + '-q21', vector)
 
-  def test_tpcds_q22a(self, vector):
-    self.run_test_case(self.get_workload() + '-q22a', vector)
-
   def test_tpcds_q25(self, vector):
     self.run_test_case(self.get_workload() + '-q25', vector)
 
@@ -268,6 +265,246 @@ class TestTpcdsQuery(ImpalaTestSuite):
     self.run_test_case(self.get_workload() + '-q99', vector)
 
 
+class TestTpcdsDecimalV2Query(ImpalaTestSuite):
+  @classmethod
+  def get_workload(cls):
+    return 'tpcds'
+
+  @classmethod
+  def add_test_dimensions(cls):
+    super(TestTpcdsDecimalV2Query, cls).add_test_dimensions()
+    cls.ImpalaTestMatrix.add_constraint(lambda v:\
+        v.get_value('table_format').file_format not in ['rc', 'hbase', 'kudu'] and\
+        v.get_value('table_format').compression_codec in ['none', 'snap'] and\
+        v.get_value('table_format').compression_type != 'record')
+    cls.ImpalaTestMatrix.add_mandatory_exec_option('decimal_v2', 1)
+
+    if cls.exploration_strategy() != 'exhaustive':
+      # Cut down on the execution time for these tests in core by running only
+      # against parquet.
+      cls.ImpalaTestMatrix.add_constraint(lambda v:\
+          v.get_value('table_format').file_format in ['parquet'])
+
+    cls.ImpalaTestMatrix.add_constraint(lambda v:\
+        v.get_value('exec_option')['batch_size'] == 0)
+
+  def test_tpcds_q1(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q1', vector)
+
+  def test_tpcds_q2(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q2', vector)
+
+  def test_tpcds_q3(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q3', vector)
+
+  def test_tpcds_q4(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q4', vector)
+
+  def test_tpcds_q6(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q6', vector)
+
+  def test_tpcds_q7(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q7', vector)
+
+  def test_tpcds_q8(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q8', vector)
+
+  def test_tpcds_q10a(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q10a', vector)
+
+  def test_tpcds_q11(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q11', vector)
+
+  def test_tpcds_q12(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q12', vector)
+
+  def test_tpcds_q13(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q13', vector)
+
+  def test_tpcds_q15(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q15', vector)
+
+  def test_tpcds_q16(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q16', vector)
+
+  def test_tpcds_q17(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q17', vector)
+
+  def test_tpcds_q18a(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q18a', vector)
+
+  def test_tpcds_q19(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q19', vector)
+
+  def test_tpcds_q20(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q20', vector)
+
+  def test_tpcds_q21(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q21', vector)
+
+  def test_tpcds_q22a(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q22a', vector)
+
+  def test_tpcds_q25(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q25', vector)
+
+  def test_tpcds_q29(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q29', vector)
+
+  def test_tpcds_q32(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q32', vector)
+
+  def test_tpcds_q33(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q33', vector)
+
+  def test_tpcds_q34(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q34', vector)
+
+  def test_tpcds_q37(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q37', vector)
+
+  def test_tpcds_q39_1(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q39-1', vector)
+
+  def test_tpcds_q39_2(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q39-2', vector)
+
+  def test_tpcds_q40(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q40', vector)
+
+  def test_tpcds_q41(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q41', vector)
+
+  def test_tpcds_q42(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q42', vector)
+
+  def test_tpcds_q43(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q43', vector)
+
+  def test_tpcds_q46(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q46', vector)
+
+  def test_tpcds_q50(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q50', vector)
+
+  def test_tpcds_q51(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q51', vector)
+
+  def test_tpcds_q51a(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q51a', vector)
+
+  def test_tpcds_q52(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q52', vector)
+
+  def test_tpcds_q53(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q53', vector)
+
+  def test_tpcds_q54(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q54', vector)
+
+  def test_tpcds_q55(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q55', vector)
+
+  def test_tpcds_q56(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q56', vector)
+
+  def test_tpcds_q60(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q60', vector)
+
+  def test_tpcds_q61(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q61', vector)
+
+  def test_tpcds_q62(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q62', vector)
+
+  def test_tpcds_q64(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q64', vector)
+
+  def test_tpcds_q65(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q65', vector)
+
+  def test_tpcds_q67a(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q67a', vector)
+
+  def test_tpcds_q68(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q68', vector)
+
+  def test_tpcds_q69(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q69', vector)
+
+  def test_tpcds_q70a(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q70a', vector)
+
+  def test_tpcds_q71(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q71', vector)
+
+  def test_tpcds_q72(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q72', vector)
+
+  def test_tpcds_q73(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q73', vector)
+
+  def test_tpcds_q74(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q74', vector)
+
+  def test_tpcds_q75(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q75', vector)
+
+  def test_tpcds_q76(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q76', vector)
+
+  def test_tpcds_q77a(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q77a', vector)
+
+  def test_tpcds_q78(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q78', vector)
+
+  def test_tpcds_q79(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q79', vector)
+
+  def test_tpcds_q80a(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q80a', vector)
+
+  def test_tpcds_q81(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q81', vector)
+
+  def test_tpcds_q82(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q82', vector)
+
+  def test_tpcds_q84(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q84', vector)
+
+  def test_tpcds_q86a(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q86a', vector)
+
+  def test_tpcds_q88(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q88', vector)
+
+  def test_tpcds_q91(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q91', vector)
+
+  def test_tpcds_q92(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q92', vector)
+
+  def test_tpcds_q94(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q94', vector)
+
+  def test_tpcds_q95(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q95', vector)
+
+  def test_tpcds_q96(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q96', vector)
+
+  def test_tpcds_q97(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q97', vector)
+
+  def test_tpcds_q98(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q98', vector)
+
+  def test_tpcds_q99(self, vector):
+    self.run_test_case(self.get_workload() + '-decimal_v2-q99', vector)
+
+
 class TestTpcdsInsert(ImpalaTestSuite):
   @classmethod
   def get_workload(self):