Uploaded image for project: 'Tajo'
  1. Tajo
  2. TAJO-680

Improve the IN operator to support sub queries

    Details

      Description

      Currently, the IN operator can be used with only sets of values.
      We need to improve it to support sub queries as the following example query.

      tajo> select * from nation where n_regionkey in (select r_regionkey from region); 
      
      1. Logical plan.png
        16 kB
        Jihoon Son
      2. Distributed plan.png
        21 kB
        Jihoon Son

        Issue Links

          Activity

          Hide
          jihoonson Jihoon Son added a comment -

          There are a lot of query optimization issues in the IN subquery statement.
          However, it would be better to implement a straightforward way, and then make some improvements on it.

          The straightforward way is the two-phase execution. Here is an overall idea.

          • In the first phase, the subquery statement (in the above example, select r_regionkey from region) is executed. At the end of the first phase, each worker writes the intermediate results on its own local disks.
          • These intermediate results should be sent to the workers of the second phase. Here can be two choices. If the size of the intermediate results is sufficiently small, the whole results are broadcasted to all workers of the second phase. Otherwise, the intermediate results and the input relation of the second phase must be shuffled according to the values of the key (regionkey).
          • Finally, the remaining part (select * from nation where n_regionkey in (results of the first phase)) is executed in the second phase.

          The most challenging point in the query planning is how to represent a result set of a subquery as an EvalNode.
          As a solution of this challenge, I would like to introduce a new EvalNode, called RowConstantFromDiskEval, which reads a list of values stored on disks. During query execution, RowConstantFromDiskEval reads the shuffled intermediate results, and thus InEval can be evaluated.

          Show
          jihoonson Jihoon Son added a comment - There are a lot of query optimization issues in the IN subquery statement. However, it would be better to implement a straightforward way, and then make some improvements on it. The straightforward way is the two-phase execution. Here is an overall idea. In the first phase, the subquery statement (in the above example, select r_regionkey from region) is executed. At the end of the first phase, each worker writes the intermediate results on its own local disks. These intermediate results should be sent to the workers of the second phase. Here can be two choices. If the size of the intermediate results is sufficiently small, the whole results are broadcasted to all workers of the second phase. Otherwise, the intermediate results and the input relation of the second phase must be shuffled according to the values of the key (regionkey). Finally, the remaining part (select * from nation where n_regionkey in (results of the first phase)) is executed in the second phase. The most challenging point in the query planning is how to represent a result set of a subquery as an EvalNode. As a solution of this challenge, I would like to introduce a new EvalNode, called RowConstantFromDiskEval, which reads a list of values stored on disks. During query execution, RowConstantFromDiskEval reads the shuffled intermediate results, and thus InEval can be evaluated.
          Hide
          jihoonson Jihoon Son added a comment -

          Maybe, it would be better to rewrite the query of the second phase into a normal join form. In the case of the above example, the query 'select * from nation where n_regionkey in (results of the first phase)' can be rewritten into 'select * from nation, (results of the first phase) where n_regionkey = r_regionkey'. Here, in the intermediate results of the first phase, every value must be unique.

          Show
          jihoonson Jihoon Son added a comment - Maybe, it would be better to rewrite the query of the second phase into a normal join form. In the case of the above example, the query 'select * from nation where n_regionkey in (results of the first phase)' can be rewritten into 'select * from nation, (results of the first phase) where n_regionkey = r_regionkey'. Here, in the intermediate results of the first phase, every value must be unique.
          Hide
          jihoonson Jihoon Son added a comment - - edited

          I attached a logical plan and a distributed execution plan for the above example query. As noted above, the results of the first phase are written into disks, and then shuffled according to the key's value. In the second phase, the results of the first phase are joined with the outer table.

          This execution returns valid results even when the inner query table does not have any relations with the outer table. For another example, please consider the following query.

          default> select n_name from nation where n_nationkey in (select count(*) from region group by substr(r_name, 1, 1));
          

          This query first retrieves the appearance number of the first character of the region name, and then finds the names of the nations whose keys are in the result set of the first phase.
          In this case, the result set of the first phase also is handled as a kind of a table that is joined with the nation table.

          Show
          jihoonson Jihoon Son added a comment - - edited I attached a logical plan and a distributed execution plan for the above example query. As noted above, the results of the first phase are written into disks, and then shuffled according to the key's value. In the second phase, the results of the first phase are joined with the outer table. This execution returns valid results even when the inner query table does not have any relations with the outer table. For another example, please consider the following query. default> select n_name from nation where n_nationkey in (select count(*) from region group by substr(r_name, 1, 1)); This query first retrieves the appearance number of the first character of the region name, and then finds the names of the nations whose keys are in the result set of the first phase. In this case, the result set of the first phase also is handled as a kind of a table that is joined with the nation table.
          Hide
          hyunsik Hyunsik Choi added a comment - - edited

          RowConstantFromDiskEval may play the same role of MergeScanner which reads the shuffled intermediate result. Uncorrelated IN subquery is equivalent to hash shuffle and semi join. I think that this work may requires only new representation layer for IN subquery and we can reuse existing physical operators.

          Show
          hyunsik Hyunsik Choi added a comment - - edited RowConstantFromDiskEval may play the same role of MergeScanner which reads the shuffled intermediate result. Uncorrelated IN subquery is equivalent to hash shuffle and semi join. I think that this work may requires only new representation layer for IN subquery and we can reuse existing physical operators.
          Hide
          jihoonson Jihoon Son added a comment -

          Yes, you re right.
          Instead of that, I'll add a new EvalNode, called SubQueryEval, which contains only the information about the inner query.
          This EvalNode will be converted some physical operators as you said.

          Show
          jihoonson Jihoon Son added a comment - Yes, you re right. Instead of that, I'll add a new EvalNode, called SubQueryEval, which contains only the information about the inner query. This EvalNode will be converted some physical operators as you said.
          Hide
          sirpkt Keuntae Park added a comment -

          Hi, Jihoon Son.
          I'm also very interested in In-Subquery and have a suggestion about handling it
          (actually only uncorrelated subquery cases because handling correlated subquery needs more careful consideration).

          What I think is that transforming In-Subquery to Semi-(or Anti-) Join in LogicalPlanPreprocessor.
          (At first, I though the way of doing at query parsing phase but it may not resolve columns in the left side of In-Subquery.)

          1) During visitFilter(), check if qual of Selection contains in-subquery Expr.
          2) If so, find the relation related with column in the left side of In-subquery from relationList which is child of Selection Expr.
          3) Make (semi or anti) joinNode with the found relation as left relation, subquery as right relation, and the join condition of 'left side column of In-subquery equals projection column of subquery'
          4) It needs to update Expr tree also to reflect changed relationList that contains new join not previous relation, because it will be used again in LogicalPlanner

          After above, remaining are already implemented because Tajo already has hash shuffle based semi and anti join physical operators.

          It may be also possible to implement new EvalNode that represents in-subquery and convert it to JoinNode at LogicalOptimizer.
          But, in this case, code to handle in-subquery is spread between LogicalPlanner (In-subquery recognition) and LogicalOptimizer (plan transformation).
          And I feel that doing something in LogicalPlanPreprocessor is easier than work at LogicalOptimizer

          Please, leave me a comment on above suggestion.

          By the way, does this issue replace TAJO-596?

          Show
          sirpkt Keuntae Park added a comment - Hi, Jihoon Son . I'm also very interested in In-Subquery and have a suggestion about handling it (actually only uncorrelated subquery cases because handling correlated subquery needs more careful consideration). What I think is that transforming In-Subquery to Semi-(or Anti-) Join in LogicalPlanPreprocessor. (At first, I though the way of doing at query parsing phase but it may not resolve columns in the left side of In-Subquery.) 1) During visitFilter(), check if qual of Selection contains in-subquery Expr. 2) If so, find the relation related with column in the left side of In-subquery from relationList which is child of Selection Expr. 3) Make (semi or anti) joinNode with the found relation as left relation, subquery as right relation, and the join condition of 'left side column of In-subquery equals projection column of subquery' 4) It needs to update Expr tree also to reflect changed relationList that contains new join not previous relation, because it will be used again in LogicalPlanner After above, remaining are already implemented because Tajo already has hash shuffle based semi and anti join physical operators. It may be also possible to implement new EvalNode that represents in-subquery and convert it to JoinNode at LogicalOptimizer. But, in this case, code to handle in-subquery is spread between LogicalPlanner (In-subquery recognition) and LogicalOptimizer (plan transformation). And I feel that doing something in LogicalPlanPreprocessor is easier than work at LogicalOptimizer Please, leave me a comment on above suggestion. By the way, does this issue replace TAJO-596 ?
          Hide
          jihoonson Jihoon Son added a comment -

          Keuntae Park, thanks for the good suggestion!
          In overall, your suggestion is mostly similar to what I'm doing.
          To avoid the code spreading which decreases the readability, I added a new query rewrite rule to transform the IN subquery statement into the semi-join statement.
          Once the query is transformed, as you said, the remaining part can be processed with already implemented Tajo's query executors.

          Honestly, my work is almost done.
          However, since this is a new feature, I'm trying to test various kinds of query types.
          And, fortunately, I found some critical join bugs during tests, and am fixing those bugs now.
          After fixing them, I'll post my patch.

          Show
          jihoonson Jihoon Son added a comment - Keuntae Park , thanks for the good suggestion! In overall, your suggestion is mostly similar to what I'm doing. To avoid the code spreading which decreases the readability, I added a new query rewrite rule to transform the IN subquery statement into the semi-join statement. Once the query is transformed, as you said, the remaining part can be processed with already implemented Tajo's query executors. Honestly, my work is almost done. However, since this is a new feature, I'm trying to test various kinds of query types. And, fortunately, I found some critical join bugs during tests, and am fixing those bugs now. After fixing them, I'll post my patch.
          Hide
          sirpkt Keuntae Park added a comment -

          Excellent!
          I'll happily wait for your patch, Jihoon Son.

          Show
          sirpkt Keuntae Park added a comment - Excellent! I'll happily wait for your patch, Jihoon Son .
          Hide
          githubbot ASF GitHub Bot added a comment -

          GitHub user jihoonson opened a pull request:

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

          TAJO-680: Improve the IN operator to support sub queries.

          This patch is based on #593, so please review it first.

          This work includes:

          • Improving the IN expression to allow uncorrelated subquery
          • Throwing an exception in the case of correlated subquery
          • Improving the join ordering to allow semi and anti joins
          • Set of query result tests

          This work does not include the query plan tests because it makes the patch size huge.
          I'll add them at https://issues.apache.org/jira/browse/TAJO-1671.

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

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

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

          https://github.com/apache/tajo/pull/620.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 #620


          commit b165abcd3bac5feb2cd26ae1cc4713c5f2596014
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-14T08:57:01Z

          TAJO-1352_3

          commit d6e22ae056cf695a92306e008a2d941ca372519f
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-15T02:49:53Z

          problems in join tree building

          commit 213c09ba79b800c57397c55f1d4f5b96519f7f50
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-15T04:30:54Z

          TAJO-1352_3

          commit 60d250dce16d11693c3a1b5a87cb04bb7102deb3
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-15T05:47:28Z

          TAJO-1352_3

          commit f8638cf981954a51a5feefbf5de2982dc7c07078
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-15T06:02:13Z

          TAJO-1352_3

          commit 9ec987711d969be423d4dfb8de9bc07adf3b4082
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-15T11:09:13Z

          Finished join order improvement

          commit d774b455b89cc2cbf38f1fd37c987e43bfc57072
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-16T11:37:15Z

          TAJO-1352_4

          commit f27cec3db9d1683fabe11dc0115306c92b06e500
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-16T14:59:51Z

          Merge branch 'TAJO-1352_4' of https://github.com/jihoonson/tajo-2 into TAJO-1352_4

          commit 140bc3de2faf227dd5cbd84d81c5368efa1fd587
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-16T15:10:22Z

          TAJO-1352_4

          commit 7112eb935fe749f0ad656d02a2ec2a8decad8e48
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-17T01:06:36Z

          Merge branch 'TAJO-1352_4' of https://github.com/jihoonson/tajo-2 into TAJO-1352_4

          commit 7ac215a283094356909ce3220eb8cf9d9b6af629
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-17T05:04:43Z

          TAJO-1352_4

          commit 5e4de3d2b735fd907f64a27e02c74873c54eb95d
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-17T08:10:22Z

          TAJO-1352_4

          commit 3dca1b763a4a3d4ac9bd9f4541754bef8628f5cf
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-18T01:36:08Z

          TAJO-1352_4

          commit 8ebf859c3f142d673fbb2b03109ca1d7b894b167
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-18T01:44:51Z

          TAJO-1352_4

          commit 393dd555e19c36a942b49e4f9ccf88fd1a3508ca
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-18T09:46:38Z

          TAJO-1352_4

          commit 8bd027bec0cfe30379a71c914ba292d2766a7afc
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-18T12:21:13Z

          TAJO-1352_4

          commit 8dce54401006d70b9207cc5fd5823f92fc004b36
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-18T15:24:57Z

          Must resolve broadcast join bugs

          commit dcc6e8ac7adae598062386c30a387cf87954fa1e
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-18T16:21:20Z

          TAJO-1352_4

          commit f7d6c6b3db91ef36609e362941ef84e43b9e1144
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-18T17:25:57Z

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

          commit 91b6551ee538dbd5f8de3f68434e5fbfa73bb5c4
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-19T02:32:05Z

          TAJO-1352_4

          commit 3cb707187136c28da2c2406ccbb3ad9f76735043
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-19T12:16:37Z

          TAJO-1352_4

          commit 1cef1668e2915f67b2fab919e38c20b96e3b63ac
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-20T05:43:40Z

          Fix JoinBroadcast test

          commit 7470270abcae4e678a24b4a7b2705ae96a831264
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-20T06:02:44Z

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

          Conflicts:
          tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java
          tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java

          commit 38fb013fb530720dda03182f009f9cf3a0d53ea0
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-20T10:07:28Z

          TAJO-1352_4

          commit 321450872ad25bd2b3352e411dc03e21e3bd3f67
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-21T01:24:14Z

          TAJO-1352_4

          commit 4439a6fbc9def860494d4130e7024d15452df7c8
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-21T04:27:23Z

          TAJO-1352_4

          commit f42b4cebc1ebb2bf4aedb84fb7941673ed04004a
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-22T14:51:28Z

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

          commit f626a93f2a89b45f12e2d0ec13a4c4e3c960d03c
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-23T03:07:03Z

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

          commit bb27e0fceb8702eb7218ecdb01f57a8ec5927397
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-25T01:30:21Z

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

          commit 34515d995d15be6350e5a15da39fe95f2d4ce5f8
          Author: Jihoon Son <jihoonson@apache.org>
          Date: 2015-03-26T06:38:23Z

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


          Show
          githubbot ASF GitHub Bot added a comment - GitHub user jihoonson opened a pull request: https://github.com/apache/tajo/pull/620 TAJO-680 : Improve the IN operator to support sub queries. This patch is based on #593, so please review it first. This work includes: Improving the IN expression to allow uncorrelated subquery Throwing an exception in the case of correlated subquery Improving the join ordering to allow semi and anti joins Set of query result tests This work does not include the query plan tests because it makes the patch size huge. I'll add them at https://issues.apache.org/jira/browse/TAJO-1671 . You can merge this pull request into a Git repository by running: $ git pull https://github.com/jihoonson/tajo-2 TAJO-680 _3 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/tajo/pull/620.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 #620 commit b165abcd3bac5feb2cd26ae1cc4713c5f2596014 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-14T08:57:01Z TAJO-1352 _3 commit d6e22ae056cf695a92306e008a2d941ca372519f Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-15T02:49:53Z problems in join tree building commit 213c09ba79b800c57397c55f1d4f5b96519f7f50 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-15T04:30:54Z TAJO-1352 _3 commit 60d250dce16d11693c3a1b5a87cb04bb7102deb3 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-15T05:47:28Z TAJO-1352 _3 commit f8638cf981954a51a5feefbf5de2982dc7c07078 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-15T06:02:13Z TAJO-1352 _3 commit 9ec987711d969be423d4dfb8de9bc07adf3b4082 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-15T11:09:13Z Finished join order improvement commit d774b455b89cc2cbf38f1fd37c987e43bfc57072 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-16T11:37:15Z TAJO-1352 _4 commit f27cec3db9d1683fabe11dc0115306c92b06e500 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-16T14:59:51Z Merge branch ' TAJO-1352 _4' of https://github.com/jihoonson/tajo-2 into TAJO-1352 _4 commit 140bc3de2faf227dd5cbd84d81c5368efa1fd587 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-16T15:10:22Z TAJO-1352 _4 commit 7112eb935fe749f0ad656d02a2ec2a8decad8e48 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-17T01:06:36Z Merge branch ' TAJO-1352 _4' of https://github.com/jihoonson/tajo-2 into TAJO-1352 _4 commit 7ac215a283094356909ce3220eb8cf9d9b6af629 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-17T05:04:43Z TAJO-1352 _4 commit 5e4de3d2b735fd907f64a27e02c74873c54eb95d Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-17T08:10:22Z TAJO-1352 _4 commit 3dca1b763a4a3d4ac9bd9f4541754bef8628f5cf Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-18T01:36:08Z TAJO-1352 _4 commit 8ebf859c3f142d673fbb2b03109ca1d7b894b167 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-18T01:44:51Z TAJO-1352 _4 commit 393dd555e19c36a942b49e4f9ccf88fd1a3508ca Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-18T09:46:38Z TAJO-1352 _4 commit 8bd027bec0cfe30379a71c914ba292d2766a7afc Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-18T12:21:13Z TAJO-1352 _4 commit 8dce54401006d70b9207cc5fd5823f92fc004b36 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-18T15:24:57Z Must resolve broadcast join bugs commit dcc6e8ac7adae598062386c30a387cf87954fa1e Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-18T16:21:20Z TAJO-1352 _4 commit f7d6c6b3db91ef36609e362941ef84e43b9e1144 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-18T17:25:57Z Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-1352 _4 commit 91b6551ee538dbd5f8de3f68434e5fbfa73bb5c4 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-19T02:32:05Z TAJO-1352 _4 commit 3cb707187136c28da2c2406ccbb3ad9f76735043 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-19T12:16:37Z TAJO-1352 _4 commit 1cef1668e2915f67b2fab919e38c20b96e3b63ac Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-20T05:43:40Z Fix JoinBroadcast test commit 7470270abcae4e678a24b4a7b2705ae96a831264 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-20T06:02:44Z Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-1352 _4 Conflicts: tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java commit 38fb013fb530720dda03182f009f9cf3a0d53ea0 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-20T10:07:28Z TAJO-1352 _4 commit 321450872ad25bd2b3352e411dc03e21e3bd3f67 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-21T01:24:14Z TAJO-1352 _4 commit 4439a6fbc9def860494d4130e7024d15452df7c8 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-21T04:27:23Z TAJO-1352 _4 commit f42b4cebc1ebb2bf4aedb84fb7941673ed04004a Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-22T14:51:28Z Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-1352 _4 commit f626a93f2a89b45f12e2d0ec13a4c4e3c960d03c Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-23T03:07:03Z Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-1352 _4 commit bb27e0fceb8702eb7218ecdb01f57a8ec5927397 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-25T01:30:21Z Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-1352 _4 commit 34515d995d15be6350e5a15da39fe95f2d4ce5f8 Author: Jihoon Son <jihoonson@apache.org> Date: 2015-03-26T06:38:23Z Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into TAJO-1352 _4
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user hyunsik commented on the pull request:

          https://github.com/apache/tajo/pull/620#issuecomment-122871821

          Hi,

          I'm going to review this work. Could you rebase it against the latest master branch?

          Show
          githubbot ASF GitHub Bot added a comment - Github user hyunsik commented on the pull request: https://github.com/apache/tajo/pull/620#issuecomment-122871821 Hi, I'm going to review this work. Could you rebase it against the latest master branch?
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on the pull request:

          https://github.com/apache/tajo/pull/620#issuecomment-123113262

          Hi @hyunsik. I've rebased.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on the pull request: https://github.com/apache/tajo/pull/620#issuecomment-123113262 Hi @hyunsik. I've rebased.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user hyunsik commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/620#discussion_r37046834

          — Diff: tajo-core/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java —
          @@ -0,0 +1,176 @@
          +/**
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.tajo.engine.query;
          +
          +import org.apache.tajo.IntegrationTest;
          +import org.apache.tajo.NamedTest;
          +import org.apache.tajo.error.Errors.ResultCode;
          +import org.apache.tajo.exception.TajoRuntimeException;
          +import org.junit.AfterClass;
          +import org.junit.BeforeClass;
          +import org.junit.Test;
          +import org.junit.experimental.categories.Category;
          +import org.junit.runner.RunWith;
          +import org.junit.runners.Parameterized;
          +
          +import java.sql.SQLException;
          +
          +import static org.junit.Assert.assertEquals;
          +import static org.junit.Assert.fail;
          +
          +@Category(IntegrationTest.class)
          +@RunWith(Parameterized.class)
          +@NamedTest("TestJoinQuery")
          +public class TestInSubquery extends TestJoinQuery {
          +
          + public TestInSubquery(String joinOption) throws Exception

          { + super(joinOption); + }

          +
          + @BeforeClass
          + public static void setup() throws Exception

          { + TestJoinQuery.setup(); + }

          +
          + @AfterClass
          + public static void classTearDown() throws SQLException

          { + TestJoinQuery.classTearDown(); + }

          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testInSubQuery() throws Exception

          { + runSimpleTests(); + }
          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testInSubQuery2() throws Exception { + runSimpleTests(); + }

          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testNestedInSubQuery() throws Exception

          { + runSimpleTests(); + }
          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testInSubQueryWithOtherConditions() throws Exception { + runSimpleTests(); + }

          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testMultipleInSubQuery() throws Exception

          { + runSimpleTests(); + }
          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testInSubQueryWithJoin() throws Exception { + runSimpleTests(); + }

          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testInSubQueryWithTableSubQuery() throws Exception

          { + runSimpleTests(); + }
          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testNotInSubQuery() throws Exception { + runSimpleTests(); + }

          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testMultipleNotInSubQuery() throws Exception

          { + runSimpleTests(); + }
          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testNestedNotInSubQuery() throws Exception { + runSimpleTests(); + }

          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testInAndNotInSubQuery() throws Exception

          { + runSimpleTests(); + }
          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testNestedInAndNotInSubQuery() throws Exception { + runSimpleTests(); + }

          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testNestedInSubQuery2() throws Exception

          { + // select c_name from customer + // where c_nationkey in ( + // select n_nationkey from nation where n_name like 'C%' and n_regionkey in ( + // select count(*)-1 from region where r_regionkey > 0 and r_regionkey < 3)) + runSimpleTests(); + }

          +
          + @Test()
          + public final void testCorrelatedSubQuery() throws Exception {
          + // Use try-catch clause to verify the exact error message
          + try

          { + executeString("select * from nation where n_regionkey in (select r_regionkey from region where n_name > r_name)"); + fail("Correlated subquery must raise the UnimplementedException."); + }

          catch (TajoRuntimeException e)

          { + assertEquals(ResultCode.NOT_IMPLEMENTED, e.getErrorCode()); + }

          + }
          +
          + @Test
          + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testSameKeyNameOfOuterAndInnerQueries() throws Exception

          { + runSimpleTests(); + }

          +
          + @Test
          + @Option(parameterized = true, sort = true)
          + @SimpleTest()
          + public final void testWithAsteriskAndJoin() throws Exception {
          + // select * from lineitem, orders where l_orderkey = o_orderkey and l_partkey in (select l_partkey from lineitem where l_linenumber in (1, 3, 5, 7, 9))
          — End diff –

          It exceeds the column width of coding standards.

          Show
          githubbot ASF GitHub Bot added a comment - Github user hyunsik commented on a diff in the pull request: https://github.com/apache/tajo/pull/620#discussion_r37046834 — Diff: tajo-core/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java — @@ -0,0 +1,176 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.engine.query; + +import org.apache.tajo.IntegrationTest; +import org.apache.tajo.NamedTest; +import org.apache.tajo.error.Errors.ResultCode; +import org.apache.tajo.exception.TajoRuntimeException; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import java.sql.SQLException; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +@Category(IntegrationTest.class) +@RunWith(Parameterized.class) +@NamedTest("TestJoinQuery") +public class TestInSubquery extends TestJoinQuery { + + public TestInSubquery(String joinOption) throws Exception { + super(joinOption); + } + + @BeforeClass + public static void setup() throws Exception { + TestJoinQuery.setup(); + } + + @AfterClass + public static void classTearDown() throws SQLException { + TestJoinQuery.classTearDown(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testInSubQuery() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testInSubQuery2() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testNestedInSubQuery() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testInSubQueryWithOtherConditions() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testMultipleInSubQuery() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testInSubQueryWithJoin() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testInSubQueryWithTableSubQuery() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testNotInSubQuery() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testMultipleNotInSubQuery() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testNestedNotInSubQuery() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testInAndNotInSubQuery() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testNestedInAndNotInSubQuery() throws Exception { + runSimpleTests(); + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testNestedInSubQuery2() throws Exception { + // select c_name from customer + // where c_nationkey in ( + // select n_nationkey from nation where n_name like 'C%' and n_regionkey in ( + // select count(*)-1 from region where r_regionkey > 0 and r_regionkey < 3)) + runSimpleTests(); + } + + @Test() + public final void testCorrelatedSubQuery() throws Exception { + // Use try-catch clause to verify the exact error message + try { + executeString("select * from nation where n_regionkey in (select r_regionkey from region where n_name > r_name)"); + fail("Correlated subquery must raise the UnimplementedException."); + } catch (TajoRuntimeException e) { + assertEquals(ResultCode.NOT_IMPLEMENTED, e.getErrorCode()); + } + } + + @Test + @Option(withExplain = false, withExplainGlobal = false, parameterized = true, sort = true) + @SimpleTest() + public final void testSameKeyNameOfOuterAndInnerQueries() throws Exception { + runSimpleTests(); + } + + @Test + @Option(parameterized = true, sort = true) + @SimpleTest() + public final void testWithAsteriskAndJoin() throws Exception { + // select * from lineitem, orders where l_orderkey = o_orderkey and l_partkey in (select l_partkey from lineitem where l_linenumber in (1, 3, 5, 7, 9)) — End diff – It exceeds the column width of coding standards.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user hyunsik commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/620#discussion_r37046917

          — Diff: tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java —
          @@ -139,6 +141,11 @@ public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftE

          • (A full B) full C | A full (B full C) | Equivalent
          • ==============================================================
            *
            +<<<<<<< HEAD
              • End diff –

          You may miss this line which seems to be inserted by git merge phase.

          Show
          githubbot ASF GitHub Bot added a comment - Github user hyunsik commented on a diff in the pull request: https://github.com/apache/tajo/pull/620#discussion_r37046917 — Diff: tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java — @@ -139,6 +141,11 @@ public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftE (A full B) full C | A full (B full C) | Equivalent ============================================================== * +<<<<<<< HEAD End diff – You may miss this line which seems to be inserted by git merge phase.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user hyunsik commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/620#discussion_r37046923

          — Diff: tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java —
          @@ -139,6 +141,11 @@ public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftE

          • (A full B) full C | A full (B full C) | Equivalent
          • ==============================================================
            *
            +<<<<<<< HEAD
            + * Cross, Semi and Anti joins follow the rule of the Inner join.
            + *
            +=======
            +>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867
              • End diff –

          You may miss this line which seems to be inserted by git merge phase.

          Show
          githubbot ASF GitHub Bot added a comment - Github user hyunsik commented on a diff in the pull request: https://github.com/apache/tajo/pull/620#discussion_r37046923 — Diff: tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java — @@ -139,6 +141,11 @@ public static boolean isAssociativeJoin(JoinGraphContext context, JoinEdge leftE (A full B) full C | A full (B full C) | Equivalent ============================================================== * +<<<<<<< HEAD + * Cross, Semi and Anti joins follow the rule of the Inner join. + * +======= +>>>>>>> c50a5dadff90fa90709abbce59856e834baa4867 End diff – You may miss this line which seems to be inserted by git merge phase.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user hyunsik commented on a diff in the pull request:

          https://github.com/apache/tajo/pull/620#discussion_r37046962

          — Diff: tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/InSubqueryRewriteRule.java —
          @@ -0,0 +1,190 @@
          +/**
          + * Licensed to the Apache Software Foundation (ASF) under one
          + * or more contributor license agreements. See the NOTICE file
          + * distributed with this work for additional information
          + * regarding copyright ownership. The ASF licenses this file
          + * to you under the Apache License, Version 2.0 (the
          + * "License"); you may not use this file except in compliance
          + * with the License. You may obtain a copy of the License at
          + *
          + * http://www.apache.org/licenses/LICENSE-2.0
          + *
          + * Unless required by applicable law or agreed to in writing, software
          + * distributed under the License is distributed on an "AS IS" BASIS,
          + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
          + * See the License for the specific language governing permissions and
          + * limitations under the License.
          + */
          +
          +package org.apache.tajo.plan.rewrite.rules;
          +
          +import com.google.common.base.Preconditions;
          +import org.apache.tajo.OverridableConf;
          — End diff –

          unused import

          Show
          githubbot ASF GitHub Bot added a comment - Github user hyunsik commented on a diff in the pull request: https://github.com/apache/tajo/pull/620#discussion_r37046962 — Diff: tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/InSubqueryRewriteRule.java — @@ -0,0 +1,190 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.plan.rewrite.rules; + +import com.google.common.base.Preconditions; +import org.apache.tajo.OverridableConf; — End diff – unused import
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user hyunsik commented on the pull request:

          https://github.com/apache/tajo/pull/620#issuecomment-130942866

          +1
          This patch looks great to me, and it includes enough unit tests to verify its feature. I leaved very trivial comments. You can commit it after they resolve them.

          Show
          githubbot ASF GitHub Bot added a comment - Github user hyunsik commented on the pull request: https://github.com/apache/tajo/pull/620#issuecomment-130942866 +1 This patch looks great to me, and it includes enough unit tests to verify its feature. I leaved very trivial comments. You can commit it after they resolve them.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user asfgit closed the pull request at:

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

          Show
          githubbot ASF GitHub Bot added a comment - Github user asfgit closed the pull request at: https://github.com/apache/tajo/pull/620
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jihoonson commented on the pull request:

          https://github.com/apache/tajo/pull/620#issuecomment-130947860

          Thank you for the review! I've committed after changing the patch according to your comment.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jihoonson commented on the pull request: https://github.com/apache/tajo/pull/620#issuecomment-130947860 Thank you for the review! I've committed after changing the patch according to your comment.
          Hide
          jihoonson Jihoon Son added a comment -

          Committed to master.

          Show
          jihoonson Jihoon Son added a comment - Committed to master.
          Hide
          hudson Hudson added a comment -

          FAILURE: Integrated in Tajo-master-CODEGEN-build #438 (See https://builds.apache.org/job/Tajo-master-CODEGEN-build/438/)
          TAJO-680: Improve the IN operator to support sub queries. (jihoonson: rev 042c3e882fbb45fffc6fc2988588282ed085614c)

          • tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testSameKeyNameOfOuterAndInnerQueries.sql
          • tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
          • tajo-core/src/test/resources/results/TestInSubquery/testWithAsteriskAndJoin.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/ValueSetEval.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testMultipleInSubQuery.sql
          • tajo-core/src/test/resources/queries/TestInSubquery/testNestedInSubQuery2.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java
          • tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java
          • tajo-core/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlan.java
          • tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithJoin.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalType.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQuery2.sql
          • tajo-core/src/test/resources/queries/TestInSubquery/testNestedInSubQuery.sql
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQuery.sql
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/RelationList.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/visitor/SimpleAlgebraVisitor.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeSerializer.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/TablePrimarySubQuery.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/CommonSubquery.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testWithAsteriskAndJoin.sql
          • tajo-core/src/test/java/org/apache/tajo/QueryTestCaseBase.java
          • tajo-core/src/test/resources/results/TestInSubquery/testNestedInSubQuery2.result
          • tajo-core/src/test/resources/results/TestInSubquery/testNotInSubQuery.result
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/ExistsPredicate.java
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQuery.result
          • tajo-core/src/test/resources/results/TestInSubquery/testNestedInSubQuery.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/util/ExprFinder.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/Relation.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testMultipleNotInSubQuery.sql
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/OpType.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/BasicEvalNodeVisitor.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithTableSubQuery.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/SimpleEvalNodeVisitor.java
          • tajo-core/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result
          • tajo-core/src/test/resources/queries/TestInSubquery/testNotInSubQuery.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testNestedInAndNotInSubQuery.sql
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithJoin.result
          • tajo-core/src/test/resources/results/TestInSubquery/testNestedInAndNotInSubQuery.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java
          • tajo-core/src/test/resources/results/TestInSubquery/testSameKeyNameOfOuterAndInnerQueries.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalNodeVisitor2.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/InSubqueryRewriteRule.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/ExprAnnotator.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/algebra/AlgebraVisitor.java
          • tajo-core/src/test/resources/results/TestInSubquery/testInAndNotInSubQuery.result
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithOtherConditions.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/SubqueryEval.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteRuleProvider.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubQuery.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/logical/RelationNode.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithOtherConditions.sql
          • tajo-plan/src/main/proto/Plan.proto
          • tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanPreprocessor.java
          • tajo-core/src/test/resources/results/TestInSubquery/testMultipleInSubQuery.result
          • tajo-core/src/test/resources/queries/TestInSubquery/testNestedNotInSubQuery.sql
          • tajo-core/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQuery2.result
          • tajo-core/src/test/resources/queries/TestInSubquery/testInAndNotInSubQuery.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/algebra/BaseAlgebraVisitor.java
          • CHANGES
          • tajo-core/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithTableSubQuery.result
          Show
          hudson Hudson added a comment - FAILURE: Integrated in Tajo-master-CODEGEN-build #438 (See https://builds.apache.org/job/Tajo-master-CODEGEN-build/438/ ) TAJO-680 : Improve the IN operator to support sub queries. (jihoonson: rev 042c3e882fbb45fffc6fc2988588282ed085614c) tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java tajo-core/src/test/resources/queries/TestInSubquery/testSameKeyNameOfOuterAndInnerQueries.sql tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java tajo-core/src/test/resources/results/TestInSubquery/testWithAsteriskAndJoin.result tajo-plan/src/main/java/org/apache/tajo/plan/expr/ValueSetEval.java tajo-core/src/test/resources/queries/TestInSubquery/testMultipleInSubQuery.sql tajo-core/src/test/resources/queries/TestInSubquery/testNestedInSubQuery2.sql tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java tajo-core/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlan.java tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithJoin.sql tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalType.java tajo-core/src/test/resources/queries/TestInSubquery/testInSubQuery2.sql tajo-core/src/test/resources/queries/TestInSubquery/testNestedInSubQuery.sql tajo-core/src/test/resources/queries/TestInSubquery/testInSubQuery.sql tajo-algebra/src/main/java/org/apache/tajo/algebra/RelationList.java tajo-plan/src/main/java/org/apache/tajo/plan/visitor/SimpleAlgebraVisitor.java tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeSerializer.java tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java tajo-algebra/src/main/java/org/apache/tajo/algebra/TablePrimarySubQuery.java tajo-algebra/src/main/java/org/apache/tajo/algebra/CommonSubquery.java tajo-core/src/test/resources/queries/TestInSubquery/testWithAsteriskAndJoin.sql tajo-core/src/test/java/org/apache/tajo/QueryTestCaseBase.java tajo-core/src/test/resources/results/TestInSubquery/testNestedInSubQuery2.result tajo-core/src/test/resources/results/TestInSubquery/testNotInSubQuery.result tajo-algebra/src/main/java/org/apache/tajo/algebra/ExistsPredicate.java tajo-core/src/test/resources/results/TestInSubquery/testInSubQuery.result tajo-core/src/test/resources/results/TestInSubquery/testNestedInSubQuery.result tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java tajo-plan/src/main/java/org/apache/tajo/plan/util/ExprFinder.java tajo-algebra/src/main/java/org/apache/tajo/algebra/Relation.java tajo-core/src/test/resources/queries/TestInSubquery/testMultipleNotInSubQuery.sql tajo-algebra/src/main/java/org/apache/tajo/algebra/OpType.java tajo-plan/src/main/java/org/apache/tajo/plan/expr/BasicEvalNodeVisitor.java tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithTableSubQuery.sql tajo-plan/src/main/java/org/apache/tajo/plan/expr/SimpleEvalNodeVisitor.java tajo-core/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result tajo-core/src/test/resources/queries/TestInSubquery/testNotInSubQuery.sql tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java tajo-core/src/test/resources/queries/TestInSubquery/testNestedInAndNotInSubQuery.sql tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithJoin.result tajo-core/src/test/resources/results/TestInSubquery/testNestedInAndNotInSubQuery.result tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java tajo-core/src/test/resources/results/TestInSubquery/testSameKeyNameOfOuterAndInnerQueries.result tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalNodeVisitor2.java tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/InSubqueryRewriteRule.java tajo-plan/src/main/java/org/apache/tajo/plan/ExprAnnotator.java tajo-plan/src/main/java/org/apache/tajo/plan/algebra/AlgebraVisitor.java tajo-core/src/test/resources/results/TestInSubquery/testInAndNotInSubQuery.result tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithOtherConditions.result tajo-plan/src/main/java/org/apache/tajo/plan/expr/SubqueryEval.java tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteRuleProvider.java tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubQuery.java tajo-plan/src/main/java/org/apache/tajo/plan/logical/RelationNode.java tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithOtherConditions.sql tajo-plan/src/main/proto/Plan.proto tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanPreprocessor.java tajo-core/src/test/resources/results/TestInSubquery/testMultipleInSubQuery.result tajo-core/src/test/resources/queries/TestInSubquery/testNestedNotInSubQuery.sql tajo-core/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java tajo-core/src/test/resources/results/TestInSubquery/testInSubQuery2.result tajo-core/src/test/resources/queries/TestInSubquery/testInAndNotInSubQuery.sql tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java tajo-plan/src/main/java/org/apache/tajo/plan/algebra/BaseAlgebraVisitor.java CHANGES tajo-core/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithTableSubQuery.result
          Hide
          hudson Hudson added a comment -

          FAILURE: Integrated in Tajo-master-build #799 (See https://builds.apache.org/job/Tajo-master-build/799/)
          TAJO-680: Improve the IN operator to support sub queries. (jihoonson: rev 042c3e882fbb45fffc6fc2988588282ed085614c)

          • tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java
          • tajo-core/src/test/resources/results/TestInSubquery/testNestedInSubQuery2.result
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithOtherConditions.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/BasicEvalNodeVisitor.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubQuery.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testSameKeyNameOfOuterAndInnerQueries.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQuery.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/logical/RelationNode.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testNestedInAndNotInSubQuery.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/SimpleEvalNodeVisitor.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanPreprocessor.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalNodeVisitor2.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/algebra/AlgebraVisitor.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testInAndNotInSubQuery.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/ExprAnnotator.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteRuleProvider.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithTableSubQuery.sql
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/RelationList.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/CommonSubquery.java
          • tajo-core/src/test/java/org/apache/tajo/QueryTestCaseBase.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/visitor/SimpleAlgebraVisitor.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/ExistsPredicate.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/OpType.java
          • tajo-core/src/test/resources/results/TestInSubquery/testSameKeyNameOfOuterAndInnerQueries.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java
          • CHANGES
          • tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQuery2.result
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithJoin.result
          • tajo-plan/src/main/proto/Plan.proto
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/ValueSetEval.java
          • tajo-core/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java
          • tajo-core/src/test/resources/results/TestInSubquery/testInAndNotInSubQuery.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeSerializer.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/SubqueryEval.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQuery.sql
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/Relation.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQuery2.sql
          • tajo-core/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
          • tajo-core/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithJoin.sql
          • tajo-core/src/test/resources/results/TestInSubquery/testNotInSubQuery.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/InSubqueryRewriteRule.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testNestedInSubQuery.sql
          • tajo-plan/src/main/java/org/apache/tajo/plan/algebra/BaseAlgebraVisitor.java
          • tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
          • tajo-core/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlan.java
          • tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithOtherConditions.result
          • tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testNestedNotInSubQuery.sql
          • tajo-core/src/test/resources/results/TestInSubquery/testMultipleInSubQuery.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java
          • tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithTableSubQuery.result
          • tajo-core/src/test/resources/results/TestInSubquery/testNestedInAndNotInSubQuery.result
          • tajo-core/src/test/resources/queries/TestInSubquery/testNotInSubQuery.sql
          • tajo-core/src/test/resources/queries/TestInSubquery/testMultipleInSubQuery.sql
          • tajo-core/src/test/resources/queries/TestInSubquery/testWithAsteriskAndJoin.sql
          • tajo-core/src/test/resources/results/TestInSubquery/testNestedInSubQuery.result
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/TablePrimarySubQuery.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalType.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java
          • tajo-plan/src/main/java/org/apache/tajo/plan/util/ExprFinder.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testMultipleNotInSubQuery.sql
          • tajo-core/src/test/resources/results/TestInSubquery/testWithAsteriskAndJoin.result
          • tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java
          • tajo-core/src/test/resources/queries/TestInSubquery/testNestedInSubQuery2.sql
          Show
          hudson Hudson added a comment - FAILURE: Integrated in Tajo-master-build #799 (See https://builds.apache.org/job/Tajo-master-build/799/ ) TAJO-680 : Improve the IN operator to support sub queries. (jihoonson: rev 042c3e882fbb45fffc6fc2988588282ed085614c) tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java tajo-core/src/test/resources/results/TestInSubquery/testNestedInSubQuery2.result tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithOtherConditions.sql tajo-plan/src/main/java/org/apache/tajo/plan/expr/BasicEvalNodeVisitor.java tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubQuery.java tajo-core/src/test/resources/queries/TestInSubquery/testSameKeyNameOfOuterAndInnerQueries.sql tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java tajo-core/src/test/resources/results/TestInSubquery/testInSubQuery.result tajo-plan/src/main/java/org/apache/tajo/plan/logical/RelationNode.java tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java tajo-core/src/test/resources/queries/TestInSubquery/testNestedInAndNotInSubQuery.sql tajo-plan/src/main/java/org/apache/tajo/plan/expr/SimpleEvalNodeVisitor.java tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanPreprocessor.java tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalNodeVisitor2.java tajo-plan/src/main/java/org/apache/tajo/plan/algebra/AlgebraVisitor.java tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlan.java tajo-core/src/test/resources/queries/TestInSubquery/testInAndNotInSubQuery.sql tajo-plan/src/main/java/org/apache/tajo/plan/ExprAnnotator.java tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteRuleProvider.java tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithTableSubQuery.sql tajo-algebra/src/main/java/org/apache/tajo/algebra/RelationList.java tajo-algebra/src/main/java/org/apache/tajo/algebra/CommonSubquery.java tajo-core/src/test/java/org/apache/tajo/QueryTestCaseBase.java tajo-plan/src/main/java/org/apache/tajo/plan/visitor/SimpleAlgebraVisitor.java tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java tajo-algebra/src/main/java/org/apache/tajo/algebra/ExistsPredicate.java tajo-algebra/src/main/java/org/apache/tajo/algebra/OpType.java tajo-core/src/test/resources/results/TestInSubquery/testSameKeyNameOfOuterAndInnerQueries.result tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/GreedyHeuristicJoinOrderAlgorithm.java CHANGES tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java tajo-core/src/test/resources/results/TestInSubquery/testInSubQuery2.result tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithJoin.result tajo-plan/src/main/proto/Plan.proto tajo-plan/src/main/java/org/apache/tajo/plan/expr/ValueSetEval.java tajo-core/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java tajo-core/src/test/resources/results/TestInSubquery/testInAndNotInSubQuery.result tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeSerializer.java tajo-plan/src/main/java/org/apache/tajo/plan/expr/SubqueryEval.java tajo-plan/src/main/java/org/apache/tajo/plan/LogicalOptimizer.java tajo-core/src/test/resources/queries/TestInSubquery/testInSubQuery.sql tajo-algebra/src/main/java/org/apache/tajo/algebra/Relation.java tajo-core/src/test/resources/queries/TestInSubquery/testInSubQuery2.sql tajo-core/src/test/resources/results/TestInSubquery/testNestedNotInSubQuery.result tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java tajo-core/src/test/resources/results/TestInSubquery/testMultipleNotInSubQuery.result tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java tajo-core/src/test/resources/queries/TestInSubquery/testInSubQueryWithJoin.sql tajo-core/src/test/resources/results/TestInSubquery/testNotInSubQuery.result tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/InSubqueryRewriteRule.java tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java tajo-core/src/test/resources/queries/TestInSubquery/testNestedInSubQuery.sql tajo-plan/src/main/java/org/apache/tajo/plan/algebra/BaseAlgebraVisitor.java tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java tajo-core/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlan.java tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithOtherConditions.result tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java tajo-core/src/test/resources/queries/TestInSubquery/testNestedNotInSubQuery.sql tajo-core/src/test/resources/results/TestInSubquery/testMultipleInSubQuery.result tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinGraph.java tajo-core/src/test/resources/results/TestInSubquery/testInSubQueryWithTableSubQuery.result tajo-core/src/test/resources/results/TestInSubquery/testNestedInAndNotInSubQuery.result tajo-core/src/test/resources/queries/TestInSubquery/testNotInSubQuery.sql tajo-core/src/test/resources/queries/TestInSubquery/testMultipleInSubQuery.sql tajo-core/src/test/resources/queries/TestInSubquery/testWithAsteriskAndJoin.sql tajo-core/src/test/resources/results/TestInSubquery/testNestedInSubQuery.result tajo-algebra/src/main/java/org/apache/tajo/algebra/TablePrimarySubQuery.java tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalType.java tajo-plan/src/main/java/org/apache/tajo/plan/joinorder/JoinOrderingUtil.java tajo-plan/src/main/java/org/apache/tajo/plan/util/ExprFinder.java tajo-core/src/test/resources/queries/TestInSubquery/testMultipleNotInSubQuery.sql tajo-core/src/test/resources/results/TestInSubquery/testWithAsteriskAndJoin.result tajo-plan/src/main/java/org/apache/tajo/plan/expr/InEval.java tajo-core/src/test/resources/queries/TestInSubquery/testNestedInSubQuery2.sql
          Hide
          hudson Hudson added a comment -

          FAILURE: Integrated in Tajo-master-CODEGEN-build #439 (See https://builds.apache.org/job/Tajo-master-CODEGEN-build/439/)
          TAJO-680: Improve the IN operator to support sub queries (missing change). (jihoonson: rev ab60d02e14cfd9e774abfdf27f72c582ca952b55)

          • tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubquery.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubQuery.java
          Show
          hudson Hudson added a comment - FAILURE: Integrated in Tajo-master-CODEGEN-build #439 (See https://builds.apache.org/job/Tajo-master-CODEGEN-build/439/ ) TAJO-680 : Improve the IN operator to support sub queries (missing change). (jihoonson: rev ab60d02e14cfd9e774abfdf27f72c582ca952b55) tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubquery.java tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubQuery.java
          Hide
          hudson Hudson added a comment -

          ABORTED: Integrated in Tajo-master-build #800 (See https://builds.apache.org/job/Tajo-master-build/800/)
          TAJO-680: Improve the IN operator to support sub queries (missing change). (jihoonson: rev ab60d02e14cfd9e774abfdf27f72c582ca952b55)

          • tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubQuery.java
          • tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubquery.java
          Show
          hudson Hudson added a comment - ABORTED: Integrated in Tajo-master-build #800 (See https://builds.apache.org/job/Tajo-master-build/800/ ) TAJO-680 : Improve the IN operator to support sub queries (missing change). (jihoonson: rev ab60d02e14cfd9e774abfdf27f72c582ca952b55) tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubQuery.java tajo-algebra/src/main/java/org/apache/tajo/algebra/SimpleTableSubquery.java

            People

            • Assignee:
              jihoonson Jihoon Son
              Reporter:
              jihoonson Jihoon Son
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development