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 2016/11/29 12:57:38 UTC

kylin git commit: KYLIN-1875 Normalize table and column names in JSON [Forced Update!]

Repository: kylin
Updated Branches:
  refs/heads/KYLIN-1875 525a10278 -> cdc618006 (forced update)


KYLIN-1875 Normalize table and column names in JSON


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

Branch: refs/heads/KYLIN-1875
Commit: cdc618006ee63bfebe41584c7c28e30e54fed4b7
Parents: bda8787
Author: Li Yang <li...@apache.org>
Authored: Tue Nov 29 20:32:04 2016 +0800
Committer: Yang Li <li...@apache.org>
Committed: Tue Nov 29 20:57:23 2016 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/cube/model/CubeDesc.java    |  2 ++
 .../apache/kylin/cube/model/DimensionDesc.java   | 19 ++++++++++---------
 .../kylin/metadata/model/DataModelDesc.java      | 13 ++++++++++++-
 .../kylin/metadata/model/FunctionDesc.java       |  5 +----
 .../kylin/metadata/model/ModelDimensionDesc.java | 19 +++++++++++++++----
 .../kylin/metadata/model/PartitionDesc.java      |  4 ++--
 6 files changed, 42 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/cdc61800/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
index 47063d0..fa4da92 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java
@@ -530,6 +530,7 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware {
         initMeasureColumns();
 
         rowkey.init(this);
+        
         validateAggregationGroups(); // check if aggregation group is valid
         for (AggregationGroup agg : this.aggregationGroups) {
             agg.init(this, rowkey);
@@ -818,6 +819,7 @@ public class CubeDesc extends RootPersistentEntity implements IEngineAware {
         return col;
     }
 
+    @SuppressWarnings("deprecation")
     private void initMeasureColumns() {
         if (measures == null || measures.isEmpty()) {
             return;

http://git-wip-us.apache.org/repos/asf/kylin/blob/cdc61800/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java
index 1106103..cd75228 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java
@@ -21,7 +21,6 @@ package org.apache.kylin.cube.model;
 import java.util.Arrays;
 
 import org.apache.commons.lang.NotImplementedException;
-import org.apache.kylin.common.util.StringUtil;
 import org.apache.kylin.metadata.model.DataModelDesc;
 import org.apache.kylin.metadata.model.JoinDesc;
 import org.apache.kylin.metadata.model.JoinTableDesc;
@@ -54,16 +53,13 @@ public class DimensionDesc {
     private TblColRef[] columnRefs;
 
     public void init(CubeDesc cubeDesc) {
+        DataModelDesc model = cubeDesc.getModel();
+        
         if (name != null)
             name = name.toUpperCase();
 
-        if (table != null)
-            table = table.toUpperCase();
-
-        DataModelDesc model = cubeDesc.getModel();
-        tableRef = model.findTable(this.getTable());
-        if (tableRef == null)
-            throw new IllegalStateException("Can't find table " + table + " for dimension " + name);
+        tableRef = model.findTable(table);
+        table = tableRef.getAlias();
 
         join = null;
         for (JoinTableDesc joinTable : model.getJoinTables()) {
@@ -73,11 +69,16 @@ public class DimensionDesc {
             }
         }
 
+        if (column != null && !"{FK}".equals(column)) {
+            column = model.findColumn(table, column).getName();
+        }
         if (derived != null && derived.length == 0) {
             derived = null;
         }
         if (derived != null) {
-            StringUtil.toUpperCaseArray(derived, derived);
+            for (int i = 0; i < derived.length; i++) {
+                derived[i] = model.findColumn(table, derived[i]).getName();
+            }
         }
         if (derived != null && join == null) {
             throw new IllegalStateException("Derived can only be defined on lookup table, cube " + cubeDesc + ", " + this);

http://git-wip-us.apache.org/repos/asf/kylin/blob/cdc61800/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 d917571..898ff74 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
@@ -282,7 +282,7 @@ public class DataModelDesc extends RootPersistentEntity {
         initTableAlias(tables);
         initJoinColumns();
         initJoinsTree();
-        ModelDimensionDesc.capicalizeStrings(dimensions);
+        initDimensionsAndMetrics();
         initPartitionDesc();
     }
 
@@ -354,6 +354,15 @@ public class DataModelDesc extends RootPersistentEntity {
         }
     }
 
+    private void initDimensionsAndMetrics() {
+        for (ModelDimensionDesc dim : dimensions) {
+            dim.init(this);
+        }
+        for (int i = 0; i < metrics.length; i++) {
+            metrics[i] = findColumn(metrics[i]).getIdentity();
+        }
+    }
+
     private void initPartitionDesc() {
         if (this.partitionDesc != null)
             this.partitionDesc.init(this);
@@ -381,6 +390,7 @@ public class DataModelDesc extends RootPersistentEntity {
                 if (col == null || col.getTableRef().equals(dimTable) == false) {
                     throw new IllegalStateException("Can't find column " + pks[i] + " in table " + dimTable.getTableIdentity());
                 }
+                pks[i] = col.getIdentity();
                 pkCols[i] = col;
             }
             join.setPrimaryKeyColumns(pkCols);
@@ -393,6 +403,7 @@ public class DataModelDesc extends RootPersistentEntity {
                 if (col == null) {
                     throw new IllegalStateException("Can't find column " + fks[i] + " in table " + this.getRootFactTable());
                 }
+                fks[i] = col.getIdentity();
                 fkCols[i] = col;
             }
             join.setForeignKeyColumns(fkCols);

http://git-wip-us.apache.org/repos/asf/kylin/blob/cdc61800/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
index ae7f805..5818791 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
@@ -77,14 +77,11 @@ public class FunctionDesc {
         expression = expression.toUpperCase();
         returnDataType = DataType.getType(returnType);
 
-        for (ParameterDesc p = parameter; p != null; p = p.getNextParameter()) {
-            p.setValue(p.getValue().toUpperCase());
-        }
-
         ArrayList<TblColRef> colRefs = Lists.newArrayList();
         for (ParameterDesc p = parameter; p != null; p = p.getNextParameter()) {
             if (p.isColumnType()) {
                 TblColRef colRef = model.findColumn(p.getValue());
+                p.setValue(colRef.getIdentity());
                 colRefs.add(colRef);
             }
         }

http://git-wip-us.apache.org/repos/asf/kylin/blob/cdc61800/core-metadata/src/main/java/org/apache/kylin/metadata/model/ModelDimensionDesc.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ModelDimensionDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ModelDimensionDesc.java
index d196155..6460f71 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ModelDimensionDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ModelDimensionDesc.java
@@ -50,13 +50,24 @@ public class ModelDimensionDesc {
         this.columns = columns;
     }
 
+    void init(DataModelDesc model) {
+        table = table.toUpperCase();
+        if (columns != null) {
+            StringUtil.toUpperCaseArray(columns, columns);
+        }
+        
+        if (model != null) {
+            table = model.findTable(table).getAlias();
+            for (int i = 0; i < columns.length; i++) {
+                columns[i] = model.findColumn(table, columns[i]).getName();
+            }
+        }
+    }
+
     public static void capicalizeStrings(List<ModelDimensionDesc> dimensions) {
         if (dimensions != null) {
             for (ModelDimensionDesc modelDimensionDesc : dimensions) {
-                modelDimensionDesc.setTable(modelDimensionDesc.getTable().toUpperCase());
-                if (modelDimensionDesc.getColumns() != null) {
-                    StringUtil.toUpperCaseArray(modelDimensionDesc.getColumns(), modelDimensionDesc.getColumns());
-                }
+                modelDimensionDesc.init(null);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/cdc61800/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
index 0261f41..9925990 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
@@ -66,11 +66,11 @@ public class PartitionDesc {
         if (StringUtils.isEmpty(partitionDateColumn))
             return;
 
-        partitionDateColumn = partitionDateColumn.toUpperCase();
         partitionDateColumnRef = model.findColumn(partitionDateColumn);
+        partitionDateColumn = partitionDateColumnRef.getIdentity();
         if (StringUtils.isBlank(partitionTimeColumn) == false) {
-            partitionTimeColumn = partitionTimeColumn.toUpperCase();
             partitionTimeColumnRef = model.findColumn(partitionTimeColumn);
+            partitionTimeColumn = partitionTimeColumnRef.getIdentity();
         }
         partitionConditionBuilder = (IPartitionConditionBuilder) ClassUtil.newInstance(partitionConditionBuilderClz);
     }