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

Extend creation of semijoin reduction filters to be able to discover new opportunities

    XMLWordPrintableJSON

Details

    Description

      Assume the following plan:

      TS[0] - RS[1] - JOIN[4] - RS[5] - JOIN[8] - FS[9]
      TS[2] - RS[3] - JOIN[4] 
      TS[6] - RS[7] - JOIN[8]
      

      Currently, TS[6] may only be reduced with the output of RS[5], i.e., input to join between both subplans.
      However, it may be useful to consider other possibilities too, e.g., reduced by the output of RS[1] or RS[3]. For instance, this is important when, given a large plan, an edge between RS[5] and TS[0] would create a cycle, while an edge between RS[1] and TS[6] would not.

      This patch comprises two parts. First, it creates additional predicates when possible. Secondly, it removes duplicate semijoin reduction branches/predicates, e.g., if another semijoin that consumes the output of the same expression already reduces a certain table scan operator (heuristic, since this may not result in most efficient plan in all cases). Ultimately, the decision on whether to use one or another should be cost-driven (follow-up).

      Attachments

        1. HIVE-20090.08.patch
          873 kB
          jcamachorodriguez
        2. HIVE-20090.07.patch
          873 kB
          jcamachorodriguez
        3. HIVE-20090.06.patch
          873 kB
          jcamachorodriguez
        4. HIVE-20090.05.patch
          862 kB
          jcamachorodriguez
        5. HIVE-20090.04.patch
          862 kB
          jcamachorodriguez
        6. HIVE-20090.02.patch
          49 kB
          jcamachorodriguez
        7. HIVE-20090.01.patch
          49 kB
          jcamachorodriguez

        Issue Links

          Activity

            People

              jcamacho Jesús Camacho Rodríguez
              jcamacho Jesús Camacho Rodríguez
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: