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"));
+ }
}