[
https://issues.apache.org/jira/browse/TAJO-415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13848620#comment-13848620
]
Hudson commented on TAJO-415:
-----------------------------
FAILURE: Integrated in Tajo-trunk-postcommit #619 (See
[https://builds.apache.org/job/Tajo-trunk-postcommit/619/])
TAJO-415: Some complex queries causes NPE and unlimited recursions. (hyunsik)
(hyunsik:
https://git-wip-us.apache.org/repos/asf?p=incubator-tajo.git&a=commit&h=a90895a74a13c654a8d12345bbbdd8d3b08c604c)
*
tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FieldEval.java
* tajo-core/tajo-core-backend/src/test/queries/tajo415_case.sql
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FunctionDesc.java
*
tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/SubQuery.java
* CHANGES.txt
*
tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/ProjectionPushDownRule.java
*
tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/rewrite/FilterPushDownRule.java
*
tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/query/TestCaseByCases.java
*
tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/QueryUnit.java
*
tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/logical/join/GreedyHeuristicJoinOrderAlgorithm.java
> 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)