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);
+                    }
                 }
             }