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

Filter on outer join condition removed while merging join tree

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.8.1, 0.9.0, 0.10.0
    • 0.10.0
    • SQL
    • None
    • Reviewed

    Description

      should the result of query A:

      select s.aa, s.bb, c.key keyc from (select a.key aa, b.key bb from src a left outer join src b on a.key=b.key) s left outer join src c on s.bb=c.key and s.bb<10 where s.aa<20;

      be the same as query B:

      select a.key keya, b.key keyb, c.key keyc from src a left outer join src b on a.key=b.key left outer join src c on b.key=c.key and b.key<10 where a.key<20;

      ?

      Currently, the result is different, query B gets wrong result!

      In SemanticAnalyzer.java, mergeJoins():

      ArrayList<ArrayList<ASTNode>> filters = target.getFilters();
      for (int i = 0; i < nodeRightAliases.length; i++) {
      filters.add(node.getFilters().get(i + 1));
      }

      filters in node.getFilters().get(0) are lost.

      Attachments

        Activity

          People

            navis Navis Ryu
            yuzone Zhang Xinyu
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: