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>