[41/50] [abbrv] kylin git commit: KYLIN-2603 enable GTAggregateScanner when there is having filter

2017-05-24 Thread kangkaisen
KYLIN-2603 enable GTAggregateScanner when there is having filter


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

Branch: refs/heads/KYLIN-2606
Commit: 0e44a195b5b2a0074896ffae0636b82a1d7c1355
Parents: e1bc72e
Author: Li Yang 
Authored: Thu May 11 17:26:10 2017 +0800
Committer: hongbin ma 
Committed: Tue May 23 20:18:17 2017 +0800

--
 .../src/main/java/org/apache/kylin/gridtable/GTScanRequest.java| 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/0e44a195/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java 
b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java
index 9b6b2a6..ffaa8bd 100644
--- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java
+++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java
@@ -195,7 +195,7 @@ public class GTScanRequest {
 return new EmptyGTScanner();
 }
 
-if (!this.isAllowStorageAggregation()) {
+if (!this.isAllowStorageAggregation() && havingFilterPushDown == 
null) {
 logger.info("pre aggregation is not beneficial, skip it");
 } else if (this.hasAggregation()) {
 logger.info("pre aggregating results before returning");



[02/50] [abbrv] kylin git commit: KYLIN-2619 Use newCachedThreadPool instead of newFixedThreadPool in Broadcaster

2017-05-24 Thread kangkaisen
KYLIN-2619 Use newCachedThreadPool instead of newFixedThreadPool in Broadcaster


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

Branch: refs/heads/KYLIN-2606
Commit: 1c3ed36f7dcf2152b17966bb69dd3211ce4e8aba
Parents: 1c80c29
Author: gaodayue 
Authored: Sat May 6 05:21:22 2017 +0800
Committer: kangkaisen 
Committed: Mon May 15 16:02:01 2017 +0800

--
 .../java/org/apache/kylin/common/restclient/RestClient.java   | 4 
 .../java/org/apache/kylin/metadata/cachesync/Broadcaster.java | 7 +--
 2 files changed, 9 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/1c3ed36f/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java 
b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
index 33a4e7a..470386b 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
@@ -287,4 +287,8 @@ public class RestClient {
 return result.toString();
 }
 
+@Override
+public String toString() {
+return String.format("RestClient(%s:%d)", host, port);
+}
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/1c3ed36f/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
index 1394f7b..e787dfd 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
@@ -35,6 +35,7 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.restclient.RestClient;
 import org.apache.kylin.common.util.DaemonThreadFactory;
+import org.apache.kylin.common.util.SetThreadName;
 import org.apache.kylin.metadata.project.ProjectManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -116,7 +117,7 @@ public class Broadcaster {
 for (String node : config.getRestServers()) {
 restClients.add(new RestClient(node));
 }
-final ExecutorService wipingCachePool = 
Executors.newFixedThreadPool(restClients.size(), new DaemonThreadFactory());
+final ExecutorService wipingCachePool = 
Executors.newCachedThreadPool(new DaemonThreadFactory());
 while (true) {
 try {
 final BroadcastEvent broadcastEvent = 
broadcastEvents.takeFirst();
@@ -125,8 +126,10 @@ public class Broadcaster {
 wipingCachePool.execute(new Runnable() {
 @Override
 public void run() {
-try {
+try (SetThreadName ignored = new 
SetThreadName("CacheWiper %s %s", restClient, broadcastEvent)) {
+logger.info("{} wipe cache {}", 
restClient, broadcastEvent);
 
restClient.wipeCache(broadcastEvent.getEntity(), broadcastEvent.getEvent(), 
broadcastEvent.getCacheKey());
+logger.info("{} wipe cache {} 
success", restClient, broadcastEvent);
 } catch (IOException e) {
 logger.warn("Thread failed during wipe 
cache at " + broadcastEvent, e);
 }



[18/50] [abbrv] kylin git commit: minor, more stable ITZookeeperDistributedLockTest

2017-05-24 Thread kangkaisen
minor, more stable ITZookeeperDistributedLockTest


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

Branch: refs/heads/KYLIN-2606
Commit: fd3bfedb50f488d6679b9a01bc17e214622b8838
Parents: 0bdd1c2
Author: Yang Li 
Authored: Sat May 20 14:00:06 2017 +0800
Committer: Yang Li 
Committed: Sat May 20 14:00:06 2017 +0800

--
 .../kylin/storage/hbase/ITZookeeperDistributedLockTest.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/fd3bfedb/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
--
diff --git 
a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
 
b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
index 8460cb9..48d6736 100644
--- 
a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
+++ 
b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
@@ -113,12 +113,12 @@ public class ITZookeeperDistributedLockTest extends 
HBaseMetadataTestCase {
 new Thread() {
 @Override
 public void run() {
-d.lock(path, 1);
+d.lock(path, 15000);
 }
 }.start();
 c.unlock(path);
 
-Thread.sleep(1);
+Thread.sleep(2);
 
 assertTrue(c.isLocked(path));
 assertEquals(d.getClient(), d.peekLock(path));



[30/50] [abbrv] kylin git commit: minor, apply first found hive_lib_dir

2017-05-24 Thread kangkaisen
minor, apply first found hive_lib_dir


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

Branch: refs/heads/KYLIN-2606
Commit: 8cd807f778eeafbb54effb0dd1c7ab552e68c730
Parents: 11a0b57
Author: Cheng Wang 
Authored: Mon May 22 17:03:45 2017 +0800
Committer: 成 
Committed: Tue May 23 11:30:25 2017 +0800

--
 build/bin/find-hive-dependency.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/8cd807f7/build/bin/find-hive-dependency.sh
--
diff --git a/build/bin/find-hive-dependency.sh 
b/build/bin/find-hive-dependency.sh
index 8ebdfbd..6f28fd1 100644
--- a/build/bin/find-hive-dependency.sh
+++ b/build/bin/find-hive-dependency.sh
@@ -46,7 +46,8 @@ fi
 for data in ${arr[@]}
 do
 result=`echo $data | grep -e 'hive-exec[a-z0-9A-Z\.-]*.jar'`
-if [ $result ]
+# In some cases there are more than one lib dirs, only the first one will 
be applied.
+if [ $result ] && [ -z "$hive_exec_path" ]
 then
 hive_exec_path=$data
 fi



[19/50] [abbrv] kylin git commit: KYLIN-2624 pass IT

2017-05-24 Thread kangkaisen
KYLIN-2624 pass IT


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

Branch: refs/heads/KYLIN-2606
Commit: 1b864f04e3fbf50c08978c2f8533ead4ca9784c6
Parents: d21c817
Author: Yang Li 
Authored: Sat May 20 14:14:43 2017 +0800
Committer: hongbin ma 
Committed: Sat May 20 14:19:07 2017 +0800

--
 examples/test_case_data/localmeta/UUID  |   1 +
 .../kylin/job/BaseTestDistributedScheduler.java |   2 +
 .../hbase/ITZookeeperDistributedLockTest.java   | 257 +++
 .../hbase/util/ZookeeperDistributedLock.java|  11 +-
 .../util/ITZookeeperDistributedLockTest.java| 254 --
 5 files changed, 268 insertions(+), 257 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/1b864f04/examples/test_case_data/localmeta/UUID
--
diff --git a/examples/test_case_data/localmeta/UUID 
b/examples/test_case_data/localmeta/UUID
new file mode 100644
index 000..e3f5e6b
--- /dev/null
+++ b/examples/test_case_data/localmeta/UUID
@@ -0,0 +1 @@
+$3591078f-9401-481a-a233-e7755c1142d0
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/1b864f04/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java
--
diff --git 
a/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java 
b/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java
index 6343dfa..1ea6507 100644
--- 
a/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java
+++ 
b/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java
@@ -113,6 +113,8 @@ public class BaseTestDistributedScheduler extends 
HBaseMetadataTestCase {
 
 @AfterClass
 public static void after() throws Exception {
+jobLock1.purgeLocks("");
+
 if (scheduler1 != null) {
 scheduler1.shutdown();
 scheduler1 = null;

http://git-wip-us.apache.org/repos/asf/kylin/blob/1b864f04/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
--
diff --git 
a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
 
b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
new file mode 100644
index 000..48d6736
--- /dev/null
+++ 
b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
@@ -0,0 +1,257 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package org.apache.kylin.storage.hbase;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.util.Random;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.kylin.common.lock.DistributedLock;
+import org.apache.kylin.common.lock.DistributedLock.Watcher;
+import org.apache.kylin.common.util.HBaseMetadataTestCase;
+import org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ITZookeeperDistributedLockTest extends HBaseMetadataTestCase {
+private static final Logger logger = 
LoggerFactory.getLogger(ITZookeeperDistributedLockTest.class);
+private static final String ZK_PFX = "/test/ZookeeperDistributedLockTest/" 
+ new Random().nextInt(1000);
+
+static ZookeeperDistributedLock.Factory factory;
+
+@BeforeClass
+public static void setup() throws Exception {
+

[22/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention

2017-05-24 Thread kangkaisen
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/service/CubeServiceV2.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/CubeServiceV2.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/CubeServiceV2.java
new file mode 100644
index 000..2fae789
--- /dev/null
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/CubeServiceV2.java
@@ -0,0 +1,497 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package org.apache.kylin.rest.service;
+
+import static org.apache.kylin.cube.model.CubeDesc.STATUS_DRAFT;
+import static 
org.apache.kylin.rest.controller2.CubeControllerV2.VALID_CUBENAME;
+
+import java.io.IOException;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.kylin.cube.CubeInstance;
+import org.apache.kylin.cube.CubeManager;
+import org.apache.kylin.cube.CubeSegment;
+import org.apache.kylin.cube.CubeUpdate;
+import org.apache.kylin.cube.cuboid.CuboidCLI;
+import org.apache.kylin.cube.model.CubeDesc;
+import org.apache.kylin.engine.mr.CubingJob;
+import org.apache.kylin.job.exception.JobException;
+import org.apache.kylin.job.execution.ExecutableState;
+import org.apache.kylin.metadata.model.DataModelDesc;
+import org.apache.kylin.metadata.model.SegmentStatusEnum;
+import org.apache.kylin.metadata.project.ProjectInstance;
+import org.apache.kylin.metadata.project.ProjectManager;
+import org.apache.kylin.metadata.realization.RealizationStatusEnum;
+import org.apache.kylin.metadata.realization.RealizationType;
+import org.apache.kylin.rest.constant.Constant;
+import org.apache.kylin.rest.exception.BadRequestException;
+import org.apache.kylin.rest.exception.ForbiddenException;
+import org.apache.kylin.rest.msg.Message;
+import org.apache.kylin.rest.msg.MsgPicker;
+import org.apache.kylin.rest.security.AclPermission;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by luwei on 17-4-17.
+ */
+
+@Component("cubeMgmtServiceV2")
+public class CubeServiceV2 extends CubeService {
+
+private static final Logger logger = 
LoggerFactory.getLogger(CubeServiceV2.class);
+
+@Autowired
+@Qualifier("accessService")
+private AccessService accessService;
+
+@Autowired
+@Qualifier("jobService")
+private JobService jobService;
+
+@Autowired
+@Qualifier("modelMgmtServiceV2")
+private ModelServiceV2 modelServiceV2;
+
+
+@PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#cube, 
'ADMINISTRATION') or hasPermission(#cube, 'OPERATION')  or hasPermission(#cube, 
'MANAGEMENT')")
+public CubeInstance deleteSegment(CubeInstance cube, String segmentName) 
throws IOException {
+Message msg = MsgPicker.getMsg();
+
+if (!segmentName.equals(cube.getSegments().get(0).getName()) && 
!segmentName.equals(cube.getSegments().get(cube.getSegments().size() - 
1).getName())) {
+throw new 
BadRequestException(String.format(msg.getDELETE_NOT_FIRST_LAST_SEG(), 
segmentName));
+}
+CubeSegment toDelete = null;
+for (CubeSegment seg : cube.getSegments()) {
+if (seg.getName().equals(segmentName)) {
+toDelete = seg;
+}
+}
+
+if (toDelete == null) {
+throw new 
BadRequestException(String.format(msg.getSEG_NOT_FOUND(), segmentName));
+}
+
+if (toDelete.getStatus() != SegmentStatusEnum.READY) {
+throw new 
BadRequestException(String.format(msg.getDELETE_NOT_READY_SEG(), segmentName));
+}
+
+CubeUpdate update = new CubeUpdate(cube);
+update.setToRemoveSegs(new CubeSegment[] { toDelete });
+

[26/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention

2017-05-24 Thread kangkaisen
KYLIN-2632 Refactor REST API for better convention


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

Branch: refs/heads/KYLIN-2606
Commit: 73a78dbee84808de42925ca5a0b8e16761840233
Parents: 429dfbd
Author: Luwei-Chen 
Authored: Fri May 19 21:49:31 2017 +0800
Committer: liyang-gmt8 
Committed: Sun May 21 09:18:59 2017 +0800

--
 .../org/apache/kylin/cube/CubeDescManager.java  |  91 ++-
 .../org/apache/kylin/cube/model/CubeDesc.java   |  56 +-
 .../validation/rule/DictionaryRuleTest.java |   8 +-
 .../model/validation/rule/FunctionRuleTest.java |   6 +-
 .../apache/kylin/metadata/MetadataManager.java  |  16 +-
 .../kylin/metadata/model/DataModelDesc.java |  49 +-
 .../kylin/metadata/model/JoinTableDesc.java |   6 +-
 .../apache/kylin/metadata/model/JoinsTree.java  |  10 +
 .../kylin/metadata/model/TableExtDesc.java  |  10 +
 .../org/apache/kylin/engine/mr/IMRInput.java|   3 -
 .../java/org/apache/kylin/engine/mr/MRUtil.java |  14 +-
 .../kylin/rest/controller/AccessController.java |  12 +-
 .../kylin/rest/controller/AdminController.java  |  34 +-
 .../kylin/rest/controller/CacheController.java  |   8 +-
 .../kylin/rest/controller/CubeController.java   |  67 +-
 .../rest/controller/CubeDescController.java |   6 +-
 .../rest/controller/DiagnosisController.java|   9 +-
 .../rest/controller/EncodingController.java |   5 +-
 .../controller/ExternalFilterController.java|  10 +-
 .../kylin/rest/controller/HybridController.java |  13 +-
 .../kylin/rest/controller/JobController.java|  21 +-
 .../kylin/rest/controller/ModelController.java  |  17 +-
 .../rest/controller/ModelDescController.java|   4 +-
 .../rest/controller/ProjectController.java  |  19 +-
 .../kylin/rest/controller/QueryController.java  |  14 +-
 .../rest/controller/StreamingController.java|  16 +-
 .../kylin/rest/controller/TableController.java  |  16 +-
 .../kylin/rest/controller/UserController.java   |  11 +-
 .../rest/controller2/AccessControllerV2.java| 135 
 .../rest/controller2/AdminControllerV2.java | 106 +++
 .../rest/controller2/CacheControllerV2.java |  91 +++
 .../rest/controller2/CubeControllerV2.java  | 755 +++
 .../rest/controller2/CubeDescControllerV2.java  | 141 
 .../rest/controller2/DiagnosisControllerV2.java | 121 +++
 .../rest/controller2/EncodingControllerV2.java  |  80 ++
 .../controller2/ExternalFilterControllerV2.java | 101 +++
 .../rest/controller2/HybridControllerV2.java|  97 +++
 .../kylin/rest/controller2/JobControllerV2.java | 222 ++
 .../rest/controller2/ModelControllerV2.java | 284 +++
 .../rest/controller2/ModelDescControllerV2.java | 107 +++
 .../rest/controller2/ProjectControllerV2.java   | 269 +++
 .../rest/controller2/QueryControllerV2.java | 186 +
 .../rest/controller2/StreamingControllerV2.java | 288 +++
 .../rest/controller2/TableControllerV2.java | 159 
 .../rest/controller2/UserControllerV2.java  | 103 +++
 .../rest/exception/BadRequestException.java |   1 +
 .../org/apache/kylin/rest/model/ColumnMeta.java |  46 +-
 .../kylin/rest/model/ColumnMetaWithType.java|  70 ++
 .../org/apache/kylin/rest/model/TableMeta.java  |  20 +-
 .../kylin/rest/model/TableMetaWithType.java |  57 ++
 .../org/apache/kylin/rest/msg/CnMessage.java|  38 +
 .../java/org/apache/kylin/rest/msg/Message.java | 588 +++
 .../org/apache/kylin/rest/msg/MsgPicker.java|  42 ++
 .../kylin/rest/request/HiveTableRequestV2.java  |  59 ++
 .../rest/response/CubeInstanceResponse.java |  72 ++
 .../rest/response/DataModelDescResponse.java|  62 ++
 .../kylin/rest/response/HBaseResponse.java  |   9 +
 .../kylin/rest/response/ResponseCode.java   |   2 +-
 .../security/KylinAuthenticationProvider.java   |   2 +
 .../kylin/rest/security/LdapProvider.java   |   2 +
 .../kylin/rest/service/AccessService.java   |  59 +-
 .../apache/kylin/rest/service/AclService.java   |  49 +-
 .../apache/kylin/rest/service/AdminService.java |  63 +-
 .../apache/kylin/rest/service/CacheService.java |  10 +-
 .../apache/kylin/rest/service/CubeService.java  |  55 +-
 .../kylin/rest/service/CubeServiceV2.java   | 497 
 .../kylin/rest/service/DiagnosisService.java|  18 +-
 .../kylin/rest/service/EncodingService.java |   7 +-
 .../kylin/rest/service/ExtFilterService.java|  12 +-
 .../apache/kylin/rest/service/JobService.java   | 122 +--
 .../kylin/rest/service/KafkaConfigService.java  |   8 +-
 .../apache/kylin/rest/service/ModelService.java |  20 +-
 .../kylin/rest/service/ModelServiceV2.java  | 351 +
 

[04/50] [abbrv] kylin git commit: KYLIN-2623 Move output(Hbase) code to outputside

2017-05-24 Thread kangkaisen
KYLIN-2623 Move output(Hbase) code to outputside


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

Branch: refs/heads/KYLIN-2606
Commit: a38b02df0387541684aa1689e044927af650f1c7
Parents: edc4d4c
Author: Roger Shi 
Authored: Tue May 16 13:50:23 2017 +0800
Committer: liyang-gmt8 
Committed: Tue May 16 14:03:50 2017 +0800

--
 .../org/apache/kylin/engine/mr/IMROutput2.java  |  33 +-
 .../engine/mr/common/AbstractHadoopJob.java |   6 +-
 .../apache/kylin/engine/mr/steps/CuboidJob.java |  37 +++
 .../kylin/engine/mr/steps/InMemCuboidJob.java   |  55 ++
 .../engine/mr/steps/LayerReducerNumSizing.java  |  80 --
 .../kylin/engine/mr/steps/MergeCuboidJob.java   |  37 ---
 .../engine/mr/steps/MergeCuboidMapper.java  |  35 +-
 .../kylin/engine/mr/steps/ReducerNumSizing.java | 106 +++
 .../apache/kylin/source/hive/HiveMRInput.java   |   2 -
 .../apache/kylin/source/kafka/KafkaMRInput.java |   1 -
 .../hbase/steps/HBaseMROutput2Transition.java   |  97 +
 11 files changed, 284 insertions(+), 205 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/a38b02df/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java
--
diff --git a/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java 
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java
index 603f207..69bba0a 100644
--- a/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java
+++ b/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java
@@ -18,11 +18,14 @@
 
 package org.apache.kylin.engine.mr;
 
+import java.util.List;
+
+import org.apache.hadoop.mapreduce.Job;
+import org.apache.hadoop.mapreduce.lib.input.FileSplit;
+import org.apache.kylin.cube.CubeInstance;
 import org.apache.kylin.cube.CubeSegment;
 import org.apache.kylin.job.execution.DefaultChainedExecutable;
 
-import java.util.List;
-
 public interface IMROutput2 {
 
 /** Return a helper to participate in batch cubing job flow. */
@@ -53,6 +56,19 @@ public interface IMROutput2 {
 
 /** Add step that does any necessary clean up. */
 public void addStepPhase4_Cleanup(DefaultChainedExecutable jobFlow);
+
+public IMROutputFormat getOuputFormat();
+
+}
+
+public interface IMROutputFormat {
+
+/** Configure the InputFormat of given job. */
+public void configureJobInput(Job job, String input) throws Exception;
+
+/** Configure the OutputFormat of given job. */
+public void configureJobOutput(Job job, String output, CubeSegment 
segment, int level) throws Exception;
+
 }
 
 /** Return a helper to participate in batch merge job flow. */
@@ -82,6 +98,19 @@ public interface IMROutput2 {
 
 /** Add step that does any necessary clean up. */
 public void addStepPhase3_Cleanup(DefaultChainedExecutable jobFlow);
+
+public IMRMergeOutputFormat getOuputFormat();
+}
+
+public interface IMRMergeOutputFormat {
+
+/** Configure the InputFormat of given job. */
+public void configureJobInput(Job job, String input) throws Exception;
+
+/** Configure the OutputFormat of given job. */
+public void configureJobOutput(Job job, String output, CubeSegment 
segment) throws Exception;
+
+public CubeSegment findSourceSegment(FileSplit fileSplit, CubeInstance 
cube);
 }
 
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/a38b02df/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java
--
diff --git 
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java
 
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java
index 44686d6..764cbdd 100644
--- 
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java
+++ 
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java
@@ -559,7 +559,7 @@ public abstract class AbstractHadoopJob extends Configured 
implements Tool {
 HadoopUtil.deletePath(conf, path);
 }
 
-protected double getTotalMapInputMB() throws ClassNotFoundException, 
IOException, InterruptedException, JobException {
+public static double getTotalMapInputMB(Job job) throws 
ClassNotFoundException, IOException, InterruptedException, JobException {
 if (job == null) {
 throw new JobException("Job is null");
 }
@@ -576,6 +576,10 @@ public abstract 

[36/50] [abbrv] kylin git commit: Merge commit 'ce6e3ede2f670bf037a55234630b85098265075a'

2017-05-24 Thread kangkaisen
Merge commit 'ce6e3ede2f670bf037a55234630b85098265075a'


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

Branch: refs/heads/KYLIN-2606
Commit: 81ed30110186e2c13511a3fc50f6098645412aab
Parents: 2471d5e ce6e3ed
Author: Hongbin Ma 
Authored: Tue May 23 19:31:36 2017 +0800
Committer: Hongbin Ma 
Committed: Tue May 23 19:31:36 2017 +0800

--
 build/bin/load-hive-conf.sh |  2 +-
 .../impl/threadpool/DistributedScheduler.java   |  1 +
 .../apache/kylin/metadata/MetadataManager.java  |  2 ++
 .../kylin/metadata/model/DataModelDesc.java |  1 +
 .../security/KylinAuthenticationProvider.java   | 20 +++-
 .../apache/kylin/rest/service/CacheService.java |  1 -
 .../kylin/rest/service/ModelServiceTest.java|  2 +-
 .../hbase/util/ZookeeperDistributedLock.java|  2 --
 webapp/app/js/controllers/page.js   | 16 +---
 9 files changed, 26 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/build/bin/load-hive-conf.sh
--
diff --cc build/bin/load-hive-conf.sh
index c7317c6,a42cd0c..0937719
--- a/build/bin/load-hive-conf.sh
+++ b/build/bin/load-hive-conf.sh
@@@ -12,4 -12,4 +12,4 @@@ rm -rf ${hive_conf_prop
  export ENABLE_CHECK_ENV=false
  ${dir}/kylin.sh org.apache.kylin.tool.HiveConfigCLI ${hive_conf_dir} 
${hive_conf_prop}
  [[ 0 == $? ]] || quit "Can not parse xml file: ${hive_conf_dir}, please check 
it."
--hive_conf_properties=`cat ${hive_conf_prop}`
++hive_conf_properties=`cat ${hive_conf_prop}`

http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java
--
diff --cc 
core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java
index 00fafaf,b3ca14a..39d7830
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java
@@@ -603,9 -600,7 +603,10 @@@ public class MetadataManager 
  ResourceStore store = getStore();
  try {
  DataModelDesc dataModelDesc = store.getResource(path, 
DataModelDesc.class, MODELDESC_SERIALIZER);
 -dataModelDesc.init(config, this.getAllTablesMap(), 
this.ccInfoMap);
++
 +if (dataModelDesc.getStatus() == null)
 +dataModelDesc.init(config, this.getAllTablesMap(), 
this.ccInfoMap);
 +
  dataModelDescMap.putLocal(dataModelDesc.getName(), dataModelDesc);
  return dataModelDesc;
  } catch (Exception e) {
@@@ -653,8 -648,7 +654,9 @@@
  }
  
  private DataModelDesc saveDataModelDesc(DataModelDesc dataModelDesc) 
throws IOException {
 -dataModelDesc.init(config, this.getAllTablesMap(), this.ccInfoMap);
++
 +if (dataModelDesc.getStatus() == null)
 +dataModelDesc.init(config, this.getAllTablesMap(), 
this.ccInfoMap);
  
  String path = dataModelDesc.getResourcePath();
  getStore().putResource(path, dataModelDesc, MODELDESC_SERIALIZER);

http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
--
diff --cc 
core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
index c3554f2,2174b7a..a689979
--- 
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
@@@ -415,10 -385,9 +415,11 @@@ public class DataModelDesc extends Root
  
  TableDesc tableDesc = tables.get(join.getTable());
  String alias = join.getAlias();
 -if (alias == null)
 +if (alias == null) {
  alias = tableDesc.getName();
 +join.setAlias(alias);
 +}
+ 
  TableRef ref = new TableRef(this, alias, tableDesc);
  
  join.setTableRef(ref);

http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
--

http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/server-base/src/main/java/org/apache/kylin/rest/service/CacheService.java
--
diff --cc 

[25/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention

2017-05-24 Thread kangkaisen
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
 
b/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
index 99447a1..b6e2d45 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
@@ -39,6 +39,7 @@ import org.apache.kylin.rest.service.QueryService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -61,9 +62,10 @@ public class QueryController extends BasicController {
 private static final Logger logger = 
LoggerFactory.getLogger(QueryController.class);
 
 @Autowired
+@Qualifier("queryService")
 private QueryService queryService;
 
-@RequestMapping(value = "/query", method = RequestMethod.POST)
+@RequestMapping(value = "/query", method = RequestMethod.POST, produces = 
{ "application/json" })
 @ResponseBody
 public SQLResponse query(@RequestBody SQLRequest sqlRequest) {
 return queryService.doQueryWithCache(sqlRequest);
@@ -76,7 +78,7 @@ public class QueryController extends BasicController {
 return queryService.doQueryWithCache(sqlRequest);
 }
 
-@RequestMapping(value = "/saved_queries", method = RequestMethod.POST)
+@RequestMapping(value = "/saved_queries", method = RequestMethod.POST, 
produces = { "application/json" })
 @ResponseBody
 public void saveQuery(@RequestBody SaveSqlRequest sqlRequest) throws 
IOException {
 String creator = 
SecurityContextHolder.getContext().getAuthentication().getName();
@@ -85,21 +87,21 @@ public class QueryController extends BasicController {
 queryService.saveQuery(creator, newQuery);
 }
 
-@RequestMapping(value = "/saved_queries/{id}", method = 
RequestMethod.DELETE)
+@RequestMapping(value = "/saved_queries/{id}", method = 
RequestMethod.DELETE, produces = { "application/json" })
 @ResponseBody
 public void removeQuery(@PathVariable String id) throws IOException {
 String creator = 
SecurityContextHolder.getContext().getAuthentication().getName();
 queryService.removeQuery(creator, id);
 }
 
-@RequestMapping(value = "/saved_queries", method = RequestMethod.GET)
+@RequestMapping(value = "/saved_queries", method = RequestMethod.GET, 
produces = { "application/json" })
 @ResponseBody
 public List getQueries() throws IOException {
 String creator = 
SecurityContextHolder.getContext().getAuthentication().getName();
 return queryService.getQueries(creator);
 }
 
-@RequestMapping(value = "/query/format/{format}", method = 
RequestMethod.GET)
+@RequestMapping(value = "/query/format/{format}", method = 
RequestMethod.GET, produces = { "application/json" })
 @ResponseBody
 public void downloadQueryResult(@PathVariable String format, SQLRequest 
sqlRequest, HttpServletResponse response) {
 SQLResponse result = queryService.doQueryWithCache(sqlRequest);
@@ -129,7 +131,7 @@ public class QueryController extends BasicController {
 }
 }
 
-@RequestMapping(value = "/tables_and_columns", method = RequestMethod.GET)
+@RequestMapping(value = "/tables_and_columns", method = RequestMethod.GET, 
produces = { "application/json" })
 @ResponseBody
 public List getMetadata(MetaRequest metaRequest) {
 try {

http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java
 
b/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java
index 407ee2e..b0bb02a 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java
@@ -39,6 +39,7 @@ import org.apache.kylin.source.kafka.config.KafkaConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.security.access.AccessDeniedException;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -63,13 

[38/50] [abbrv] kylin git commit: KYLIN-2641 - The current selected project is incorrect after we delete a project.

2017-05-24 Thread kangkaisen
KYLIN-2641 - The current selected project is incorrect after we delete a 
project.

Signed-off-by: Billy Liu 


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

Branch: refs/heads/KYLIN-2606
Commit: 9fef04d9a98e11454d00247d8cd2f4d501ba66a2
Parents: 81ed301
Author: 10069681 
Authored: Tue May 23 18:34:26 2017 +0800
Committer: Billy Liu 
Committed: Tue May 23 20:02:21 2017 +0800

--
 webapp/app/js/model/projectModel.js | 18 --
 1 file changed, 12 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/9fef04d9/webapp/app/js/model/projectModel.js
--
diff --git a/webapp/app/js/model/projectModel.js 
b/webapp/app/js/model/projectModel.js
index d2d32b4..77f47e8 100644
--- a/webapp/app/js/model/projectModel.js
+++ b/webapp/app/js/model/projectModel.js
@@ -21,7 +21,6 @@ KylinApp.service('ProjectModel', function () {
   this.projects = [];
   this.selectedProject = "_null";
 
-
   this.setSelectedProject = function (project) {
 var _projects =[];
 angular.forEach(this.projects,function(pro){
@@ -31,6 +30,7 @@ KylinApp.service('ProjectModel', function () {
   this.selectedProject = project;
 }
   };
+
   this.getSelectedProject = function (project) {
 if (this.selectedProject == "_null") {
   return null;
@@ -56,10 +56,10 @@ KylinApp.service('ProjectModel', function () {
 this.sortProjects();
   }
 
-  this.removeProject = function (project) {
+  this.removeProject = function (projectName) {
 var index = -1;
 for (var i = 0; i < this.projects.length; i++) {
-  if (this.projects[i].name == project) {
+  if (this.projects[i].name == projectName) {
 index = i;
 break;
   }
@@ -67,7 +67,15 @@ KylinApp.service('ProjectModel', function () {
 if (index > -1) {
   this.projects.splice(index, 1);
 }
-this.selectedProject = this.projects[0];
+
+if (this.selectedProject == projectName) {
+if (this.projects.length) {
+   this.selectedProject = this.projects[0].name;
+} else {
+   this.selectedProject = "_null";
+}
+}
+
 this.sortProjects();
   }
 
@@ -96,7 +104,6 @@ KylinApp.service('ProjectModel', function () {
 }
   }
 }
-;
 return this.getSelectedProject();
   }
 
@@ -124,7 +131,6 @@ KylinApp.service('ProjectModel', function () {
   }
 }
 return index;
-
   }
 
 })



[11/50] [abbrv] kylin git commit: KYLIN-2624 introduce StorageURL and set timeout for metadata access

2017-05-24 Thread kangkaisen
KYLIN-2624 introduce StorageURL and set timeout for metadata access


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

Branch: refs/heads/KYLIN-2606
Commit: 2dfc5bb36a00245b95deeebb5bb3bca9c353c934
Parents: 7c152c5
Author: Li Yang 
Authored: Thu May 18 14:16:17 2017 +0800
Committer: nichunen 
Committed: Fri May 19 13:52:53 2017 +0800

--
 .../apache/kylin/common/KylinConfigBase.java|  30 ++-
 .../org/apache/kylin/common/StorageURL.java | 183 +++
 .../common/persistence/FileResourceStore.java   |   2 +-
 .../apache/kylin/common/KylinConfigTest.java|   9 +-
 .../org/apache/kylin/common/StorageURLTest.java | 103 +++
 .../persistence/LocalFileResourceStoreTest.java |   3 +-
 .../common/persistence/ResourceStoreTest.java   |  18 +-
 .../common/util/LocalFileMetadataTestCase.java  |   7 +
 .../apache/kylin/dict/DictionaryManager.java|  18 +-
 .../dict/global/AppendTrieDictionaryTest.java   |   5 +-
 .../impl/threadpool/DistributedScheduler.java   |  11 +-
 .../apache/kylin/storage/StorageContext.java|   7 +-
 .../kylin/engine/mr/steps/CubeReducerTest.java  |   2 +-
 .../engine/mr/steps/NDCuboidMapperTest.java |   2 +-
 .../kylin/job/BaseTestDistributedScheduler.java |   5 +-
 .../kylin/storage/hbase/ITStorageTest.java  |   3 +-
 .../apache/kylin/query/schema/OLAPSchema.java   |   5 +-
 .../rest/security/MockAclHBaseStorage.java  |  11 +-
 .../rest/security/RealAclHBaseStorage.java  |  15 +-
 .../apache/kylin/rest/service/QueryService.java |  11 +-
 .../kylin/storage/hbase/HBaseConnection.java|  51 +++---
 .../kylin/storage/hbase/HBaseResourceStore.java |  46 +++--
 .../storage/hbase/util/CubeMigrationCLI.java|  20 +-
 .../hbase/util/GridTableHBaseBenchmark.java |   3 +-
 .../kylin/storage/hdfs/HDFSResourceStore.java   |  50 ++---
 .../hbase/steps/CubeHFileMapper2Test.java   |   4 +-
 .../storage/hbase/steps/MockupMapContext.java   |   2 +-
 .../org/apache/kylin/tool/CubeMigrationCLI.java |  20 +-
 28 files changed, 461 insertions(+), 185 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/2dfc5bb3/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 b620924..caef95e 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
@@ -169,7 +169,7 @@ abstract public class KylinConfigBase implements 
Serializable {
 }
 
 public String toString() {
-return getMetadataUrl();
+return getMetadataUrl().toString();
 }
 
 // 

@@ -205,8 +205,8 @@ abstract public class KylinConfigBase implements 
Serializable {
 // METADATA
 // 

 
-public String getMetadataUrl() {
-return getOptional("kylin.metadata.url");
+public StorageURL getMetadataUrl() {
+return StorageURL.valueOf(getOptional("kylin.metadata.url", ""));
 }
 
 // for test only
@@ -215,14 +215,7 @@ abstract public class KylinConfigBase implements 
Serializable {
 }
 
 public String getMetadataUrlPrefix() {
-String metadataUrl = getMetadataUrl();
-String defaultPrefix = "kylin_metadata";
-
-int cut = metadataUrl.lastIndexOf('@');
-if (cut > 0) {
-return metadataUrl.substring(0, cut);
-}
-return defaultPrefix;
+return getMetadataUrl().getIdentifier();
 }
 
 public String[] getRealizationProviders() {
@@ -558,8 +551,14 @@ abstract public class KylinConfigBase implements 
Serializable {
 return Integer.parseInt(getOptional("kylin.storage.default", "2"));
 }
 
-public String getStorageUrl() {
-return getOptional("kylin.storage.url");
+public StorageURL getStorageUrl() {
+String url = getOptional("kylin.storage.url", "default@hbase");
+
+// for backward compatibility
+if ("hbase".equals(url))
+url = "default@hbase";
+
+return StorageURL.valueOf(url);
 }
 
 public String getHBaseClusterFs() {
@@ -987,10 +986,7 @@ abstract public class KylinConfigBase implements 
Serializable {
 }
 
 public String getResourceStoreImpl() {
-String metadataUrl = 

[45/50] [abbrv] kylin git commit: KYLIN-2635 optimize determined case when filters

2017-05-24 Thread kangkaisen
KYLIN-2635 optimize determined case when filters


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

Branch: refs/heads/KYLIN-2606
Commit: 2c549895dab065491faef3a46cf0b710791ef2af
Parents: f870c6c
Author: Hongbin Ma 
Authored: Mon May 22 15:05:20 2017 +0800
Committer: Hongbin Ma 
Committed: Tue May 23 20:30:06 2017 +0800

--
 .../kylin/dict/BuiltInFunctionTransformer.java  |  2 +
 .../kylin/metadata/filter/CaseTupleFilter.java  | 52 ++--
 .../metadata/filter/CompareTupleFilter.java | 29 +--
 .../filter/FilterOptimizeTransformer.java   | 88 ++--
 .../filter/IOptimizeableTupleFilter.java| 22 +
 .../filter/ITupleFilterTransformer.java |  5 ++
 .../metadata/filter/LogicalTupleFilter.java | 27 +-
 .../kylin/metadata/filter/TupleFilter.java  |  1 -
 .../gtrecord/GTCubeStorageQueryBase.java| 26 +++---
 .../kylin/query/relnode/OLAPFilterRel.java  |  2 +-
 .../apache/kylin/query/relnode/OLAPJoinRel.java |  1 +
 .../kylin/rest/controller/UserController.java   |  4 +-
 12 files changed, 203 insertions(+), 56 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/2c549895/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
--
diff --git 
a/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
 
b/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
index f5cbe68..7a48a1c 100755
--- 
a/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
+++ 
b/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java
@@ -41,6 +41,8 @@ import com.google.common.primitives.Primitives;
 
 /**
  * only take effect when the compare filter has function
+ * 
+ * is a first type transformer defined in ITupleFilterTransformer
  */
 public class BuiltInFunctionTransformer implements ITupleFilterTransformer {
 public static final Logger logger = 
LoggerFactory.getLogger(BuiltInFunctionTransformer.class);

http://git-wip-us.apache.org/repos/asf/kylin/blob/2c549895/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java
index 2b00d69..9083212 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java
@@ -26,11 +26,13 @@ import java.util.List;
 
 import org.apache.kylin.metadata.tuple.IEvaluatableTuple;
 
+import com.google.common.collect.Lists;
+
 /**
  * @author xjiang
  * 
  */
-public class CaseTupleFilter extends TupleFilter {
+public class CaseTupleFilter extends TupleFilter implements 
IOptimizeableTupleFilter {
 
 private List whenFilters;
 private List thenFilters;
@@ -40,6 +42,12 @@ public class CaseTupleFilter extends TupleFilter {
 
 public CaseTupleFilter() {
 super(new ArrayList(), FilterOperatorEnum.CASE);
+reinit();
+}
+
+private void reinit() {
+this.children.clear();
+
 this.filterIndex = 0;
 this.values = Collections.emptyList();
 this.whenFilters = new ArrayList();
@@ -47,14 +55,31 @@ public class CaseTupleFilter extends TupleFilter {
 this.elseFilter = null;
 }
 
+public List getWhenFilters() {
+return Collections.unmodifiableList(whenFilters);
+}
+
+public List getThenFilters() {
+return Collections.unmodifiableList(thenFilters);
+}
+
+public TupleFilter getElseFilter() {
+return elseFilter;
+}
+
 @Override
 public void addChild(TupleFilter child) {
-super.addChild(child);
+
 if (this.filterIndex % 2 == 0) {
-this.whenFilters.add(child);
+this.elseFilter = child;
 } else {
+this.whenFilters.add(this.elseFilter);
 this.thenFilters.add(child);
+this.elseFilter = null;
 }
+
+super.addChild(child);
+
 this.filterIndex++;
 }
 
@@ -65,9 +90,7 @@ public class CaseTupleFilter extends TupleFilter {
 
 @Override
 public boolean evaluate(IEvaluatableTuple tuple, IFilterCodeSystem cs) {
-if (whenFilters.size() != thenFilters.size()) {
-elseFilter = 

[49/50] [abbrv] kylin git commit: minor, fix CI

2017-05-24 Thread kangkaisen
minor, fix CI


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

Branch: refs/heads/KYLIN-2606
Commit: fdacf5d3fac8740ab031f35d6317571f11a87c23
Parents: 5d2934b
Author: Hongbin Ma 
Authored: Wed May 24 10:42:30 2017 +0800
Committer: hongbin ma 
Committed: Wed May 24 10:52:57 2017 +0800

--
 kylin-it/src/test/resources/query/sql_subquery/query32.sql | 2 +-
 kylin-it/src/test/resources/query/sql_subquery/query33.sql | 2 +-
 kylin-it/src/test/resources/query/sql_subquery/query34.sql | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/fdacf5d3/kylin-it/src/test/resources/query/sql_subquery/query32.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query32.sql 
b/kylin-it/src/test/resources/query/sql_subquery/query32.sql
index 394ea15..6565aa0 100644
--- a/kylin-it/src/test/resources/query/sql_subquery/query32.sql
+++ b/kylin-it/src/test/resources/query/sql_subquery/query32.sql
@@ -1,5 +1,5 @@
 
-  select  sum(price) as sum_price,  (case when '1'='1' then 
test_cal_dt.week_beg_dt when '1'='2' then test_kylin_fact.lstg_site_id else 
test_kylin_fact.leaf_categ_id end) as xxx 
+  select  (case when '1'='1' then test_cal_dt.week_beg_dt when '1'='2' then 
test_kylin_fact.lstg_site_id else test_kylin_fact.leaf_categ_id end) as xxx , 
sum(price) as sum_price
   from test_kylin_fact
   inner JOIN edw.test_cal_dt as test_cal_dt
   ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt

http://git-wip-us.apache.org/repos/asf/kylin/blob/fdacf5d3/kylin-it/src/test/resources/query/sql_subquery/query33.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query33.sql 
b/kylin-it/src/test/resources/query/sql_subquery/query33.sql
index 08ecc8e..6ed1e37 100644
--- a/kylin-it/src/test/resources/query/sql_subquery/query33.sql
+++ b/kylin-it/src/test/resources/query/sql_subquery/query33.sql
@@ -1,5 +1,5 @@
 
-  select  sum(price) as sum_price,  lstg_format_name,(case when '2'='1' then 
test_kylin_fact.lstg_site_id  when '2'='2' then test_cal_dt.week_beg_dt else 
test_kylin_fact.leaf_categ_id end) as xxx 
+  selectlstg_format_name,(case when '2'='1' then 
test_kylin_fact.lstg_site_id  when '2'='2' then test_cal_dt.week_beg_dt else 
test_kylin_fact.leaf_categ_id end) as xxx ,sum(price) as sum_price
   from test_kylin_fact
   inner JOIN edw.test_cal_dt as test_cal_dt
   ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt

http://git-wip-us.apache.org/repos/asf/kylin/blob/fdacf5d3/kylin-it/src/test/resources/query/sql_subquery/query34.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query34.sql 
b/kylin-it/src/test/resources/query/sql_subquery/query34.sql
index 0dda9aa..56d04fa 100644
--- a/kylin-it/src/test/resources/query/sql_subquery/query34.sql
+++ b/kylin-it/src/test/resources/query/sql_subquery/query34.sql
@@ -1,5 +1,5 @@
 
-  select  sum(price) as sum_price,  (case when '3'='1' then 
test_cal_dt.week_beg_dt else   test_kylin_fact.cal_dt  end) as xxx 
+  select  (case when '3'='1' then test_cal_dt.week_beg_dt else   
test_kylin_fact.cal_dt  end) as xxx ,  sum(price) as sum_price
   from test_kylin_fact
   inner JOIN edw.test_cal_dt as test_cal_dt
   ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt



[28/50] [abbrv] kylin git commit: Revert "minor, fix csv export garbled issue"

2017-05-24 Thread kangkaisen
Revert "minor, fix csv export garbled issue"

This reverts commit 949237ddca0ab24bf8121ccc002d802df678761c.


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

Branch: refs/heads/KYLIN-2606
Commit: f9b6db6a582747f58e91d22de76ff7549172f460
Parents: ce09d6c
Author: shaofengshi 
Authored: Mon May 22 16:52:47 2017 +0800
Committer: shaofengshi 
Committed: Mon May 22 16:52:47 2017 +0800

--
 .../java/org/apache/kylin/rest/controller/QueryController.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/f9b6db6a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
 
b/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
index 99447a1..c5f896d 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java
@@ -103,7 +103,7 @@ public class QueryController extends BasicController {
 @ResponseBody
 public void downloadQueryResult(@PathVariable String format, SQLRequest 
sqlRequest, HttpServletResponse response) {
 SQLResponse result = queryService.doQueryWithCache(sqlRequest);
-response.setContentType("text/" + format + ";charset=ansi");
+response.setContentType("text/" + format + ";charset=utf-8");
 response.setHeader("Content-Disposition", "attachment; 
filename=\"result." + format + "\"");
 ICsvListWriter csvWriter = null;
 



[31/50] [abbrv] kylin git commit: minor, materialize lookup views as external table

2017-05-24 Thread kangkaisen
minor, materialize lookup views as external table


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

Branch: refs/heads/KYLIN-2606
Commit: 4766c789d8298b477edad7a9e86ebaec603f1b52
Parents: 8cd807f
Author: Cheng Wang 
Authored: Tue May 23 11:10:41 2017 +0800
Committer: 成 
Committed: Tue May 23 11:30:25 2017 +0800

--
 .../src/main/java/org/apache/kylin/source/hive/HiveMRInput.java| 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/4766c789/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java
--
diff --git 
a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java 
b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java
index bdbe321..dffba8a 100644
--- a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java
+++ b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java
@@ -193,7 +193,7 @@ public class HiveMRInput implements IMRInput {
 if (lookUpTableDesc.isView()) {
 StringBuilder createIntermediateTableHql = new 
StringBuilder();
 createIntermediateTableHql.append("DROP TABLE IF EXISTS " 
+ lookUpTableDesc.getMaterializedName() + ";\n");
-createIntermediateTableHql.append("CREATE TABLE IF NOT 
EXISTS " + lookUpTableDesc.getMaterializedName() + "\n");
+createIntermediateTableHql.append("CREATE EXTERNAL TABLE 
IF NOT EXISTS " + lookUpTableDesc.getMaterializedName() + "\n");
 createIntermediateTableHql.append("LOCATION '" + 
jobWorkingDir + "/" + lookUpTableDesc.getMaterializedName() + "'\n");
 createIntermediateTableHql.append("AS SELECT * FROM " + 
lookUpTableDesc.getIdentity() + ";\n");
 
hiveCmdBuilder.addStatement(createIntermediateTableHql.toString());



[24/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention

2017-05-24 Thread kangkaisen
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java
 
b/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java
new file mode 100644
index 000..ddf745a
--- /dev/null
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package org.apache.kylin.rest.controller2;
+
+import org.apache.kylin.rest.controller.BasicController;
+import org.apache.kylin.rest.msg.MsgPicker;
+import org.apache.kylin.rest.request.HybridRequest;
+import org.apache.kylin.rest.response.EnvelopeResponse;
+import org.apache.kylin.rest.response.ResponseCode;
+import org.apache.kylin.rest.service.HybridService;
+import org.apache.kylin.storage.hybrid.HybridInstance;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping(value = "/hybrids")
+public class HybridControllerV2 extends BasicController {
+
+@Autowired
+private HybridService hybridService;
+
+@RequestMapping(value = "", method = RequestMethod.POST, produces = { 
"application/vnd.apache.kylin-v2+json" })
+@ResponseBody
+public EnvelopeResponse createV2(@RequestHeader("Accept-Language") String 
lang, @RequestBody HybridRequest request) {
+MsgPicker.setMsg(lang);
+
+checkRequiredArg("hybrid", request.getHybrid());
+checkRequiredArg("project", request.getProject());
+checkRequiredArg("model", request.getModel());
+checkRequiredArg("cubes", request.getCubes());
+HybridInstance instance = 
hybridService.createHybridCube(request.getHybrid(), request.getProject(), 
request.getModel(), request.getCubes());
+return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, instance, "");
+}
+
+@RequestMapping(value = "", method = RequestMethod.PUT, produces = { 
"application/vnd.apache.kylin-v2+json" })
+@ResponseBody
+public EnvelopeResponse updateV2(@RequestHeader("Accept-Language") String 
lang, @RequestBody HybridRequest request) {
+MsgPicker.setMsg(lang);
+
+checkRequiredArg("hybrid", request.getHybrid());
+checkRequiredArg("project", request.getProject());
+checkRequiredArg("model", request.getModel());
+checkRequiredArg("cubes", request.getCubes());
+HybridInstance instance = 
hybridService.updateHybridCube(request.getHybrid(), request.getProject(), 
request.getModel(), request.getCubes());
+return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, instance, "");
+}
+
+@RequestMapping(value = "", method = RequestMethod.DELETE, produces = { 
"application/vnd.apache.kylin-v2+json" })
+@ResponseBody
+public void deleteV2(@RequestHeader("Accept-Language") String lang, 
@RequestBody HybridRequest request) {
+MsgPicker.setMsg(lang);
+
+checkRequiredArg("hybrid", request.getHybrid());
+checkRequiredArg("project", request.getProject());
+checkRequiredArg("model", request.getModel());
+hybridService.deleteHybridCube(request.getHybrid(), 
request.getProject(), request.getModel());
+}
+
+@RequestMapping(value = "", method = RequestMethod.GET, produces = { 
"application/vnd.apache.kylin-v2+json" })
+@ResponseBody
+public EnvelopeResponse listV2(@RequestHeader("Accept-Language") String 
lang, @RequestParam(required = false) String project, @RequestParam(required = 
false) String model) {
+MsgPicker.setMsg(lang);
+
+ 

[40/50] [abbrv] kylin git commit: KYLIN-2603, push down having clause when possible

2017-05-24 Thread kangkaisen
KYLIN-2603, push down having clause when possible


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

Branch: refs/heads/KYLIN-2606
Commit: e1bc72e36d83a42d364e6d9b0ee893fbc018d498
Parents: 83fb144
Author: Li Yang 
Authored: Wed May 10 21:01:53 2017 +0800
Committer: hongbin ma 
Committed: Tue May 23 20:18:17 2017 +0800

--
 .../cube/gridtable/ScanRangePlannerBase.java|   3 +-
 .../org/apache/kylin/cube/model/RowKeyDesc.java |  16 +-
 .../kylin/gridtable/GTAggregateScanner.java | 223 ++-
 .../apache/kylin/gridtable/GTScanRequest.java   |  19 +-
 .../kylin/gridtable/GTScanRequestBuilder.java   |   8 +-
 .../java/org/apache/kylin/gridtable/GTUtil.java |  33 ++-
 .../apache/kylin/metadata/model/ColumnDesc.java |   2 +
 .../apache/kylin/metadata/model/TblColRef.java  |   2 +
 .../kylin/metadata/realization/SQLDigest.java   |  36 ++-
 .../storage/gtrecord/CubeScanRangePlanner.java  |  12 +-
 .../storage/gtrecord/CubeSegmentScanner.java|  10 +-
 .../gtrecord/GTCubeStorageQueryBase.java|  51 -
 .../gtrecord/GTCubeStorageQueryRequest.java |  14 +-
 .../kylin/storage/gtrecord/ScannerWorker.java   |   4 +
 .../storage/gtrecord/DictGridTableTest.java |  14 ++
 .../kylin/storage/hbase/ITStorageTest.java  |   6 +-
 .../kylin/query/relnode/OLAPAggregateRel.java   |   6 +-
 .../apache/kylin/query/relnode/OLAPContext.java |   9 +-
 .../kylin/query/relnode/OLAPFilterRel.java  |   9 +-
 19 files changed, 370 insertions(+), 107 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/e1bc72e3/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java
 
b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java
index d938f2b..ed0a77a 100644
--- 
a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java
+++ 
b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java
@@ -44,14 +44,15 @@ import com.google.common.collect.Sets;
 public abstract class ScanRangePlannerBase {
 
 //GT 
-protected TupleFilter gtFilter;
 protected GTInfo gtInfo;
+protected TupleFilter gtFilter;
 protected Pair gtStartAndEnd;
 protected TblColRef gtPartitionCol;
 protected ImmutableBitSet gtDimensions;
 protected ImmutableBitSet gtAggrGroups;
 protected ImmutableBitSet gtAggrMetrics;
 protected String[] gtAggrFuncs;
+protected TupleFilter havingFilter;
 protected boolean isPartitionColUsingDatetimeEncoding = true;
 
 protected RecordComparator rangeStartComparator;

http://git-wip-us.apache.org/repos/asf/kylin/blob/e1bc72e3/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java 
b/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java
index 00557c5..124f126 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java
@@ -18,21 +18,23 @@
 
 package org.apache.kylin.cube.model;
 
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.Objects;
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.kylin.metadata.model.TblColRef;
-
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.kylin.metadata.model.TblColRef;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Objects;
+
 /**
  */
+@SuppressWarnings("serial")
 @JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = 
Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = 
Visibility.NONE)
 public class RowKeyDesc implements java.io.Serializable {
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/e1bc72e3/core-cube/src/main/java/org/apache/kylin/gridtable/GTAggregateScanner.java
--
diff --git 

[29/50] [abbrv] kylin git commit: KYLIN-2637 The tips is not shown after creating project successfully.

2017-05-24 Thread kangkaisen
KYLIN-2637 The tips is not shown after creating project successfully.

Signed-off-by: Billy Liu 


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

Branch: refs/heads/KYLIN-2606
Commit: ce6e3ede2f670bf037a55234630b85098265075a
Parents: f9b6db6
Author: 10069681 
Authored: Mon May 22 20:34:53 2017 +0800
Committer: Billy Liu 
Committed: Tue May 23 09:43:07 2017 +0800

--
 webapp/app/js/controllers/page.js | 16 +---
 1 file changed, 13 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ce6e3ede/webapp/app/js/controllers/page.js
--
diff --git a/webapp/app/js/controllers/page.js 
b/webapp/app/js/controllers/page.js
index 056cc48..c426516 100644
--- a/webapp/app/js/controllers/page.js
+++ b/webapp/app/js/controllers/page.js
@@ -188,7 +188,7 @@ KylinApp.controller('PageCtrl', function ($scope, $q, 
AccessService, $modal, $lo
 
 });
 
-var projCtrl = function ($scope, $location, $modalInstance, ProjectService, 
MessageService, projects, project, SweetAlert, ProjectModel, $cookieStore, 
$route) {
+var projCtrl = function ($scope, $location, $modalInstance, ProjectService, 
MessageService, projects, project, SweetAlert, ProjectModel, $cookieStore, 
$route, $timeout) {
   $scope.state = {
 isEdit: false,
 oldProjName: null,
@@ -240,10 +240,20 @@ var projCtrl = function ($scope, $location, 
$modalInstance, ProjectService, Mess
 }
 else {
   ProjectService.save({}, {projectDescData: angular.toJson($scope.proj)}, 
function (newProj) {
-SweetAlert.swal('Success!', 'New project created successfully!', 
'success');
 $modalInstance.dismiss('cancel');
 $cookieStore.put("project", newProj.name);
-location.reload();
+SweetAlert.swal({
+  title: "Success!",
+  text: "New project created successfully!",
+  confirmButtonClass: 'btn-primary',
+  type: "success"
+},function(){
+  location.reload();
+});
+
+$timeout(function () {
+  location.reload();
+}, 3000);
   }, function (e) {
 if (e.data && e.data.exception) {
   var message = e.data.exception;



[01/50] [abbrv] kylin git commit: KYLIN-2557 code review [Forced Update!]

2017-05-24 Thread kangkaisen
Repository: kylin
Updated Branches:
  refs/heads/KYLIN-2606 f8336d4bb -> d610a6dd5 (forced update)


KYLIN-2557 code review


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

Branch: refs/heads/KYLIN-2606
Commit: 1c80c29b22d9c00de1eb2e9a09c21377714248b7
Parents: e6a8a00
Author: Yang Li 
Authored: Sun May 14 20:14:29 2017 +0800
Committer: Yang Li 
Committed: Sun May 14 20:14:29 2017 +0800

--
 .../kylin/storage/hbase/HBaseConnection.java| 54 ++--
 1 file changed, 27 insertions(+), 27 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/1c80c29b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java
--
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java
index ef82641..5fafa2b 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java
@@ -18,7 +18,18 @@
 
 package org.apache.kylin.storage.hbase;
 
-import com.google.common.collect.Sets;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
@@ -39,17 +50,7 @@ import org.apache.kylin.common.util.HadoopUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
+import com.google.common.collect.Sets;
 
 /**
  * @author yangli9
@@ -67,8 +68,6 @@ public class HBaseConnection {
 
 private static ExecutorService coprocessorPool = null;
 
-private static DistributedLock lock = null;
-
 static {
 Runtime.getRuntime().addShutdownHook(new Thread() {
 @Override
@@ -268,18 +267,20 @@ public class HBaseConnection {
 }
 
 public static void createHTableIfNeeded(Connection conn, String table, 
String... families) throws IOException {
-Admin hbase = conn.getAdmin();
+Admin admin = conn.getAdmin();
 TableName tableName = TableName.valueOf(table);
-boolean hasLock = false;
+DistributedLock lock = null;
+String lockPath = getLockPath(table);
+
 try {
 if (tableExists(conn, table)) {
 logger.debug("HTable '" + table + "' already exists");
-Set existingFamilies = 
getFamilyNames(hbase.getTableDescriptor(tableName));
+Set existingFamilies = 
getFamilyNames(admin.getTableDescriptor(tableName));
 boolean wait = false;
 for (String family : families) {
 if (existingFamilies.contains(family) == false) {
 logger.debug("Adding family '" + family + "' to HTable 
'" + table + "'");
-hbase.addColumn(tableName, 
newFamilyDescriptor(family));
+admin.addColumn(tableName, 
newFamilyDescriptor(family));
 // addColumn() is async, is there a way to wait it 
finish?
 wait = true;
 }
@@ -295,7 +296,8 @@ public class HBaseConnection {
 }
 
 lock = 
KylinConfig.getInstanceFromEnv().getDistributedLockFactory().lockForCurrentProcess();
-hasLock = lock.lock(getLockPath(table), Long.MAX_VALUE);
+if (!lock.lock(lockPath, Long.MAX_VALUE))
+throw new RuntimeException("Cannot acquire lock to create 
HTable " + table);
 
 if (tableExists(conn, table)) {
 logger.debug("HTable '" + table + "' already exists");
@@ -313,15 +315,13 @@ public class HBaseConnection {
 }
 }
 
-

[09/50] [abbrv] kylin git commit: KYLIN-2577, refine hive configurations during cubing steps

2017-05-24 Thread kangkaisen
KYLIN-2577, refine hive configurations during cubing steps


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

Branch: refs/heads/KYLIN-2606
Commit: 7c152c515ce6cebe380c4e1b7c16d109192308db
Parents: 0061900
Author: Cheng Wang 
Authored: Thu May 18 11:05:34 2017 +0800
Committer: liyang-gmt8 
Committed: Thu May 18 15:27:36 2017 +0800

--
 build/bin/load-hive-conf.sh |  2 +-
 .../kylin/common/util/HiveCmdBuilder.java   | 56 +++-
 .../kylin/common/util/HiveCmdBuilderTest.java   |  2 +-
 .../kylin/job/engine/JobEngineConfig.java   | 43 ---
 .../source/hive/CreateFlatHiveTableStep.java|  3 --
 .../apache/kylin/source/hive/HiveMRInput.java   |  4 --
 6 files changed, 57 insertions(+), 53 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/7c152c51/build/bin/load-hive-conf.sh
--
diff --git a/build/bin/load-hive-conf.sh b/build/bin/load-hive-conf.sh
index a5046f0..a42cd0c 100644
--- a/build/bin/load-hive-conf.sh
+++ b/build/bin/load-hive-conf.sh
@@ -11,5 +11,5 @@ hive_conf_prop="${KYLIN_HOME}/logs/hive_props"
 rm -rf ${hive_conf_prop}
 export ENABLE_CHECK_ENV=false
 ${dir}/kylin.sh org.apache.kylin.tool.HiveConfigCLI ${hive_conf_dir} 
${hive_conf_prop}
-[[ 0 == $? ]] || quit "Error, can not parse ${hive_conf_dir} and can not apply 
it to hive relevant check."
+[[ 0 == $? ]] || quit "Can not parse xml file: ${hive_conf_dir}, please check 
it."
 hive_conf_properties=`cat ${hive_conf_prop}`
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/7c152c51/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java 
b/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
index 255867a..2f6b9a0 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java
@@ -27,17 +27,25 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
 
 import com.google.common.collect.Lists;
 
 public class HiveCmdBuilder {
 private static final Logger logger = 
LoggerFactory.getLogger(HiveCmdBuilder.class);
 
+public static final String HIVE_CONF_FILENAME = "kylin_hive_conf";
+
 public enum HiveClientMode {
 CLI, BEELINE
 }
@@ -50,6 +58,7 @@ public class HiveCmdBuilder {
 public HiveCmdBuilder() {
 kylinConfig = KylinConfig.getInstanceFromEnv();
 clientMode = 
HiveClientMode.valueOf(kylinConfig.getHiveClientMode().toUpperCase());
+loadHiveConfiguration();
 }
 
 public String build() {
@@ -75,8 +84,8 @@ public class HiveCmdBuilder {
 bw.newLine();
 }
 buf.append("beeline ");
-buf.append(parseProps());
 buf.append(kylinConfig.getHiveBeelineParams());
+buf.append(parseProps());
 buf.append(" -f ");
 buf.append(tmpHql.getAbsolutePath());
 buf.append(";ret_code=$?;rm -f ");
@@ -123,6 +132,7 @@ public class HiveCmdBuilder {
 }
 
 public void setHiveConfProps(Map hiveConfProps) {
+this.hiveConfProps.clear();
 this.hiveConfProps.putAll(hiveConfProps);
 }
 
@@ -144,4 +154,48 @@ public class HiveCmdBuilder {
 public String toString() {
 return build();
 }
+
+private void loadHiveConfiguration() {
+
+File hiveConfFile;
+String hiveConfFileName = (HIVE_CONF_FILENAME + ".xml");
+String path = System.getProperty(KylinConfig.KYLIN_CONF);
+
+if (StringUtils.isNotEmpty(path)) {
+hiveConfFile = new File(path, hiveConfFileName);
+} else {
+path = KylinConfig.getKylinHome();
+if (StringUtils.isEmpty(path)) {
+logger.error("KYLIN_HOME is not set, can not locate hive conf: 
{}.xml", HIVE_CONF_FILENAME);
+return;
+}
+

[14/50] [abbrv] kylin git commit: Merge commit '87fedf75e5bbf61a33cf1b31720ad9ac55de6287'

2017-05-24 Thread kangkaisen
Merge commit '87fedf75e5bbf61a33cf1b31720ad9ac55de6287'


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

Branch: refs/heads/KYLIN-2606
Commit: f36372bc657b1edb312b36a071b077cde184eab8
Parents: 8ce972f 87fedf7
Author: Hongbin Ma 
Authored: Fri May 19 17:55:26 2017 +0800
Committer: Hongbin Ma 
Committed: Fri May 19 17:55:26 2017 +0800

--
 .../rel/rules/OLAPJoinPushThroughJoinRule.java  | 172 
 .../rel/rules/OLAPJoinPushThroughJoinRule2.java | 205 +
 .../java/org/apache/calcite/tools/Programs.java | 438 +++
 build/bin/find-hive-dependency.sh   |   4 +-
 build/bin/kylin.sh  |  41 +-
 build/bin/sample.sh |  24 +-
 .../apache/kylin/common/KylinConfigBase.java|   8 +-
 .../kylin/common/lock/DistributedLock.java  |  63 ++-
 .../common/lock/DistributedLockFactory.java |  43 ++
 .../kylin/common/restclient/RestClient.java |  16 +-
 .../org/apache/kylin/common/util/CheckUtil.java |  50 ++-
 .../apache/kylin/cube/model/DimensionDesc.java  |   3 +-
 .../kylin/dict/BuiltInFunctionTransformer.java  |   8 +-
 .../kylin/dict/GlobalDictionaryBuilder.java |  71 +--
 .../impl/threadpool/DistributedScheduler.java   |  55 +--
 .../kylin/job/lock/DistributedJobLock.java  |  24 -
 .../kylin/metadata/cachesync/Broadcaster.java   |  66 ++-
 .../metadata/filter/function/BuiltInMethod.java |  39 +-
 .../metadata/filter/function/LikeMatchers.java  | 141 ++
 examples/sample_cube/create_sample_tables.sql   |  10 +-
 .../kylin/job/BaseTestDistributedScheduler.java |  35 +-
 .../job/ITDistributedSchedulerBaseTest.java |   6 +-
 .../job/ITDistributedSchedulerTakeOverTest.java |   2 +-
 .../resources/query/sql_subquery/query17.sql|  17 +
 .../resources/query/sql_subquery/query18.sql|  23 +
 .../resources/query/sql_subquery/query19.sql|  20 +
 .../resources/query/sql_subquery/query21.sql|  26 ++
 .../resources/query/sql_subquery/query22.sql|  25 ++
 .../resources/query/sql_subquery/query23.sql|  26 ++
 .../resources/query/sql_subquery/query24.sql|  29 ++
 .../resources/query/sql_subquery/query25.sql|  22 +
 .../resources/query/sql_subquery/query26.sql|  16 +
 .../resources/query/sql_subquery/query27.sql|  20 +
 .../resources/query/sql_subquery/query28.sql|  21 +
 .../query/sql_subquery/query29.sql.todo |  22 +
 .../kylin/query/relnode/OLAPAggregateRel.java   |   4 +-
 .../apache/kylin/query/relnode/OLAPContext.java |  10 +
 .../kylin/query/relnode/OLAPFilterRel.java  |   2 +-
 .../apache/kylin/query/relnode/OLAPJoinRel.java |  12 +-
 .../kylin/query/relnode/OLAPProjectRel.java |  15 +-
 .../rest/security/AuthoritiesPopulator.java |  20 +-
 .../apache/kylin/rest/service/AclService.java   |   1 -
 .../kylin/rest/service/CacheServiceTest.java|  10 +-
 .../kylin/storage/hbase/HBaseConnection.java|  30 +-
 .../hbase/util/ZookeeperDistributedJobLock.java | 257 ---
 .../hbase/util/ZookeeperDistributedLock.java| 307 +
 .../storage/hbase/util/ZookeeperJobLock.java| 144 ++
 .../apache/kylin/storage/hdfs/LockManager.java  |   8 +-
 .../util/ITZookeeperDistributedLockTest.java| 254 +++
 .../apache/kylin/tool/MetadataCleanupJob.java   |  14 +-
 webapp/app/js/controllers/access.js |   1 +
 webapp/app/js/controllers/admin.js  |  12 +-
 webapp/app/js/controllers/cubeMeasures.js   |   2 +-
 webapp/app/js/controllers/query.js  |   4 +-
 54 files changed, 2273 insertions(+), 625 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/f36372bc/build/bin/find-hive-dependency.sh
--

http://git-wip-us.apache.org/repos/asf/kylin/blob/f36372bc/build/bin/sample.sh
--
diff --cc build/bin/sample.sh
index 2e13805,10900bb..b9c4ea3
--- a/build/bin/sample.sh
+++ b/build/bin/sample.sh
@@@ -52,10 -62,10 +63,11 @@@ the
  else
  
beeline_params=${beeline_params/${hive2_url}/${hive2_url}${sample_database}}
  fi
- beeline ${hive_conf_properties} ${beeline_params} -f 
${KYLIN_HOME}/sample_cube/create_sample_tables.sql  || { exit 1; }
 -beeline ${beeline_params} --hivevar hdfs_tmp_dir=${hdfs_tmp_dir} -f 
${KYLIN_HOME}/sample_cube/create_sample_tables.sql  || { exit 1; }
++
++beeline ${hive_conf_properties} --hivevar hdfs_tmp_dir=${hdfs_tmp_dir} 
${beeline_params} -f ${KYLIN_HOME}/sample_cube/create_sample_tables.sql  || { 
exit 1; }
  

[12/50] [abbrv] kylin git commit: fix KYLIN-2594: After reloading metadata, refresh the project list

2017-05-24 Thread kangkaisen
fix KYLIN-2594: After reloading metadata, refresh the project list

Signed-off-by: Billy Liu 


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

Branch: refs/heads/KYLIN-2606
Commit: 87fedf75e5bbf61a33cf1b31720ad9ac55de6287
Parents: a34db26
Author: pengjianlin 
Authored: Fri May 19 16:24:28 2017 +0800
Committer: Billy Liu 
Committed: Fri May 19 16:44:28 2017 +0800

--
 webapp/app/js/controllers/admin.js | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/87fedf75/webapp/app/js/controllers/admin.js
--
diff --git a/webapp/app/js/controllers/admin.js 
b/webapp/app/js/controllers/admin.js
index 10e2c38..37c1d67 100644
--- a/webapp/app/js/controllers/admin.js
+++ b/webapp/app/js/controllers/admin.js
@@ -18,7 +18,7 @@
 
 'use strict';
 
-KylinApp.controller('AdminCtrl', function ($scope, AdminService, CacheService, 
TableService, loadingRequest, MessageService, $modal, 
SweetAlert,kylinConfig,ProjectModel,$window) {
+KylinApp.controller('AdminCtrl', function ($scope, AdminService, CacheService, 
TableService, loadingRequest, MessageService, ProjectService, $modal, 
SweetAlert,kylinConfig,ProjectModel,$window) {
   $scope.configStr = "";
   $scope.envStr = "";
 
@@ -84,7 +84,7 @@ KylinApp.controller('AdminCtrl', function ($scope, 
AdminService, CacheService, T
   }
 });
   }
-  
+
   $scope.reloadMeta = function () {
 SweetAlert.swal({
   title: '',
@@ -98,6 +98,9 @@ KylinApp.controller('AdminCtrl', function ($scope, 
AdminService, CacheService, T
   if (isConfirm) {
 CacheService.clean({}, function () {
   SweetAlert.swal('Success!', 'Cache reload successfully', 'success');
+  ProjectService.listReadable({}, function(projects) {
+ProjectModel.setProjects(projects);
+  });
 }, function (e) {
   if (e.data && e.data.exception) {
 var message = e.data.exception;



[05/50] [abbrv] kylin git commit: KYLIN-2625 not null filter clause should be evaluable in storage

2017-05-24 Thread kangkaisen
KYLIN-2625  not null filter clause should be evaluable in storage


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

Branch: refs/heads/KYLIN-2606
Commit: c9dc7cc78c5eed40f4c5a438423b857a145f17b1
Parents: a38b02d
Author: Hongbin Ma 
Authored: Tue May 16 18:04:03 2017 +0800
Committer: Roger Shi 
Committed: Tue May 16 20:59:12 2017 +0800

--
 .../metadata/filter/CompareTupleFilter.java |  3 ++-
 .../test/resources/query/sql_limit/query04.sql  | 25 
 2 files changed, 27 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/c9dc7cc7/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java
index d783e52..2771250 100755
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java
@@ -215,7 +215,8 @@ public class CompareTupleFilter extends TupleFilter {
 @Override
 public boolean isEvaluable() {
 return (column != null || (function != null && 
function.isEvaluable())) //
-&& !conditionValues.isEmpty() && secondColumn == null;
+&& (!conditionValues.isEmpty() || operator == 
FilterOperatorEnum.ISNOTNULL || operator == FilterOperatorEnum.ISNULL) //
+&& secondColumn == null;
 }
 
 public boolean alwaysReturnTrue() {

http://git-wip-us.apache.org/repos/asf/kylin/blob/c9dc7cc7/kylin-it/src/test/resources/query/sql_limit/query04.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_limit/query04.sql 
b/kylin-it/src/test/resources/query/sql_limit/query04.sql
new file mode 100644
index 000..381ab65
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_limit/query04.sql
@@ -0,0 +1,25 @@
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements.  See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership.  The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License.  You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+
+
+select * from (
+select * from test_kylin_fact
+  where lstg_format_name is not null
+  ) limit 20
+ 



[39/50] [abbrv] kylin git commit: minor, use soft reference in dict cache

2017-05-24 Thread kangkaisen
minor, use soft reference in dict cache


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

Branch: refs/heads/KYLIN-2606
Commit: ed0430bc0649ac5b4de7a6c3df0f65b8121d12cd
Parents: 0e44a19
Author: Li Yang 
Authored: Fri May 12 15:23:19 2017 +0800
Committer: hongbin ma 
Committed: Tue May 23 20:18:17 2017 +0800

--
 .../src/main/java/org/apache/kylin/dict/DictionaryManager.java| 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ed0430bc/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
--
diff --git 
a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java 
b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
index bbe6cac..1628f4e 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
@@ -99,8 +99,7 @@ public class DictionaryManager {
 }
 })//
 .maximumSize(config.getCachedDictMaxEntrySize())//
-.expireAfterWrite(1, TimeUnit.DAYS)//
-.build(new CacheLoader() {
+.expireAfterWrite(1, TimeUnit.DAYS).build(new 
CacheLoader() {
 @Override
 public DictionaryInfo load(String key) throws Exception {
 DictionaryInfo dictInfo = 
DictionaryManager.this.load(key, true);



[13/50] [abbrv] kylin git commit: KAP-733 minor UT fix

2017-05-24 Thread kangkaisen
KAP-733 minor UT fix


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

Branch: refs/heads/KYLIN-2606
Commit: 8ce972fd6475e923af2a5e525d8ddb698d0dbadf
Parents: 2dfc5bb
Author: Li Yang 
Authored: Fri May 19 15:50:32 2017 +0800
Committer: liyang-gmt8 
Committed: Fri May 19 17:25:55 2017 +0800

--
 .../apache/kylin/common/util/LocalFileMetadataTestCase.java| 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/8ce972fd/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java
--
diff --git 
a/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java
 
b/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java
index e5e4f8b..a44a55d 100644
--- 
a/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java
+++ 
b/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java
@@ -81,7 +81,11 @@ public class LocalFileMetadataTestCase extends 
AbstractKylinTestCase {
 String dir = 
KylinConfig.getInstanceFromEnv().getHdfsWorkingDirectory();
 if (dir.startsWith("file://"))
 dir = dir.substring("file://".length());
-return dir;
+try {
+return new File(dir).getCanonicalPath();
+} catch (IOException e) {
+throw new RuntimeException(e);
+}
 }
 
 protected ResourceStore getStore() {



[15/50] [abbrv] kylin git commit: KYLIN-2624 fix IT with refactored DistributedLock

2017-05-24 Thread kangkaisen
KYLIN-2624 fix IT with refactored DistributedLock


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

Branch: refs/heads/KYLIN-2606
Commit: be32f75883c21bf32545d1b06158ad7cf36d676b
Parents: f36372b
Author: Yang Li 
Authored: Fri May 19 22:02:38 2017 +0800
Committer: Yang Li 
Committed: Fri May 19 22:02:38 2017 +0800

--
 .../job/impl/threadpool/DistributedScheduler.java   |  1 +
 .../hbase/util/ZookeeperDistributedLock.java| 16 
 2 files changed, 13 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/be32f758/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java
--
diff --git 
a/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java
 
b/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java
index d01cb5a..8812dad 100644
--- 
a/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java
+++ 
b/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java
@@ -319,6 +319,7 @@ public class DistributedScheduler implements 
Scheduler, Conn
 }
 return path;
 }
+
 @Override
 public void shutdown() throws SchedulerException {
 logger.info("Will shut down Job Engine ");

http://git-wip-us.apache.org/repos/asf/kylin/blob/be32f758/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
--
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
index d181d81..dc2a23e 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
@@ -281,10 +281,18 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 
 // normalize lock path
 private String norm(String lockPath) {
-if (lockPath.startsWith(zkPathBase))
-return lockPath;
-else
-return zkPathBase + (lockPath.startsWith("/") ? "" : "/") + 
lockPath;
+if (!lockPath.startsWith(zkPathBase))
+lockPath = zkPathBase + (lockPath.startsWith("/") ? "" : "/") + 
lockPath;
+
+return dropDoubleSlash(lockPath);
+}
+
+public static String dropDoubleSlash(String path) {
+for (int n = Integer.MAX_VALUE; n > path.length();) {
+n = path.length();
+path = path.replace("//", "/");
+}
+return path;
 }
 
 // 




[44/50] [abbrv] kylin git commit: KYLIN-2631 Seek to next model when no cube in current model satisfies query

2017-05-24 Thread kangkaisen
KYLIN-2631 Seek to next model when no cube in current model satisfies query

KYLIN-2631 bug fix


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

Branch: refs/heads/KYLIN-2606
Commit: f870c6c4d64e4aa2ae5f3495534d97e04466b843
Parents: ada37a9
Author: Hongbin Ma 
Authored: Fri May 19 21:12:26 2017 +0800
Committer: Hongbin Ma 
Committed: Tue May 23 20:30:03 2017 +0800

--
 .../apache/kylin/metadata/model/TblColRef.java  |  20 +-
 .../kylin/metadata/realization/SQLDigest.java   |   2 +
 .../gtrecord/GTCubeStorageQueryBase.java|   3 -
 .../kylin/query/relnode/OLAPTableScan.java  |  13 +-
 .../relnode/OLAPToEnumerableConverter.java  |  11 +-
 .../kylin/query/routing/ModelChooser.java   | 219 --
 .../apache/kylin/query/routing/QueryRouter.java |   2 +-
 .../kylin/query/routing/RealizationChooser.java | 224 +++
 8 files changed, 260 insertions(+), 234 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/f870c6c4/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
index aa4c056..3bca61c 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
@@ -87,8 +87,12 @@ public class TblColRef implements Serializable {
 checkArgument(col.table.getModel() == UNKNOWN_MODEL || 
col.table.getModel() == model);
 TableRef tableRef = model.findTable(alias);
 
checkArgument(tableRef.getTableDesc().getIdentity().equals(col.column.getTable().getIdentity()));
-col.table = tableRef;
-col.identity = null;
+checkArgument(tableRef.getTableDesc() == col.column.getTable());
+col.fixTableRef(tableRef);
+}
+
+public static void unfixUnknownModel(TblColRef col) {
+col.unfixTableRef();
 }
 
 // for test mainly
@@ -105,6 +109,7 @@ public class TblColRef implements Serializable {
 // 

 
 private TableRef table;
+private TableRef backupTable;// only used in fixTableRef()
 private ColumnDesc column;
 private String identity;
 private String parserDescription;
@@ -119,6 +124,17 @@ public class TblColRef implements Serializable {
 this.column = column;
 }
 
+public void fixTableRef(TableRef tableRef) {
+this.backupTable = this.table;
+this.table = tableRef;
+this.identity = null;
+}
+
+public void unfixTableRef() {
+this.table = backupTable;
+this.identity = null;
+}
+
 public ColumnDesc getColumnDesc() {
 return column;
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/f870c6c4/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java
index 03ff3ff..9ce65bb 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java
@@ -96,6 +96,8 @@ public class SQLDigest {
 this.sortOrders = sortOrders;
 this.isRawQuery = isRawQuery();
 this.limitPrecedesAggr = limitPrecedesAggr;
+
+this.includeSubqueryJoinParticipants();
 }
 
 private boolean isRawQuery() {

http://git-wip-us.apache.org/repos/asf/kylin/blob/f870c6c4/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
--
diff --git 
a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
 
b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
index 5faa098..176d73c 100644
--- 
a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
+++ 
b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
@@ -99,9 +99,6 @@ public abstract class GTCubeStorageQueryBase implements 
IStorageQuery {
 protected GTCubeStorageQueryRequest 

[06/50] [abbrv] kylin git commit: KYLIN-2621 The user of the LDAP group named admin always has ROLE_ADMIN permission

2017-05-24 Thread kangkaisen
KYLIN-2621 The user of the LDAP group named admin always has ROLE_ADMIN 
permission

Signed-off-by: Billy Liu 


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

Branch: refs/heads/KYLIN-2606
Commit: a34db26f0bd594b55fd4df29b66f15579bb3c8ff
Parents: 858d947
Author: 10069681 
Authored: Mon May 15 20:31:26 2017 +0800
Committer: Billy Liu 
Committed: Wed May 17 16:23:12 2017 +0800

--
 .../rest/security/AuthoritiesPopulator.java | 20 ++--
 1 file changed, 10 insertions(+), 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/a34db26f/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java
 
b/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java
index 2b290ce..592791c 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java
@@ -52,8 +52,11 @@ public class AuthoritiesPopulator extends 
DefaultLdapAuthoritiesPopulator {
 this.adminRoleAsAuthority = new SimpleGrantedAuthority(adminRole);
 
 String[] defaultRoles = StringUtils.split(defaultRole, ",");
-if (ArrayUtils.contains(defaultRoles, Constant.ROLE_MODELER))
+if (ArrayUtils.contains(defaultRoles, Constant.ROLE_MODELER)) {
 this.defaultAuthorities.add(modelerAuthority);
+this.defaultAuthorities.add(analystAuthority);
+}
+
 if (ArrayUtils.contains(defaultRoles, Constant.ROLE_ANALYST))
 this.defaultAuthorities.add(analystAuthority);
 }
@@ -62,19 +65,16 @@ public class AuthoritiesPopulator extends 
DefaultLdapAuthoritiesPopulator {
 public Set getGroupMembershipRoles(String userDn, String 
username) {
 Set authorities = 
super.getGroupMembershipRoles(userDn, username);
 
-authorities.addAll(defaultAuthorities);
+Set userAuthorities = new 
HashSet();
+userAuthorities.addAll(defaultAuthorities);
 
 if (authorities.contains(adminRoleAsAuthority)) {
-authorities.add(adminAuthority);
-authorities.add(modelerAuthority);
-authorities.add(analystAuthority);
-}
-
-if (authorities.contains(modelerAuthority)) {
-authorities.add(analystAuthority);
+userAuthorities.add(adminAuthority);
+userAuthorities.add(modelerAuthority);
+userAuthorities.add(analystAuthority);
 }
 
-return authorities;
+return userAuthorities;
 }
 
 }



[20/50] [abbrv] kylin git commit: KYLIN-2459 fix implementation

2017-05-24 Thread kangkaisen
KYLIN-2459 fix implementation


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

Branch: refs/heads/KYLIN-2606
Commit: 429dfbdc93371e8df2095e35298425ccab8ac7de
Parents: 1b864f0
Author: Yang Li 
Authored: Sat May 20 19:52:30 2017 +0800
Committer: Roger Shi 
Committed: Sat May 20 21:35:36 2017 +0800

--
 .../apache/kylin/common/KylinConfigBase.java| 36 ++--
 .../kylin/common/persistence/ResourceStore.java | 45 ++--
 .../common/persistence/ResourceStoreTest.java   | 11 +
 .../common/util/LocalFileMetadataTestCase.java  |  7 +--
 4 files changed, 32 insertions(+), 67 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/429dfbdc/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 df3baf4..8930129 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
@@ -218,6 +218,16 @@ abstract public class KylinConfigBase implements 
Serializable {
 return getMetadataUrl().getIdentifier();
 }
 
+public Map getResourceStoreImpls() {
+Map r = Maps.newLinkedHashMap();
+// ref constants in ISourceAware
+r.put("", "org.apache.kylin.common.persistence.FileResourceStore");
+r.put("hbase", "org.apache.kylin.storage.hbase.HBaseResourceStore");
+r.put("hdfs", "org.apache.kylin.storage.hdfs.HDFSResourceStore");
+
r.putAll(getPropertiesByPrefix("kylin.metadata.resource-store-provider.")); // 
note the naming convention -- 
http://kylin.apache.org/development/coding_naming_convention.html
+return r;
+}
+
 public String[] getRealizationProviders() {
 return getOptionalStringArray("kylin.metadata.realization-providers", 
//
 new String[] { "org.apache.kylin.cube.CubeManager", 
"org.apache.kylin.storage.hybrid.HybridManager" });
@@ -456,6 +466,10 @@ abstract public class KylinConfigBase implements 
Serializable {
 return getOptional("kylin.job.advanced-flat-table.class");
 }
 
+public String getJobTrackingURLPattern() {
+return getOptional("kylin.job.tracking-url-pattern", "");
+}
+
 // 

 // SOURCE.HIVE
 // 

@@ -970,26 +984,4 @@ abstract public class KylinConfigBase implements 
Serializable {
 return 
Boolean.parseBoolean(getOptional("kylin.web.cross-domain-enabled", "true"));
 }
 
-//ResourceStore Impl
-/*public String getResourceStoreImpl() {
-return getOptional("kylin.metadata.default-resource-store-impl", 
"org.apache.kylin.storage.hbase.HBaseResourceStore");
-}*/
-
-public Map getResourceStoreImpls() {
-Map r = Maps.newLinkedHashMap();
-// ref constants in ISourceAware
-r.put("", "org.apache.kylin.common.persistence.FileResourceStore");
-r.put("hbase", "org.apache.kylin.storage.hbase.HBaseResourceStore");
-r.put("hdfs", "org.apache.kylin.storage.hdfs.HDFSResourceStore");
-r.putAll(getPropertiesByPrefix("kylin.resource.store.provider."));
-return r;
-}
-
-public String getResourceStoreImpl() {
-return getResourceStoreImpls().get(getMetadataUrl().getScheme());
-}
-
-public String getJobTrackingURLPattern() {
-return getOptional("kylin.job.tracking-url-pattern", "");
-}
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/429dfbdc/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
index 0565c66..7fb93e7 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
@@ -39,6 +39,7 @@ import java.util.concurrent.ConcurrentMap;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.kylin.common.KylinConfig;
+import 

[33/50] [abbrv] kylin git commit: KYLIN-2640 refactor ISource API

2017-05-24 Thread kangkaisen
http://git-wip-us.apache.org/repos/asf/kylin/blob/0a0edfef/server-base/src/main/java/org/apache/kylin/rest/service/TableSchemaUpdateChecker.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/TableSchemaUpdateChecker.java
 
b/server-base/src/main/java/org/apache/kylin/rest/service/TableSchemaUpdateChecker.java
new file mode 100644
index 000..a87ddd8
--- /dev/null
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/service/TableSchemaUpdateChecker.java
@@ -0,0 +1,207 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package org.apache.kylin.rest.service;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static java.lang.String.format;
+
+import java.util.List;
+import java.util.Set;
+
+import javax.annotation.Nullable;
+
+import org.apache.kylin.cube.CubeInstance;
+import org.apache.kylin.cube.CubeManager;
+import org.apache.kylin.metadata.MetadataManager;
+import org.apache.kylin.metadata.model.ColumnDesc;
+import org.apache.kylin.metadata.model.DataModelDesc;
+import org.apache.kylin.metadata.model.TableDesc;
+import org.apache.kylin.metadata.model.TblColRef;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+public class TableSchemaUpdateChecker {
+private final MetadataManager metadataManager;
+private final CubeManager cubeManager;
+
+static class CheckResult {
+private final boolean valid;
+private final String reason;
+
+private CheckResult(boolean valid, String reason) {
+this.valid = valid;
+this.reason = reason;
+}
+
+void raiseExceptionWhenInvalid() {
+if (!valid) {
+throw new RuntimeException(reason);
+}
+}
+
+static CheckResult validOnFirstLoad(String tableName) {
+return new CheckResult(true, format("Table '%s' hasn't been loaded 
before", tableName));
+}
+
+static CheckResult validOnCompatibleSchema(String tableName) {
+return new CheckResult(true, format("Table '%s' is compatible with 
all existing cubes", tableName));
+}
+
+static CheckResult invalidOnFetchSchema(String tableName, Exception e) 
{
+return new CheckResult(false, format("Failed to fetch metadata of 
'%s': %s", tableName, e.getMessage()));
+}
+
+static CheckResult invalidOnIncompatibleSchema(String tableName, 
List reasons) {
+StringBuilder buf = new StringBuilder();
+for (String reason : reasons) {
+buf.append("- ").append(reason).append("\n");
+}
+
+return new CheckResult(false, format("Found %d issue(s) with 
'%s':%n%s Please disable and purge related cube(s) first", reasons.size(), 
tableName, buf.toString()));
+}
+}
+
+TableSchemaUpdateChecker(MetadataManager metadataManager, CubeManager 
cubeManager) {
+this.metadataManager = checkNotNull(metadataManager, "metadataManager 
is null");
+this.cubeManager = checkNotNull(cubeManager, "cubeManager is null");
+}
+
+private List findCubeByTable(final String fullTableName) {
+Iterable relatedCubes = 
Iterables.filter(cubeManager.listAllCubes(), new Predicate() {
+@Override
+public boolean apply(@Nullable CubeInstance cube) {
+if (cube == null || cube.allowBrokenDescriptor()) {
+return false;
+}
+DataModelDesc model = cube.getModel();
+if (model == null)
+return false;
+return model.containsTable(fullTableName);
+}
+});
+
+return ImmutableList.copyOf(relatedCubes);
+}
+
+private boolean isColumnCompatible(ColumnDesc column, ColumnDesc newCol) {
+if (!column.getName().equalsIgnoreCase(newCol.getName())) {
+return false;
+}
+
+if (column.getType().isIntegerFamily()) {
+// 

[50/50] [abbrv] kylin git commit: KYLIN-2606 Only return counter for precise count_distinct if query is exactAggregate

2017-05-24 Thread kangkaisen
KYLIN-2606 Only return counter for precise count_distinct if query is 
exactAggregate


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

Branch: refs/heads/KYLIN-2606
Commit: d610a6dd50b547c0f1f4d1529aaf626760c66549
Parents: fdacf5d
Author: kangkaisen 
Authored: Wed Feb 15 19:53:17 2017 +0800
Committer: kangkaisen 
Committed: Wed May 24 15:36:38 2017 +0800

--
 .../kylin/cube/gridtable/CubeCodeSystem.java|   4 +
 .../org/apache/kylin/gridtable/GTRecord.java|   8 +
 .../kylin/gridtable/GTSampleCodeSystem.java |   4 +
 .../apache/kylin/gridtable/IGTCodeSystem.java   |   3 +
 .../measure/bitmap/BitmapCounterFactory.java|   2 +
 .../kylin/measure/bitmap/BitmapSerializer.java  |  37 -
 .../measure/bitmap/RoaringBitmapCounter.java|  10 ++
 .../bitmap/RoaringBitmapCounterFactory.java |   5 +
 .../metadata/datatype/DataTypeSerializer.java   |  13 ++
 .../gtrecord/GTCubeStorageQueryBase.java|  47 ++
 .../hbase/cube/v2/CubeHBaseEndpointRPC.java |   1 +
 .../storage/hbase/cube/v2/CubeHBaseScanRPC.java |   2 +-
 .../hbase/cube/v2/HBaseReadonlyStore.java   |  33 +++-
 .../coprocessor/endpoint/CubeVisitService.java  |   2 +-
 .../endpoint/generated/CubeVisitProtos.java | 151 +++
 .../endpoint/protobuf/CubeVisit.proto   |   1 +
 16 files changed, 286 insertions(+), 37 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/d610a6dd/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java 
b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java
index aaa12a7..9eae6f3 100644
--- 
a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java
+++ 
b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java
@@ -177,4 +177,8 @@ public class CubeCodeSystem implements IGTCodeSystem {
 return result;
 }
 
+@Override
+public DataTypeSerializer getSerializer(int col) {
+return serializers[col];
+}
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/d610a6dd/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java
--
diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java 
b/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java
index 3e62ea7..f65e4b5 100644
--- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java
+++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java
@@ -296,4 +296,12 @@ public class GTRecord implements Comparable, 
Cloneable {
 }
 }
 
+/** change pointers to point to data in given buffer, this
+ *  method allows to defined specific column to load */
+public void loadColumns(int selectedCol, ByteBuffer buf) {
+int pos = buf.position();
+int len = info.codeSystem.codeLength(selectedCol, buf);
+cols[selectedCol].set(buf.array(), buf.arrayOffset() + pos, len);
+}
+
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/d610a6dd/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java 
b/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java
index 3f3c844..2a5e791 100644
--- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java
+++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java
@@ -118,4 +118,8 @@ public class GTSampleCodeSystem implements IGTCodeSystem {
 }
 };
 
+@Override
+public DataTypeSerializer getSerializer(int col) {
+return serializers[col];
+}
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/d610a6dd/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java 
b/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java
index 89dfc99..9c8ad6b 100644
--- a/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java
+++ b/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java
@@ -23,6 +23,7 @@ import java.nio.ByteBuffer;
 import org.apache.kylin.common.util.ImmutableBitSet;
 import 

[16/50] [abbrv] kylin git commit: KYLIN-2624 fix IT with refactored DistributedLock

2017-05-24 Thread kangkaisen
KYLIN-2624 fix IT with refactored DistributedLock


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

Branch: refs/heads/KYLIN-2606
Commit: d21c8170b7bbc8f750aadab5c68d229dee6d252f
Parents: f36372b
Author: Hongbin Ma 
Authored: Fri May 19 22:44:50 2017 +0800
Committer: hongbin ma 
Committed: Fri May 19 22:48:41 2017 +0800

--
 .../hbase/util/ZookeeperDistributedLock.java| 30 +---
 1 file changed, 19 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/d21c8170/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
--
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
index d181d81..ea64bbf 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java
@@ -123,7 +123,7 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 throw new NullPointerException("client must not be null");
 if (zkPathBase == null)
 throw new NullPointerException("zkPathBase must not be null");
-
+
 this.curator = curator;
 this.zkPathBase = zkPathBase;
 this.client = client;
@@ -138,7 +138,7 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 @Override
 public boolean lock(String lockPath) {
 lockPath = norm(lockPath);
-
+
 logger.debug(client + " trying to lock " + lockPath);
 
 try {
@@ -148,7 +148,7 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 } catch (Exception ex) {
 throw new RuntimeException("Error while " + client + " trying to 
lock " + lockPath, ex);
 }
-
+
 String lockOwner = peekLock(lockPath);
 if (client.equals(lockOwner)) {
 logger.info(client + " acquired lock at " + lockPath);
@@ -214,7 +214,7 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 public boolean isLockedByMe(String lockPath) {
 return client.equals(peekLock(lockPath));
 }
-
+
 @Override
 public void unlock(String lockPath) {
 lockPath = norm(lockPath);
@@ -236,7 +236,7 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 throw new RuntimeException("Error while " + client + " trying to 
unlock " + lockPath, ex);
 }
 }
-
+
 @Override
 public void purgeLocks(String lockPathRoot) {
 lockPathRoot = norm(lockPathRoot);
@@ -245,7 +245,7 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 
curator.delete().guaranteed().deletingChildrenIfNeeded().forPath(lockPathRoot);
 
 logger.info(client + " purged all locks under " + lockPathRoot);
-
+
 } catch (Exception ex) {
 throw new RuntimeException("Error while " + client + " trying to 
purge " + lockPathRoot, ex);
 }
@@ -278,13 +278,21 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 }
 return cache;
 }
-
+
 // normalize lock path
 private String norm(String lockPath) {
-if (lockPath.startsWith(zkPathBase))
-return lockPath;
-else
-return zkPathBase + (lockPath.startsWith("/") ? "" : "/") + 
lockPath;
+if (!lockPath.startsWith(zkPathBase))
+lockPath = zkPathBase + (lockPath.startsWith("/") ? "" : "/") + 
lockPath;
+
+return dropDoubleSlash(lockPath);
+}
+
+public static String dropDoubleSlash(String path) {
+for (int n = Integer.MAX_VALUE; n > path.length();) {
+n = path.length();
+path = path.replace("//", "/");
+}
+return path;
 }
 
 // 




[27/50] [abbrv] kylin git commit: KYLIN-2589 fix MessageDigest not thread safe in KylinAuthenticationProvider

2017-05-24 Thread kangkaisen
KYLIN-2589 fix MessageDigest not thread safe in KylinAuthenticationProvider


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

Branch: refs/heads/KYLIN-2606
Commit: ce09d6c7f027cdc55c10fb96ea21a70c4002f244
Parents: fd3bfed
Author: shaofengshi 
Authored: Mon May 22 11:24:38 2017 +0800
Committer: shaofengshi 
Committed: Mon May 22 11:25:13 2017 +0800

--
 .../security/KylinAuthenticationProvider.java   | 20 +++-
 1 file changed, 7 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ce09d6c7/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
 
b/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
index d0dd06a..ffe9811 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
@@ -18,10 +18,9 @@
 
 package org.apache.kylin.rest.security;
 
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.Arrays;
-
+import com.google.common.hash.HashFunction;
+import com.google.common.hash.Hashing;
+import org.apache.kylin.common.util.ByteArray;
 import org.apache.kylin.rest.service.UserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -55,26 +54,21 @@ public class KylinAuthenticationProvider implements 
AuthenticationProvider {
 //Embedded authentication provider
 private AuthenticationProvider authenticationProvider;
 
-MessageDigest md = null;
+private HashFunction hf = null;
 
 public KylinAuthenticationProvider(AuthenticationProvider 
authenticationProvider) {
 super();
 Assert.notNull(authenticationProvider, "The embedded 
authenticationProvider should not be null.");
 this.authenticationProvider = authenticationProvider;
-try {
-md = MessageDigest.getInstance("MD5");
-} catch (NoSuchAlgorithmException e) {
-throw new RuntimeException("Failed to init Message Digest ", e);
-}
+hf = Hashing.murmur3_128();
 }
 
 @Override
 public Authentication authenticate(Authentication authentication) throws 
AuthenticationException {
 Authentication authed = null;
 Cache userCache = cacheManager.getCache("UserCache");
-md.reset();
-byte[] hashKey = md.digest((authentication.getName() + 
authentication.getCredentials()).getBytes());
-String userKey = Arrays.toString(hashKey);
+byte[] hashKey = hf.hashString(authentication.getName() + 
authentication.getCredentials()).asBytes();
+ByteArray userKey = new ByteArray(hashKey);
 
 Element authedUser = userCache.get(userKey);
 if (null != authedUser) {



[43/50] [abbrv] kylin git commit: KYLIN-2630 NPE when a subquery joins another lookup tables

2017-05-24 Thread kangkaisen
KYLIN-2630 NPE when a subquery joins another lookup tables


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

Branch: refs/heads/KYLIN-2606
Commit: ada37a9109678abf347d3600b3a19888d6f64056
Parents: 34a65ba
Author: Hongbin Ma 
Authored: Thu May 18 20:54:45 2017 +0800
Committer: Hongbin Ma 
Committed: Tue May 23 20:24:46 2017 +0800

--
 .../resources/query/sql_subquery/query30.sql| 15 ++
 .../resources/query/sql_subquery/query31.sql| 19 
 .../apache/kylin/query/relnode/OLAPJoinRel.java | 12 
 .../org/apache/kylin/query/relnode/OLAPRel.java | 31 +++-
 .../kylin/query/relnode/OLAPTableScan.java  | 18 ++--
 5 files changed, 72 insertions(+), 23 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ada37a91/kylin-it/src/test/resources/query/sql_subquery/query30.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query30.sql 
b/kylin-it/src/test/resources/query/sql_subquery/query30.sql
new file mode 100644
index 000..3b0dfbf
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_subquery/query30.sql
@@ -0,0 +1,15 @@
+
+SELECT t1.cal_dt, t1.sum_price,t1.lstg_site_id 
+FROM (
+  select cal_dt, lstg_site_id, sum(price) as sum_price
+  from test_kylin_fact
+  group by cal_dt, lstg_site_id
+  
+) t1
+
+inner JOIN edw.test_cal_dt as test_cal_dt
+on t1.cal_dt=test_cal_dt.cal_dt
+
+inner JOIN edw.test_sites as test_sites
+on t1.lstg_site_id = test_sites.site_id
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/ada37a91/kylin-it/src/test/resources/query/sql_subquery/query31.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query31.sql 
b/kylin-it/src/test/resources/query/sql_subquery/query31.sql
new file mode 100644
index 000..fafc01f
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_subquery/query31.sql
@@ -0,0 +1,19 @@
+
+SELECT t1.week_beg_dt, t1.sum_price,t1.lstg_site_id 
+FROM (
+  select test_cal_dt.week_beg_dt, sum(price) as sum_price, lstg_site_id
+  from test_kylin_fact
+  inner JOIN edw.test_cal_dt as test_cal_dt
+  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt
+  inner JOIN test_category_groupings
+  ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND 
test_kylin_fact.lstg_site_id = test_category_groupings.site_id
+  inner JOIN edw.test_sites as test_sites
+  ON test_kylin_fact.lstg_site_id = test_sites.site_id
+  group by test_cal_dt.week_beg_dt, lstg_site_id
+) t1
+inner JOIN edw.test_cal_dt as test_cal_dt
+on t1.week_beg_dt=test_cal_dt.week_beg_dt
+ inner JOIN edw.test_sites as test_sites
+ 
+  on t1.lstg_site_id = test_sites.site_id
+

http://git-wip-us.apache.org/repos/asf/kylin/blob/ada37a91/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java
--
diff --git 
a/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java 
b/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java
index 60b5712..1b5970c 100644
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java
@@ -140,12 +140,24 @@ public class OLAPJoinRel extends EnumerableJoin 
implements OLAPRel {
 implementor.freeContext();
 }
 }
+
+if (leftHasSubquery) {
+// After KYLIN-2579, leftHasSubquery means right side have to be 
separate olap context 
+implementor.setNewOLAPContextRequired(true);
+}
+
 implementor.fixSharedOlapTableScanOnTheRight(this);
 implementor.visitChild(this.right, this);
 if (this.context != implementor.getContext() || ((OLAPRel) 
this.right).hasSubQuery()) {
 this.hasSubQuery = true;
 rightHasSubquery = true;
 // if child is also an OLAPJoin, then the context has already been 
popped
+
+if (leftHasSubquery) {
+
Preconditions.checkState(!implementor.isNewOLAPContextRequired());//should have 
been satisfied
+Preconditions.checkState(this.context != 
implementor.getContext(), "missing a new olapcontext");
+}
+
 if (this.context != implementor.getContext()) {
 implementor.freeContext();
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/ada37a91/query/src/main/java/org/apache/kylin/query/relnode/OLAPRel.java

[47/50] [abbrv] kylin git commit: Merge commit '79c75015e49b2216f6e8ca9ec0cedbff72737821'

2017-05-24 Thread kangkaisen
Merge commit '79c75015e49b2216f6e8ca9ec0cedbff72737821'


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

Branch: refs/heads/KYLIN-2606
Commit: 92b640437ca09ba75fc7bce6407cf722f4f4dd8b
Parents: 34a65ba 79c7501
Author: Hongbin Ma 
Authored: Tue May 23 20:34:28 2017 +0800
Committer: Hongbin Ma 
Committed: Tue May 23 20:34:28 2017 +0800

--
 .../kylin/dict/BuiltInFunctionTransformer.java  |   2 +
 .../kylin/metadata/filter/CaseTupleFilter.java  |  52 -
 .../metadata/filter/CompareTupleFilter.java |  29 ++-
 .../filter/FilterOptimizeTransformer.java   |  88 +---
 .../filter/IOptimizeableTupleFilter.java|  22 ++
 .../filter/ITupleFilterTransformer.java |   5 +
 .../metadata/filter/LogicalTupleFilter.java |  27 ++-
 .../kylin/metadata/filter/TupleFilter.java  |   1 -
 .../apache/kylin/metadata/model/TblColRef.java  |  20 +-
 .../kylin/metadata/realization/SQLDigest.java   |   2 +
 .../gtrecord/GTCubeStorageQueryBase.java|  27 +--
 .../resources/query/sql_subquery/query30.sql|  15 ++
 .../resources/query/sql_subquery/query31.sql|  19 ++
 .../resources/query/sql_subquery/query32.sql|  14 ++
 .../resources/query/sql_subquery/query33.sql|  14 ++
 .../resources/query/sql_subquery/query34.sql|  14 ++
 .../kylin/query/relnode/OLAPFilterRel.java  |   2 +-
 .../apache/kylin/query/relnode/OLAPJoinRel.java |  13 ++
 .../kylin/query/relnode/OLAPProjectRel.java |  61 -
 .../org/apache/kylin/query/relnode/OLAPRel.java |  31 +--
 .../kylin/query/relnode/OLAPTableScan.java  |  29 ++-
 .../relnode/OLAPToEnumerableConverter.java  |  11 +-
 .../kylin/query/routing/ModelChooser.java   | 219 --
 .../apache/kylin/query/routing/QueryRouter.java |   2 +-
 .../kylin/query/routing/RealizationChooser.java | 224 +++
 .../kylin/rest/controller/UserController.java   |   4 +-
 26 files changed, 634 insertions(+), 313 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/92b64043/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
--
diff --cc 
core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
index 5faa098,b4e9d47..a8c4872
--- 
a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
+++ 
b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java
@@@ -85,7 -86,7 +86,6 @@@ public abstract class GTCubeStorageQuer
  }
  
  scanner = new CubeSegmentScanner(cubeSeg, request.getCuboid(), 
request.getDimensions(), request.getGroups(), request.getMetrics(), 
request.getFilter(), request.getHavingFilter(), request.getContext());
- 
 -
  if (!scanner.isSegmentSkipped())
  scanners.add(scanner);
  }
@@@ -455,7 -458,7 +457,6 @@@
  }
  aggrOutCol.getColumnDesc().setId("" + (aggrIdxAmongMetrics + 1));
  }
- 
 -
  return havingFilter;
  }
  



[10/50] [abbrv] kylin git commit: KYLIN-2526 refine find-hive-dependency.sh to support Ubuntu

2017-05-24 Thread kangkaisen
KYLIN-2526 refine find-hive-dependency.sh to support Ubuntu


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

Branch: refs/heads/KYLIN-2606
Commit: 0061900bb5bd34c8f0cc1c6e955d34bf34ca48e2
Parents: 5f52cea
Author: Cheng Wang 
Authored: Thu May 18 11:04:47 2017 +0800
Committer: liyang-gmt8 
Committed: Thu May 18 15:27:36 2017 +0800

--
 build/bin/find-hive-dependency.sh | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/0061900b/build/bin/find-hive-dependency.sh
--
diff --git a/build/bin/find-hive-dependency.sh 
b/build/bin/find-hive-dependency.sh
index 02a47ef..c4c7523 100644
--- a/build/bin/find-hive-dependency.sh
+++ b/build/bin/find-hive-dependency.sh
@@ -100,10 +100,10 @@ fi
 
 function checkFileExist()
 {
-files=$1
+files=(`echo $1 | cut -d ":" -f 1- | sed 's/:/ /g'`)
 misFiles=0
 outputMissFiles=
-for file in ${files//:/ }
+for file in ${files}
 do
 let allFiles++
 if [ ! -f "${file}" ]; then
@@ -111,8 +111,10 @@ function checkFileExist()
 let misFiles++
 fi
 done
-ratio=`echo "scale=3; ${misFiles}/${allFiles}" | bc`
-[[ `echo "$ratio < 0.01" | bc ` -eq 1 ]] || quit "A couple of hive jars 
can't be found: ${outputMisFiles}!"
+if [ 0 != ${misFiles} ]; then
+times=`expr ${allFiles} / ${misFiles}`
+[[ ${times} -gt 10 ]] || quit "A couple of hive jars can't be found: 
${outputMisFiles}, please export HIVE_LIB='YOUR_LOCAL_HIVE_LIB'"
+fi
 }
 
 function validateDirectory()



[07/50] [abbrv] kylin git commit: KYLIN-2627 add simple rollback on ResourceStore

2017-05-24 Thread kangkaisen
KYLIN-2627 add simple rollback on ResourceStore


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

Branch: refs/heads/KYLIN-2606
Commit: ea5cabac95b3d27aa60d6b16263904142e3d2daa
Parents: c9dc7cc
Author: Li Yang 
Authored: Wed May 17 17:46:08 2017 +0800
Committer: Roger Shi 
Committed: Wed May 17 19:40:34 2017 +0800

--
 .../kylin/common/persistence/ResourceStore.java | 103 ++-
 .../persistence/LocalFileResourceStoreTest.java |  44 
 2 files changed, 145 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ea5cabac/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
index d5fbc2e..0565c66 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
@@ -18,7 +18,9 @@
 
 package org.apache.kylin.common.persistence;
 
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.File;
@@ -27,6 +29,7 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.NavigableSet;
 import java.util.UUID;
@@ -237,6 +240,11 @@ abstract public class ResourceStore {
 final public void putResource(String resPath, InputStream content, long 
ts) throws IOException {
 resPath = norm(resPath);
 logger.trace("Directly saving resource " + resPath + " (Store " + 
kylinConfig.getMetadataUrl() + ")");
+putResourceCheckpoint(resPath, content, ts);
+}
+
+private void putResourceCheckpoint(String resPath, InputStream content, 
long ts) throws IOException {
+beforeChange(resPath);
 putResourceImpl(resPath, content, ts);
 }
 
@@ -266,7 +274,7 @@ abstract public class ResourceStore {
 dout.close();
 buf.close();
 
-newTS = checkAndPutResourceImpl(resPath, buf.toByteArray(), oldTS, 
newTS);
+newTS = checkAndPutResourceCheckpoint(resPath, buf.toByteArray(), 
oldTS, newTS);
 obj.setLastModified(newTS); // update again the confirmed TS
 return newTS;
 } catch (IOException e) {
@@ -278,6 +286,11 @@ abstract public class ResourceStore {
 }
 }
 
+private long checkAndPutResourceCheckpoint(String resPath, byte[] content, 
long oldTS, long newTS) throws IOException {
+beforeChange(resPath);
+return checkAndPutResourceImpl(resPath, content, oldTS, newTS);
+}
+
 /**
  * checks old timestamp when overwriting existing
  */
@@ -288,7 +301,12 @@ abstract public class ResourceStore {
  */
 final public void deleteResource(String resPath) throws IOException {
 logger.trace("Deleting resource " + resPath + " (Store " + 
kylinConfig.getMetadataUrl() + ")");
-deleteResourceImpl(norm(resPath));
+deleteResourceCheckpoint(norm(resPath));
+}
+
+private void deleteResourceCheckpoint(String resPath) throws IOException {
+beforeChange(resPath);
+deleteResourceImpl(resPath);
 }
 
 abstract protected void deleteResourceImpl(String resPath) throws 
IOException;
@@ -315,6 +333,87 @@ abstract public class ResourceStore {
 
 // 

 
+ThreadLocal checkpointing = new ThreadLocal<>();
+
+public Checkpoint checkpoint() {
+Checkpoint cp = checkpointing.get();
+if (cp != null)
+throw new IllegalStateException("A checkpoint has been open for 
this thread: " + cp);
+
+cp = new Checkpoint();
+checkpointing.set(cp);
+return cp;
+}
+
+private void beforeChange(String resPath) throws IOException {
+Checkpoint cp = checkpointing.get();
+if (cp != null)
+cp.beforeChange(resPath);
+}
+
+public class Checkpoint implements Closeable {
+
+LinkedHashMap origResData = new LinkedHashMap<>();
+LinkedHashMap origResTimestamp = new LinkedHashMap<>();
+
+private void beforeChange(String resPath) throws IOException {
+

[03/50] [abbrv] kylin git commit: Revert "KYLIN-2619 Use newCachedThreadPool instead of newFixedThreadPool in Broadcaster"

2017-05-24 Thread kangkaisen
Revert "KYLIN-2619 Use newCachedThreadPool instead of newFixedThreadPool in 
Broadcaster"

This reverts commit 1c3ed36f7dcf2152b17966bb69dd3211ce4e8aba.


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

Branch: refs/heads/KYLIN-2606
Commit: 858d947518b308c1a33b832ea8ef49144285c02e
Parents: 1c3ed36
Author: kangkaisen 
Authored: Tue May 16 09:48:22 2017 +0800
Committer: kangkaisen 
Committed: Tue May 16 09:48:22 2017 +0800

--
 .../java/org/apache/kylin/common/restclient/RestClient.java   | 4 
 .../java/org/apache/kylin/metadata/cachesync/Broadcaster.java | 7 ++-
 2 files changed, 2 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/858d9475/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java 
b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
index 470386b..33a4e7a 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
@@ -287,8 +287,4 @@ public class RestClient {
 return result.toString();
 }
 
-@Override
-public String toString() {
-return String.format("RestClient(%s:%d)", host, port);
-}
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/858d9475/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
index e787dfd..1394f7b 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
@@ -35,7 +35,6 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.restclient.RestClient;
 import org.apache.kylin.common.util.DaemonThreadFactory;
-import org.apache.kylin.common.util.SetThreadName;
 import org.apache.kylin.metadata.project.ProjectManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -117,7 +116,7 @@ public class Broadcaster {
 for (String node : config.getRestServers()) {
 restClients.add(new RestClient(node));
 }
-final ExecutorService wipingCachePool = 
Executors.newCachedThreadPool(new DaemonThreadFactory());
+final ExecutorService wipingCachePool = 
Executors.newFixedThreadPool(restClients.size(), new DaemonThreadFactory());
 while (true) {
 try {
 final BroadcastEvent broadcastEvent = 
broadcastEvents.takeFirst();
@@ -126,10 +125,8 @@ public class Broadcaster {
 wipingCachePool.execute(new Runnable() {
 @Override
 public void run() {
-try (SetThreadName ignored = new 
SetThreadName("CacheWiper %s %s", restClient, broadcastEvent)) {
-logger.info("{} wipe cache {}", 
restClient, broadcastEvent);
+try {
 
restClient.wipeCache(broadcastEvent.getEntity(), broadcastEvent.getEvent(), 
broadcastEvent.getCacheKey());
-logger.info("{} wipe cache {} 
success", restClient, broadcastEvent);
 } catch (IOException e) {
 logger.warn("Thread failed during wipe 
cache at " + broadcastEvent, e);
 }



[23/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention

2017-05-24 Thread kangkaisen
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java 
b/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java
index 9a48851..47002b5 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java
@@ -27,16 +27,16 @@ import java.util.List;
 public class TableMeta implements Serializable {
 
 private static final long serialVersionUID = 1L;
-private String TABLE_CAT;
-private String TABLE_SCHEM;
-private String TABLE_NAME;
-private String TABLE_TYPE;
-private String REMARKS;
-private String TYPE_CAT;
-private String TYPE_SCHEM;
-private String TYPE_NAME;
-private String SELF_REFERENCING_COL_NAME;
-private String REF_GENERATION;
+protected String TABLE_CAT;
+protected String TABLE_SCHEM;
+protected String TABLE_NAME;
+protected String TABLE_TYPE;
+protected String REMARKS;
+protected String TYPE_CAT;
+protected String TYPE_SCHEM;
+protected String TYPE_NAME;
+protected String SELF_REFERENCING_COL_NAME;
+protected String REF_GENERATION;
 private List columns = new ArrayList();
 
 public TableMeta() {

http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/model/TableMetaWithType.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/model/TableMetaWithType.java 
b/server-base/src/main/java/org/apache/kylin/rest/model/TableMetaWithType.java
new file mode 100644
index 000..55198fe
--- /dev/null
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/model/TableMetaWithType.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package org.apache.kylin.rest.model;
+
+import java.io.Serializable;
+import java.util.HashSet;
+
+/**
+ * Created by luwei on 17-4-26.
+ */
+public class TableMetaWithType extends TableMeta {
+public static enum tableTypeEnum implements Serializable {
+
+LOOKUP, FACT
+
+}
+
+private HashSet TYPE;
+
+public TableMetaWithType(String tABLE_CAT, String tABLE_SCHEM, String 
tABLE_NAME, String tABLE_TYPE, String rEMARKS, String tYPE_CAT, String 
tYPE_SCHEM, String tYPE_NAME, String sELF_REFERENCING_COL_NAME, String 
rEF_GENERATION) {
+TABLE_CAT = tABLE_CAT;
+TABLE_SCHEM = tABLE_SCHEM;
+TABLE_NAME = tABLE_NAME;
+TABLE_TYPE = tABLE_TYPE;
+REMARKS = rEMARKS;
+TYPE_CAT = tYPE_CAT;
+TYPE_SCHEM = tYPE_SCHEM;
+TYPE_NAME = tYPE_NAME;
+SELF_REFERENCING_COL_NAME = sELF_REFERENCING_COL_NAME;
+REF_GENERATION = rEF_GENERATION;
+TYPE = new HashSet();
+}
+
+public HashSet getTYPE() {
+return TYPE;
+}
+
+public void setTYPE(HashSet TYPE) {
+this.TYPE = TYPE;
+}
+}

http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java
--
diff --git a/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java 
b/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java
new file mode 100644
index 000..53cbaba
--- /dev/null
+++ b/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the 

[21/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention

2017-05-24 Thread kangkaisen
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/service/QueryServiceV2.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/QueryServiceV2.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/QueryServiceV2.java
new file mode 100644
index 000..368
--- /dev/null
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/service/QueryServiceV2.java
@@ -0,0 +1,516 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package org.apache.kylin.rest.service;
+
+import static org.apache.kylin.common.util.CheckUtil.checkCondition;
+
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.sql.DataSource;
+
+import org.apache.calcite.avatica.ColumnMetaData;
+import org.apache.commons.lang.StringUtils;
+import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.QueryContext;
+import org.apache.kylin.common.debug.BackdoorToggles;
+import org.apache.kylin.common.exceptions.ResourceLimitExceededException;
+import org.apache.kylin.common.util.SetThreadName;
+import org.apache.kylin.cube.CubeManager;
+import org.apache.kylin.metadata.model.DataModelDesc;
+import org.apache.kylin.metadata.model.JoinDesc;
+import org.apache.kylin.metadata.model.JoinTableDesc;
+import org.apache.kylin.metadata.model.ModelDimensionDesc;
+import org.apache.kylin.metadata.model.TableRef;
+import org.apache.kylin.metadata.project.ProjectInstance;
+import org.apache.kylin.query.relnode.OLAPContext;
+import org.apache.kylin.query.util.QueryUtil;
+import org.apache.kylin.rest.constant.Constant;
+import org.apache.kylin.rest.exception.BadRequestException;
+import org.apache.kylin.rest.exception.InternalErrorException;
+import org.apache.kylin.rest.metrics.QueryMetricsFacade;
+import org.apache.kylin.rest.model.ColumnMetaWithType;
+import org.apache.kylin.rest.model.SelectedColumnMeta;
+import org.apache.kylin.rest.model.TableMetaWithType;
+import org.apache.kylin.rest.msg.Message;
+import org.apache.kylin.rest.msg.MsgPicker;
+import org.apache.kylin.rest.request.PrepareSqlRequest;
+import org.apache.kylin.rest.request.SQLRequest;
+import org.apache.kylin.rest.response.SQLResponse;
+import org.apache.kylin.rest.util.TableauInterceptor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Component;
+
+import com.google.common.collect.Lists;
+
+import net.sf.ehcache.Cache;
+import net.sf.ehcache.Element;
+
+/**
+ * Created by luwei on 17-4-24.
+ */
+@Component("queryServiceV2")
+public class QueryServiceV2 extends QueryService {
+private static final Logger logger = 
LoggerFactory.getLogger(QueryServiceV2.class);
+
+@Autowired
+@Qualifier("cacheService")
+private CacheService cacheService;
+
+@Autowired
+@Qualifier("modelMgmtServiceV2")
+private ModelServiceV2 modelServiceV2;
+
+public SQLResponse doQueryWithCache(SQLRequest sqlRequest) {
+Message msg = MsgPicker.getMsg();
+
+KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
+String serverMode = kylinConfig.getServerMode();
+if (!(Constant.SERVER_MODE_QUERY.equals(serverMode.toLowerCase()) || 
Constant.SERVER_MODE_ALL.equals(serverMode.toLowerCase( {
+throw new 
BadRequestException(String.format(msg.getQUERY_NOT_ALLOWED(), serverMode));
+}
+if (StringUtils.isBlank(sqlRequest.getProject())) {
+throw new 

[35/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API and service

2017-05-24 Thread kangkaisen
KYLIN-2632 Refactor REST API and service


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

Branch: refs/heads/KYLIN-2606
Commit: 2471d5e56219d7c51342953ae37eb77370ae1e58
Parents: 0a0edfe
Author: Luwei-Chen 
Authored: Tue May 23 18:17:29 2017 +0800
Committer: liyang-gmt8 
Committed: Tue May 23 18:21:27 2017 +0800

--
 .../rest/controller2/CubeControllerV2.java  |  74 +
 .../rest/controller2/DiagnosisControllerV2.java |  21 ++-
 .../rest/controller2/ModelControllerV2.java |  63 +---
 .../rest/controller2/ProjectControllerV2.java   | 109 +
 .../rest/response/CubeInstanceResponse.java |  23 ++-
 .../rest/response/DataModelDescResponse.java|  23 ++-
 .../apache/kylin/rest/service/CacheService.java |  14 +-
 .../kylin/rest/service/CubeServiceV2.java   | 159 ++
 .../kylin/rest/service/ModelServiceV2.java  | 161 +++
 .../kylin/rest/service/ProjectServiceV2.java|  91 +++
 10 files changed, 319 insertions(+), 419 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/2471d5e5/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
 
b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
index 05d99f5..a9e00ba 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java
@@ -21,6 +21,7 @@ package org.apache.kylin.rest.controller2;
 import java.io.IOException;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -50,6 +51,7 @@ import org.apache.kylin.rest.request.CubeRequest;
 import org.apache.kylin.rest.request.JobBuildRequest;
 import org.apache.kylin.rest.request.JobBuildRequest2;
 import org.apache.kylin.rest.response.CubeInstanceResponse;
+import org.apache.kylin.rest.response.CubeInstanceResponse.CubeComparator;
 import org.apache.kylin.rest.response.EnvelopeResponse;
 import org.apache.kylin.rest.response.GeneralResponse;
 import org.apache.kylin.rest.response.HBaseResponse;
@@ -74,7 +76,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.google.common.collect.Lists;
 
@@ -149,6 +150,8 @@ public class CubeControllerV2 extends BasicController {
 
 cubeInstanceResponses.add(cubeInstanceResponse);
 }
+CubeComparator cubeComparator = new CubeComparator();
+Collections.sort(cubeInstanceResponses, cubeComparator);
 data.put("cubes", cubeInstanceResponses);
 data.put("size", cubes.size());
 
@@ -468,58 +471,6 @@ public class CubeControllerV2 extends BasicController {
 }
 
 /**
- * update CubDesc
- *
- * @return Table metadata array
- * @throws JsonProcessingException
- * @throws IOException
- */
-
-@RequestMapping(value = "", method = { RequestMethod.PUT }, produces = { 
"application/vnd.apache.kylin-v2+json" })
-@ResponseBody
-public EnvelopeResponse updateCubeDescV2(@RequestHeader("Accept-Language") 
String lang, @RequestBody CubeRequest cubeRequest) throws IOException {
-MsgPicker.setMsg(lang);
-
-CubeDesc desc = deserializeCubeDescV2(cubeRequest);
-cubeServiceV2.validateCubeDesc(desc, false);
-
-boolean createNew = cubeServiceV2.unifyCubeDesc(desc, false);
-
-String projectName = (null == cubeRequest.getProject()) ? 
ProjectInstance.DEFAULT_PROJECT_NAME : cubeRequest.getProject();
-
-desc = cubeServiceV2.updateCubeToResourceStore(desc, projectName, 
createNew, false);
-
-String descData = JsonUtil.writeValueAsIndentString(desc);
-GeneralResponse data = new GeneralResponse();
-data.setProperty("uuid", desc.getUuid());
-data.setProperty("cubeDescData", descData);
-
-return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, "");
-}
-
-@RequestMapping(value = "/draft", method = { RequestMethod.PUT }, produces 
= { "application/vnd.apache.kylin-v2+json" })
-@ResponseBody
-public EnvelopeResponse 

[46/50] [abbrv] kylin git commit: KYLIN-2636 optimize case when in group by

2017-05-24 Thread kangkaisen
KYLIN-2636 optimize case when in group by

KYLIN-2636 bug fix


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

Branch: refs/heads/KYLIN-2606
Commit: 79c75015e49b2216f6e8ca9ec0cedbff72737821
Parents: 2c54989
Author: Hongbin Ma 
Authored: Mon May 22 16:45:24 2017 +0800
Committer: Hongbin Ma 
Committed: Tue May 23 20:30:06 2017 +0800

--
 .../resources/query/sql_subquery/query32.sql| 14 +
 .../resources/query/sql_subquery/query33.sql| 14 +
 .../resources/query/sql_subquery/query34.sql| 14 +
 .../kylin/query/relnode/OLAPProjectRel.java | 61 +++-
 4 files changed, 102 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/79c75015/kylin-it/src/test/resources/query/sql_subquery/query32.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query32.sql 
b/kylin-it/src/test/resources/query/sql_subquery/query32.sql
new file mode 100644
index 000..394ea15
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_subquery/query32.sql
@@ -0,0 +1,14 @@
+
+  select  sum(price) as sum_price,  (case when '1'='1' then 
test_cal_dt.week_beg_dt when '1'='2' then test_kylin_fact.lstg_site_id else 
test_kylin_fact.leaf_categ_id end) as xxx 
+  from test_kylin_fact
+  inner JOIN edw.test_cal_dt as test_cal_dt
+  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt
+  inner JOIN test_category_groupings
+  ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND 
test_kylin_fact.lstg_site_id = test_category_groupings.site_id
+  inner JOIN edw.test_sites as test_sites
+  ON test_kylin_fact.lstg_site_id = test_sites.site_id
+  
+  where case when '1'='1' then test_kylin_fact.cal_dt < date'2012-04-01' when 
'1'='2' then  test_cal_dt.week_beg_dt > date'2012-04-01' else  
test_kylin_fact.lstg_site_id is not null end and lstg_format_name='FP-GTC' 
+  
+  group by case when '1'='1' then test_cal_dt.week_beg_dt when '1'='2' then 
test_kylin_fact.lstg_site_id else test_kylin_fact.leaf_categ_id end
+ 

http://git-wip-us.apache.org/repos/asf/kylin/blob/79c75015/kylin-it/src/test/resources/query/sql_subquery/query33.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query33.sql 
b/kylin-it/src/test/resources/query/sql_subquery/query33.sql
new file mode 100644
index 000..08ecc8e
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_subquery/query33.sql
@@ -0,0 +1,14 @@
+
+  select  sum(price) as sum_price,  lstg_format_name,(case when '2'='1' then 
test_kylin_fact.lstg_site_id  when '2'='2' then test_cal_dt.week_beg_dt else 
test_kylin_fact.leaf_categ_id end) as xxx 
+  from test_kylin_fact
+  inner JOIN edw.test_cal_dt as test_cal_dt
+  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt
+  inner JOIN test_category_groupings
+  ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND 
test_kylin_fact.lstg_site_id = test_category_groupings.site_id
+  inner JOIN edw.test_sites as test_sites
+  ON test_kylin_fact.lstg_site_id = test_sites.site_id
+  
+  where case  when '2'='1' then  test_cal_dt.week_beg_dt > date'2012-04-01' 
when '2'='2' then test_kylin_fact.cal_dt < date'2012-04-01' else  
test_kylin_fact.lstg_site_id is not null end
+  
+  group by case  when '2'='1' then test_kylin_fact.lstg_site_id  when '2'='2' 
then test_cal_dt.week_beg_dt else test_kylin_fact.leaf_categ_id 
end,lstg_format_name
+ 

http://git-wip-us.apache.org/repos/asf/kylin/blob/79c75015/kylin-it/src/test/resources/query/sql_subquery/query34.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_subquery/query34.sql 
b/kylin-it/src/test/resources/query/sql_subquery/query34.sql
new file mode 100644
index 000..0dda9aa
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_subquery/query34.sql
@@ -0,0 +1,14 @@
+
+  select  sum(price) as sum_price,  (case when '3'='1' then 
test_cal_dt.week_beg_dt else   test_kylin_fact.cal_dt  end) as xxx 
+  from test_kylin_fact
+  inner JOIN edw.test_cal_dt as test_cal_dt
+  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt
+  inner JOIN test_category_groupings
+  ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND 
test_kylin_fact.lstg_site_id = test_category_groupings.site_id
+  inner JOIN edw.test_sites as test_sites
+  ON test_kylin_fact.lstg_site_id = test_sites.site_id
+  
+  where case when '3'='1' then test_kylin_fact.cal_dt < date'2012-04-01' else  

[42/50] [abbrv] kylin git commit: Merge commit '9fef04d9a98e11454d00247d8cd2f4d501ba66a2'

2017-05-24 Thread kangkaisen
Merge commit '9fef04d9a98e11454d00247d8cd2f4d501ba66a2'


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

Branch: refs/heads/KYLIN-2606
Commit: 34a65baec0d47de0d91aa8a98b8e1a70db7b6d65
Parents: ed0430b 9fef04d
Author: Hongbin Ma 
Authored: Tue May 23 20:22:54 2017 +0800
Committer: Hongbin Ma 
Committed: Tue May 23 20:22:54 2017 +0800

--
 webapp/app/js/model/projectModel.js | 18 --
 1 file changed, 12 insertions(+), 6 deletions(-)
--




[37/50] [abbrv] kylin git commit: minor, fix 'CREATE-TABLE-AS-SELECT cannot create external table'

2017-05-24 Thread kangkaisen
minor, fix 'CREATE-TABLE-AS-SELECT cannot create external table'


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

Branch: refs/heads/KYLIN-2606
Commit: 83fb144f2c3df127a2b893f96a05507b8de01e7f
Parents: 81ed301
Author: Cheng Wang 
Authored: Tue May 23 19:41:21 2017 +0800
Committer: hongbin ma 
Committed: Tue May 23 19:46:02 2017 +0800

--
 .../java/org/apache/kylin/source/hive/HiveMRInput.java  | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/83fb144f/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java
--
diff --git 
a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java 
b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java
index dffba8a..15d4456 100644
--- a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java
+++ b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java
@@ -190,14 +190,16 @@ public class HiveMRInput implements IMRInput {
 HiveCmdBuilder hiveCmdBuilder = new HiveCmdBuilder();
 hiveCmdBuilder.addStatement(hiveInitStatements);
 for (TableDesc lookUpTableDesc : lookupViewsTables) {
+String identity = lookUpTableDesc.getIdentity();
+String intermediate = lookUpTableDesc.getMaterializedName();
 if (lookUpTableDesc.isView()) {
 StringBuilder createIntermediateTableHql = new 
StringBuilder();
-createIntermediateTableHql.append("DROP TABLE IF EXISTS " 
+ lookUpTableDesc.getMaterializedName() + ";\n");
-createIntermediateTableHql.append("CREATE EXTERNAL TABLE 
IF NOT EXISTS " + lookUpTableDesc.getMaterializedName() + "\n");
-createIntermediateTableHql.append("LOCATION '" + 
jobWorkingDir + "/" + lookUpTableDesc.getMaterializedName() + "'\n");
-createIntermediateTableHql.append("AS SELECT * FROM " + 
lookUpTableDesc.getIdentity() + ";\n");
+createIntermediateTableHql.append("DROP TABLE IF EXISTS " 
+ intermediate + ";\n");
+createIntermediateTableHql.append("CREATE EXTERNAL TABLE 
IF NOT EXISTS " + intermediate + " LIKE " + identity + "\n");
+createIntermediateTableHql.append("LOCATION '" + 
jobWorkingDir + "/" + intermediate + "';\n");
+createIntermediateTableHql.append("INSERT OVERWRITE TABLE 
" + intermediate + " SELECT * FROM " + identity + ";\n");
 
hiveCmdBuilder.addStatement(createIntermediateTableHql.toString());
-hiveViewIntermediateTables = hiveViewIntermediateTables + 
lookUpTableDesc.getMaterializedName() + ";";
+hiveViewIntermediateTables = hiveViewIntermediateTables + 
intermediate + ";";
 }
 }
 



[17/50] [abbrv] kylin git commit: KYLIN-2624 pass IT

2017-05-24 Thread kangkaisen
KYLIN-2624 pass IT


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

Branch: refs/heads/KYLIN-2606
Commit: 0bdd1c21981cef4d9e6edafd63b9c5a0fb2a6725
Parents: be32f75
Author: Yang Li 
Authored: Sat May 20 07:56:24 2017 +0800
Committer: Yang Li 
Committed: Sat May 20 09:38:51 2017 +0800

--
 examples/test_case_data/localmeta/UUID  |   1 +
 .../kylin/job/BaseTestDistributedScheduler.java |   2 +
 .../hbase/ITZookeeperDistributedLockTest.java   | 257 +++
 .../hbase/util/ZookeeperDistributedLock.java|  11 +-
 .../util/ITZookeeperDistributedLockTest.java| 254 --
 5 files changed, 268 insertions(+), 257 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/0bdd1c21/examples/test_case_data/localmeta/UUID
--
diff --git a/examples/test_case_data/localmeta/UUID 
b/examples/test_case_data/localmeta/UUID
new file mode 100644
index 000..e3f5e6b
--- /dev/null
+++ b/examples/test_case_data/localmeta/UUID
@@ -0,0 +1 @@
+$3591078f-9401-481a-a233-e7755c1142d0
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/0bdd1c21/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java
--
diff --git 
a/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java 
b/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java
index 6343dfa..1ea6507 100644
--- 
a/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java
+++ 
b/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java
@@ -113,6 +113,8 @@ public class BaseTestDistributedScheduler extends 
HBaseMetadataTestCase {
 
 @AfterClass
 public static void after() throws Exception {
+jobLock1.purgeLocks("");
+
 if (scheduler1 != null) {
 scheduler1.shutdown();
 scheduler1 = null;

http://git-wip-us.apache.org/repos/asf/kylin/blob/0bdd1c21/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
--
diff --git 
a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
 
b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
new file mode 100644
index 000..8460cb9
--- /dev/null
+++ 
b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
@@ -0,0 +1,257 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package org.apache.kylin.storage.hbase;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.util.Random;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.kylin.common.lock.DistributedLock;
+import org.apache.kylin.common.lock.DistributedLock.Watcher;
+import org.apache.kylin.common.util.HBaseMetadataTestCase;
+import org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ITZookeeperDistributedLockTest extends HBaseMetadataTestCase {
+private static final Logger logger = 
LoggerFactory.getLogger(ITZookeeperDistributedLockTest.class);
+private static final String ZK_PFX = "/test/ZookeeperDistributedLockTest/" 
+ new Random().nextInt(1000);
+
+static ZookeeperDistributedLock.Factory factory;
+
+@BeforeClass
+public static void setup() throws Exception {
+

[48/50] [abbrv] kylin git commit: fix CI

2017-05-24 Thread kangkaisen
fix CI


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

Branch: refs/heads/KYLIN-2606
Commit: 5d2934b7e6331e5fef2c18c92d7338932b087b3f
Parents: 92b6404
Author: Hongbin Ma 
Authored: Tue May 23 21:26:02 2017 +0800
Committer: hongbin ma 
Committed: Tue May 23 21:27:41 2017 +0800

--
 .../apache/kylin/metadata/model/TblColRef.java  |  1 -
 .../org/apache/kylin/rest/DebugDeployCLI.java   | 31 
 2 files changed, 31 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/5d2934b7/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
index 3bca61c..5a28e8b 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
@@ -87,7 +87,6 @@ public class TblColRef implements Serializable {
 checkArgument(col.table.getModel() == UNKNOWN_MODEL || 
col.table.getModel() == model);
 TableRef tableRef = model.findTable(alias);
 
checkArgument(tableRef.getTableDesc().getIdentity().equals(col.column.getTable().getIdentity()));
-checkArgument(tableRef.getTableDesc() == col.column.getTable());
 col.fixTableRef(tableRef);
 }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/5d2934b7/server/src/main/java/org/apache/kylin/rest/DebugDeployCLI.java
--
diff --git a/server/src/main/java/org/apache/kylin/rest/DebugDeployCLI.java 
b/server/src/main/java/org/apache/kylin/rest/DebugDeployCLI.java
new file mode 100644
index 000..28c1b12
--- /dev/null
+++ b/server/src/main/java/org/apache/kylin/rest/DebugDeployCLI.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package org.apache.kylin.rest;
+
+import java.io.IOException;
+
+import org.apache.kylin.storage.hbase.util.DeployCoprocessorCLI;
+
+public class DebugDeployCLI {
+
+public static void main(String[] args) throws IOException {
+DebugTomcat.setupDebugEnv();
+DeployCoprocessorCLI.main(new String[] { "default", "all" });
+}
+}



kylin git commit: KYLIN-2644 When I refresh the insight page and click 'Add Project'button, but the new project pop-up page is not showing.

2017-05-24 Thread billyliu
Repository: kylin
Updated Branches:
  refs/heads/master fdacf5d3f -> 6914f3f40


KYLIN-2644 When I refresh the insight page and click 'Add Project'button, but 
the new project pop-up page is not showing.

Signed-off-by: Billy Liu 


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

Branch: refs/heads/master
Commit: 6914f3f409372dc1fd11cd140984aa67d31e5ac4
Parents: fdacf5d
Author: 10069681 
Authored: Wed May 24 17:41:14 2017 +0800
Committer: Billy Liu 
Committed: Thu May 25 10:37:03 2017 +0800

--
 webapp/app/partials/query/query.html | 2 ++
 1 file changed, 2 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/6914f3f4/webapp/app/partials/query/query.html
--
diff --git a/webapp/app/partials/query/query.html 
b/webapp/app/partials/query/query.html
index 69fe649..894113e 100644
--- a/webapp/app/partials/query/query.html
+++ b/webapp/app/partials/query/query.html
@@ -226,3 +226,5 @@
 
 
 
+
+