[ https://issues.apache.org/jira/browse/HIVE-11271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14637177#comment-14637177 ]
Pengcheng Xiong commented on HIVE-11271: ---------------------------------------- [~ashutoshc], thanks a lot for your attention. I applied the patch in HIVE-11333 and it seems that it can not solve the problem here. The problem here is that we have FIL-UNION, FIL has to have 2 columns (1 for union and 1 for predicate). The problem in HIVE-11333 is that we have SEL-UNION, because of return path, the column in SEL got wrongly pruned. However, I still agree with you that a better fix should be at compile time, not run time. [~ychena], it seems that this problem is similar to the issue mentioned in https://issues.apache.org/jira/browse/HIVE-10996 although they are dealing with JOIN. A similar solution by adding a SEL may be like this: (1) In ColumnPruner, when dealing with FIL, check if the needed columns (from its child) and check the columns used in predicate. (2) If the former one contains the latter one, continue (no problem); else insert a SEL which just select the needed columns in between the FIL and its child. (3) This solution is happening at compile time, not run time. But it may involve many q files update. Thanks. > java.lang.IndexOutOfBoundsException when union all with if function > ------------------------------------------------------------------- > > Key: HIVE-11271 > URL: https://issues.apache.org/jira/browse/HIVE-11271 > Project: Hive > Issue Type: Bug > Components: Logical Optimizer > Affects Versions: 0.14.0, 1.0.0, 1.2.0 > Reporter: Yongzhi Chen > Assignee: Yongzhi Chen > Attachments: HIVE-11271.1.patch > > > Some queries with Union all as subquery fail in MapReduce task with > stacktrace: > {noformat} > 15/07/15 14:19:30 [pool-13-thread-1]: INFO exec.UnionOperator: Initializing > operator UNION[104] > 15/07/15 14:19:30 [Thread-72]: INFO mapred.LocalJobRunner: Map task executor > complete. > 15/07/15 14:19:30 [Thread-72]: WARN mapred.LocalJobRunner: > job_local826862759_0005 > java.lang.Exception: java.lang.RuntimeException: Error in configuring object > at > org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:354) > Caused by: java.lang.RuntimeException: Error in configuring object > at > org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93) > at > org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64) > at > org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117) > at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:426) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:366) > at > org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:223) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > at java.util.concurrent.FutureTask.run(FutureTask.java:262) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:745) > Caused by: java.lang.reflect.InvocationTargetException > at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88) > ... 10 more > Caused by: java.lang.RuntimeException: Error in configuring object > at > org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93) > at > org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64) > at > org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117) > at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:34) > ... 14 more > Caused by: java.lang.reflect.InvocationTargetException > at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88) > ... 17 more > Caused by: java.lang.RuntimeException: Map operator initialization failed > at > org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:140) > ... 21 more > Caused by: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 > at java.util.ArrayList.rangeCheck(ArrayList.java:635) > at java.util.ArrayList.get(ArrayList.java:411) > at > org.apache.hadoop.hive.ql.exec.UnionOperator.initializeOp(UnionOperator.java:86) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:362) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:481) > at > org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:438) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:375) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:481) > at > org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:438) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:375) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:481) > at > org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:438) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:375) > at > org.apache.hadoop.hive.ql.exec.MapOperator.initializeMapOperator(MapOperator.java:442) > at > org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:119) > ... 21 more > {noformat} > Reproduce: > {noformat} > create table if not exists union_all_bug_test_1 > ( > f1 int, > f2 int > ); > create table if not exists union_all_bug_test_2 > ( > f1 int > ); > SELECT f1 > FROM ( > SELECT > f1 > , if('helloworld' like '%hello%' ,f1,f2) as filter > FROM union_all_bug_test_1 > union all > select > f1 > , 0 as filter > from union_all_bug_test_2 > ) A > WHERE (filter = 1); > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)