You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Vineet Garg (JIRA)" <ji...@apache.org> on 2018/05/07 00:04:00 UTC

[jira] [Created] (HIVE-19433) HiveJoinPushTransitivePredicatesRule hangs

Vineet Garg created HIVE-19433:
----------------------------------

             Summary: HiveJoinPushTransitivePredicatesRule hangs
                 Key: HIVE-19433
                 URL: https://issues.apache.org/jira/browse/HIVE-19433
             Project: Hive
          Issue Type: Bug
          Components: Logical Optimizer
            Reporter: Vineet Garg
            Assignee: Vineet Garg
         Attachments: HIVE-19433.1.patch

*Reproducer*
{code:sql}
    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 );
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)