You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by am...@apache.org on 2015/03/27 08:30:18 UTC

incubator-lens git commit: LENS-449 : Fix JoinResolver skipping some tables while pruning (amareshwari)

Repository: incubator-lens
Updated Branches:
  refs/heads/master e5bc9e9b7 -> c6c593c66


LENS-449 : Fix JoinResolver skipping some tables while pruning (amareshwari)


Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/c6c593c6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/c6c593c6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/c6c593c6

Branch: refs/heads/master
Commit: c6c593c669a2ae2364371f8fee45c39c66fd2871
Parents: e5bc9e9
Author: Amareshwari Sriramadasu <am...@apache.org>
Authored: Fri Mar 27 13:00:02 2015 +0530
Committer: Amareshwari Sriramadasu <am...@apache.org>
Committed: Fri Mar 27 13:00:02 2015 +0530

----------------------------------------------------------------------
 .../apache/lens/cube/parse/JoinResolver.java    |  1 -
 .../apache/lens/cube/parse/CubeTestSetup.java   |  8 ++++++++
 .../lens/cube/parse/TestJoinResolver.java       | 21 ++++++++++++++++++++
 3 files changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c6c593c6/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java
----------------------------------------------------------------------
diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java
index 7feb31b..32a4b85 100644
--- a/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java
+++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java
@@ -879,7 +879,6 @@ class JoinResolver implements ContextRewriter {
               + " not part of any join paths. Join columns:" + minCostClause.chainColumns.get(dim));
             cubeql.addDimPruningMsgs(dim, cdim.dimtable,
               CandidateTablePruneCause.noColumnPartOfAJoinPath(minCostClause.chainColumns.get(dim)));
-            break;
           }
         }
         if (cubeql.getCandidateDimTables().get(dim).size() == 0) {

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c6c593c6/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java
index c9ac651..7d08212 100644
--- a/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java
+++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java
@@ -1364,6 +1364,14 @@ public class CubeTestSetup {
     dimColumns.add(new FieldSchema("id", "int", "code"));
 
     client.createCubeDimensionTable(cityDim.getName(), dimName, dimColumns, 0L, dumpPeriods, dimProps, storageTables);
+
+    dimName = "citytable4";
+
+    dimColumns = new ArrayList<FieldSchema>();
+    dimColumns.add(new FieldSchema("id", "int", "code"));
+
+    client.createCubeDimensionTable(cityDim.getName(), dimName, dimColumns, 0L, dumpPeriods, dimProps, storageTables);
+
   }
 
   private void createTestDim2(CubeMetastoreClient client) throws HiveException {

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/c6c593c6/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java
index df594bd..0e5978e 100644
--- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java
+++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java
@@ -27,7 +27,9 @@ import org.apache.lens.cube.metadata.*;
 import org.apache.lens.cube.metadata.SchemaGraph.TableRelationship;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.parse.ParseException;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
@@ -705,4 +707,23 @@ public class TestJoinResolver extends TestQueryRewrite {
       getWhereForDailyAndHourly2days("testcube", "c1_summary1"));
     TestCubeRewriter.compareQueries(expected, hqlQuery);
   }
+
+  @Test
+  public void testChainsWithMultipleStorage() throws ParseException, HiveException {
+    Configuration conf = new Configuration(hconf);
+    conf.unset(CubeQueryConfUtil.DRIVER_SUPPORTED_STORAGES); // supports all storages
+    String dimOnlyQuery = "select testDim2.name, testDim2.cityStateCapital FROM testDim2 where " + TWO_DAYS_RANGE;
+    CubeQueryRewriter driver = new CubeQueryRewriter(conf, hconf);
+    CubeQueryContext rewrittenQuery = driver.rewrite(dimOnlyQuery);
+    rewrittenQuery.toHQL();
+    Dimension citydim = CubeMetastoreClient.getInstance(hconf).getDimension("citydim");
+    Set<String> cdimTables = new HashSet<String>();
+    for (CandidateDim cdim : rewrittenQuery.getCandidateDims().get(citydim)) {
+      cdimTables.add(cdim.getName());
+    }
+    Assert.assertTrue(cdimTables.contains("citytable"));
+    Assert.assertTrue(cdimTables.contains("citytable2"));
+    Assert.assertFalse(cdimTables.contains("citytable3"));
+    Assert.assertFalse(cdimTables.contains("citytable4"));
+  }
 }