Repository: lens
Updated Branches:
  refs/heads/master e6f1ce0e2 -> b3352997c


LENS-1463 : Valid Columns addition in Virtual Fact


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

Branch: refs/heads/master
Commit: b3352997ca851b6a68e7e0d57caeb514d7e134d3
Parents: e6f1ce0
Author: Rajitha R <rajitha....@gmail.com>
Authored: Mon Aug 28 16:31:33 2017 +0530
Committer: Amareshwari Sriramadasu <amareshw...@apache.org>
Committed: Mon Aug 28 16:31:33 2017 +0530

----------------------------------------------------------------------
 .../lens/cube/metadata/CubeVirtualFactTable.java       |  9 ++++++++-
 .../apache/lens/cube/parse/TestVirtualFactQueries.java | 13 +++++++++++++
 .../src/test/resources/schema/cubes/base/testcube2.xml |  2 ++
 .../src/test/resources/schema/facts/testfact9_base.xml |  3 ++-
 .../resources/schema/facts/virtual/virtualfact.xml     |  2 ++
 5 files changed, 27 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/b3352997/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
 
b/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
index 1fc74b0..ce2a1a6 100644
--- 
a/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
+++ 
b/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeVirtualFactTable.java
@@ -92,7 +92,14 @@ public class CubeVirtualFactTable extends AbstractCubeTable 
implements FactTable
 
   @Override
   public Set<String> getValidColumns() {
-    return this.sourceCubeFactTable.getValidColumns();
+    String validColsStr =
+      MetastoreUtil.getNamedStringValue(this.getProperties(), 
MetastoreUtil.getValidColumnsKey(getName()));
+    if (validColsStr == null) {
+      return this.sourceCubeFactTable.getValidColumns();
+    } else {
+      return new 
HashSet<>(Arrays.asList(StringUtils.split(validColsStr.toLowerCase(),
+        ',')));
+    }
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/lens/blob/b3352997/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
index 4bcb376..94e836c 100644
--- 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
+++ 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestVirtualFactQueries.java
@@ -25,8 +25,11 @@ import static 
org.apache.lens.cube.parse.CubeQueryConfUtil.DISABLE_AGGREGATE_RES
 import static org.apache.lens.cube.parse.CubeTestSetup.*;
 
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.fail;
 
+import org.apache.lens.cube.error.LensCubeErrorCode;
 import org.apache.lens.server.api.LensServerAPITestUtil;
+import org.apache.lens.server.api.error.LensException;
 
 import org.apache.hadoop.conf.Configuration;
 
@@ -119,5 +122,15 @@ public class TestVirtualFactQueries extends 
TestQueryRewrite {
 
   }
 
+  @Test
+  public void testVirtualFactValidColumns() throws Exception {
+
+    try {
+      rewriteCtx("select SUM(msr4) from virtualCube where " + TWO_DAYS_RANGE, 
getConfWithStorages("C1"));
+      fail("Rewrite should not succeed here");
+    } catch (LensException exc) {
+      assertEquals(exc.getErrorCode(), 
LensCubeErrorCode.COLUMN_NOT_FOUND.getLensErrorInfo().getErrorCode());
+    }
+  }
 }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/b3352997/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml 
b/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml
index 9740e00..237e85a 100644
--- a/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml
+++ b/lens-cube/src/test/resources/schema/cubes/base/testcube2.xml
@@ -27,5 +27,7 @@
   <measures>
     <measure _type="FLOAT" default_aggr="SUM" unit="RS" name="msr1" 
display_string="Measure1"
              description="first measure"/>
+    <measure _type="FLOAT" default_aggr="SUM" unit="RS" name="msr4" 
display_string="Measure4"
+             description="fourth measure"/>
   </measures>
 </x_base_cube>

http://git-wip-us.apache.org/repos/asf/lens/blob/b3352997/lens-cube/src/test/resources/schema/facts/testfact9_base.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/testfact9_base.xml 
b/lens-cube/src/test/resources/schema/facts/testfact9_base.xml
index 56e5746..9c94fe2 100644
--- a/lens-cube/src/test/resources/schema/facts/testfact9_base.xml
+++ b/lens-cube/src/test/resources/schema/facts/testfact9_base.xml
@@ -22,7 +22,8 @@
 <x_fact_table name="testfact9_base" cube_name="testcube2" weight="5.0" 
xmlns="uri:lens:cube:0.1">
   <columns>
 
-    <column name="msr1" _type="float" comment="second measure"/>
+    <column name="msr1" _type="float" comment="first measure"/>
+    <column name="msr4" _type="float" comment="fourth measure"/>
   </columns>
   <properties>
     <property name="cube.fact.testfact.cubename" value="testCube"/>

http://git-wip-us.apache.org/repos/asf/lens/blob/b3352997/lens-cube/src/test/resources/schema/facts/virtual/virtualfact.xml
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/resources/schema/facts/virtual/virtualfact.xml 
b/lens-cube/src/test/resources/schema/facts/virtual/virtualfact.xml
index 13f6773..a7daae5 100644
--- a/lens-cube/src/test/resources/schema/facts/virtual/virtualfact.xml
+++ b/lens-cube/src/test/resources/schema/facts/virtual/virtualfact.xml
@@ -23,5 +23,7 @@
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="uri:lens:cube:0.1 cube-0.1.xsd ">
   <properties>
     <property name="cube.fact.query.where.filter" value=" dim1 = 10 "/>
+    <property name="cube.fact.virtualfact1.valid.columns"
+              value="msr1"/>
   </properties>
 </x_virtual_fact_table>

Reply via email to