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

Enable constant propagation optimization in query with left semi join

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0
    • Fix Version/s: 1.3.0, 2.1.0
    • Component/s: Query Processor
    • Labels:
      None

      Description

      Currently constant folding is only allowed for inner or unique join, I think it is also applicable and allowed for left semi join. Otherwise the query like following having multiple joins with left semi joins will fail:

       
      select table1.id, table1.val, table2.val2 from table1 inner join table2 on table1.val = 't1val01' and table1.id = table2.id left semi join table3 on table1.dimid = table3.id;
      

      with errors:

      java.lang.Exception: java.lang.RuntimeException: Error in configuring object
      	at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462) ~[hadoop-mapreduce-client-common-2.6.0.jar:?]
      	at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522) [hadoop-mapreduce-client-common-2.6.0.jar:?]
      Caused by: java.lang.RuntimeException: Error in configuring object
      	at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109) ~[hadoop-common-2.6.0.jar:?]
      	at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75) ~[hadoop-common-2.6.0.jar:?]
      	at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133) ~[hadoop-common-2.6.0.jar:?]
      	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:446) ~[hadoop-mapreduce-client-core-2.6.0.jar:?]
      	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343) ~[hadoop-mapreduce-client-core-2.6.0.jar:?]
      	at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243) ~[hadoop-mapreduce-client-common-2.6.0.jar:?]
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[?:1.7.0_45]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[?:1.7.0_45]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[?:1.7.0_45]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[?:1.7.0_45]
      	at java.lang.Thread.run(Thread.java:744) ~[?:1.7.0_45]
      ...
      Caused by: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
      	at java.util.ArrayList.rangeCheck(ArrayList.java:635) ~[?:1.7.0_45]
      	at java.util.ArrayList.get(ArrayList.java:411) ~[?:1.7.0_45]
      	at org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector.init(StandardStructObjectInspector.java:118) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      	at org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector.<init>(StandardStructObjectInspector.java:109) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      	at org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory.getStandardStructObjectInspector(ObjectInspectorFactory.java:326) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      	at org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory.getStandardStructObjectInspector(ObjectInspectorFactory.java:311) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      	at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.getJoinOutputObjectInspector(CommonJoinOperator.java:181) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      	at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.initializeOp(CommonJoinOperator.java:319) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      	at org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator.initializeOp(AbstractMapJoinOperator.java:78) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      	at org.apache.hadoop.hive.ql.exec.MapJoinOperator.initializeOp(MapJoinOperator.java:138) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:355) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:504) ~[hive-exec-2.1.0-SNAPSHOT.jar:2.1.0-SNAPSHOT]
      

        Attachments

        1. HIVE-13082.branch-1.patch
          155 kB
          Chaoyu Tang
        2. HIVE-13082.3.patch
          136 kB
          Chaoyu Tang
        3. HIVE-13082.2.patch
          136 kB
          Chaoyu Tang
        4. HIVE-13082.1.patch
          76 kB
          Chaoyu Tang
        5. HIVE-13082.patch
          59 kB
          Chaoyu Tang

          Issue Links

            Activity

              People

              • Assignee:
                ctang.ma Chaoyu Tang
                Reporter:
                ctang.ma Chaoyu Tang
              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: