You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2015/01/31 13:01:52 UTC

[25/50] incubator-kylin git commit: KYLIN-540, always use FK instead of PK as dimension columns

KYLIN-540, always use FK instead of PK as dimension columns


Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/220647c6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/220647c6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/220647c6

Branch: refs/heads/inverted-index
Commit: 220647c6293b22acac72dc91269c55aebc47e784
Parents: 850d4b5
Author: Li, Yang <ya...@ebay.com>
Authored: Wed Jan 28 17:25:24 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Wed Jan 28 17:25:24 2015 +0800

----------------------------------------------------------------------
 .../java/com/kylinolap/common/util/StringUtil.java   | 11 -----------
 .../main/java/com/kylinolap/cube/model/CubeDesc.java | 15 +++++++++++----
 2 files changed, 11 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/220647c6/common/src/main/java/com/kylinolap/common/util/StringUtil.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/com/kylinolap/common/util/StringUtil.java b/common/src/main/java/com/kylinolap/common/util/StringUtil.java
index 89b6181..006f3b7 100644
--- a/common/src/main/java/com/kylinolap/common/util/StringUtil.java
+++ b/common/src/main/java/com/kylinolap/common/util/StringUtil.java
@@ -18,8 +18,6 @@ package com.kylinolap.common.util;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import org.apache.commons.lang.StringUtils;
-
 /**
  * Created with IntelliJ IDEA. User: lukhan Date: 12/2/13 Time: 11:43 AM To
  * change this template use File | Settings | File Templates.
@@ -99,13 +97,4 @@ public class StringUtil {
             return s1.compareTo(s2) > 0 ? s1 : s2;
     }
 
-    public static boolean contains(String[] haystack, String needle) {
-        if (haystack != null) {
-            for (int i = 0, n = haystack.length; i < n; i++) {
-                if (StringUtils.equals(haystack[i], needle))
-                    return true;
-            }
-        }
-        return false;
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/220647c6/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java
----------------------------------------------------------------------
diff --git a/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java b/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java
index 219f30a..b099f9a 100644
--- a/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java
+++ b/cube/src/main/java/com/kylinolap/cube/model/CubeDesc.java
@@ -46,7 +46,6 @@ import com.kylinolap.common.persistence.RootPersistentEntity;
 import com.kylinolap.common.util.Array;
 import com.kylinolap.common.util.CaseInsensitiveStringMap;
 import com.kylinolap.common.util.JsonUtil;
-import com.kylinolap.common.util.StringUtil;
 import com.kylinolap.metadata.MetadataConstances;
 import com.kylinolap.metadata.MetadataManager;
 import com.kylinolap.metadata.model.ColumnDesc;
@@ -467,7 +466,7 @@ public class CubeDesc extends RootPersistentEntity {
             String[] colStrs = dim.getColumn();
             
             // when column is omitted, special case
-            if (colStrs == null && dim.isDerived() || StringUtil.contains(colStrs, "{FK}")) {
+            if (colStrs == null && dim.isDerived() || ArrayUtils.contains(colStrs, "{FK}")) {
                 for (TblColRef col : join.getForeignKeyColumns()) {
                     dimCols.add(initDimensionColRef(col));
                 }
@@ -572,9 +571,17 @@ public class CubeDesc extends RootPersistentEntity {
         if (col == null)
             throw new IllegalArgumentException("No column '" + colName + "' found in table " + table);
         
-        // always use FK instead PK, FK could be shared to join more than one lookup tables
-
         TblColRef ref = new TblColRef(col);
+        
+        // always use FK instead PK, FK could be shared by more than one lookup tables
+        JoinDesc join = dim.getJoin();
+        if (join != null) {
+            int idx = ArrayUtils.indexOf(join.getPrimaryKeyColumns(), ref);
+            if (idx >= 0) {
+                ref = join.getForeignKeyColumns()[idx];
+            }
+        }
+
         return initDimensionColRef(ref);
     }