HIVE-19433: HiveJoinPushTransitivePredicatesRule hangs (Vineet Garg,reviewed by 
Jesus Camacho Rodriguez)


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

Branch: refs/heads/branch-3.0.0
Commit: 8c12a11b762f5954f75eb35c10cb740dab632554
Parents: 71d211d
Author: Vineet Garg <vg...@apache.org>
Authored: Mon May 14 11:37:05 2018 -0700
Committer: Vineet Garg <vg...@apache.org>
Committed: Mon May 14 11:40:36 2018 -0700

----------------------------------------------------------------------
 .../calcite/stats/HiveRelMdPredicates.java      |   6 +-
 .../queries/clientpositive/infer_join_preds.q   | 222 +++++++
 .../clientpositive/infer_join_preds.q.out       | 594 +++++++++++++++++++
 3 files changed, 820 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/8c12a11b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdPredicates.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdPredicates.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdPredicates.java
index 0b1fe74..a137bdf 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdPredicates.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdPredicates.java
@@ -642,7 +642,7 @@ public class HiveRelMdPredicates implements 
MetadataHandler<BuiltInMetadata.Pred
         } else {
           computeNextMapping(iterationIdx.length - 1);
         }
-        return nextMapping != null;
+          return nextMapping != null;
       }
 
       public Mapping next() {
@@ -659,7 +659,9 @@ public class HiveRelMdPredicates implements 
MetadataHandler<BuiltInMetadata.Pred
           if (level == 0) {
             nextMapping = null;
           } else {
-            iterationIdx[level] = 0;
+            int tmp = columnSets[level].nextSetBit(0);
+            nextMapping.set(columns[level], tmp);
+            iterationIdx[level] = tmp + 1;
             computeNextMapping(level - 1);
           }
         } else {

http://git-wip-us.apache.org/repos/asf/hive/blob/8c12a11b/ql/src/test/queries/clientpositive/infer_join_preds.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/infer_join_preds.q 
b/ql/src/test/queries/clientpositive/infer_join_preds.q
index c2e0d09..a9f5468 100644
--- a/ql/src/test/queries/clientpositive/infer_join_preds.q
+++ b/ql/src/test/queries/clientpositive/infer_join_preds.q
@@ -59,3 +59,225 @@ select * from
 (select * from src)a
 right outer join
 (select * from src1 where 1 = 0)b on a.key = b.key;
+
+explain select * from src join src1 on src.key = src1.key and src.value = 
src1.value
+    where 4 between src.key and src.value;
+
+    CREATE TABLE `table1`(
+       `idp_warehouse_id` bigint,
+       `idp_audit_id` bigint,
+       `idp_effective_date` date,
+       `idp_end_date` date,
+       `idp_delete_date` date,
+       `pruid` varchar(32),
+       `prid` bigint,
+       `prtimesheetid` bigint,
+       `prassignmentid` bigint,
+       `prchargecodeid` bigint,
+       `prtypecodeid` bigint,
+       `prsequence` bigint,
+       `prmodby` varchar(96),
+       `prmodtime` timestamp,
+       `prrmexported` bigint,
+       `prrmckdel` bigint,
+       `slice_status` int,
+       `role_id` bigint,
+       `user_lov1` varchar(30),
+       `user_lov2` varchar(30),
+       `incident_id` bigint,
+       `incident_investment_id` bigint,
+       `odf_ss_actuals` bigint,
+       `practsum` decimal(38,20));
+
+    CREATE TABLE `table2`(
+       `idp_warehouse_id` bigint,
+       `idp_audit_id` bigint,
+       `idp_effective_date` date,
+       `idp_end_date` date,
+       `idp_delete_date` date,
+       `pruid` varchar(32),
+       `prid` bigint,
+       `prtimesheetid` bigint,
+       `prassignmentid` bigint,
+       `prchargecodeid` bigint,
+       `prtypecodeid` bigint,
+       `prsequence` bigint,
+       `prmodby` varchar(96),
+       `prmodtime` timestamp,
+       `prrmexported` bigint,
+       `prrmckdel` bigint,
+       `slice_status` int,
+       `role_id` bigint,
+       `user_lov1` varchar(30),
+       `user_lov2` varchar(30),
+       `incident_id` bigint,
+       `incident_investment_id` bigint,
+       `odf_ss_actuals` bigint,
+       `practsum` decimal(38,20));
+
+    explain SELECT          s.idp_warehouse_id AS source_warehouse_id
+    FROM            table1 s
+    JOIN
+
+                           table2 d
+    ON              (
+                                    s.prid = d.prid )
+    JOIN
+                             table2 e
+    ON
+                                    s.prid = e.prid
+    WHERE
+    concat(
+                    CASE
+                                    WHEN s.prid IS NULL THEN 1
+                                    ELSE s.prid
+                    END,',',
+                    CASE
+                                    WHEN s.prtimesheetid IS NULL THEN 1
+                                    ELSE s.prtimesheetid
+                    END,',',
+                    CASE
+                                    WHEN s.prassignmentid IS NULL THEN 1
+                                    ELSE s.prassignmentid
+                    END,',',
+                    CASE
+                                    WHEN s.prchargecodeid IS NULL THEN 1
+                                    ELSE s.prchargecodeid
+                    END,',',
+                    CASE
+                                    WHEN (s.prtypecodeid) IS NULL THEN ''
+                                    ELSE s.prtypecodeid
+                    END,',',
+                    CASE
+                                    WHEN s.practsum IS NULL THEN 1
+                                    ELSE s.practsum
+                    END,',',
+                    CASE
+                                    WHEN s.prsequence IS NULL THEN 1
+                                    ELSE s.prsequence
+                    END,',',
+                    CASE
+                                    WHEN length(s.prmodby) IS NULL THEN ''
+                                    ELSE s.prmodby
+                    END,',',
+                    CASE
+                                    WHEN s.prmodtime IS NULL THEN 
cast(from_unixtime(unix_timestamp('2017-12-08','yyyy-MM-dd') ) AS timestamp)
+                                    ELSE s.prmodtime
+                    END,',',
+                    CASE
+                                    WHEN s.prrmexported IS NULL THEN 1
+                                    ELSE s.prrmexported
+                    END,',',
+                    CASE
+                                    WHEN s.prrmckdel IS NULL THEN 1
+                                    ELSE s.prrmckdel
+                    END,',',
+                    CASE
+                                    WHEN s.slice_status IS NULL THEN 1
+                                    ELSE s.slice_status
+                    END,',',
+                    CASE
+                                    WHEN s.role_id IS NULL THEN 1
+                                    ELSE s.role_id
+                    END,',',
+                    CASE
+                                    WHEN length(s.user_lov1) IS NULL THEN ''
+                                    ELSE s.user_lov1
+                    END,',',
+                    CASE
+                                    WHEN length(s.user_lov2) IS NULL THEN ''
+                                    ELSE s.user_lov2
+                    END,',',
+                    CASE
+                                    WHEN s.incident_id IS NULL THEN 1
+                                    ELSE s.incident_id
+                    END,',',
+                    CASE
+                                    WHEN s.incident_investment_id IS NULL THEN 
1
+                                    ELSE s.incident_investment_id
+                    END,',',
+                    CASE
+                                    WHEN s.odf_ss_actuals IS NULL THEN 1
+                                    ELSE s.odf_ss_actuals
+                    END ) != concat(
+                    CASE
+                                    WHEN length(d.pruid) IS NULL THEN ''
+                                    ELSE d.pruid
+                    END,',',
+                    CASE
+                                    WHEN d.prid IS NULL THEN 1
+                                    ELSE d.prid
+                    END,',',
+                    CASE
+                                    WHEN d.prtimesheetid IS NULL THEN 1
+                                    ELSE d.prtimesheetid
+                    END,',',
+                    CASE
+                                    WHEN d.prassignmentid IS NULL THEN 1
+                                    ELSE d.prassignmentid
+                    END,',',
+                    CASE
+                                    WHEN d.prchargecodeid IS NULL THEN 1
+                                    ELSE d.prchargecodeid
+                    END,',',
+                    CASE
+                                    WHEN (d.prtypecodeid) IS NULL THEN ''
+                                    ELSE d.prtypecodeid
+                    END,',',
+                    CASE
+                                    WHEN d.practsum IS NULL THEN 1
+                                    ELSE d.practsum
+                    END,',',
+                    CASE
+                                    WHEN d.prsequence IS NULL THEN 1
+                                    ELSE d.prsequence
+                    END,',',
+                    CASE
+                                    WHEN length(d.prmodby) IS NULL THEN ''
+                                    ELSE d.prmodby
+                    END,',',
+                    CASE
+                                    WHEN d.prmodtime IS NULL THEN 
cast(from_unixtime(unix_timestamp('2017-12-08','yyyy-MM-dd') ) AS timestamp)
+                                    ELSE d.prmodtime
+                    END,',',
+                    CASE
+                                    WHEN d.prrmexported IS NULL THEN 1
+                                    ELSE d.prrmexported
+                    END,',',
+                    CASE
+                                    WHEN d.prrmckdel IS NULL THEN 1
+                                    ELSE d.prrmckdel
+                    END,',',
+                    CASE
+                                    WHEN d.slice_status IS NULL THEN 1
+                                    ELSE d.slice_status
+                    END,',',
+                    CASE
+                                    WHEN d.role_id IS NULL THEN 1
+                                    ELSE d.role_id
+                    END,',',
+                    CASE
+                                    WHEN length(d.user_lov1) IS NULL THEN ''
+                                    ELSE d.user_lov1
+                    END,',',
+                    CASE
+                                    WHEN length(d.user_lov2) IS NULL THEN ''
+                                    ELSE d.user_lov2
+                    END,',',
+                    CASE
+                                    WHEN d.incident_id IS NULL THEN 1
+                                    ELSE d.incident_id
+                    END,',',
+                    CASE
+                                    WHEN d.incident_investment_id IS NULL THEN 
1
+                                    ELSE d.incident_investment_id
+                    END,',',
+                    CASE
+                                    WHEN d.odf_ss_actuals IS NULL THEN 1
+                                    ELSE d.odf_ss_actuals
+                    END );
+
+drop table table2;
+drop table table1;
+
+

http://git-wip-us.apache.org/repos/asf/hive/blob/8c12a11b/ql/src/test/results/clientpositive/infer_join_preds.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/infer_join_preds.q.out 
b/ql/src/test/results/clientpositive/infer_join_preds.q.out
index 6a4fa34..a35faf3 100644
--- a/ql/src/test/results/clientpositive/infer_join_preds.q.out
+++ b/ql/src/test/results/clientpositive/infer_join_preds.q.out
@@ -607,3 +607,597 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@src
 POSTHOOK: Input: default@src1
 #### A masked pattern was here ####
+PREHOOK: query: explain select * from src join src1 on src.key = src1.key and 
src.value = src1.value
+    where 4 between src.key and src.value
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from src join src1 on src.key = src1.key and 
src.value = src1.value
+    where 4 between src.key and src.value
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
+            Filter Operator
+              predicate: (4.0D BETWEEN UDFToDouble(key) AND UDFToDouble(value) 
and key is not null and value is not null) (type: boolean)
+              Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
+              Select Operator
+                expressions: key (type: string), value (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string), _col1 (type: string)
+                  sort order: ++
+                  Map-reduce partition columns: _col0 (type: string), _col1 
(type: string)
+                  Statistics: Num rows: 55 Data size: 584 Basic stats: 
COMPLETE Column stats: NONE
+          TableScan
+            alias: src1
+            Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE 
Column stats: NONE
+            Filter Operator
+              predicate: (4.0D BETWEEN UDFToDouble(key) AND UDFToDouble(value) 
and key is not null and value is not null) (type: boolean)
+              Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE 
Column stats: NONE
+              Select Operator
+                expressions: key (type: string), value (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE 
Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string), _col1 (type: string)
+                  sort order: ++
+                  Map-reduce partition columns: _col0 (type: string), _col1 
(type: string)
+                  Statistics: Num rows: 2 Data size: 15 Basic stats: COMPLETE 
Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 _col0 (type: string), _col1 (type: string)
+            1 _col0 (type: string), _col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE Column 
stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 60 Data size: 642 Basic stats: COMPLETE 
Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: CREATE TABLE `table1`(
+       `idp_warehouse_id` bigint,
+       `idp_audit_id` bigint,
+       `idp_effective_date` date,
+       `idp_end_date` date,
+       `idp_delete_date` date,
+       `pruid` varchar(32),
+       `prid` bigint,
+       `prtimesheetid` bigint,
+       `prassignmentid` bigint,
+       `prchargecodeid` bigint,
+       `prtypecodeid` bigint,
+       `prsequence` bigint,
+       `prmodby` varchar(96),
+       `prmodtime` timestamp,
+       `prrmexported` bigint,
+       `prrmckdel` bigint,
+       `slice_status` int,
+       `role_id` bigint,
+       `user_lov1` varchar(30),
+       `user_lov2` varchar(30),
+       `incident_id` bigint,
+       `incident_investment_id` bigint,
+       `odf_ss_actuals` bigint,
+       `practsum` decimal(38,20))
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table1
+POSTHOOK: query: CREATE TABLE `table1`(
+       `idp_warehouse_id` bigint,
+       `idp_audit_id` bigint,
+       `idp_effective_date` date,
+       `idp_end_date` date,
+       `idp_delete_date` date,
+       `pruid` varchar(32),
+       `prid` bigint,
+       `prtimesheetid` bigint,
+       `prassignmentid` bigint,
+       `prchargecodeid` bigint,
+       `prtypecodeid` bigint,
+       `prsequence` bigint,
+       `prmodby` varchar(96),
+       `prmodtime` timestamp,
+       `prrmexported` bigint,
+       `prrmckdel` bigint,
+       `slice_status` int,
+       `role_id` bigint,
+       `user_lov1` varchar(30),
+       `user_lov2` varchar(30),
+       `incident_id` bigint,
+       `incident_investment_id` bigint,
+       `odf_ss_actuals` bigint,
+       `practsum` decimal(38,20))
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table1
+PREHOOK: query: CREATE TABLE `table2`(
+       `idp_warehouse_id` bigint,
+       `idp_audit_id` bigint,
+       `idp_effective_date` date,
+       `idp_end_date` date,
+       `idp_delete_date` date,
+       `pruid` varchar(32),
+       `prid` bigint,
+       `prtimesheetid` bigint,
+       `prassignmentid` bigint,
+       `prchargecodeid` bigint,
+       `prtypecodeid` bigint,
+       `prsequence` bigint,
+       `prmodby` varchar(96),
+       `prmodtime` timestamp,
+       `prrmexported` bigint,
+       `prrmckdel` bigint,
+       `slice_status` int,
+       `role_id` bigint,
+       `user_lov1` varchar(30),
+       `user_lov2` varchar(30),
+       `incident_id` bigint,
+       `incident_investment_id` bigint,
+       `odf_ss_actuals` bigint,
+       `practsum` decimal(38,20))
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table2
+POSTHOOK: query: CREATE TABLE `table2`(
+       `idp_warehouse_id` bigint,
+       `idp_audit_id` bigint,
+       `idp_effective_date` date,
+       `idp_end_date` date,
+       `idp_delete_date` date,
+       `pruid` varchar(32),
+       `prid` bigint,
+       `prtimesheetid` bigint,
+       `prassignmentid` bigint,
+       `prchargecodeid` bigint,
+       `prtypecodeid` bigint,
+       `prsequence` bigint,
+       `prmodby` varchar(96),
+       `prmodtime` timestamp,
+       `prrmexported` bigint,
+       `prrmckdel` bigint,
+       `slice_status` int,
+       `role_id` bigint,
+       `user_lov1` varchar(30),
+       `user_lov2` varchar(30),
+       `incident_id` bigint,
+       `incident_investment_id` bigint,
+       `odf_ss_actuals` bigint,
+       `practsum` decimal(38,20))
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table2
+PREHOOK: query: explain SELECT          s.idp_warehouse_id AS 
source_warehouse_id
+    FROM            table1 s
+    JOIN
+
+                           table2 d
+    ON              (
+                                    s.prid = d.prid )
+    JOIN
+                             table2 e
+    ON
+                                    s.prid = e.prid
+    WHERE
+    concat(
+                    CASE
+                                    WHEN s.prid IS NULL THEN 1
+                                    ELSE s.prid
+                    END,',',
+                    CASE
+                                    WHEN s.prtimesheetid IS NULL THEN 1
+                                    ELSE s.prtimesheetid
+                    END,',',
+                    CASE
+                                    WHEN s.prassignmentid IS NULL THEN 1
+                                    ELSE s.prassignmentid
+                    END,',',
+                    CASE
+                                    WHEN s.prchargecodeid IS NULL THEN 1
+                                    ELSE s.prchargecodeid
+                    END,',',
+                    CASE
+                                    WHEN (s.prtypecodeid) IS NULL THEN ''
+                                    ELSE s.prtypecodeid
+                    END,',',
+                    CASE
+                                    WHEN s.practsum IS NULL THEN 1
+                                    ELSE s.practsum
+                    END,',',
+                    CASE
+                                    WHEN s.prsequence IS NULL THEN 1
+                                    ELSE s.prsequence
+                    END,',',
+                    CASE
+                                    WHEN length(s.prmodby) IS NULL THEN ''
+                                    ELSE s.prmodby
+                    END,',',
+                    CASE
+                                    WHEN s.prmodtime IS NULL THEN 
cast(from_unixtime(unix_timestamp('2017-12-08','yyyy-MM-dd') ) AS timestamp)
+                                    ELSE s.prmodtime
+                    END,',',
+                    CASE
+                                    WHEN s.prrmexported IS NULL THEN 1
+                                    ELSE s.prrmexported
+                    END,',',
+                    CASE
+                                    WHEN s.prrmckdel IS NULL THEN 1
+                                    ELSE s.prrmckdel
+                    END,',',
+                    CASE
+                                    WHEN s.slice_status IS NULL THEN 1
+                                    ELSE s.slice_status
+                    END,',',
+                    CASE
+                                    WHEN s.role_id IS NULL THEN 1
+                                    ELSE s.role_id
+                    END,',',
+                    CASE
+                                    WHEN length(s.user_lov1) IS NULL THEN ''
+                                    ELSE s.user_lov1
+                    END,',',
+                    CASE
+                                    WHEN length(s.user_lov2) IS NULL THEN ''
+                                    ELSE s.user_lov2
+                    END,',',
+                    CASE
+                                    WHEN s.incident_id IS NULL THEN 1
+                                    ELSE s.incident_id
+                    END,',',
+                    CASE
+                                    WHEN s.incident_investment_id IS NULL THEN 
1
+                                    ELSE s.incident_investment_id
+                    END,',',
+                    CASE
+                                    WHEN s.odf_ss_actuals IS NULL THEN 1
+                                    ELSE s.odf_ss_actuals
+                    END ) != concat(
+                    CASE
+                                    WHEN length(d.pruid) IS NULL THEN ''
+                                    ELSE d.pruid
+                    END,',',
+                    CASE
+                                    WHEN d.prid IS NULL THEN 1
+                                    ELSE d.prid
+                    END,',',
+                    CASE
+                                    WHEN d.prtimesheetid IS NULL THEN 1
+                                    ELSE d.prtimesheetid
+                    END,',',
+                    CASE
+                                    WHEN d.prassignmentid IS NULL THEN 1
+                                    ELSE d.prassignmentid
+                    END,',',
+                    CASE
+                                    WHEN d.prchargecodeid IS NULL THEN 1
+                                    ELSE d.prchargecodeid
+                    END,',',
+                    CASE
+                                    WHEN (d.prtypecodeid) IS NULL THEN ''
+                                    ELSE d.prtypecodeid
+                    END,',',
+                    CASE
+                                    WHEN d.practsum IS NULL THEN 1
+                                    ELSE d.practsum
+                    END,',',
+                    CASE
+                                    WHEN d.prsequence IS NULL THEN 1
+                                    ELSE d.prsequence
+                    END,',',
+                    CASE
+                                    WHEN length(d.prmodby) IS NULL THEN ''
+                                    ELSE d.prmodby
+                    END,',',
+                    CASE
+                                    WHEN d.prmodtime IS NULL THEN 
cast(from_unixtime(unix_timestamp('2017-12-08','yyyy-MM-dd') ) AS timestamp)
+                                    ELSE d.prmodtime
+                    END,',',
+                    CASE
+                                    WHEN d.prrmexported IS NULL THEN 1
+                                    ELSE d.prrmexported
+                    END,',',
+                    CASE
+                                    WHEN d.prrmckdel IS NULL THEN 1
+                                    ELSE d.prrmckdel
+                    END,',',
+                    CASE
+                                    WHEN d.slice_status IS NULL THEN 1
+                                    ELSE d.slice_status
+                    END,',',
+                    CASE
+                                    WHEN d.role_id IS NULL THEN 1
+                                    ELSE d.role_id
+                    END,',',
+                    CASE
+                                    WHEN length(d.user_lov1) IS NULL THEN ''
+                                    ELSE d.user_lov1
+                    END,',',
+                    CASE
+                                    WHEN length(d.user_lov2) IS NULL THEN ''
+                                    ELSE d.user_lov2
+                    END,',',
+                    CASE
+                                    WHEN d.incident_id IS NULL THEN 1
+                                    ELSE d.incident_id
+                    END,',',
+                    CASE
+                                    WHEN d.incident_investment_id IS NULL THEN 
1
+                                    ELSE d.incident_investment_id
+                    END,',',
+                    CASE
+                                    WHEN d.odf_ss_actuals IS NULL THEN 1
+                                    ELSE d.odf_ss_actuals
+                    END )
+PREHOOK: type: QUERY
+POSTHOOK: query: explain SELECT          s.idp_warehouse_id AS 
source_warehouse_id
+    FROM            table1 s
+    JOIN
+
+                           table2 d
+    ON              (
+                                    s.prid = d.prid )
+    JOIN
+                             table2 e
+    ON
+                                    s.prid = e.prid
+    WHERE
+    concat(
+                    CASE
+                                    WHEN s.prid IS NULL THEN 1
+                                    ELSE s.prid
+                    END,',',
+                    CASE
+                                    WHEN s.prtimesheetid IS NULL THEN 1
+                                    ELSE s.prtimesheetid
+                    END,',',
+                    CASE
+                                    WHEN s.prassignmentid IS NULL THEN 1
+                                    ELSE s.prassignmentid
+                    END,',',
+                    CASE
+                                    WHEN s.prchargecodeid IS NULL THEN 1
+                                    ELSE s.prchargecodeid
+                    END,',',
+                    CASE
+                                    WHEN (s.prtypecodeid) IS NULL THEN ''
+                                    ELSE s.prtypecodeid
+                    END,',',
+                    CASE
+                                    WHEN s.practsum IS NULL THEN 1
+                                    ELSE s.practsum
+                    END,',',
+                    CASE
+                                    WHEN s.prsequence IS NULL THEN 1
+                                    ELSE s.prsequence
+                    END,',',
+                    CASE
+                                    WHEN length(s.prmodby) IS NULL THEN ''
+                                    ELSE s.prmodby
+                    END,',',
+                    CASE
+                                    WHEN s.prmodtime IS NULL THEN 
cast(from_unixtime(unix_timestamp('2017-12-08','yyyy-MM-dd') ) AS timestamp)
+                                    ELSE s.prmodtime
+                    END,',',
+                    CASE
+                                    WHEN s.prrmexported IS NULL THEN 1
+                                    ELSE s.prrmexported
+                    END,',',
+                    CASE
+                                    WHEN s.prrmckdel IS NULL THEN 1
+                                    ELSE s.prrmckdel
+                    END,',',
+                    CASE
+                                    WHEN s.slice_status IS NULL THEN 1
+                                    ELSE s.slice_status
+                    END,',',
+                    CASE
+                                    WHEN s.role_id IS NULL THEN 1
+                                    ELSE s.role_id
+                    END,',',
+                    CASE
+                                    WHEN length(s.user_lov1) IS NULL THEN ''
+                                    ELSE s.user_lov1
+                    END,',',
+                    CASE
+                                    WHEN length(s.user_lov2) IS NULL THEN ''
+                                    ELSE s.user_lov2
+                    END,',',
+                    CASE
+                                    WHEN s.incident_id IS NULL THEN 1
+                                    ELSE s.incident_id
+                    END,',',
+                    CASE
+                                    WHEN s.incident_investment_id IS NULL THEN 
1
+                                    ELSE s.incident_investment_id
+                    END,',',
+                    CASE
+                                    WHEN s.odf_ss_actuals IS NULL THEN 1
+                                    ELSE s.odf_ss_actuals
+                    END ) != concat(
+                    CASE
+                                    WHEN length(d.pruid) IS NULL THEN ''
+                                    ELSE d.pruid
+                    END,',',
+                    CASE
+                                    WHEN d.prid IS NULL THEN 1
+                                    ELSE d.prid
+                    END,',',
+                    CASE
+                                    WHEN d.prtimesheetid IS NULL THEN 1
+                                    ELSE d.prtimesheetid
+                    END,',',
+                    CASE
+                                    WHEN d.prassignmentid IS NULL THEN 1
+                                    ELSE d.prassignmentid
+                    END,',',
+                    CASE
+                                    WHEN d.prchargecodeid IS NULL THEN 1
+                                    ELSE d.prchargecodeid
+                    END,',',
+                    CASE
+                                    WHEN (d.prtypecodeid) IS NULL THEN ''
+                                    ELSE d.prtypecodeid
+                    END,',',
+                    CASE
+                                    WHEN d.practsum IS NULL THEN 1
+                                    ELSE d.practsum
+                    END,',',
+                    CASE
+                                    WHEN d.prsequence IS NULL THEN 1
+                                    ELSE d.prsequence
+                    END,',',
+                    CASE
+                                    WHEN length(d.prmodby) IS NULL THEN ''
+                                    ELSE d.prmodby
+                    END,',',
+                    CASE
+                                    WHEN d.prmodtime IS NULL THEN 
cast(from_unixtime(unix_timestamp('2017-12-08','yyyy-MM-dd') ) AS timestamp)
+                                    ELSE d.prmodtime
+                    END,',',
+                    CASE
+                                    WHEN d.prrmexported IS NULL THEN 1
+                                    ELSE d.prrmexported
+                    END,',',
+                    CASE
+                                    WHEN d.prrmckdel IS NULL THEN 1
+                                    ELSE d.prrmckdel
+                    END,',',
+                    CASE
+                                    WHEN d.slice_status IS NULL THEN 1
+                                    ELSE d.slice_status
+                    END,',',
+                    CASE
+                                    WHEN d.role_id IS NULL THEN 1
+                                    ELSE d.role_id
+                    END,',',
+                    CASE
+                                    WHEN length(d.user_lov1) IS NULL THEN ''
+                                    ELSE d.user_lov1
+                    END,',',
+                    CASE
+                                    WHEN length(d.user_lov2) IS NULL THEN ''
+                                    ELSE d.user_lov2
+                    END,',',
+                    CASE
+                                    WHEN d.incident_id IS NULL THEN 1
+                                    ELSE d.incident_id
+                    END,',',
+                    CASE
+                                    WHEN d.incident_investment_id IS NULL THEN 
1
+                                    ELSE d.incident_investment_id
+                    END,',',
+                    CASE
+                                    WHEN d.odf_ss_actuals IS NULL THEN 1
+                                    ELSE d.odf_ss_actuals
+                    END )
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: s
+            Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+            Filter Operator
+              predicate: prid is not null (type: boolean)
+              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+              Reduce Output Operator
+                key expressions: prid (type: bigint)
+                sort order: +
+                Map-reduce partition columns: prid (type: bigint)
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                value expressions: idp_warehouse_id (type: bigint), 
prtimesheetid (type: bigint), prassignmentid (type: bigint), prchargecodeid 
(type: bigint), prtypecodeid (type: bigint), prsequence (type: bigint), prmodby 
(type: varchar(96)), prmodtime (type: timestamp), prrmexported (type: bigint), 
prrmckdel (type: bigint), slice_status (type: int), role_id (type: bigint), 
user_lov1 (type: varchar(30)), user_lov2 (type: varchar(30)), incident_id 
(type: bigint), incident_investment_id (type: bigint), odf_ss_actuals (type: 
bigint), practsum (type: decimal(38,20))
+          TableScan
+            alias: d
+            Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+            Filter Operator
+              predicate: prid is not null (type: boolean)
+              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+              Reduce Output Operator
+                key expressions: prid (type: bigint)
+                sort order: +
+                Map-reduce partition columns: prid (type: bigint)
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                value expressions: pruid (type: varchar(32)), prtimesheetid 
(type: bigint), prassignmentid (type: bigint), prchargecodeid (type: bigint), 
prtypecodeid (type: bigint), prsequence (type: bigint), prmodby (type: 
varchar(96)), prmodtime (type: timestamp), prrmexported (type: bigint), 
prrmckdel (type: bigint), slice_status (type: int), role_id (type: bigint), 
user_lov1 (type: varchar(30)), user_lov2 (type: varchar(30)), incident_id 
(type: bigint), incident_investment_id (type: bigint), odf_ss_actuals (type: 
bigint), practsum (type: decimal(38,20))
+          TableScan
+            alias: e
+            Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+            Filter Operator
+              predicate: prid is not null (type: boolean)
+              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+              Reduce Output Operator
+                key expressions: prid (type: bigint)
+                sort order: +
+                Map-reduce partition columns: prid (type: bigint)
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+               Inner Join 0 to 2
+          keys:
+            0 prid (type: bigint)
+            1 prid (type: bigint)
+            2 prid (type: bigint)
+          outputColumnNames: _col0, _col6, _col7, _col8, _col9, _col10, 
_col11, _col12, _col13, _col14, _col15, _col16, _col17, _col18, _col19, _col20, 
_col21, _col22, _col23, _col32, _col33, _col34, _col35, _col36, _col37, _col38, 
_col39, _col40, _col41, _col42, _col43, _col44, _col45, _col46, _col47, _col48, 
_col49, _col50
+          Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+          Filter Operator
+            predicate: (concat(CASE WHEN (_col6 is null) THEN (1) ELSE (_col6) 
END, ',', CASE WHEN (_col7 is null) THEN (1) ELSE (_col7) END, ',', CASE WHEN 
(_col8 is null) THEN (1) ELSE (_col8) END, ',', CASE WHEN (_col9 is null) THEN 
(1) ELSE (_col9) END, ',', CASE WHEN (_col10 is null) THEN ('') ELSE (_col10) 
END, ',', CASE WHEN (_col23 is null) THEN (1) ELSE (_col23) END, ',', CASE WHEN 
(_col11 is null) THEN (1) ELSE (_col11) END, ',', CASE WHEN (length(_col12) is 
null) THEN ('') ELSE (_col12) END, ',', CASE WHEN (_col13 is null) THEN 
(TIMESTAMP'2017-12-08 00:00:00.0') ELSE (_col13) END, ',', CASE WHEN (_col14 is 
null) THEN (1) ELSE (_col14) END, ',', CASE WHEN (_col15 is null) THEN (1) ELSE 
(_col15) END, ',', CASE WHEN (_col16 is null) THEN (1) ELSE (_col16) END, ',', 
CASE WHEN (_col17 is null) THEN (1) ELSE (_col17) END, ',', CASE WHEN 
(length(_col18) is null) THEN ('') ELSE (_col18) END, ',', CASE WHEN 
(length(_col19) is null) THEN ('') ELSE (_col19) END, ',', CASE WHEN (_col
 20 is null) THEN (1) ELSE (_col20) END, ',', CASE WHEN (_col21 is null) THEN 
(1) ELSE (_col21) END, ',', CASE WHEN (_col22 is null) THEN (1) ELSE (_col22) 
END) <> concat(CASE WHEN (length(_col32) is null) THEN ('') ELSE (_col32) END, 
',', CASE WHEN (_col33 is null) THEN (1) ELSE (_col33) END, ',', CASE WHEN 
(_col34 is null) THEN (1) ELSE (_col34) END, ',', CASE WHEN (_col35 is null) 
THEN (1) ELSE (_col35) END, ',', CASE WHEN (_col36 is null) THEN (1) ELSE 
(_col36) END, ',', CASE WHEN (_col37 is null) THEN ('') ELSE (_col37) END, ',', 
CASE WHEN (_col50 is null) THEN (1) ELSE (_col50) END, ',', CASE WHEN (_col38 
is null) THEN (1) ELSE (_col38) END, ',', CASE WHEN (length(_col39) is null) 
THEN ('') ELSE (_col39) END, ',', CASE WHEN (_col40 is null) THEN 
(TIMESTAMP'2017-12-08 00:00:00.0') ELSE (_col40) END, ',', CASE WHEN (_col41 is 
null) THEN (1) ELSE (_col41) END, ',', CASE WHEN (_col42 is null) THEN (1) ELSE 
(_col42) END, ',', CASE WHEN (_col43 is null) THEN (1) ELSE (_col43) END, ',
 ', CASE WHEN (_col44 is null) THEN (1) ELSE (_col44) END, ',', CASE WHEN 
(length(_col45) is null) THEN ('') ELSE (_col45) END, ',', CASE WHEN 
(length(_col46) is null) THEN ('') ELSE (_col46) END, ',', CASE WHEN (_col47 is 
null) THEN (1) ELSE (_col47) END, ',', CASE WHEN (_col48 is null) THEN (1) ELSE 
(_col48) END, ',', CASE WHEN (_col49 is null) THEN (1) ELSE (_col49) END)) 
(type: boolean)
+            Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+            Select Operator
+              expressions: _col0 (type: bigint)
+              outputColumnNames: _col0
+              Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
+              File Output Operator
+                compressed: false
+                Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL 
Column stats: NONE
+                table:
+                    input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
+                    output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                    serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: drop table table2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table2
+PREHOOK: Output: default@table2
+POSTHOOK: query: drop table table2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table2
+POSTHOOK: Output: default@table2
+PREHOOK: query: drop table table1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table1
+PREHOOK: Output: default@table1
+POSTHOOK: query: drop table table1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table1
+POSTHOOK: Output: default@table1

Reply via email to