Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-12477

Left Semijoins are incompatible with a cross-product

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0.0
    • 2.0.0
    • CBO
    • None

    Description

      with HIVE-12017 in place, a few queries generate left sem-joins without a key.

      This is an invalid plan and can be produced by doing.

      explain logical select count(1) from store_sales where ss_sold_date_sk in (select d_date_sk from date_dim where d_date_sk = 1);
      
      LOGICAL PLAN:  
      $hdt$_0:$hdt$_0:$hdt$_0:store_sales
        TableScan (TS_0)
          alias: store_sales
          filterExpr: (ss_sold_date_sk = 1) (type: boolean)
          Filter Operator (FIL_20)
            predicate: (ss_sold_date_sk = 1) (type: boolean)
            Select Operator (SEL_2)
              Reduce Output Operator (RS_9)
                sort order: 
                Join Operator (JOIN_11)
                  condition map:
                       Left Semi Join 0 to 1
                  keys:
                    0 
                    1 
                  Group By Operator (GBY_14)
                    aggregations: count(1)
                    mode: hash
      

      without CBO

      sq_1:date_dim
        TableScan (TS_1)
          alias: date_dim
          filterExpr: ((1) IN (RS[6]) and (d_date_sk = 1)) (type: boolean)
          Filter Operator (FIL_21)
            predicate: ((1) IN (RS[6]) and (d_date_sk = 1)) (type: boolean)
            Select Operator (SEL_3)
              expressions: 1 (type: int)
              outputColumnNames: _col0
              Group By Operator (GBY_5)
                keys: _col0 (type: int)
                mode: hash
                outputColumnNames: _col0
                Reduce Output Operator (RS_8)
                  key expressions: _col0 (type: int)
                  sort order: +
                  Map-reduce partition columns: _col0 (type: int)
                  Join Operator (JOIN_9)
                    condition map:
                         Left Semi Join 0 to 1
                    keys:
                      0 ss_sold_date_sk (type: int)
                      1 _col0 (type: int)
                    Group By Operator (GBY_12)
                      aggregations: count(1)
                      mode: hash
      

      Attachments

        1. HIVE-12477.02.patch
          8 kB
          jcamachorodriguez
        2. HIVE-12477.01.patch
          8 kB
          jcamachorodriguez
        3. HIVE-12477.01.patch
          8 kB
          Sergey Shelukhin
        4. HIVE-12477.patch
          8 kB
          jcamachorodriguez

        Issue Links

          Activity

            People

              jcamacho Jesús Camacho Rodríguez
              gopalv Gopal Vijayaraghavan
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: