You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2015/05/15 07:22:46 UTC

[2/5] incubator-kylin git commit: KYLIN-739, Dimension as metrics does not work with PK-FK derived column

KYLIN-739, Dimension as metrics does not work with PK-FK derived column


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

Branch: refs/heads/0.6
Commit: ca6c7e227ed3689430aef7ae90c2d4d8b9307b35
Parents: 359e291
Author: Li, Yang <ya...@ebay.com>
Authored: Wed Apr 29 10:36:43 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Wed Apr 29 10:36:43 2015 +0800

----------------------------------------------------------------------
 .../kylinolap/query/routing/QueryRouter.java    |  2 +-
 query/src/test/resources/query/sql/query78.sql  |  1 +
 .../java/com/kylinolap/rest/DebugTomcat.java    | 40 +++++++++++++++-----
 .../com/kylinolap/storage/StorageContext.java   | 12 ------
 .../storage/hbase/HBaseStorageEngine.java       |  1 -
 5 files changed, 33 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ca6c7e22/query/src/main/java/com/kylinolap/query/routing/QueryRouter.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/com/kylinolap/query/routing/QueryRouter.java b/query/src/main/java/com/kylinolap/query/routing/QueryRouter.java
index 7745c2a..f786681 100644
--- a/query/src/main/java/com/kylinolap/query/routing/QueryRouter.java
+++ b/query/src/main/java/com/kylinolap/query/routing/QueryRouter.java
@@ -284,7 +284,7 @@ public class QueryRouter {
                 if (col != null) {
                     metricColumns.remove(col);
                     dimensionColumns.add(col);
-                    olapContext.storageContext.addOtherMandatoryColumns(col);
+                    olapContext.groupByColumns.add(col);
                 }
                 logger.info("Adjust OLAPContext for " + functionDesc);
             }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ca6c7e22/query/src/test/resources/query/sql/query78.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql/query78.sql b/query/src/test/resources/query/sql/query78.sql
new file mode 100644
index 0000000..3764593
--- /dev/null
+++ b/query/src/test/resources/query/sql/query78.sql
@@ -0,0 +1 @@
+select max(cal_dt) from test_kylin_fact

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ca6c7e22/server/src/main/java/com/kylinolap/rest/DebugTomcat.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/com/kylinolap/rest/DebugTomcat.java b/server/src/main/java/com/kylinolap/rest/DebugTomcat.java
index 1e79c7e..40e66e7 100644
--- a/server/src/main/java/com/kylinolap/rest/DebugTomcat.java
+++ b/server/src/main/java/com/kylinolap/rest/DebugTomcat.java
@@ -16,31 +16,54 @@
 package com.kylinolap.rest;
 
 import java.io.File;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.core.AprLifecycleListener;
 import org.apache.catalina.core.StandardServer;
 import org.apache.catalina.deploy.ErrorPage;
 import org.apache.catalina.startup.Tomcat;
+import org.apache.hadoop.util.Shell;
 
-import com.kylinolap.rest.util.ClasspathUtil;
+import com.kylinolap.common.KylinConfig;
+import com.kylinolap.common.util.ClasspathUtil;
 
 public class DebugTomcat {
 
     public static void main(String[] args) throws Exception {
-        if (args.length >= 1) {
-            System.setProperty("kylin.metadata.url", args[0]);
-        }
         int port = 7070;
-        if (args.length >= 2) {
-            port = Integer.parseInt(args[1]);
+        if (args.length >= 1) {
+            port = Integer.parseInt(args[0]);
         }
-
+        
+        // test_case_data/sandbox/ contains HDP 2.2 site xmls which is dev sandbox
         ClasspathUtil.addClasspath(new File("../examples/test_case_data/sandbox").getAbsolutePath());
+        System.setProperty(KylinConfig.KYLIN_CONF, "../examples/test_case_data/sandbox");
         System.setProperty("hdp.version", "2.2.0.0-2041"); // mapred-site.xml ref this
 
+        // workaround for job submission from win to linux -- https://issues.apache.org/jira/browse/MAPREDUCE-4052
+        if (Shell.WINDOWS) {
+            {
+                Field field = Shell.class.getDeclaredField("WINDOWS");
+                field.setAccessible(true);
+                Field modifiersField = Field.class.getDeclaredField("modifiers");
+                modifiersField.setAccessible(true);
+                modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+                field.set(null, false);
+            }
+            {
+                Field field = java.io.File.class.getDeclaredField("pathSeparator");
+                field.setAccessible(true);
+                Field modifiersField = Field.class.getDeclaredField("modifiers");
+                modifiersField.setAccessible(true);
+                modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+                field.set(null, ":");
+            }
+        }
+
+        System.setProperty("spring.profiles.active", "testing");
         String webBase = new File("../webapp/app").getAbsolutePath();
-//        String apiBase = new File("src/main/webapp").getAbsolutePath();
         if (new File(webBase, "WEB-INF").exists() == false) {
             throw new RuntimeException("In order to launch Kylin web app from IDE, please make a symblink from webapp/app/WEB-INF to server/src/main/webapp/WEB-INF");
         }
@@ -54,7 +77,6 @@ public class DebugTomcat {
         AprLifecycleListener listener = new AprLifecycleListener();
         server.addLifecycleListener(listener);
 
-//        tomcat.addWebapp("/kylin", apiBase);
         Context webContext = tomcat.addWebapp("/kylin", webBase);
         ErrorPage notFound = new ErrorPage();
         notFound.setErrorCode(404);

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ca6c7e22/storage/src/main/java/com/kylinolap/storage/StorageContext.java
----------------------------------------------------------------------
diff --git a/storage/src/main/java/com/kylinolap/storage/StorageContext.java b/storage/src/main/java/com/kylinolap/storage/StorageContext.java
index d4e01ca..79a997a 100644
--- a/storage/src/main/java/com/kylinolap/storage/StorageContext.java
+++ b/storage/src/main/java/com/kylinolap/storage/StorageContext.java
@@ -16,9 +16,7 @@
 package com.kylinolap.storage;
 
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
@@ -50,7 +48,6 @@ public class StorageContext {
     // To hint records shall be returned at most granular level, avoid aggregation (coprocessor) wherever possible.
     private boolean avoidAggregation;
     private boolean exactAggregation;
-    private Set<TblColRef> otherMandatoryColumns;
     private boolean enableLimit;
     private boolean enableCoprocessor;
 
@@ -70,7 +67,6 @@ public class StorageContext {
 
         this.avoidAggregation = false;
         this.exactAggregation = false;
-        this.otherMandatoryColumns = new HashSet<TblColRef>();
         this.enableLimit = false;
         this.enableCoprocessor = false;
 
@@ -193,14 +189,6 @@ public class StorageContext {
         return this.exactAggregation;
     }
     
-    public void addOtherMandatoryColumns(TblColRef col) {
-        this.otherMandatoryColumns.add(col);
-    }
-    
-    public Set<TblColRef> getOtherMandatoryColumns() {
-        return this.otherMandatoryColumns;
-    }
-    
     public void enableCoprocessor() {
         this.enableCoprocessor = true;
     }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ca6c7e22/storage/src/main/java/com/kylinolap/storage/hbase/HBaseStorageEngine.java
----------------------------------------------------------------------
diff --git a/storage/src/main/java/com/kylinolap/storage/hbase/HBaseStorageEngine.java b/storage/src/main/java/com/kylinolap/storage/hbase/HBaseStorageEngine.java
index b47ae5f..6f214eb 100644
--- a/storage/src/main/java/com/kylinolap/storage/hbase/HBaseStorageEngine.java
+++ b/storage/src/main/java/com/kylinolap/storage/hbase/HBaseStorageEngine.java
@@ -109,7 +109,6 @@ public class HBaseStorageEngine implements IStorageEngine {
         // - columns on non-evaluatable filter have to return
         // - columns on loosened filter (due to derived translation) have to return
         Set<TblColRef> groupsCopD = Sets.newHashSet(groupsD);
-        groupsCopD.addAll(context.getOtherMandatoryColumns()); // TODO: this is tricky, to generalize
         collectNonEvaluable(filter, groupsCopD);
         TupleFilter filterD = translateDerived(filter, groupsCopD);