Repository: kylin Updated Branches: refs/heads/master 62f838dd7 -> 5e4f17362
KYLIN-1926 Loosen the constraint on FK-PK data type check Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/5e4f1736 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/5e4f1736 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/5e4f1736 Branch: refs/heads/master Commit: 5e4f173625a4e003b840632b99b48cab846fcfe8 Parents: 62f838d Author: shaofengshi <shaofeng...@apache.org> Authored: Fri Jul 29 11:55:47 2016 +0800 Committer: shaofengshi <shaofeng...@apache.org> Committed: Fri Jul 29 11:55:47 2016 +0800 ---------------------------------------------------------------------- .../java/org/apache/kylin/common/KylinConfigBase.java | 4 ++++ .../org/apache/kylin/metadata/model/DataModelDesc.java | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/5e4f1736/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index 01910d7..f51dce6 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -789,4 +789,8 @@ abstract public class KylinConfigBase implements Serializable { public void setAppendDictCacheSize(int cacheSize) { setProperty("kylin.dict.append.cache.size", String.valueOf(cacheSize)); } + + public boolean getTableJoinTypeCheck() { + return Boolean.valueOf(this.getOptional("kylin.table.join.strong.check", "true")); + } } http://git-wip-us.apache.org/repos/asf/kylin/blob/5e4f1736/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java index 21d6d22..7e8a41b 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.Map; import org.apache.commons.lang.ArrayUtils; +import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.persistence.ResourceStore; import org.apache.kylin.common.persistence.RootPersistentEntity; import org.apache.kylin.common.util.StringUtil; @@ -36,11 +37,13 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @SuppressWarnings("serial") @JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE) public class DataModelDesc extends RootPersistentEntity { - + private static final Logger logger = LoggerFactory.getLogger(DataModelDesc.class); public static enum RealizationCapacity { SMALL, MEDIUM, LARGE } @@ -292,7 +295,13 @@ public class DataModelDesc extends RootPersistentEntity { } for (int i = 0; i < fkCols.length; i++) { if (!fkCols[i].getDatatype().equals(pkCols[i].getDatatype())) { - throw new IllegalStateException("Primary key " + lookup.getTable() + "." + pkCols[i].getName() + "." + pkCols[i].getDatatype() + " are not consistent with Foreign key " + this.getFactTable() + "." + fkCols[i].getName() + "." + fkCols[i].getDatatype()); + final KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv(); + final String msg = "Primary key " + lookup.getTable() + "." + pkCols[i].getName() + "." + pkCols[i].getDatatype() + " are not consistent with Foreign key " + this.getFactTable() + "." + fkCols[i].getName() + "." + fkCols[i].getDatatype(); + if (kylinConfig.getTableJoinTypeCheck() == true) { + throw new IllegalStateException(msg); + } else { + logger.warn(msg); + } } }