TAJO-863: Column order mismatched in the JOIN query with asterisk selection. (Hyoungjun Kim via hyunsik)
Closes #31 Project: http://git-wip-us.apache.org/repos/asf/tajo/repo Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/47f6f56c Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/47f6f56c Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/47f6f56c Branch: refs/heads/window_function Commit: 47f6f56c7ba6feb20bc991cafdafd160ca53684d Parents: 26dc6e9 Author: Hyunsik Choi <[email protected]> Authored: Thu Jun 5 14:18:34 2014 -0700 Committer: Hyunsik Choi <[email protected]> Committed: Thu Jun 5 14:32:46 2014 -0700 ---------------------------------------------------------------------- CHANGES | 3 +++ .../main/java/org/apache/tajo/engine/planner/LogicalPlan.java | 4 +++- .../tajo/engine/planner/global/TestBroadcastJoinPlan.java | 4 ++-- .../test/java/org/apache/tajo/engine/query/TestJoinQuery.java | 7 +++++++ .../test/resources/queries/TestJoinQuery/testJoinAsterisk.sql | 3 +++ .../resources/results/TestJoinQuery/testJoinAsterisk.result | 7 +++++++ 6 files changed, 25 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tajo/blob/47f6f56c/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 7316e4d..0ebb899 100644 --- a/CHANGES +++ b/CHANGES @@ -58,6 +58,9 @@ Release 0.9.0 - unreleased BUG FIXES + TAJO-863: Column order mismatched in the JOIN query with asterisk selection. + (Hyoungjun Kim via hyunsik) + TAJO-851: Timestamp type test of TestSQLExpression::testCastFromTable fails in jenkins CI test. (Hyoungjun Kim via hyunsik) http://git-wip-us.apache.org/repos/asf/tajo/blob/47f6f56c/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java index 6d3f15f..443ee4b 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java @@ -585,6 +585,7 @@ public class LogicalPlan { private final Map<String, RelationNode> canonicalNameToRelationMap = TUtil.newHashMap(); private final Map<String, List<String>> aliasMap = TUtil.newHashMap(); private final Map<OpType, List<Expr>> operatorToExprMap = TUtil.newHashMap(); + private final List<RelationNode> relationList = TUtil.newList(); /** * It's a map between nodetype and node. node types can be duplicated. So, latest node type is only kept. */ @@ -668,10 +669,11 @@ public class LogicalPlan { TUtil.putToNestedList(aliasMap, relation.getTableName(), relation.getCanonicalName()); } canonicalNameToRelationMap.put(relation.getCanonicalName(), relation); + relationList.add(relation); } public Collection<RelationNode> getRelations() { - return this.canonicalNameToRelationMap.values(); + return Collections.unmodifiableList(relationList); } public boolean hasTableExpression() { http://git-wip-us.apache.org/repos/asf/tajo/blob/47f6f56c/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java index b56ab47..0e223c4 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java @@ -348,8 +348,8 @@ public class TestBroadcastJoinPlan { @Test public final void testBroadcastJoinSubquery() throws IOException, PlanningException { String query = "select count(*) from large1 " + - "join (select * from small1) a on large1_id = a.small1_id " + - "join small2 on large1_id = small2_id"; + "join small2 on large1_id = small2_id " + + "join (select * from small1) a on large1_id = a.small1_id"; LogicalPlanner planner = new LogicalPlanner(catalog); LogicalOptimizer optimizer = new LogicalOptimizer(conf); http://git-wip-us.apache.org/repos/asf/tajo/blob/47f6f56c/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java index 11cf344..b1aca56 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java @@ -369,4 +369,11 @@ public class TestJoinQuery extends QueryTestCaseBase { executeString("DROP TABLE JOINS.supplier_ PURGE"); executeString("DROP DATABASE JOINS"); } + + @Test + public final void testJoinAsterisk() throws Exception { + ResultSet res = executeQuery(); + assertResultSet(res); + cleanupQuery(res); + } } http://git-wip-us.apache.org/repos/asf/tajo/blob/47f6f56c/tajo-core/src/test/resources/queries/TestJoinQuery/testJoinAsterisk.sql ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/resources/queries/TestJoinQuery/testJoinAsterisk.sql b/tajo-core/src/test/resources/queries/TestJoinQuery/testJoinAsterisk.sql new file mode 100644 index 0000000..e3de03c --- /dev/null +++ b/tajo-core/src/test/resources/queries/TestJoinQuery/testJoinAsterisk.sql @@ -0,0 +1,3 @@ +select * +from nation b +join customer a on b.n_nationkey = a.c_nationkey http://git-wip-us.apache.org/repos/asf/tajo/blob/47f6f56c/tajo-core/src/test/resources/results/TestJoinQuery/testJoinAsterisk.result ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/resources/results/TestJoinQuery/testJoinAsterisk.result b/tajo-core/src/test/resources/results/TestJoinQuery/testJoinAsterisk.result new file mode 100644 index 0000000..d01fa21 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestJoinQuery/testJoinAsterisk.result @@ -0,0 +1,7 @@ +n_nationkey,n_name,n_regionkey,n_comment,c_custkey,c_name,c_address,c_nationkey,c_phone,c_acctbal,c_mktsegment,c_comment +------------------------------- +1,ARGENTINA,1,al foxes promise slyly according to the regular accounts. bold requests alon,3,Customer#000000003,MG9kdTD2WBHm,1,11-719-748-3364,7498.12,AUTOMOBILE, deposits eat slyly ironic, even instructions. express foxes detect slyly. blithely even accounts abov +3,CANADA,1,eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold,5,Customer#000000005,KvpyuHCplrB84WgAiGV6sYpZq7Tj,3,13-750-942-6364,794.47,HOUSEHOLD,n accounts will have to unwind. foxes cajole accor +4,EGYPT,4,y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d,4,Customer#000000004,XxVSJsLAGtn,4,14-128-190-5944,2866.83,MACHINERY, requests. final, regular ideas sleep final accou +13,JORDAN,4,ic deposits are blithely about the carefully regular pa,2,Customer#000000002,XSTf4,NCwDVaWNe6tEgvwfmRchLXak,13,23-768-687-3665,121.65,AUTOMOBILE,l accounts. blithely ironic theodolites integrate boldly: caref +15,MOROCCO,0,rns. blithely bold courts among the closely regular packages use furiously bold platelets?,1,Customer#000000001,IVhzIApeRb ot,c,E,15,25-989-741-2988,711.56,BUILDING,to the even, regular platelets. regular, ironic epitaphs nag e \ No newline at end of file
