Repository: lens Updated Branches: refs/heads/master 0a60ef331 -> 8a90d8b93
LENS-950: Bridge table join should ignore join type config Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/8a90d8b9 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/8a90d8b9 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/8a90d8b9 Branch: refs/heads/master Commit: 8a90d8b9383994e61015f1eae332e8191e0a19d6 Parents: 0a60ef3 Author: Amareshwari Sriramadasu <amareshw...@gmail.com> Authored: Mon Feb 15 18:51:11 2016 +0530 Committer: Rajat Khandelwal <rajatgupt...@gmail.com> Committed: Mon Feb 15 18:51:11 2016 +0530 ---------------------------------------------------------------------- .../lens/cube/parse/join/AutoJoinContext.java | 2 +- .../lens/cube/parse/TestBridgeTableQueries.java | 31 ++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/8a90d8b9/lens-cube/src/main/java/org/apache/lens/cube/parse/join/AutoJoinContext.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/join/AutoJoinContext.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/join/AutoJoinContext.java index f70cbe4..e14a898 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/join/AutoJoinContext.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/join/AutoJoinContext.java @@ -286,7 +286,7 @@ public class AutoJoinContext { } else { // if bridge clauses are already inited, this is a next table getting joined with bridge table // we will append a simple join clause - bridgeFromClause.append(joinTypeStr).append(" join "); + bridgeFromClause.append(" join "); bridgeFromClause.append(dimsToQuery.get(rel.getToTable()).getStorageString(toAlias)); bridgeFromClause.append(" on ").append(fromAlias).append(".") .append(rel.getFromColumn()).append(" = ").append(toAlias) http://git-wip-us.apache.org/repos/asf/lens/blob/8a90d8b9/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java index e66c39b..e8ad8ff 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBridgeTableQueries.java @@ -240,6 +240,37 @@ public class TestBridgeTableQueries extends TestQueryRewrite { } @Test + public void testBridgeTablesWithMultipleChainsWithJoinType() throws Exception { + Configuration conf = new Configuration(hConf); + conf.set(CubeQueryConfUtil.JOIN_TYPE_KEY, "LEFTOUTER"); + String query = "select usersports.name, xusersports.name, yusersports.name, sum(msr2) from basecube where " + + TWO_DAYS_RANGE; + String hqlQuery = rewrite(query, conf); + String expected = getExpectedQuery("basecube", "select usersports.name, xusersports.name, yusersports.name," + + " sum(basecube.msr2) FROM ", + " left outer join " + getDbName() + "c1_usertable userdim_1 on basecube.userid = userdim_1.id " + + " left outer join (select user_interests_1.user_id as user_id, collect_set(usersports.name) as name from " + + getDbName() + "c1_user_interests_tbl user_interests_1 join " + getDbName() + "c1_sports_tbl usersports on " + + "user_interests_1.sport_id = usersports.id group by user_interests_1.user_id) " + + "usersports on userdim_1.id = usersports.user_id" + + " left outer join " + getDbName() + "c1_usertable userdim_0 on basecube.yuserid = userdim_0.id " + + " left outer join (select user_interests_0.user_id as user_id,collect_set(yusersports.name) as name from " + + getDbName() + "c1_user_interests_tbl user_interests_0 join " + getDbName() + "c1_sports_tbl yusersports on " + + " user_interests_0.sport_id = yusersports.id group by user_interests_0.user_id) yusersports on userdim_0.id =" + + " yusersports.user_id left outer join " + getDbName() + + "c1_usertable userdim on basecube.xuserid = userdim.id" + + " left outer join (select user_interests.user_id as user_id,collect_set(xusersports.name) as name from " + + getDbName() + "c1_user_interests_tbl user_interests join " + getDbName() + "c1_sports_tbl xusersports" + + " on user_interests.sport_id = xusersports.id group by user_interests.user_id) xusersports on userdim.id = " + + " xusersports.user_id", null, "group by usersports.name, xusersports.name, yusersports.name", null, + getWhereForDailyAndHourly2days("basecube", "c1_testfact1_base")); + TestCubeRewriter.compareQueries(hqlQuery, expected); + // run with chain ref column + query = "select sports, xsports, ysports, sum(msr2) from basecube where " + TWO_DAYS_RANGE; + hqlQuery = rewrite(query, conf); + TestCubeRewriter.compareQueries(hqlQuery, expected); + } + @Test public void testBridgeTablesWithDimTablePartitioning() throws Exception { Configuration conf = new Configuration(hConf); conf.set(CubeQueryConfUtil.DRIVER_SUPPORTED_STORAGES, "C2");