You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@tajo.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2015/07/27 06:00:06 UTC

[jira] [Commented] (TAJO-1552) NPE occurs when GreedyHeuristicJoinOrderAlgorithm.getCost() returns infinity.

    [ https://issues.apache.org/jira/browse/TAJO-1552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14642233#comment-14642233 ] 

ASF GitHub Bot commented on TAJO-1552:
--------------------------------------

GitHub user jihoonson opened a pull request:

    https://github.com/apache/tajo/pull/655

    TAJO-1552: NPE occurs when GreedyHeuristicJoinOrderAlgorithm.getCost() returns infinity

    This patch is based on #547.
    Changes are:
    * Rebasing the work of  #547
    * Removed an unnecessary test
    * Added a ```FAKEFILE``` store type for test

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/jihoonson/tajo-2 TAJO-1552

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/tajo/pull/655.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #655
    
----
commit 14dffcc60794c2c9c560a10c8d206afa553de77c
Author: Hyoungjun Kim <ba...@gmail.com>
Date:   2015-04-20T17:51:50Z

    TAJO-1552: NPE occurs when GreedyHeuristicJoinOrderAlgorithm.getCost() returns infinity.

commit ed2943de1af55683bd942e8f42dc20f85208aad8
Author: Hyoungjun Kim <ba...@gmail.com>
Date:   2015-04-20T17:54:43Z

    TAJO-1552: NPE occurs when GreedyHeuristicJoinOrderAlgorithm.getCost() returns infinity.

commit 7d66bdee67bd0e1245f8d9426c56e8879b66c540
Author: Hyoungjun Kim <ba...@gmail.com>
Date:   2015-04-20T17:55:33Z

    Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo

commit d674b6567f35ed3a97682197d31d4b883710f520
Author: Hyoungjun Kim <ba...@gmail.com>
Date:   2015-04-20T18:26:52Z

    TAJO-1552: NPE occurs when GreedyHeuristicJoinOrderAlgorithm.getCost() returns infinity.
    
    Rename TestGreedyHeuristicJoinOrderAlgorithm to TestJoinOrderAlgorithm.

commit ac5dcc024b759a6f2c85fd8f9bef8334f340addd
Author: Hyoungjun Kim <ba...@gmail.com>
Date:   2015-05-11T10:49:31Z

    Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-1552

commit 0b05727faecf82b8e8a0e77de848ef3edffa635c
Author: Hyoungjun Kim <ba...@gmail.com>
Date:   2015-05-11T14:37:34Z

    TAJO-1552: NPE occurs when GreedyHeuristicJoinOrderAlgorithm.getCost() returns infinity.

commit 846747bfb6aac6c6f1dc18ed3b9ea8b993a15901
Author: Jihoon Son <ji...@apache.org>
Date:   2015-07-24T09:47:03Z

    TAJO-1552

commit 70d4987ff32136e85b4fe4fd4cd5c0cb65694162
Author: Jihoon Son <ji...@apache.org>
Date:   2015-07-27T02:42:41Z

    Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-1552

commit 297f5d8e3f78f33136a1b482c93b0461a552a2a1
Author: Jihoon Son <ji...@apache.org>
Date:   2015-07-27T03:55:09Z

    TAJO-1552

----


> NPE occurs when GreedyHeuristicJoinOrderAlgorithm.getCost() returns infinity.
> -----------------------------------------------------------------------------
>
>                 Key: TAJO-1552
>                 URL: https://issues.apache.org/jira/browse/TAJO-1552
>             Project: Tajo
>          Issue Type: Bug
>            Reporter: Hyoungjun Kim
>            Assignee: Hyoungjun Kim
>            Priority: Minor
>
> I tested TPC-DS Query28 but NPE occurs in GreedyHeuristicJoinOrderAlgorithm. 
> {code:sql}
> select *
> from (select avg(ss_list_price) B1_LP
>             ,count(ss_list_price) B1_CNT
>             ,count(distinct ss_list_price) B1_CNTD
>       from store_sales
>       where ss_quantity between 0 and 5
>         and (ss_list_price between 11 and 11+10
>              or ss_coupon_amt between 460 and 460+1000
>              or ss_wholesale_cost between 14 and 14+20)) B1,
>      (select avg(ss_list_price) B2_LP
>             ,count(ss_list_price) B2_CNT
>             ,count(distinct ss_list_price) B2_CNTD
>       from store_sales
>       where ss_quantity between 6 and 10
>         and (ss_list_price between 91 and 91+10
>           or ss_coupon_amt between 1430 and 1430+1000
>           or ss_wholesale_cost between 32 and 32+20)) B2,
>      (select avg(ss_list_price) B3_LP
>             ,count(ss_list_price) B3_CNT
>             ,count(distinct ss_list_price) B3_CNTD
>       from store_sales
>       where ss_quantity between 11 and 15
>         and (ss_list_price between 66 and 66+10
>           or ss_coupon_amt between 920 and 920+1000
>           or ss_wholesale_cost between 4 and 4+20)) B3,
>      (select avg(ss_list_price) B4_LP
>             ,count(ss_list_price) B4_CNT
>             ,count(distinct ss_list_price) B4_CNTD
>       from store_sales
>       where ss_quantity between 16 and 20
>         and (ss_list_price between 142 and 142+10
>           or ss_coupon_amt between 3054 and 3054+1000
>           or ss_wholesale_cost between 80 and 80+20)) B4,
>      (select avg(ss_list_price) B5_LP
>             ,count(ss_list_price) B5_CNT
>             ,count(distinct ss_list_price) B5_CNTD
>       from store_sales
>       where ss_quantity between 21 and 25
>         and (ss_list_price between 135 and 135+10
>           or ss_coupon_amt between 14180 and 14180+1000
>           or ss_wholesale_cost between 38 and 38+20)) B5,
>      (select avg(ss_list_price) B6_LP
>             ,count(ss_list_price) B6_CNT
>             ,count(distinct ss_list_price) B6_CNTD
>       from store_sales
>       where ss_quantity between 26 and 30
>         and (ss_list_price between 28 and 28+10
>           or ss_coupon_amt between 2513 and 2513+1000
>           or ss_wholesale_cost between 42 and 42+20)) B6
> limit 100;
> {code}
> {noformat}
> Stack Trace:
> java.lang.NullPointerException
> 	at java.util.AbstractCollection.addAll(AbstractCollection.java:341)
> 	at org.apache.tajo.plan.joinorder.GreedyHeuristicJoinOrderAlgorithm.getBestPair(GreedyHeuristicJoinOrderAlgorithm.java:222)
> 	at org.apache.tajo.plan.joinorder.GreedyHeuristicJoinOrderAlgorithm.findBestOrder(GreedyHeuristicJoinOrderAlgorithm.java:109)
> 	at org.apache.tajo.plan.LogicalOptimizer.optimizeJoinOrder(LogicalOptimizer.java:117)
> 	at org.apache.tajo.plan.LogicalOptimizer.optimize(LogicalOptimizer.java:97)
> 	at org.apache.tajo.master.GlobalEngine.createLogicalPlan(GlobalEngine.java:278)
> 	at org.apache.tajo.master.GlobalEngine.executeQuery(GlobalEngine.java:188)
> 	at org.apache.tajo.master.TajoMasterClientService$TajoMasterClientProtocolServiceHandler.submitQuery(TajoMasterClientService.java:287)
> 	at org.apache.tajo.ipc.TajoMasterClientProtocol$TajoMasterClientProtocolService$2.callBlockingMethod(TajoMasterClientProtocol.java:543)
> 	at org.apache.tajo.rpc.BlockingRpcServer$ServerHandler.channelRead(BlockingRpcServer.java:113)
> 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
> 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
> 	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
> 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
> 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
> 	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:182)
> 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
> 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
> 	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
> 	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130)
> 	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
> 	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
> 	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
> 	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
> 	at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
> 	at java.lang.Thread.run(Thread.java:744)
> {noformat}
> I researched GreedyHeuristicJoinOrderAlgorithm and found that NPE occurs when getCost() returns infinity value.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)