You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2016/07/29 03:56:09 UTC
kylin git commit: KYLIN-1926 Loosen the constraint on FK-PK data type
check
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 <sh...@apache.org>
Authored: Fri Jul 29 11:55:47 2016 +0800
Committer: shaofengshi <sh...@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);
+ }
}
}