[
https://issues.apache.org/jira/browse/TAJO-415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13848621#comment-13848621
]
Hyunsik Choi commented on TAJO-415:
-----------------------------------
I totally agree with the needs for more elaborate ways to estimate intermediate
data volume. Later, I'll create a jira issue for that.
> Some complex queries causes NPE and unlimited recursions.
> ---------------------------------------------------------
>
> Key: TAJO-415
> URL: https://issues.apache.org/jira/browse/TAJO-415
> Project: Tajo
> Issue Type: Bug
> Components: distributed query plan, planner/optimizer
> Reporter: Hyunsik Choi
> Assignee: Hyunsik Choi
> Priority: Critical
> Fix For: 0.8-incubating
>
> Attachments: TAJO-415.patch
>
>
> This patch fixes the following critical bugs.
> * GreedyHeuristicJoinOrder::getCost may cause unlimited recursion.
> ** getCost() method is a recursion function.
> ** getCost() method has not considered all logical operators, so some
> logical operators are processed in a default case which is implemented
> incorrectly. It causes unlimited recursion.
> * ProjectionPushDown rewrite rule tries to push down necessary target lists
> to all subqueries.
> ** It may cause some problem in a subquery which includes a group-by
> operator because there is no unnecessary target lists in the subquery,
> including a group-by operator. This patch prevents ProjectionPushDown to push
> down target lists to some subqueries.
> * Task::setLogicalPlan does not traverse descendant nodes of
> TableSubQueryNode.
> ** So, it have missed some logical operators.
> * SubQuery::getInputVolume may cause NPE when a logical plan includes a bushy
> join tree.
> ** In the past, a distributed plan is generated from left-deep join tree. At
> that time, the volume of join relations are computed directly from joined
> results (left) or relation nodes (right). However, for bushy join,
> getInputVolume() has some cases to estimate intermediate data volume prior to
> actual joins.
> * FilterPushDown tries to validate outer join's null suppression. This code
> assumes that outer join's input relations are only ScanNodes.
> ** Actually, outer join's input relations can be either ScanNode or
> TableSubQueryNode.
--
This message was sent by Atlassian JIRA
(v6.1.4#6159)