You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by re...@apache.org on 2017/04/20 10:28:33 UTC

hive git commit: HIVE-16317 CASE .. NULL in JOIN condition can trigger SemanticException (Remus Rusanu, reviewed by Ashutosh Chauhan)

Repository: hive
Updated Branches:
  refs/heads/master 28a2efd0c -> fa24d4b9b


HIVE-16317 CASE .. NULL in JOIN condition can trigger SemanticException (Remus Rusanu, reviewed by Ashutosh Chauhan)


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

Branch: refs/heads/master
Commit: fa24d4b9b99b5e81b65d781f379679dcf916e2e2
Parents: 28a2efd
Author: Remus Rusanu <re...@apache.org>
Authored: Thu Apr 20 03:28:24 2017 -0700
Committer: Remus Rusanu <re...@apache.org>
Committed: Thu Apr 20 03:28:24 2017 -0700

----------------------------------------------------------------------
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java  |   1 +
 .../results/clientpositive/perf/query31.q.out   | 526 ++++++++++---------
 2 files changed, 267 insertions(+), 260 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/fa24d4b9/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 77fc35d..b5a5645 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -2571,6 +2571,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
       }
       unparseTranslator.addIdentifierTranslation(condn);
       break;
+    case HiveParser.TOK_NULL:
     case HiveParser.Number:
     case HiveParser.StringLiteral:
     case HiveParser.IntegralLiteral:

http://git-wip-us.apache.org/repos/asf/hive/blob/fa24d4b9/ql/src/test/results/clientpositive/perf/query31.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query31.q.out b/ql/src/test/results/clientpositive/perf/query31.q.out
index 4de6eb6..3ed312d 100644
--- a/ql/src/test/results/clientpositive/perf/query31.q.out
+++ b/ql/src/test/results/clientpositive/perf/query31.q.out
@@ -2,7 +2,7 @@ PREHOOK: query: explain with ss as (select ca_county,d_qoy, d_year,sum(ss_ext_sa
 PREHOOK: type: QUERY
 POSTHOOK: query: explain with ss as (select ca_county,d_qoy, d_year,sum(ss_ext_sales_price) as store_sales from store_sales,date_dim,customer_address where ss_sold_date_sk = d_date_sk and ss_addr_sk=ca_address_sk group by ca_county,d_qoy, d_year), ws as (select ca_county,d_qoy, d_year,sum(ws_ext_sales_price) as web_sales from web_sales,date_dim,customer_address where ws_sold_date_sk = d_date_sk and ws_bill_addr_sk=ca_address_sk group by ca_county,d_qoy, d_year) select ss1.ca_county ,ss1.d_year ,ws2.web_sales/ws1.web_sales web_q1_q2_increase ,ss2.store_sales/ss1.store_sales store_q1_q2_increase ,ws3.web_sales/ws2.web_sales web_q2_q3_increase ,ss3.store_sales/ss2.store_sales store_q2_q3_increase from ss ss1 ,ss ss2 ,ss ss3 ,ws ws1 ,ws ws2 ,ws ws3 where ss1.d_qoy = 1 and ss1.d_year = 1998 and ss1.ca_county = ss2.ca_county and ss2.d_qoy = 2 and ss2.d_year = 1998 and ss2.ca_county = ss3.ca_county and ss3.d_qoy = 3 and ss3.d_year = 1998 and ss1.ca_county = ws1.ca_county and ws1.d_qoy = 1 
 and ws1.d_year = 1998 and ws1.ca_county = ws2.ca_county and ws2.d_qoy = 2 and ws2.d_year = 1998 and ws1.ca_county = ws3.ca_county and ws3.d_qoy = 3 and ws3.d_year =1998 and case when ws1.web_sales > 0 then ws2.web_sales/ws1.web_sales else null end > case when ss1.store_sales > 0 then ss2.store_sales/ss1.store_sales else null end and case when ws2.web_sales > 0 then ws3.web_sales/ws2.web_sales else null end > case when ss2.store_sales > 0 then ss3.store_sales/ss2.store_sales else null end order by web_q1_q2_increase
 POSTHOOK: type: QUERY
-Plan not optimized by CBO.
+Plan optimized by CBO.
 
 Vertex dependency in root stage
 Reducer 10 <- Map 13 (SIMPLE_EDGE), Map 9 (SIMPLE_EDGE)
@@ -12,18 +12,19 @@ Reducer 16 <- Map 15 (SIMPLE_EDGE), Map 19 (SIMPLE_EDGE)
 Reducer 17 <- Map 20 (SIMPLE_EDGE), Reducer 16 (SIMPLE_EDGE)
 Reducer 18 <- Reducer 17 (SIMPLE_EDGE)
 Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 7 (SIMPLE_EDGE)
-Reducer 22 <- Map 21 (SIMPLE_EDGE), Map 25 (SIMPLE_EDGE)
-Reducer 23 <- Map 26 (SIMPLE_EDGE), Reducer 22 (SIMPLE_EDGE)
+Reducer 22 <- Map 21 (SIMPLE_EDGE), Map 26 (SIMPLE_EDGE)
+Reducer 23 <- Map 27 (SIMPLE_EDGE), Reducer 22 (SIMPLE_EDGE)
 Reducer 24 <- Reducer 23 (SIMPLE_EDGE)
-Reducer 28 <- Map 27 (SIMPLE_EDGE), Map 31 (SIMPLE_EDGE)
-Reducer 29 <- Map 32 (SIMPLE_EDGE), Reducer 28 (SIMPLE_EDGE)
+Reducer 25 <- Reducer 24 (SIMPLE_EDGE), Reducer 31 (SIMPLE_EDGE), Reducer 37 (SIMPLE_EDGE)
+Reducer 29 <- Map 28 (SIMPLE_EDGE), Map 32 (SIMPLE_EDGE)
 Reducer 3 <- Map 8 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
-Reducer 30 <- Reducer 29 (SIMPLE_EDGE)
-Reducer 34 <- Map 33 (SIMPLE_EDGE), Map 37 (SIMPLE_EDGE)
-Reducer 35 <- Map 38 (SIMPLE_EDGE), Reducer 34 (SIMPLE_EDGE)
-Reducer 36 <- Reducer 35 (SIMPLE_EDGE)
+Reducer 30 <- Map 33 (SIMPLE_EDGE), Reducer 29 (SIMPLE_EDGE)
+Reducer 31 <- Reducer 30 (SIMPLE_EDGE)
+Reducer 35 <- Map 34 (SIMPLE_EDGE), Map 38 (SIMPLE_EDGE)
+Reducer 36 <- Map 39 (SIMPLE_EDGE), Reducer 35 (SIMPLE_EDGE)
+Reducer 37 <- Reducer 36 (SIMPLE_EDGE)
 Reducer 4 <- Reducer 3 (SIMPLE_EDGE)
-Reducer 5 <- Reducer 12 (SIMPLE_EDGE), Reducer 18 (SIMPLE_EDGE), Reducer 24 (SIMPLE_EDGE), Reducer 30 (SIMPLE_EDGE), Reducer 36 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE)
+Reducer 5 <- Reducer 12 (SIMPLE_EDGE), Reducer 18 (SIMPLE_EDGE), Reducer 25 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE)
 Reducer 6 <- Reducer 5 (SIMPLE_EDGE)
 
 Stage-0
@@ -31,279 +32,284 @@ Stage-0
     limit:-1
     Stage-1
       Reducer 6
-      File Output Operator [FS_256]
-        Select Operator [SEL_255] (rows=1663737 width=88)
+      File Output Operator [FS_135]
+        Select Operator [SEL_134] (rows=287493839 width=88)
           Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
         <-Reducer 5 [SIMPLE_EDGE]
-          SHUFFLE [RS_254]
-            Select Operator [SEL_253] (rows=1663737 width=88)
+          SHUFFLE [RS_133]
+            Select Operator [SEL_132] (rows=287493839 width=88)
               Output:["_col0","_col2","_col3","_col4","_col5"]
-              Filter Operator [FIL_377] (rows=1663737 width=88)
-                predicate:((_col0 = _col4) and (_col0 = _col12) and (CASE WHEN ((_col15 > 0)) THEN ((_col19 / _col15)) ELSE (null) END > CASE WHEN ((_col3 > 0)) THEN ((_col7 / _col3)) ELSE (null) END) and (CASE WHEN ((_col19 > 0)) THEN ((_col23 / _col19)) ELSE (null) END > CASE WHEN ((_col7 > 0)) THEN ((_col11 / _col7)) ELSE (null) END) and (_col4 = _col8) and (_col12 = _col16) and (_col12 = _col20))
-                Merge Join Operator [MERGEJOIN_414] (rows=479156396 width=88)
-                  Conds:RS_240._col0=RS_242._col0(Inner),RS_242._col0=RS_244._col0(Inner),RS_240._col0=RS_246._col0(Inner),RS_246._col0=RS_248._col0(Inner),RS_246._col0=RS_250._col0(Inner),Output:["_col0","_col3","_col4","_col7","_col8","_col11","_col12","_col15","_col16","_col19","_col20","_col23"]
+              Filter Operator [FIL_130] (rows=287493839 width=88)
+                predicate:(CASE WHEN ((_col1 > 0)) THEN (CASE WHEN ((_col9 > 0)) THEN (((_col11 / _col9) > (_col5 / _col1))) ELSE ((null > (_col5 / _col1))) END) ELSE (CASE WHEN ((_col9 > 0)) THEN (((_col11 / _col9) > null)) ELSE (null) END) END and CASE WHEN ((_col3 > 0)) THEN (CASE WHEN ((_col7 > 0)) THEN (((_col9 / _col7) > (_col1 / _col3))) ELSE ((null > (_col1 / _col3))) END) ELSE (CASE WHEN ((_col7 > 0)) THEN (((_col9 / _col7) > null)) ELSE (null) END) END)
+                Merge Join Operator [MERGEJOIN_269] (rows=1149975359 width=88)
+                  Conds:RS_125._col0=RS_126._col0(Inner),RS_125._col0=RS_127._col0(Inner),RS_125._col0=RS_128._col0(Inner),Output:["_col0","_col1","_col3","_col5","_col7","_col9","_col11"]
                 <-Reducer 12 [SIMPLE_EDGE]
-                  SHUFFLE [RS_242]
+                  SHUFFLE [RS_126]
                     PartitionCols:_col0
-                    Select Operator [SEL_162] (rows=87119343 width=88)
-                      Output:["_col0","_col3"]
-                      Group By Operator [GBY_161] (rows=87119343 width=88)
-                        Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, 2, 1998
-                      <-Reducer 11 [SIMPLE_EDGE]
-                        SHUFFLE [RS_160]
-                          PartitionCols:_col0, 2, 1998
-                          Group By Operator [GBY_159] (rows=174238687 width=88)
-                            Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(_col15)"],keys:_col64, 2, 1998
-                            Select Operator [SEL_158] (rows=174238687 width=88)
-                              Output:["_col15","_col64"]
-                              Filter Operator [FIL_382] (rows=174238687 width=88)
-                                predicate:((_col0 = _col26) and (_col6 = _col57))
-                                Merge Join Operator [MERGEJOIN_405] (rows=696954748 width=88)
-                                  Conds:RS_153._col6=RS_155.ca_address_sk(Inner),Output:["_col0","_col6","_col15","_col26","_col57","_col64"]
-                                <-Map 14 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_155]
-                                    PartitionCols:ca_address_sk
-                                    Filter Operator [FIL_385] (rows=40000000 width=1014)
-                                      predicate:(ca_address_sk is not null and ca_county is not null)
-                                      TableScan [TS_146] (rows=40000000 width=1014)
-                                        default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_address_sk","ca_county"]
-                                <-Reducer 10 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_153]
-                                    PartitionCols:_col6
-                                    Merge Join Operator [MERGEJOIN_404] (rows=633595212 width=88)
-                                      Conds:RS_148.ss_sold_date_sk=RS_150.d_date_sk(Inner),Output:["_col0","_col6","_col15","_col26"]
-                                    <-Map 13 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_150]
-                                        PartitionCols:d_date_sk
-                                        Filter Operator [FIL_384] (rows=18262 width=1119)
-                                          predicate:(d_date_sk is not null and (d_qoy = 2) and (d_year = 1998))
-                                          TableScan [TS_145] (rows=73049 width=1119)
-                                            default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_qoy"]
-                                    <-Map 9 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_148]
-                                        PartitionCols:ss_sold_date_sk
-                                        Filter Operator [FIL_383] (rows=575995635 width=88)
-                                          predicate:(ss_sold_date_sk is not null and ss_addr_sk is not null)
-                                          TableScan [TS_144] (rows=575995635 width=88)
-                                            default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_sold_date_sk","ss_addr_sk","ss_ext_sales_price"]
+                    Group By Operator [GBY_38] (rows=348477374 width=88)
+                      Output:["_col0","_col1"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0
+                    <-Reducer 11 [SIMPLE_EDGE]
+                      SHUFFLE [RS_37]
+                        PartitionCols:_col0
+                        Group By Operator [GBY_36] (rows=696954748 width=88)
+                          Output:["_col0","_col1"],aggregations:["sum(_col2)"],keys:_col7
+                          Merge Join Operator [MERGEJOIN_259] (rows=696954748 width=88)
+                            Conds:RS_32._col1=RS_33._col0(Inner),Output:["_col2","_col7"]
+                          <-Map 14 [SIMPLE_EDGE]
+                            SHUFFLE [RS_33]
+                              PartitionCols:_col0
+                              Select Operator [SEL_28] (rows=40000000 width=1014)
+                                Output:["_col0","_col1"]
+                                Filter Operator [FIL_243] (rows=40000000 width=1014)
+                                  predicate:(ca_address_sk is not null and ca_county is not null)
+                                  TableScan [TS_26] (rows=40000000 width=1014)
+                                    default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_address_sk","ca_county"]
+                          <-Reducer 10 [SIMPLE_EDGE]
+                            SHUFFLE [RS_32]
+                              PartitionCols:_col1
+                              Merge Join Operator [MERGEJOIN_258] (rows=633595212 width=88)
+                                Conds:RS_29._col0=RS_30._col0(Inner),Output:["_col1","_col2"]
+                              <-Map 13 [SIMPLE_EDGE]
+                                SHUFFLE [RS_30]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_25] (rows=18262 width=1119)
+                                    Output:["_col0"]
+                                    Filter Operator [FIL_242] (rows=18262 width=1119)
+                                      predicate:((d_qoy = 1) and (d_year = 1998) and d_date_sk is not null)
+                                      TableScan [TS_23] (rows=73049 width=1119)
+                                        default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_qoy"]
+                              <-Map 9 [SIMPLE_EDGE]
+                                SHUFFLE [RS_29]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_22] (rows=575995635 width=88)
+                                    Output:["_col0","_col1","_col2"]
+                                    Filter Operator [FIL_241] (rows=575995635 width=88)
+                                      predicate:(ss_sold_date_sk is not null and ss_addr_sk is not null)
+                                      TableScan [TS_20] (rows=575995635 width=88)
+                                        default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_sold_date_sk","ss_addr_sk","ss_ext_sales_price"]
                 <-Reducer 18 [SIMPLE_EDGE]
-                  SHUFFLE [RS_244]
+                  SHUFFLE [RS_127]
                     PartitionCols:_col0
-                    Select Operator [SEL_181] (rows=87119343 width=88)
-                      Output:["_col0","_col3"]
-                      Group By Operator [GBY_180] (rows=87119343 width=88)
-                        Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, 3, 1998
-                      <-Reducer 17 [SIMPLE_EDGE]
-                        SHUFFLE [RS_179]
-                          PartitionCols:_col0, 3, 1998
-                          Group By Operator [GBY_178] (rows=174238687 width=88)
-                            Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(_col15)"],keys:_col64, 3, 1998
-                            Select Operator [SEL_177] (rows=174238687 width=88)
-                              Output:["_col15","_col64"]
-                              Filter Operator [FIL_386] (rows=174238687 width=88)
-                                predicate:((_col0 = _col26) and (_col6 = _col57))
-                                Merge Join Operator [MERGEJOIN_407] (rows=696954748 width=88)
-                                  Conds:RS_172._col6=RS_174.ca_address_sk(Inner),Output:["_col0","_col6","_col15","_col26","_col57","_col64"]
-                                <-Map 20 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_174]
-                                    PartitionCols:ca_address_sk
-                                    Filter Operator [FIL_389] (rows=40000000 width=1014)
-                                      predicate:(ca_address_sk is not null and ca_county is not null)
-                                      TableScan [TS_165] (rows=40000000 width=1014)
-                                        default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_address_sk","ca_county"]
-                                <-Reducer 16 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_172]
-                                    PartitionCols:_col6
-                                    Merge Join Operator [MERGEJOIN_406] (rows=633595212 width=88)
-                                      Conds:RS_167.ss_sold_date_sk=RS_169.d_date_sk(Inner),Output:["_col0","_col6","_col15","_col26"]
-                                    <-Map 15 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_167]
-                                        PartitionCols:ss_sold_date_sk
-                                        Filter Operator [FIL_387] (rows=575995635 width=88)
-                                          predicate:(ss_sold_date_sk is not null and ss_addr_sk is not null)
-                                          TableScan [TS_163] (rows=575995635 width=88)
-                                            default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_sold_date_sk","ss_addr_sk","ss_ext_sales_price"]
-                                    <-Map 19 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_169]
-                                        PartitionCols:d_date_sk
-                                        Filter Operator [FIL_388] (rows=18262 width=1119)
-                                          predicate:(d_date_sk is not null and (d_qoy = 3) and (d_year = 1998))
-                                          TableScan [TS_164] (rows=73049 width=1119)
-                                            default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_qoy"]
-                <-Reducer 24 [SIMPLE_EDGE]
-                  SHUFFLE [RS_246]
+                    Group By Operator [GBY_58] (rows=348477374 width=88)
+                      Output:["_col0","_col1"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0
+                    <-Reducer 17 [SIMPLE_EDGE]
+                      SHUFFLE [RS_57]
+                        PartitionCols:_col0
+                        Group By Operator [GBY_56] (rows=696954748 width=88)
+                          Output:["_col0","_col1"],aggregations:["sum(_col2)"],keys:_col7
+                          Merge Join Operator [MERGEJOIN_261] (rows=696954748 width=88)
+                            Conds:RS_52._col1=RS_53._col0(Inner),Output:["_col2","_col7"]
+                          <-Map 20 [SIMPLE_EDGE]
+                            SHUFFLE [RS_53]
+                              PartitionCols:_col0
+                              Select Operator [SEL_48] (rows=40000000 width=1014)
+                                Output:["_col0","_col1"]
+                                Filter Operator [FIL_246] (rows=40000000 width=1014)
+                                  predicate:(ca_address_sk is not null and ca_county is not null)
+                                  TableScan [TS_46] (rows=40000000 width=1014)
+                                    default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_address_sk","ca_county"]
+                          <-Reducer 16 [SIMPLE_EDGE]
+                            SHUFFLE [RS_52]
+                              PartitionCols:_col1
+                              Merge Join Operator [MERGEJOIN_260] (rows=633595212 width=88)
+                                Conds:RS_49._col0=RS_50._col0(Inner),Output:["_col1","_col2"]
+                              <-Map 15 [SIMPLE_EDGE]
+                                SHUFFLE [RS_49]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_42] (rows=575995635 width=88)
+                                    Output:["_col0","_col1","_col2"]
+                                    Filter Operator [FIL_244] (rows=575995635 width=88)
+                                      predicate:(ss_sold_date_sk is not null and ss_addr_sk is not null)
+                                      TableScan [TS_40] (rows=575995635 width=88)
+                                        default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_sold_date_sk","ss_addr_sk","ss_ext_sales_price"]
+                              <-Map 19 [SIMPLE_EDGE]
+                                SHUFFLE [RS_50]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_45] (rows=18262 width=1119)
+                                    Output:["_col0"]
+                                    Filter Operator [FIL_245] (rows=18262 width=1119)
+                                      predicate:((d_qoy = 3) and (d_year = 1998) and d_date_sk is not null)
+                                      TableScan [TS_43] (rows=73049 width=1119)
+                                        default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_qoy"]
+                <-Reducer 25 [SIMPLE_EDGE]
+                  SHUFFLE [RS_128]
                     PartitionCols:_col0
-                    Select Operator [SEL_200] (rows=21780404 width=135)
-                      Output:["_col0","_col3"]
-                      Group By Operator [GBY_199] (rows=21780404 width=135)
-                        Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, 1, 1998
-                      <-Reducer 23 [SIMPLE_EDGE]
-                        SHUFFLE [RS_198]
-                          PartitionCols:_col0, 1, 1998
-                          Group By Operator [GBY_197] (rows=43560808 width=135)
-                            Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(_col23)"],keys:_col75, 1, 1998
-                            Select Operator [SEL_196] (rows=43560808 width=135)
-                              Output:["_col23","_col75"]
-                              Filter Operator [FIL_390] (rows=43560808 width=135)
-                                predicate:((_col0 = _col37) and (_col7 = _col68))
-                                Merge Join Operator [MERGEJOIN_409] (rows=174243235 width=135)
-                                  Conds:RS_191._col7=RS_193.ca_address_sk(Inner),Output:["_col0","_col7","_col23","_col37","_col68","_col75"]
-                                <-Map 26 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_193]
-                                    PartitionCols:ca_address_sk
-                                    Filter Operator [FIL_393] (rows=40000000 width=1014)
+                    Merge Join Operator [MERGEJOIN_268] (rows=191667561 width=135)
+                      Conds:RS_120._col0=RS_121._col0(Inner),RS_120._col0=RS_122._col0(Inner),Output:["_col0","_col1","_col3","_col5"]
+                    <-Reducer 24 [SIMPLE_EDGE]
+                      SHUFFLE [RS_120]
+                        PartitionCols:_col0
+                        Group By Operator [GBY_78] (rows=87121617 width=135)
+                          Output:["_col0","_col1"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0
+                        <-Reducer 23 [SIMPLE_EDGE]
+                          SHUFFLE [RS_77]
+                            PartitionCols:_col0
+                            Group By Operator [GBY_76] (rows=174243235 width=135)
+                              Output:["_col0","_col1"],aggregations:["sum(_col2)"],keys:_col7
+                              Merge Join Operator [MERGEJOIN_263] (rows=174243235 width=135)
+                                Conds:RS_72._col1=RS_73._col0(Inner),Output:["_col2","_col7"]
+                              <-Map 27 [SIMPLE_EDGE]
+                                SHUFFLE [RS_73]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_68] (rows=40000000 width=1014)
+                                    Output:["_col0","_col1"]
+                                    Filter Operator [FIL_249] (rows=40000000 width=1014)
                                       predicate:(ca_address_sk is not null and ca_county is not null)
-                                      TableScan [TS_184] (rows=40000000 width=1014)
+                                      TableScan [TS_66] (rows=40000000 width=1014)
                                         default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_address_sk","ca_county"]
-                                <-Reducer 22 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_191]
-                                    PartitionCols:_col7
-                                    Merge Join Operator [MERGEJOIN_408] (rows=158402938 width=135)
-                                      Conds:RS_186.ws_sold_date_sk=RS_188.d_date_sk(Inner),Output:["_col0","_col7","_col23","_col37"]
-                                    <-Map 21 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_186]
-                                        PartitionCols:ws_sold_date_sk
-                                        Filter Operator [FIL_391] (rows=144002668 width=135)
+                              <-Reducer 22 [SIMPLE_EDGE]
+                                SHUFFLE [RS_72]
+                                  PartitionCols:_col1
+                                  Merge Join Operator [MERGEJOIN_262] (rows=158402938 width=135)
+                                    Conds:RS_69._col0=RS_70._col0(Inner),Output:["_col1","_col2"]
+                                  <-Map 21 [SIMPLE_EDGE]
+                                    SHUFFLE [RS_69]
+                                      PartitionCols:_col0
+                                      Select Operator [SEL_62] (rows=144002668 width=135)
+                                        Output:["_col0","_col1","_col2"]
+                                        Filter Operator [FIL_247] (rows=144002668 width=135)
                                           predicate:(ws_sold_date_sk is not null and ws_bill_addr_sk is not null)
-                                          TableScan [TS_182] (rows=144002668 width=135)
+                                          TableScan [TS_60] (rows=144002668 width=135)
                                             default@web_sales,web_sales,Tbl:COMPLETE,Col:NONE,Output:["ws_sold_date_sk","ws_bill_addr_sk","ws_ext_sales_price"]
-                                    <-Map 25 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_188]
-                                        PartitionCols:d_date_sk
-                                        Filter Operator [FIL_392] (rows=18262 width=1119)
-                                          predicate:(d_date_sk is not null and (d_qoy = 1) and (d_year = 1998))
-                                          TableScan [TS_183] (rows=73049 width=1119)
+                                  <-Map 26 [SIMPLE_EDGE]
+                                    SHUFFLE [RS_70]
+                                      PartitionCols:_col0
+                                      Select Operator [SEL_65] (rows=18262 width=1119)
+                                        Output:["_col0"]
+                                        Filter Operator [FIL_248] (rows=18262 width=1119)
+                                          predicate:((d_qoy = 1) and (d_year = 1998) and d_date_sk is not null)
+                                          TableScan [TS_63] (rows=73049 width=1119)
                                             default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_qoy"]
-                <-Reducer 30 [SIMPLE_EDGE]
-                  SHUFFLE [RS_248]
-                    PartitionCols:_col0
-                    Select Operator [SEL_219] (rows=21780404 width=135)
-                      Output:["_col0","_col3"]
-                      Group By Operator [GBY_218] (rows=21780404 width=135)
-                        Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, 2, 1998
-                      <-Reducer 29 [SIMPLE_EDGE]
-                        SHUFFLE [RS_217]
-                          PartitionCols:_col0, 2, 1998
-                          Group By Operator [GBY_216] (rows=43560808 width=135)
-                            Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(_col23)"],keys:_col75, 2, 1998
-                            Select Operator [SEL_215] (rows=43560808 width=135)
-                              Output:["_col23","_col75"]
-                              Filter Operator [FIL_394] (rows=43560808 width=135)
-                                predicate:((_col0 = _col37) and (_col7 = _col68))
-                                Merge Join Operator [MERGEJOIN_411] (rows=174243235 width=135)
-                                  Conds:RS_210._col7=RS_212.ca_address_sk(Inner),Output:["_col0","_col7","_col23","_col37","_col68","_col75"]
-                                <-Map 32 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_212]
-                                    PartitionCols:ca_address_sk
-                                    Filter Operator [FIL_397] (rows=40000000 width=1014)
+                    <-Reducer 31 [SIMPLE_EDGE]
+                      SHUFFLE [RS_121]
+                        PartitionCols:_col0
+                        Group By Operator [GBY_98] (rows=87121617 width=135)
+                          Output:["_col0","_col1"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0
+                        <-Reducer 30 [SIMPLE_EDGE]
+                          SHUFFLE [RS_97]
+                            PartitionCols:_col0
+                            Group By Operator [GBY_96] (rows=174243235 width=135)
+                              Output:["_col0","_col1"],aggregations:["sum(_col2)"],keys:_col7
+                              Merge Join Operator [MERGEJOIN_265] (rows=174243235 width=135)
+                                Conds:RS_92._col1=RS_93._col0(Inner),Output:["_col2","_col7"]
+                              <-Map 33 [SIMPLE_EDGE]
+                                SHUFFLE [RS_93]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_88] (rows=40000000 width=1014)
+                                    Output:["_col0","_col1"]
+                                    Filter Operator [FIL_252] (rows=40000000 width=1014)
                                       predicate:(ca_address_sk is not null and ca_county is not null)
-                                      TableScan [TS_203] (rows=40000000 width=1014)
+                                      TableScan [TS_86] (rows=40000000 width=1014)
                                         default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_address_sk","ca_county"]
-                                <-Reducer 28 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_210]
-                                    PartitionCols:_col7
-                                    Merge Join Operator [MERGEJOIN_410] (rows=158402938 width=135)
-                                      Conds:RS_205.ws_sold_date_sk=RS_207.d_date_sk(Inner),Output:["_col0","_col7","_col23","_col37"]
-                                    <-Map 27 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_205]
-                                        PartitionCols:ws_sold_date_sk
-                                        Filter Operator [FIL_395] (rows=144002668 width=135)
+                              <-Reducer 29 [SIMPLE_EDGE]
+                                SHUFFLE [RS_92]
+                                  PartitionCols:_col1
+                                  Merge Join Operator [MERGEJOIN_264] (rows=158402938 width=135)
+                                    Conds:RS_89._col0=RS_90._col0(Inner),Output:["_col1","_col2"]
+                                  <-Map 28 [SIMPLE_EDGE]
+                                    SHUFFLE [RS_89]
+                                      PartitionCols:_col0
+                                      Select Operator [SEL_82] (rows=144002668 width=135)
+                                        Output:["_col0","_col1","_col2"]
+                                        Filter Operator [FIL_250] (rows=144002668 width=135)
                                           predicate:(ws_sold_date_sk is not null and ws_bill_addr_sk is not null)
-                                          TableScan [TS_201] (rows=144002668 width=135)
+                                          TableScan [TS_80] (rows=144002668 width=135)
                                             default@web_sales,web_sales,Tbl:COMPLETE,Col:NONE,Output:["ws_sold_date_sk","ws_bill_addr_sk","ws_ext_sales_price"]
-                                    <-Map 31 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_207]
-                                        PartitionCols:d_date_sk
-                                        Filter Operator [FIL_396] (rows=18262 width=1119)
-                                          predicate:(d_date_sk is not null and (d_qoy = 2) and (d_year = 1998))
-                                          TableScan [TS_202] (rows=73049 width=1119)
+                                  <-Map 32 [SIMPLE_EDGE]
+                                    SHUFFLE [RS_90]
+                                      PartitionCols:_col0
+                                      Select Operator [SEL_85] (rows=18262 width=1119)
+                                        Output:["_col0"]
+                                        Filter Operator [FIL_251] (rows=18262 width=1119)
+                                          predicate:((d_qoy = 2) and (d_year = 1998) and d_date_sk is not null)
+                                          TableScan [TS_83] (rows=73049 width=1119)
                                             default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_qoy"]
-                <-Reducer 36 [SIMPLE_EDGE]
-                  SHUFFLE [RS_250]
-                    PartitionCols:_col0
-                    Select Operator [SEL_238] (rows=21780404 width=135)
-                      Output:["_col0","_col3"]
-                      Group By Operator [GBY_237] (rows=21780404 width=135)
-                        Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, 3, 1998
-                      <-Reducer 35 [SIMPLE_EDGE]
-                        SHUFFLE [RS_236]
-                          PartitionCols:_col0, 3, 1998
-                          Group By Operator [GBY_235] (rows=43560808 width=135)
-                            Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(_col23)"],keys:_col75, 3, 1998
-                            Select Operator [SEL_234] (rows=43560808 width=135)
-                              Output:["_col23","_col75"]
-                              Filter Operator [FIL_398] (rows=43560808 width=135)
-                                predicate:((_col0 = _col37) and (_col7 = _col68))
-                                Merge Join Operator [MERGEJOIN_413] (rows=174243235 width=135)
-                                  Conds:RS_229._col7=RS_231.ca_address_sk(Inner),Output:["_col0","_col7","_col23","_col37","_col68","_col75"]
-                                <-Map 38 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_231]
-                                    PartitionCols:ca_address_sk
-                                    Filter Operator [FIL_401] (rows=40000000 width=1014)
+                    <-Reducer 37 [SIMPLE_EDGE]
+                      SHUFFLE [RS_122]
+                        PartitionCols:_col0
+                        Group By Operator [GBY_118] (rows=87121617 width=135)
+                          Output:["_col0","_col1"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0
+                        <-Reducer 36 [SIMPLE_EDGE]
+                          SHUFFLE [RS_117]
+                            PartitionCols:_col0
+                            Group By Operator [GBY_116] (rows=174243235 width=135)
+                              Output:["_col0","_col1"],aggregations:["sum(_col2)"],keys:_col7
+                              Merge Join Operator [MERGEJOIN_267] (rows=174243235 width=135)
+                                Conds:RS_112._col1=RS_113._col0(Inner),Output:["_col2","_col7"]
+                              <-Map 39 [SIMPLE_EDGE]
+                                SHUFFLE [RS_113]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_108] (rows=40000000 width=1014)
+                                    Output:["_col0","_col1"]
+                                    Filter Operator [FIL_255] (rows=40000000 width=1014)
                                       predicate:(ca_address_sk is not null and ca_county is not null)
-                                      TableScan [TS_222] (rows=40000000 width=1014)
+                                      TableScan [TS_106] (rows=40000000 width=1014)
                                         default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_address_sk","ca_county"]
-                                <-Reducer 34 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_229]
-                                    PartitionCols:_col7
-                                    Merge Join Operator [MERGEJOIN_412] (rows=158402938 width=135)
-                                      Conds:RS_224.ws_sold_date_sk=RS_226.d_date_sk(Inner),Output:["_col0","_col7","_col23","_col37"]
-                                    <-Map 33 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_224]
-                                        PartitionCols:ws_sold_date_sk
-                                        Filter Operator [FIL_399] (rows=144002668 width=135)
+                              <-Reducer 35 [SIMPLE_EDGE]
+                                SHUFFLE [RS_112]
+                                  PartitionCols:_col1
+                                  Merge Join Operator [MERGEJOIN_266] (rows=158402938 width=135)
+                                    Conds:RS_109._col0=RS_110._col0(Inner),Output:["_col1","_col2"]
+                                  <-Map 34 [SIMPLE_EDGE]
+                                    SHUFFLE [RS_109]
+                                      PartitionCols:_col0
+                                      Select Operator [SEL_102] (rows=144002668 width=135)
+                                        Output:["_col0","_col1","_col2"]
+                                        Filter Operator [FIL_253] (rows=144002668 width=135)
                                           predicate:(ws_sold_date_sk is not null and ws_bill_addr_sk is not null)
-                                          TableScan [TS_220] (rows=144002668 width=135)
+                                          TableScan [TS_100] (rows=144002668 width=135)
                                             default@web_sales,web_sales,Tbl:COMPLETE,Col:NONE,Output:["ws_sold_date_sk","ws_bill_addr_sk","ws_ext_sales_price"]
-                                    <-Map 37 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_226]
-                                        PartitionCols:d_date_sk
-                                        Filter Operator [FIL_400] (rows=18262 width=1119)
-                                          predicate:(d_date_sk is not null and (d_qoy = 3) and (d_year = 1998))
-                                          TableScan [TS_221] (rows=73049 width=1119)
+                                  <-Map 38 [SIMPLE_EDGE]
+                                    SHUFFLE [RS_110]
+                                      PartitionCols:_col0
+                                      Select Operator [SEL_105] (rows=18262 width=1119)
+                                        Output:["_col0"]
+                                        Filter Operator [FIL_254] (rows=18262 width=1119)
+                                          predicate:((d_qoy = 3) and (d_year = 1998) and d_date_sk is not null)
+                                          TableScan [TS_103] (rows=73049 width=1119)
                                             default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_qoy"]
                 <-Reducer 4 [SIMPLE_EDGE]
-                  SHUFFLE [RS_240]
+                  SHUFFLE [RS_125]
                     PartitionCols:_col0
-                    Select Operator [SEL_143] (rows=87119343 width=88)
-                      Output:["_col0","_col3"]
-                      Group By Operator [GBY_142] (rows=87119343 width=88)
-                        Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, 1, 1998
-                      <-Reducer 3 [SIMPLE_EDGE]
-                        SHUFFLE [RS_141]
-                          PartitionCols:_col0, 1, 1998
-                          Group By Operator [GBY_140] (rows=174238687 width=88)
-                            Output:["_col0","_col1","_col2","_col3"],aggregations:["sum(_col15)"],keys:_col64, 1, 1998
-                            Select Operator [SEL_139] (rows=174238687 width=88)
-                              Output:["_col15","_col64"]
-                              Filter Operator [FIL_378] (rows=174238687 width=88)
-                                predicate:((_col0 = _col26) and (_col6 = _col57))
-                                Merge Join Operator [MERGEJOIN_403] (rows=696954748 width=88)
-                                  Conds:RS_134._col6=RS_136.ca_address_sk(Inner),Output:["_col0","_col6","_col15","_col26","_col57","_col64"]
-                                <-Map 8 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_136]
-                                    PartitionCols:ca_address_sk
-                                    Filter Operator [FIL_381] (rows=40000000 width=1014)
-                                      predicate:(ca_address_sk is not null and ca_county is not null)
-                                      TableScan [TS_127] (rows=40000000 width=1014)
-                                        default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_address_sk","ca_county"]
-                                <-Reducer 2 [SIMPLE_EDGE]
-                                  SHUFFLE [RS_134]
-                                    PartitionCols:_col6
-                                    Merge Join Operator [MERGEJOIN_402] (rows=633595212 width=88)
-                                      Conds:RS_129.ss_sold_date_sk=RS_131.d_date_sk(Inner),Output:["_col0","_col6","_col15","_col26"]
-                                    <-Map 1 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_129]
-                                        PartitionCols:ss_sold_date_sk
-                                        Filter Operator [FIL_379] (rows=575995635 width=88)
-                                          predicate:(ss_sold_date_sk is not null and ss_addr_sk is not null)
-                                          TableScan [TS_125] (rows=575995635 width=88)
-                                            default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_sold_date_sk","ss_addr_sk","ss_ext_sales_price"]
-                                    <-Map 7 [SIMPLE_EDGE]
-                                      SHUFFLE [RS_131]
-                                        PartitionCols:d_date_sk
-                                        Filter Operator [FIL_380] (rows=18262 width=1119)
-                                          predicate:(d_date_sk is not null and (d_qoy = 1) and (d_year = 1998))
-                                          TableScan [TS_126] (rows=73049 width=1119)
-                                            default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_qoy"]
+                    Group By Operator [GBY_18] (rows=348477374 width=88)
+                      Output:["_col0","_col1"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0
+                    <-Reducer 3 [SIMPLE_EDGE]
+                      SHUFFLE [RS_17]
+                        PartitionCols:_col0
+                        Group By Operator [GBY_16] (rows=696954748 width=88)
+                          Output:["_col0","_col1"],aggregations:["sum(_col2)"],keys:_col7
+                          Merge Join Operator [MERGEJOIN_257] (rows=696954748 width=88)
+                            Conds:RS_12._col1=RS_13._col0(Inner),Output:["_col2","_col7"]
+                          <-Map 8 [SIMPLE_EDGE]
+                            SHUFFLE [RS_13]
+                              PartitionCols:_col0
+                              Select Operator [SEL_8] (rows=40000000 width=1014)
+                                Output:["_col0","_col1"]
+                                Filter Operator [FIL_240] (rows=40000000 width=1014)
+                                  predicate:(ca_address_sk is not null and ca_county is not null)
+                                  TableScan [TS_6] (rows=40000000 width=1014)
+                                    default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_address_sk","ca_county"]
+                          <-Reducer 2 [SIMPLE_EDGE]
+                            SHUFFLE [RS_12]
+                              PartitionCols:_col1
+                              Merge Join Operator [MERGEJOIN_256] (rows=633595212 width=88)
+                                Conds:RS_9._col0=RS_10._col0(Inner),Output:["_col1","_col2"]
+                              <-Map 1 [SIMPLE_EDGE]
+                                SHUFFLE [RS_9]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_2] (rows=575995635 width=88)
+                                    Output:["_col0","_col1","_col2"]
+                                    Filter Operator [FIL_238] (rows=575995635 width=88)
+                                      predicate:(ss_sold_date_sk is not null and ss_addr_sk is not null)
+                                      TableScan [TS_0] (rows=575995635 width=88)
+                                        default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_sold_date_sk","ss_addr_sk","ss_ext_sales_price"]
+                              <-Map 7 [SIMPLE_EDGE]
+                                SHUFFLE [RS_10]
+                                  PartitionCols:_col0
+                                  Select Operator [SEL_5] (rows=18262 width=1119)
+                                    Output:["_col0"]
+                                    Filter Operator [FIL_239] (rows=18262 width=1119)
+                                      predicate:((d_qoy = 2) and (d_year = 1998) and d_date_sk is not null)
+                                      TableScan [TS_3] (rows=73049 width=1119)
+                                        default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_qoy"]