Revert "#1276 loose global dict column limit" This reverts commit e6f58d1b8129d3ff024e6cfc1462dccbb65a27d8.
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/625e706b Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/625e706b Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/625e706b Branch: refs/heads/2.1.x Commit: 625e706b73da56d5f4d303fad1d4c17fd769b96f Parents: 68f2fc0 Author: Roger Shi <rogershijich...@hotmail.com> Authored: Fri Jul 28 13:39:09 2017 +0800 Committer: Roger Shi <rogershijich...@hotmail.com> Committed: Fri Jul 28 15:19:10 2017 +0800 ---------------------------------------------------------------------- .../kylin/cube/model/validation/rule/DictionaryRule.java | 7 +++++++ .../cube/model/validation/rule/DictionaryRuleTest.java | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/625e706b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java index 548586f..8da3ca0 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/DictionaryRule.java @@ -29,6 +29,7 @@ import org.apache.kylin.cube.model.DictionaryDesc; import org.apache.kylin.cube.model.validation.IValidatorRule; import org.apache.kylin.cube.model.validation.ResultLevel; import org.apache.kylin.cube.model.validation.ValidateContext; +import org.apache.kylin.dict.GlobalDictionaryBuilder; import org.apache.kylin.metadata.model.TblColRef; /** @@ -45,6 +46,7 @@ public class DictionaryRule implements IValidatorRule<CubeDesc> { static final String ERROR_REUSE_BUILDER_BOTH_SET = "REUSE and BUILDER both set on dictionary for column: "; static final String ERROR_REUSE_BUILDER_BOTH_EMPTY = "REUSE and BUILDER both empty on dictionary for column: "; static final String ERROR_TRANSITIVE_REUSE = "Transitive REUSE is not allowed for dictionary: "; + static final String ERROR_GLOBAL_DICTIONNARY_ONLY_MEASURE = "Global dictionary couldn't be used for dimension column: "; @Override public void validate(CubeDesc cubeDesc, ValidateContext context) { @@ -80,6 +82,11 @@ public class DictionaryRule implements IValidatorRule<CubeDesc> { return; } + if (StringUtils.isNotEmpty(builderClass) && builderClass.equalsIgnoreCase(GlobalDictionaryBuilder.class.getName()) && dimensionColumns.contains(dictCol)) { + context.addResult(ResultLevel.ERROR, ERROR_GLOBAL_DICTIONNARY_ONLY_MEASURE + dictCol); + return; + } + if (reuseCol != null) { reuseDictionaries.add(dictDesc); } else { http://git-wip-us.apache.org/repos/asf/kylin/blob/625e706b/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java ---------------------------------------------------------------------- diff --git a/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java b/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java index 0f11f4b..0dd9b76 100644 --- a/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java +++ b/core-cube/src/test/java/org/apache/kylin/cube/model/validation/rule/DictionaryRuleTest.java @@ -19,6 +19,7 @@ package org.apache.kylin.cube.model.validation.rule; import static org.apache.kylin.cube.model.validation.rule.DictionaryRule.ERROR_DUPLICATE_DICTIONARY_COLUMN; +import static org.apache.kylin.cube.model.validation.rule.DictionaryRule.ERROR_GLOBAL_DICTIONNARY_ONLY_MEASURE; import static org.apache.kylin.cube.model.validation.rule.DictionaryRule.ERROR_REUSE_BUILDER_BOTH_EMPTY; import static org.apache.kylin.cube.model.validation.rule.DictionaryRule.ERROR_REUSE_BUILDER_BOTH_SET; import static org.apache.kylin.cube.model.validation.rule.DictionaryRule.ERROR_TRANSITIVE_REUSE; @@ -29,6 +30,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.util.List; +import com.google.common.collect.Lists; import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.common.util.LocalFileMetadataTestCase; @@ -40,8 +42,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import com.google.common.collect.Lists; - public class DictionaryRuleTest extends LocalFileMetadataTestCase { private static KylinConfig config; @@ -96,6 +96,12 @@ public class DictionaryRuleTest extends LocalFileMetadataTestCase { } @Test + public void testBadDesc5() throws IOException { + testDictionaryDesc(ERROR_GLOBAL_DICTIONNARY_ONLY_MEASURE, + DictionaryDesc.create("CATEG_LVL2_NAME", null, GlobalDictionaryBuilder.class.getName())); + } + + @Test public void testGoodDesc2() throws IOException { testDictionaryDesc(null, DictionaryDesc.create("SELLER_ID", null, GlobalDictionaryBuilder.class.getName())); }