[2/3] kylin git commit: KYLIN-2307 Create a branch for master with HBase 0.98 API

2017-05-19 Thread liyang
http://git-wip-us.apache.org/repos/asf/kylin/blob/ce9fc5f5/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
--
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
index 7674bf4..f53f4a9 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
@@ -32,15 +32,14 @@ import org.apache.commons.io.IOUtils;
 import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.Delete;
 import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HConnection;
+import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.client.ResultScanner;
 import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.filter.CompareFilter;
 import org.apache.hadoop.hbase.filter.Filter;
 import org.apache.hadoop.hbase.filter.FilterList;
@@ -72,7 +71,7 @@ public class HBaseResourceStore extends ResourceStore {
 final String tableName;
 final StorageURL metadataUrl;
 
-Connection getConnection() throws IOException {
+HConnection getConnection() throws IOException {
 return HBaseConnection.get(metadataUrl);
 }
 
@@ -134,7 +133,7 @@ public class HBaseResourceStore extends ResourceStore {
 byte[] endRow = Bytes.toBytes(lookForPrefix);
 endRow[endRow.length - 1]++;
 
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllInOneTableName());
 Scan scan = new Scan(startRow, endRow);
 if ((filter != null && filter instanceof KeyOnlyFilter) == false) {
 scan.addColumn(B_FAMILY, B_COLUMN_TS);
@@ -252,12 +251,13 @@ public class HBaseResourceStore extends ResourceStore {
 IOUtils.copy(content, bout);
 bout.close();
 
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllInOneTableName());
 try {
 byte[] row = Bytes.toBytes(resPath);
 Put put = buildPut(resPath, ts, row, bout.toByteArray(), table);
 
 table.put(put);
+table.flushCommits();
 } finally {
 IOUtils.closeQuietly(table);
 }
@@ -265,7 +265,7 @@ public class HBaseResourceStore extends ResourceStore {
 
 @Override
 protected long checkAndPutResourceImpl(String resPath, byte[] content, 
long oldTS, long newTS) throws IOException, IllegalStateException {
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllInOneTableName());
 try {
 byte[] row = Bytes.toBytes(resPath);
 byte[] bOldTS = oldTS == 0 ? null : Bytes.toBytes(oldTS);
@@ -278,6 +278,8 @@ public class HBaseResourceStore extends ResourceStore {
 throw new IllegalStateException("Overwriting conflict " + 
resPath + ", expect old TS " + oldTS + ", but it is " + real);
 }
 
+table.flushCommits();
+
 return newTS;
 } finally {
 IOUtils.closeQuietly(table);
@@ -286,7 +288,7 @@ public class HBaseResourceStore extends ResourceStore {
 
 @Override
 protected void deleteResourceImpl(String resPath) throws IOException {
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllInOneTableName());
 try {
 boolean hdfsResourceExist = false;
 Result result = internalGetFromHTable(table, resPath, true, false);
@@ -299,6 +301,7 @@ public class HBaseResourceStore extends ResourceStore {
 
 Delete del = new Delete(Bytes.toBytes(resPath));
 table.delete(del);
+table.flushCommits();
 
 if (hdfsResourceExist) { // remove hdfs cell value
 Path redirectPath = bigCellHDFSPath(resPath);
@@ -319,7 +322,7 @@ public class HBaseResourceStore extends ResourceStore {
 }
 
 private Result getFromHTable(String path, boolean fetchContent, boolean 
fetchTimestamp) throws IOException {
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllI

[3/3] kylin git commit: KYLIN-2307 Create a branch for master with HBase 0.98 API

2017-05-19 Thread liyang
KYLIN-2307 Create a branch for master with HBase 0.98 API


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

Branch: refs/heads/2.0.x-hbase0.98
Commit: ce9fc5f5a449f1e721f660b86c1097ad0ad886a2
Parents: ad67fd7
Author: lidongsjtu 
Authored: Mon Jan 23 13:17:37 2017 +0800
Committer: Hongbin Ma 
Committed: Sat May 20 14:07:18 2017 +0800

--
 dev-support/test_all_against_hdp_2_2_4_2_2.sh   |  25 
 dev-support/test_all_against_hdp_2_4_0_0_169.sh |  25 
 .../sandbox/capacity-scheduler.xml  |  17 ++-
 examples/test_case_data/sandbox/core-site.xml   |  28 +---
 examples/test_case_data/sandbox/hbase-site.xml  | 119 +
 examples/test_case_data/sandbox/hdfs-site.xml   |  84 +---
 examples/test_case_data/sandbox/hive-site.xml   |  89 +
 examples/test_case_data/sandbox/mapred-site.xml |  57 +++--
 examples/test_case_data/sandbox/yarn-site.xml   | 127 +++
 .../kylin/provision/BuildCubeWithEngine.java|  17 +--
 pom.xml | 117 +
 .../kylin/rest/security/AclHBaseStorage.java|   4 +-
 .../rest/security/MockAclHBaseStorage.java  |   8 +-
 .../apache/kylin/rest/security/MockHTable.java  |  95 +++---
 .../rest/security/RealAclHBaseStorage.java  |   9 +-
 .../apache/kylin/rest/service/AclService.java   |  25 ++--
 .../apache/kylin/rest/service/CubeService.java  |  35 +++--
 .../apache/kylin/rest/service/QueryService.java |  24 ++--
 .../apache/kylin/rest/service/UserService.java  |  17 +--
 .../kylin/storage/hbase/HBaseConnection.java|  46 +++
 .../kylin/storage/hbase/HBaseResourceStore.java |  33 ++---
 .../storage/hbase/cube/SimpleHBaseStore.java|  20 +--
 .../hbase/cube/v2/CubeHBaseEndpointRPC.java |  13 +-
 .../storage/hbase/cube/v2/CubeHBaseScanRPC.java |   9 +-
 .../coprocessor/endpoint/CubeVisitService.java  |   4 +-
 .../storage/hbase/steps/CubeHTableUtil.java |  16 +--
 .../storage/hbase/steps/DeprecatedGCStep.java   |  24 ++--
 .../storage/hbase/steps/HBaseCuboidWriter.java  |   7 +-
 .../kylin/storage/hbase/steps/MergeGCStep.java  |  23 ++--
 .../storage/hbase/util/CleanHtableCLI.java  |  12 +-
 .../storage/hbase/util/CubeMigrationCLI.java|  37 +++---
 .../hbase/util/CubeMigrationCheckCLI.java   |  17 +--
 .../hbase/util/DeployCoprocessorCLI.java|  27 ++--
 .../hbase/util/ExtendCubeToHybridCLI.java   |   8 +-
 .../hbase/util/GridTableHBaseBenchmark.java |  34 ++---
 .../kylin/storage/hbase/util/HBaseClean.java|  18 ++-
 .../hbase/util/HBaseRegionSizeCalculator.java   |  35 +++--
 .../kylin/storage/hbase/util/HBaseUsage.java|   9 +-
 .../storage/hbase/util/HbaseStreamingInput.java |  30 ++---
 .../hbase/util/HtableAlterMetadataCLI.java  |   9 +-
 .../storage/hbase/util/OrphanHBaseCleanJob.java |  19 +--
 .../kylin/storage/hbase/util/PingHBaseCLI.java  |  15 +--
 .../kylin/storage/hbase/util/RowCounterCLI.java |  11 +-
 .../storage/hbase/util/StorageCleanupJob.java   |  20 ++-
 .../storage/hbase/util/UpdateHTableHostCLI.java |  17 +--
 tool/pom.xml|  10 --
 .../org/apache/kylin/tool/CubeMigrationCLI.java |  16 ++-
 .../kylin/tool/ExtendCubeToHybridCLI.java   |   8 +-
 48 files changed, 597 insertions(+), 872 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ce9fc5f5/dev-support/test_all_against_hdp_2_2_4_2_2.sh
--
diff --git a/dev-support/test_all_against_hdp_2_2_4_2_2.sh 
b/dev-support/test_all_against_hdp_2_2_4_2_2.sh
new file mode 100755
index 000..f7780dd
--- /dev/null
+++ b/dev-support/test_all_against_hdp_2_2_4_2_2.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+#
+# 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.
+#
+
+dir=$(dirname ${0})
+cd ${dir}
+cd ..
+
+mvn clean install -DskipTests 2>&1 | tee mci.log
+mvn verify

[1/3] kylin git commit: KYLIN-2307 Create a branch for master with HBase 0.98 API [Forced Update!]

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/2.0.x-hbase0.98 129fc898e -> ce9fc5f5a (forced update)


http://git-wip-us.apache.org/repos/asf/kylin/blob/ce9fc5f5/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java
--
diff --git 
a/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java 
b/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java
index f52fc3e..19e5db0 100644
--- a/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java
+++ b/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java
@@ -25,11 +25,10 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.hbase.Cell;
 import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.Table;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.persistence.JsonSerializer;
 import org.apache.kylin.common.persistence.ResourceStore;
@@ -232,9 +231,9 @@ public class ExtendCubeToHybridCLI {
 Serializer projectSerializer = new 
JsonSerializer(ProjectInstance.class);
 ProjectInstance project = store.getResource(projectResPath, 
ProjectInstance.class, projectSerializer);
 String projUUID = project.getUuid();
-Table aclHtable = null;
+HTableInterface aclHtable = null;
 try {
-aclHtable = 
HBaseConnection.get(kylinConfig.getStorageUrl()).getTable(TableName.valueOf(kylinConfig.getMetadataUrlPrefix()
 + "_acl"));
+aclHtable = 
HBaseConnection.get(kylinConfig.getStorageUrl()).getTable(kylinConfig.getMetadataUrlPrefix()
 + "_acl");
 
 // cube acl
 Result result = aclHtable.get(new Get(Bytes.toBytes(origCubeId)));
@@ -254,6 +253,7 @@ public class ExtendCubeToHybridCLI {
 aclHtable.put(put);
 }
 }
+aclHtable.flushCommits();
 } finally {
 IOUtils.closeQuietly(aclHtable);
 }



kylin git commit: minor, more stable ITZookeeperDistributedLockTest

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/master 0bdd1c219 -> fd3bfedb5


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/master
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));



[7/7] kylin git commit: KYLIN-2307 Create a branch for master with HBase 0.98 API

2017-05-19 Thread liyang
KYLIN-2307 Create a branch for master with HBase 0.98 API


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

Branch: refs/heads/2.0.x-hbase0.98
Commit: 129fc898e626363760492e9af17d05f4128c129b
Parents: ad67fd7
Author: lidongsjtu 
Authored: Mon Jan 23 13:17:37 2017 +0800
Committer: Hongbin Ma 
Committed: Sat May 20 13:32:06 2017 +0800

--
 dev-support/test_all_against_hdp_2_2_4_2_2.sh   |  25 
 dev-support/test_all_against_hdp_2_4_0_0_169.sh |  25 
 .../sandbox/capacity-scheduler.xml  |  17 ++-
 examples/test_case_data/sandbox/core-site.xml   |  28 +---
 examples/test_case_data/sandbox/hbase-site.xml  | 119 +
 examples/test_case_data/sandbox/hdfs-site.xml   |  84 +---
 examples/test_case_data/sandbox/hive-site.xml   |  89 +
 examples/test_case_data/sandbox/mapred-site.xml |  57 +++--
 examples/test_case_data/sandbox/yarn-site.xml   | 127 +++
 .../kylin/provision/BuildCubeWithEngine.java|  17 +--
 pom.xml | 117 +
 .../kylin/rest/security/AclHBaseStorage.java|   4 +-
 .../rest/security/MockAclHBaseStorage.java  |   8 +-
 .../apache/kylin/rest/security/MockHTable.java  |  95 +++---
 .../rest/security/RealAclHBaseStorage.java  |   9 +-
 .../apache/kylin/rest/service/AclService.java   |  25 ++--
 .../apache/kylin/rest/service/CubeService.java  |  35 +++--
 .../apache/kylin/rest/service/QueryService.java |  24 ++--
 .../apache/kylin/rest/service/UserService.java  |  17 +--
 .../kylin/storage/hbase/HBaseConnection.java|  46 +++
 .../kylin/storage/hbase/HBaseResourceStore.java |  33 ++---
 .../storage/hbase/cube/SimpleHBaseStore.java|  20 +--
 .../hbase/cube/v2/CubeHBaseEndpointRPC.java |  13 +-
 .../storage/hbase/cube/v2/CubeHBaseScanRPC.java |   9 +-
 .../coprocessor/endpoint/CubeVisitService.java  |   4 +-
 .../storage/hbase/steps/CubeHTableUtil.java |  16 +--
 .../storage/hbase/steps/DeprecatedGCStep.java   |  24 ++--
 .../storage/hbase/steps/HBaseCuboidWriter.java  |   7 +-
 .../kylin/storage/hbase/steps/MergeGCStep.java  |  23 ++--
 .../storage/hbase/util/CleanHtableCLI.java  |  12 +-
 .../storage/hbase/util/CubeMigrationCLI.java|  37 +++---
 .../hbase/util/CubeMigrationCheckCLI.java   |  17 +--
 .../hbase/util/DeployCoprocessorCLI.java|  27 ++--
 .../hbase/util/ExtendCubeToHybridCLI.java   |   8 +-
 .../hbase/util/GridTableHBaseBenchmark.java |  34 ++---
 .../kylin/storage/hbase/util/HBaseClean.java|  18 ++-
 .../hbase/util/HBaseRegionSizeCalculator.java   |  35 +++--
 .../kylin/storage/hbase/util/HBaseUsage.java|   9 +-
 .../storage/hbase/util/HbaseStreamingInput.java |  30 ++---
 .../hbase/util/HtableAlterMetadataCLI.java  |   9 +-
 .../storage/hbase/util/OrphanHBaseCleanJob.java |  19 +--
 .../kylin/storage/hbase/util/PingHBaseCLI.java  |  15 +--
 .../kylin/storage/hbase/util/RowCounterCLI.java |  11 +-
 .../storage/hbase/util/StorageCleanupJob.java   |  20 ++-
 .../storage/hbase/util/UpdateHTableHostCLI.java |  17 +--
 tool/pom.xml|  10 --
 .../org/apache/kylin/tool/CubeMigrationCLI.java |  16 ++-
 .../kylin/tool/ExtendCubeToHybridCLI.java   |   8 +-
 48 files changed, 597 insertions(+), 872 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/129fc898/dev-support/test_all_against_hdp_2_2_4_2_2.sh
--
diff --git a/dev-support/test_all_against_hdp_2_2_4_2_2.sh 
b/dev-support/test_all_against_hdp_2_2_4_2_2.sh
new file mode 100755
index 000..f7780dd
--- /dev/null
+++ b/dev-support/test_all_against_hdp_2_2_4_2_2.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+#
+# 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.
+#
+
+dir=$(dirname ${0})
+cd ${dir}
+cd ..
+
+mvn clean install -DskipTests 2>&1 | tee mci.log
+mvn verify

[2/7] kylin git commit: KYLIN-2630 NPE when a subquery joins another lookup tables

2017-05-19 Thread liyang
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/19f9c685
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/19f9c685
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/19f9c685

Branch: refs/heads/2.0.x-hbase0.98
Commit: 19f9c6852d20f822a204963cbdda24518d9ff1da
Parents: 79db276
Author: Hongbin Ma 
Authored: Thu May 18 20:54:45 2017 +0800
Committer: Hongbin Ma 
Committed: Thu May 18 20:55:09 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/19f9c685/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/19f9c685/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/19f9c685/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/19f9c685/query/src/main/java/org/apache/kylin/query/relnode/OLAPRel.java
--
diff

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

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


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

Branch: refs/heads/2.0.x-hbase0.98
Commit: ad67fd763237306ddba0d0946ab024fcdb7ab604
Parents: 0f68486
Author: Hongbin Ma 
Authored: Fri May 19 21:12:26 2017 +0800
Committer: Hongbin Ma 
Committed: Fri May 19 21:12:34 2017 +0800

--
 .../apache/kylin/metadata/model/TblColRef.java  |  43 ++--
 .../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, 271 insertions(+), 246 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ad67fd76/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 c74f4e8..1410841 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
@@ -56,7 +56,7 @@ public class TblColRef implements Serializable {
 public static TblColRef newInnerColumn(String columnName, 
InnerDataTypeEnum dataType) {
 return newInnerColumn(columnName, dataType, null);
 }
-
+
 // used by projection rewrite, see OLAPProjectRel
 public static TblColRef newInnerColumn(String columnName, 
InnerDataTypeEnum dataType, String parserDescription) {
 ColumnDesc column = new ColumnDesc();
@@ -68,27 +68,30 @@ public class TblColRef implements Serializable {
 colRef.parserDescription = parserDescription;
 return colRef;
 }
-
+
 private static final DataModelDesc UNKNOWN_MODEL = new DataModelDesc();
 static {
 UNKNOWN_MODEL.setName("UNKNOWN_MODEL");
 }
-
+
 public static TableRef tableForUnknownModel(String tempTableAlias, 
TableDesc table) {
 return new TableRef(UNKNOWN_MODEL, tempTableAlias, table);
 }
-
+
 public static TblColRef columnForUnknownModel(TableRef table, ColumnDesc 
colDesc) {
 checkArgument(table.getModel() == UNKNOWN_MODEL);
 return new TblColRef(table, colDesc);
 }
-
+
 public static void fixUnknownModel(DataModelDesc model, String alias, 
TblColRef col) {
 checkArgument(col.table.getModel() == UNKNOWN_MODEL || 
col.table.getModel() == model);
 TableRef tableRef = model.findTable(alias);
 checkArgument(tableRef.getTableDesc() == col.column.getTable());
-col.table = tableRef;
-col.identity = null;
+col.fixTableRef(tableRef);
+}
+
+public static void unfixUnknownModel(TblColRef col) {
+col.unfixTableRef();
 }
 
 // for test mainly
@@ -101,10 +104,11 @@ public class TblColRef implements Serializable {
 desc.init(table);
 return new TblColRef(desc);
 }
-
+
 // 

 
 private TableRef table;
+private TableRef backupTable;// only used in fixTableRef()
 private ColumnDesc column;
 private String identity;
 private String parserDescription;
@@ -112,13 +116,24 @@ public class TblColRef implements Serializable {
 TblColRef(ColumnDesc column) {
 this.column = column;
 }
-
+
 TblColRef(TableRef table, ColumnDesc column) {
 checkArgument(table.getTableDesc() == column.getTable());
 this.table = table;
 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;
 }
@@ -130,15 +145,15 @@ public class TblColRef implements Serializable {
 public TableRef getTableRef() {
 return table;
 }
-
+
 public boolean isQualified() {
 return table != null;
 }
-
+
 public String getTableAlias() {
 return table != null ? table.getAlias() : "UNKNOWN_ALIAS";
 }
-

[6/7] kylin git commit: KYLIN-2307 Create a branch for master with HBase 0.98 API

2017-05-19 Thread liyang
http://git-wip-us.apache.org/repos/asf/kylin/blob/129fc898/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
--
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
index 7674bf4..f53f4a9 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseResourceStore.java
@@ -32,15 +32,14 @@ import org.apache.commons.io.IOUtils;
 import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.Delete;
 import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HConnection;
+import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.client.ResultScanner;
 import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.filter.CompareFilter;
 import org.apache.hadoop.hbase.filter.Filter;
 import org.apache.hadoop.hbase.filter.FilterList;
@@ -72,7 +71,7 @@ public class HBaseResourceStore extends ResourceStore {
 final String tableName;
 final StorageURL metadataUrl;
 
-Connection getConnection() throws IOException {
+HConnection getConnection() throws IOException {
 return HBaseConnection.get(metadataUrl);
 }
 
@@ -134,7 +133,7 @@ public class HBaseResourceStore extends ResourceStore {
 byte[] endRow = Bytes.toBytes(lookForPrefix);
 endRow[endRow.length - 1]++;
 
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllInOneTableName());
 Scan scan = new Scan(startRow, endRow);
 if ((filter != null && filter instanceof KeyOnlyFilter) == false) {
 scan.addColumn(B_FAMILY, B_COLUMN_TS);
@@ -252,12 +251,13 @@ public class HBaseResourceStore extends ResourceStore {
 IOUtils.copy(content, bout);
 bout.close();
 
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllInOneTableName());
 try {
 byte[] row = Bytes.toBytes(resPath);
 Put put = buildPut(resPath, ts, row, bout.toByteArray(), table);
 
 table.put(put);
+table.flushCommits();
 } finally {
 IOUtils.closeQuietly(table);
 }
@@ -265,7 +265,7 @@ public class HBaseResourceStore extends ResourceStore {
 
 @Override
 protected long checkAndPutResourceImpl(String resPath, byte[] content, 
long oldTS, long newTS) throws IOException, IllegalStateException {
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllInOneTableName());
 try {
 byte[] row = Bytes.toBytes(resPath);
 byte[] bOldTS = oldTS == 0 ? null : Bytes.toBytes(oldTS);
@@ -278,6 +278,8 @@ public class HBaseResourceStore extends ResourceStore {
 throw new IllegalStateException("Overwriting conflict " + 
resPath + ", expect old TS " + oldTS + ", but it is " + real);
 }
 
+table.flushCommits();
+
 return newTS;
 } finally {
 IOUtils.closeQuietly(table);
@@ -286,7 +288,7 @@ public class HBaseResourceStore extends ResourceStore {
 
 @Override
 protected void deleteResourceImpl(String resPath) throws IOException {
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllInOneTableName());
 try {
 boolean hdfsResourceExist = false;
 Result result = internalGetFromHTable(table, resPath, true, false);
@@ -299,6 +301,7 @@ public class HBaseResourceStore extends ResourceStore {
 
 Delete del = new Delete(Bytes.toBytes(resPath));
 table.delete(del);
+table.flushCommits();
 
 if (hdfsResourceExist) { // remove hdfs cell value
 Path redirectPath = bigCellHDFSPath(resPath);
@@ -319,7 +322,7 @@ public class HBaseResourceStore extends ResourceStore {
 }
 
 private Result getFromHTable(String path, boolean fetchContent, boolean 
fetchTimestamp) throws IOException {
-Table table = 
getConnection().getTable(TableName.valueOf(getAllInOneTableName()));
+HTableInterface table = 
getConnection().getTable(getAllI

[1/7] kylin git commit: KYLIN-2624 introduce StorageURL, add timeout to HBaseResourceStore [Forced Update!]

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/2.0.x-hbase0.98 5d4a5283c -> 129fc898e (forced update)


KYLIN-2624 introduce StorageURL, add timeout to HBaseResourceStore


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

Branch: refs/heads/2.0.x-hbase0.98
Commit: 79db2768bc517d9a8e64f657baff10e1914caa7c
Parents: d03802c
Author: Li Yang 
Authored: Wed May 17 22:27:52 2017 +
Committer: Li Yang 
Committed: Wed May 17 22:28:20 2017 +

--
 .../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   |   2 +-
 .../apache/kylin/dict/DictionaryManager.java|   3 +-
 .../apache/kylin/storage/StorageContext.java|   7 +-
 .../kylin/engine/mr/steps/CubeReducerTest.java  |   2 +-
 .../engine/mr/steps/NDCuboidMapperTest.java |   2 +-
 examples/test_case_data/localmeta/UUID  | Bin 0 -> 38 bytes
 .../kylin/job/BaseTestDistributedScheduler.java |   8 +-
 .../kylin/storage/hbase/ITStorageTest.java  |   3 +-
 .../apache/kylin/query/schema/OLAPSchema.java   |   5 +-
 .../rest/security/MockAclHBaseStorage.java  |   5 +-
 .../rest/security/RealAclHBaseStorage.java  |   9 +-
 .../apache/kylin/rest/service/QueryService.java |  11 +-
 .../kylin/storage/hbase/HBaseConnection.java|  26 ++-
 .../kylin/storage/hbase/HBaseResourceStore.java |  36 ++--
 .../storage/hbase/util/CubeMigrationCLI.java|  20 +-
 .../hbase/util/GridTableHBaseBenchmark.java |   3 +-
 .../hbase/util/ZookeeperDistributedJobLock.java |  14 +-
 .../kylin/storage/hdfs/HDFSResourceStore.java   |  33 +---
 .../hbase/steps/CubeHFileMapper2Test.java   |   4 +-
 .../storage/hbase/steps/MockupMapContext.java   |   2 +-
 .../org/apache/kylin/tool/CubeMigrationCLI.java |  20 +-
 27 files changed, 410 insertions(+), 135 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/79db2768/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 09bbb72..9c698ac 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
@@ -167,7 +167,7 @@ abstract public class KylinConfigBase implements 
Serializable {
 }
 
 public String toString() {
-return getMetadataUrl();
+return getMetadataUrl().toString();
 }
 
 // 

@@ -203,8 +203,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
@@ -213,14 +213,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() {
@@ -543,8 +536,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() {
@@ -972,10 +971,7 @@ abstract public class KylinConfigBase implements 
Serializable {
 }
 
 public String getResourceStoreImpl() {
-String metadataUrl

[3/7] kylin git commit: minor enhance to KYLIN-2624

2017-05-19 Thread liyang
minor enhance to KYLIN-2624


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

Branch: refs/heads/2.0.x-hbase0.98
Commit: 0f68486f2e8aba0d8b3abd9b19987070d7250144
Parents: 19f9c68
Author: Li Yang 
Authored: Fri May 19 14:31:23 2017 +0800
Committer: Li Yang 
Committed: Fri May 19 14:31:29 2017 +0800

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


http://git-wip-us.apache.org/repos/asf/kylin/blob/0f68486f/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 4a24941..8f47fac 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
@@ -77,6 +77,13 @@ public class LocalFileMetadataTestCase extends 
AbstractKylinTestCase {
 cleanAfterClass();
 }
 
+protected String getLocalWorkingDirectory() {
+String dir = 
KylinConfig.getInstanceFromEnv().getHdfsWorkingDirectory();
+if (dir.startsWith("file://"))
+dir = dir.substring("file://".length());
+return new File(dir).getAbsolutePath();
+}
+
 protected ResourceStore getStore() {
 return ResourceStore.getStore(KylinConfig.getInstanceFromEnv());
 }



[5/7] kylin git commit: KYLIN-2307 Create a branch for master with HBase 0.98 API

2017-05-19 Thread liyang
http://git-wip-us.apache.org/repos/asf/kylin/blob/129fc898/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java
--
diff --git 
a/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java 
b/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java
index f52fc3e..19e5db0 100644
--- a/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java
+++ b/tool/src/main/java/org/apache/kylin/tool/ExtendCubeToHybridCLI.java
@@ -25,11 +25,10 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.hbase.Cell;
 import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HTableInterface;
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.Table;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.persistence.JsonSerializer;
 import org.apache.kylin.common.persistence.ResourceStore;
@@ -232,9 +231,9 @@ public class ExtendCubeToHybridCLI {
 Serializer projectSerializer = new 
JsonSerializer(ProjectInstance.class);
 ProjectInstance project = store.getResource(projectResPath, 
ProjectInstance.class, projectSerializer);
 String projUUID = project.getUuid();
-Table aclHtable = null;
+HTableInterface aclHtable = null;
 try {
-aclHtable = 
HBaseConnection.get(kylinConfig.getStorageUrl()).getTable(TableName.valueOf(kylinConfig.getMetadataUrlPrefix()
 + "_acl"));
+aclHtable = 
HBaseConnection.get(kylinConfig.getStorageUrl()).getTable(kylinConfig.getMetadataUrlPrefix()
 + "_acl");
 
 // cube acl
 Result result = aclHtable.get(new Get(Bytes.toBytes(origCubeId)));
@@ -254,6 +253,7 @@ public class ExtendCubeToHybridCLI {
 aclHtable.put(put);
 }
 }
+aclHtable.flushCommits();
 } finally {
 IOUtils.closeQuietly(aclHtable);
 }



kylin git commit: KYLIN-2631 Seek to next model when no cube in current model satisfies query

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/2.0.x 0f68486f2 -> ad67fd763


KYLIN-2631 Seek to next model when no cube in current model satisfies query


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

Branch: refs/heads/2.0.x
Commit: ad67fd763237306ddba0d0946ab024fcdb7ab604
Parents: 0f68486
Author: Hongbin Ma 
Authored: Fri May 19 21:12:26 2017 +0800
Committer: Hongbin Ma 
Committed: Fri May 19 21:12:34 2017 +0800

--
 .../apache/kylin/metadata/model/TblColRef.java  |  43 ++--
 .../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, 271 insertions(+), 246 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ad67fd76/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 c74f4e8..1410841 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
@@ -56,7 +56,7 @@ public class TblColRef implements Serializable {
 public static TblColRef newInnerColumn(String columnName, 
InnerDataTypeEnum dataType) {
 return newInnerColumn(columnName, dataType, null);
 }
-
+
 // used by projection rewrite, see OLAPProjectRel
 public static TblColRef newInnerColumn(String columnName, 
InnerDataTypeEnum dataType, String parserDescription) {
 ColumnDesc column = new ColumnDesc();
@@ -68,27 +68,30 @@ public class TblColRef implements Serializable {
 colRef.parserDescription = parserDescription;
 return colRef;
 }
-
+
 private static final DataModelDesc UNKNOWN_MODEL = new DataModelDesc();
 static {
 UNKNOWN_MODEL.setName("UNKNOWN_MODEL");
 }
-
+
 public static TableRef tableForUnknownModel(String tempTableAlias, 
TableDesc table) {
 return new TableRef(UNKNOWN_MODEL, tempTableAlias, table);
 }
-
+
 public static TblColRef columnForUnknownModel(TableRef table, ColumnDesc 
colDesc) {
 checkArgument(table.getModel() == UNKNOWN_MODEL);
 return new TblColRef(table, colDesc);
 }
-
+
 public static void fixUnknownModel(DataModelDesc model, String alias, 
TblColRef col) {
 checkArgument(col.table.getModel() == UNKNOWN_MODEL || 
col.table.getModel() == model);
 TableRef tableRef = model.findTable(alias);
 checkArgument(tableRef.getTableDesc() == col.column.getTable());
-col.table = tableRef;
-col.identity = null;
+col.fixTableRef(tableRef);
+}
+
+public static void unfixUnknownModel(TblColRef col) {
+col.unfixTableRef();
 }
 
 // for test mainly
@@ -101,10 +104,11 @@ public class TblColRef implements Serializable {
 desc.init(table);
 return new TblColRef(desc);
 }
-
+
 // 

 
 private TableRef table;
+private TableRef backupTable;// only used in fixTableRef()
 private ColumnDesc column;
 private String identity;
 private String parserDescription;
@@ -112,13 +116,24 @@ public class TblColRef implements Serializable {
 TblColRef(ColumnDesc column) {
 this.column = column;
 }
-
+
 TblColRef(TableRef table, ColumnDesc column) {
 checkArgument(table.getTableDesc() == column.getTable());
 this.table = table;
 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;
 }
@@ -130,15 +145,15 @@ public class TblColRef implements Serializable {
 public TableRef getTableRef() {
 return table;
 }
-
+
 public boolean isQualified() {
 return table != null;
 }
-
+
 public String getTableAlias() {
 r

kylin git commit: KYLIN-2624 pass IT

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/master be32f7588 -> 0bdd1c219


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/master
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() thr

kylin git commit: final final fix

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/KYLIN-2624 0206d87e0 -> 667804e22


final final fix


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

Branch: refs/heads/KYLIN-2624
Commit: 667804e224ae250d9b6e4040a2cc476aa34b14f4
Parents: 0206d87
Author: Yang Li 
Authored: Sat May 20 09:35:27 2017 +0800
Committer: Yang Li 
Committed: Sat May 20 09:35:27 2017 +0800

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


http://git-wip-us.apache.org/repos/asf/kylin/blob/667804e2/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 cec44b7..8460cb9 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
@@ -176,6 +176,8 @@ public class ITZookeeperDistributedLockTest extends 
HBaseMetadataTestCase {
 for (int i = 0; i < nClients; i++) {
 threads[i].join();
 }
+
+Thread.sleep(3000);
 
 // verify counters
 assertEquals(0, lockCounter.get() - unlockCounter.get());



kylin git commit: final fix

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/KYLIN-2624 12251b6cf -> 0206d87e0


final fix


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

Branch: refs/heads/KYLIN-2624
Commit: 0206d87e0d0cc58e86a0b16721055f65931c97d0
Parents: 12251b6
Author: Yang Li 
Authored: Sat May 20 09:00:37 2017 +0800
Committer: Yang Li 
Committed: Sat May 20 09:00:37 2017 +0800

--
 examples/test_case_data/localmeta/UUID   |  1 +
 .../apache/kylin/job/BaseTestDistributedScheduler.java   |  2 ++
 .../storage/hbase/util/ZookeeperDistributedLock.java | 11 ---
 3 files changed, 11 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/0206d87e/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/0206d87e/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/0206d87e/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 05d3a5a..db65491 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
@@ -102,7 +102,7 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 
 public Factory(KylinConfig config) {
 this.curator = getZKClient(config);
-this.zkPathBase = dropDoubleSlash("/kylin/" + 
KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix());
+this.zkPathBase = fixSlash("/kylin/" + 
KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix());
 }
 
 @Override
@@ -284,10 +284,15 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 if (!lockPath.startsWith(zkPathBase))
 lockPath = zkPathBase + (lockPath.startsWith("/") ? "" : "/") + 
lockPath;
 
-return dropDoubleSlash(lockPath);
+return fixSlash(lockPath);
 }
 
-public static String dropDoubleSlash(String path) {
+private static String fixSlash(String path) {
+if (!path.startsWith("/"))
+path = "/" + path;
+if (path.endsWith("/"))
+path = path.substring(0, path.length() - 1);
+
 for (int n = Integer.MAX_VALUE; n > path.length();) {
 n = path.length();
 path = path.replace("//", "/");



kylin git commit: move ITZookeeperDistributedLockTest

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/KYLIN-2624 3c9607fc4 -> 12251b6cf


move ITZookeeperDistributedLockTest


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

Branch: refs/heads/KYLIN-2624
Commit: 12251b6cfffd1a781faeca3794fa7a16edf2af6a
Parents: 3c9607f
Author: Yang Li 
Authored: Sat May 20 08:03:55 2017 +0800
Committer: Yang Li 
Committed: Sat May 20 08:03:55 2017 +0800

--
 .../hbase/ITZookeeperDistributedLockTest.java   | 255 +++
 .../util/ITZookeeperDistributedLockTest.java| 254 --
 2 files changed, 255 insertions(+), 254 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/12251b6c/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..cec44b7
--- /dev/null
+++ 
b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java
@@ -0,0 +1,255 @@
+/*
+ * 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 {
+staticCreateTestMetadata();
+factory = new ZookeeperDistributedLock.Factory();
+}
+
+@AfterClass
+public static void after() throws Exception {
+staticCleanupTestMetadata();
+factory.lockForCurrentProcess().purgeLocks(ZK_PFX);
+}
+
+@Test
+public void testBasic() {
+DistributedLock l = factory.lockForCurrentThread();
+String path = ZK_PFX + "/testBasic";
+
+assertTrue(l.isLocked(path) == false);
+assertTrue(l.lock(path));
+assertTrue(l.lock(path));
+assertTrue(l.lock(path));
+assertEquals(l.getClient(), l.peekLock(path));
+assertTrue(l.isLocked(path));
+assertTrue(l.isLockedByMe(path));
+l.unlock(path);
+assertTrue(l.isLocked(path) == false);
+}
+
+@Test
+public void testErrorCases() {
+DistributedLock c = factory.lockForClient("client1");
+DistributedLock d = factory.lockForClient("client2");
+String path = ZK_PFX + "/testErrorCases";
+
+assertTrue(c.isLocked(path) == false);
+assertTrue(d.peekLock(path) == null);
+
+assertTrue(c.lock(path));
+assertTrue(d.lock(path) == false);
+assertTrue(d.isLocked(path) == true);
+assertEquals(c.getClient(), d.peekLock(path));
+
+try {
+d.unlock(path);
+fail();
+} catch (IllegalStateException ex) {
+// expected
+}
+
+c.u

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

2017-05-19 Thread liyang
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-2624
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() {



[10/50] [abbrv] kylin git commit: KYLIN-2583 remove max connection limit

2017-05-19 Thread liyang
KYLIN-2583 remove max connection limit


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

Branch: refs/heads/KYLIN-2624
Commit: 1ba9af70a5e8c49dfa3ecbc1e3222cbd46b06cbe
Parents: 8b277d5
Author: Yifan Zhang 
Authored: Mon May 8 13:12:41 2017 +0800
Committer: Dong Li 
Committed: Mon May 8 15:25:53 2017 +0800

--
 .../org/apache/kylin/query/QueryDataSource.java |  5 ++
 .../apache/kylin/query/QueryDataSourceTest.java | 50 +++-
 2 files changed, 54 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/1ba9af70/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
--
diff --git a/query/src/main/java/org/apache/kylin/query/QueryDataSource.java 
b/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
index 32feea6..9ffdf0e 100644
--- a/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
+++ b/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
@@ -32,6 +32,7 @@ import org.apache.calcite.jdbc.Driver;
 import org.apache.commons.dbcp.BasicDataSource;
 import org.apache.commons.dbcp.BasicDataSourceFactory;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.query.schema.OLAPSchemaFactory;
 import org.apache.log4j.Logger;
@@ -129,11 +130,15 @@ public class QueryDataSource {
 }
 
 BasicDataSource ds = null;
+if (StringUtils.isEmpty(props.getProperty("maxActive"))) {
+props.setProperty("maxActive", "-1");
+}
 try {
 ds = (BasicDataSource) 
BasicDataSourceFactory.createDataSource(props);
 } catch (Exception e) {
 // Basic mode
 ds = new BasicDataSource();
+ds.setMaxActive(-1);
 }
 ds.setUrl("jdbc:calcite:model=" + olapTmp.getAbsolutePath());
 ds.setDriverClassName(Driver.class.getName());

http://git-wip-us.apache.org/repos/asf/kylin/blob/1ba9af70/query/src/test/java/org/apache/kylin/query/QueryDataSourceTest.java
--
diff --git 
a/query/src/test/java/org/apache/kylin/query/QueryDataSourceTest.java 
b/query/src/test/java/org/apache/kylin/query/QueryDataSourceTest.java
index 90d3518..2c06be8 100644
--- a/query/src/test/java/org/apache/kylin/query/QueryDataSourceTest.java
+++ b/query/src/test/java/org/apache/kylin/query/QueryDataSourceTest.java
@@ -18,6 +18,8 @@
 
 package org.apache.kylin.query;
 
+import java.sql.Connection;
+import java.sql.SQLException;
 import java.util.Properties;
 
 import javax.sql.DataSource;
@@ -25,6 +27,7 @@ import javax.sql.DataSource;
 import org.apache.calcite.jdbc.Driver;
 import org.apache.commons.dbcp.BasicDataSource;
 import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.util.DBUtils;
 import org.apache.kylin.common.util.LocalFileMetadataTestCase;
 import org.junit.After;
 import org.junit.Assert;
@@ -80,7 +83,52 @@ public class QueryDataSourceTest extends 
LocalFileMetadataTestCase {
 Assert.assertNotNull(ds3);
 Assert.assertEquals(ds1, ds2);
 Assert.assertNotEquals(ds1, ds3);
-
+
 dsCache.clearCache();
 }
+
+@Test(timeout=1)
+public void testMaxConnLimit() throws SQLException {
+KylinConfig config = KylinConfig.getInstanceFromEnv();
+
+// Test with connection limit 
+Properties props = new Properties();
+props.setProperty("maxActive", "3");
+props.setProperty("maxWait", "1000");
+DataSource ds1 = QueryDataSource.create("default", config, props);
+Connection ds1Conn1 = ds1.getConnection();
+Connection ds1Conn2 = ds1.getConnection();
+Connection ds1Conn3 = ds1.getConnection();
+try {
+Connection ds1Conn4 = ds1.getConnection();
+DBUtils.closeQuietly(ds1Conn4);
+Assert.fail("This should fail with SQLException");
+} catch (Exception e) {
+Assert.assertTrue(e instanceof SQLException);
+}
+DBUtils.closeQuietly(ds1Conn1);
+DBUtils.closeQuietly(ds1Conn2);
+DBUtils.closeQuietly(ds1Conn3);
+
+// Test with not connection limit
+DataSource ds2 = QueryDataSource.create("default", config);
+Connection ds2Conn1 = ds2.getConnection();
+Connection ds2Conn2 = ds2.getConnection();
+Connection ds2Conn3 = ds2.getConnection();
+Connection ds2Conn4 = ds2.getConnection();
+Connection ds2Conn5 = ds2.getConnec

[01/50] [abbrv] kylin git commit: KYLIN-2586 use random port for CacheServiceTest as fixed port 7777 might have been occupied [Forced Update!]

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/KYLIN-2624 29dd1d24b -> 3c9607fc4 (forced update)


KYLIN-2586 use random port for CacheServiceTest as fixed port  might have 
been occupied


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

Branch: refs/heads/KYLIN-2624
Commit: 783bb4eecdcd9d455d61009eef27f2508f14d8c8
Parents: d7d468a
Author: Hongbin Ma 
Authored: Fri May 5 09:24:42 2017 +0800
Committer: Hongbin Ma 
Committed: Fri May 5 09:24:42 2017 +0800

--
 .../org/apache/kylin/rest/service/CacheServiceTest.java  | 11 ---
 1 file changed, 8 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/783bb4ee/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
--
diff --git 
a/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java 
b/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
index 7f7b6f0..3601ec1 100644
--- a/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
+++ b/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.Random;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicLong;
@@ -72,13 +73,17 @@ public class CacheServiceTest extends 
LocalFileMetadataTestCase {
 @BeforeClass
 public static void beforeClass() throws Exception {
 staticCreateTestMetadata();
+
+Random random = new Random();
+int port = random.nextInt(1) + 4;
+logger.info("Chosen port for CacheServiceTest is " + port);
 configA = KylinConfig.getInstanceFromEnv();
-configA.setProperty("kylin.server.cluster-servers", "localhost:");
+configA.setProperty("kylin.server.cluster-servers", "localhost:" + 
port);
 configB = KylinConfig.createKylinConfig(configA);
-configB.setProperty("kylin.server.cluster-servers", "localhost:");
+configB.setProperty("kylin.server.cluster-servers", "localhost:" + 
port);
 configB.setMetadataUrl("../examples/test_metadata");
 
-server = new Server();
+server = new Server(port);
 ServletContextHandler context = new 
ServletContextHandler(ServletContextHandler.SESSIONS);
 context.setContextPath("/");
 server.setHandler(context);



[21/50] [abbrv] kylin git commit: KYLIN-2602 Add optional job threshold arg for MetadataCleanupJob

2017-05-19 Thread liyang
KYLIN-2602 Add optional job threshold arg for MetadataCleanupJob


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

Branch: refs/heads/KYLIN-2624
Commit: b3310dcdc0f9ac99006eb4d1a0910de9c43f22fd
Parents: 1264ff3
Author: kangkaisen 
Authored: Thu May 11 10:11:40 2017 +0800
Committer: kangkaisen 
Committed: Thu May 11 10:13:58 2017 +0800

--
 .../org/apache/kylin/tool/MetadataCleanupJob.java | 14 +++---
 1 file changed, 11 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/b3310dcd/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
--
diff --git a/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java 
b/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
index 7040dbb..8e17645 100644
--- a/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
+++ b/tool/src/main/java/org/apache/kylin/tool/MetadataCleanupJob.java
@@ -48,14 +48,17 @@ public class MetadataCleanupJob extends AbstractHadoopJob {
 @SuppressWarnings("static-access")
 private static final Option OPTION_DELETE = 
OptionBuilder.withArgName("delete").hasArg().isRequired(false).withDescription("Delete
 the unused metadata").create("delete");
 
+@SuppressWarnings("static-access")
+private static final Option OPTION_THRESHOLD_FOR_JOB = 
OptionBuilder.withArgName("jobThreshold").hasArg().isRequired(false).withDescription("Specify
 how many days of job metadata keeping. Default 30 
days").create("jobThreshold");
+
 protected static final Logger logger = 
LoggerFactory.getLogger(MetadataCleanupJob.class);
 
 boolean delete = false;
 
 private KylinConfig config = null;
 
-public static final long TIME_THREADSHOLD = 1 * 3600 * 1000L; // 1 hour
-public static final long TIME_THREADSHOLD_FOR_JOB = 30 * 24 * 3600 * 
1000L; // 30 days
+private static final long TIME_THREADSHOLD = 1 * 3600 * 1000L; // 1 hour
+private static final int DEFAULT_DAY_THREADSHOLD_FOR_JOB = 30 ; // 30 days
 
 /*
  * (non-Javadoc)
@@ -68,10 +71,12 @@ public class MetadataCleanupJob extends AbstractHadoopJob {
 
 logger.info("jobs args: " + Arrays.toString(args));
 options.addOption(OPTION_DELETE);
+options.addOption(OPTION_THRESHOLD_FOR_JOB);
 parseOptions(options, args);
 
 logger.info("options: '" + getOptionsAsString() + "'");
 logger.info("delete option value: '" + getOptionValue(OPTION_DELETE) + 
"'");
+logger.info("jobThreshold option value: '" + 
getOptionValue(OPTION_THRESHOLD_FOR_JOB) + "'");
 delete = Boolean.parseBoolean(getOptionValue(OPTION_DELETE));
 
 config = KylinConfig.getInstanceFromEnv();
@@ -148,7 +153,10 @@ public class MetadataCleanupJob extends AbstractHadoopJob {
 for (ExecutablePO executable : allExecutable) {
 long lastModified = executable.getLastModified();
 ExecutableOutputPO output = 
executableDao.getJobOutput(executable.getUuid());
-if (System.currentTimeMillis() - lastModified > 
TIME_THREADSHOLD_FOR_JOB && 
(ExecutableState.SUCCEED.toString().equals(output.getStatus()) || 
ExecutableState.DISCARDED.toString().equals(output.getStatus( {
+int jobThresholdDay = 
optionsHelper.hasOption(OPTION_THRESHOLD_FOR_JOB) ? 
Integer.valueOf(optionsHelper.getOptionValue(OPTION_THRESHOLD_FOR_JOB)) : 
DEFAULT_DAY_THREADSHOLD_FOR_JOB;
+long jobThresholdTime = jobThresholdDay * 24 * 3600 * 1000L;
+
+if (System.currentTimeMillis() - lastModified > jobThresholdTime 
&& (ExecutableState.SUCCEED.toString().equals(output.getStatus()) || 
ExecutableState.DISCARDED.toString().equals(output.getStatus( {
 toDeleteResource.add(ResourceStore.EXECUTE_RESOURCE_ROOT + "/" 
+ executable.getUuid());
 
toDeleteResource.add(ResourceStore.EXECUTE_OUTPUT_RESOURCE_ROOT + "/" + 
executable.getUuid());
 



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

2017-05-19 Thread liyang
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-2624
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;



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

2017-05-19 Thread liyang
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-2624
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
+ 



[16/50] [abbrv] kylin git commit: KYLIN-2598 Should not translate filter to a in-clause filter with too many elements

2017-05-19 Thread liyang
KYLIN-2598 Should not translate filter to a in-clause filter with too many 
elements


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

Branch: refs/heads/KYLIN-2624
Commit: 9dc6553d29eb3f106823026f45dc878347a2a108
Parents: 529b1be
Author: Hongbin Ma 
Authored: Tue May 9 18:33:21 2017 +0800
Committer: Dong Li 
Committed: Tue May 9 20:30:21 2017 +0800

--
 .../apache/kylin/common/KylinConfigBase.java|  4 +++
 .../kylin/dict/BuiltInFunctionTransformer.java  | 10 +-
 .../test/resources/query/sql_like/query01.sql   |  6 ++--
 .../test/resources/query/sql_like/query05.sql   | 33 
 .../test/resources/query/sql_like/query06.sql   | 33 
 .../test/resources/query/sql_like/query22.sql   | 31 ++
 .../test/resources/query/sql_like/query23.sql   | 31 ++
 7 files changed, 144 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/9dc6553d/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 eafdbbb..10209d7 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
@@ -844,6 +844,10 @@ abstract public class KylinConfigBase implements 
Serializable {
 return value > 0 ? value : Long.MAX_VALUE;
 }
 
+public int getTranslatedInClauseMaxSize() {
+return 
Integer.parseInt(getOptional("kylin.query.translated-in-clause-max-size", 
"1024"));
+}
+
 public int getLargeQueryThreshold() {
 return 
Integer.parseInt(getOptional("kylin.query.large-query-threshold", 
String.valueOf(100)));
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/9dc6553d/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 6ef2f96..4d7b15d 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
@@ -21,6 +21,7 @@ package org.apache.kylin.dict;
 import java.util.Collection;
 import java.util.ListIterator;
 
+import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.Dictionary;
 import org.apache.kylin.dimension.IDimensionEncodingMap;
 import org.apache.kylin.metadata.filter.BuiltInFunctionTupleFilter;
@@ -93,12 +94,19 @@ public class BuiltInFunctionTransformer implements 
ITupleFilterTransformer {
 translated.addChild(new ColumnTupleFilter(columnRef));
 
 try {
+int translatedInClauseMaxSize = 
KylinConfig.getInstanceFromEnv().getTranslatedInClauseMaxSize();
+
 for (int i = dict.getMinId(); i <= dict.getMaxId(); i++) {
 Object dictVal = dict.getValueFromId(i);
 if ((Boolean) 
builtInFunctionTupleFilter.invokeFunction(dictVal)) {
 translated.addChild(new ConstantTupleFilter(dictVal));
+
+if (translated.getChildren().size() > 
translatedInClauseMaxSize) {
+return null;
+}
 }
 }
+
 } catch (Exception e) {
 logger.debug(e.getMessage());
 return null;
@@ -175,4 +183,4 @@ public class BuiltInFunctionTransformer implements 
ITupleFilterTransformer {
 }
 return translated;
 }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/kylin/blob/9dc6553d/kylin-it/src/test/resources/query/sql_like/query01.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_like/query01.sql 
b/kylin-it/src/test/resources/query/sql_like/query01.sql
index e1f131d..e3a05ca 100644
--- a/kylin-it/src/test/resources/query/sql_like/query01.sql
+++ b/kylin-it/src/test/resources/query/sql_like/query01.sql
@@ -16,7 +16,7 @@
 -- limitations under the License.
 --
 
-select lstg_format_name as lstg_format_name, count(*) as cnt 
+select META_CATEG_NAME as META_CATEG_NAME, count(*) as cnt 
  
  from test_kylin_fact 
 inner JOIN edw.test_cal_dt as test_cal_dt
@@ -27,5 +27,5 @@ inner JOIN edw.test

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

2017-05-19 Thread liyang
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-2624
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);
 }



[23/50] [abbrv] kylin git commit: KYLIN-2608 Bubble sort bug in JoinDesc

2017-05-19 Thread liyang
KYLIN-2608 Bubble sort bug in JoinDesc


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

Branch: refs/heads/KYLIN-2624
Commit: a059064df85d26014150709273cb2535805adadf
Parents: f277b2d
Author: Hongbin Ma 
Authored: Thu May 11 16:24:56 2017 +0800
Committer: liyang-gmt8 
Committed: Thu May 11 16:27:38 2017 +0800

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


http://git-wip-us.apache.org/repos/asf/kylin/blob/a059064d/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinDesc.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinDesc.java 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinDesc.java
index dd1500b..eb82ace 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/JoinDesc.java
@@ -125,7 +125,7 @@ public class JoinDesc implements Serializable {
 int n = foreignKey.length;
 for (int i = 0; i < n - 1 && cont; i++) {
 cont = false;
-for (int j = i; j < n - 1; j++) {
+for (int j = 0; j < n - 1 - i; j++) {
 int jj = j + 1;
 if (foreignKey[j].compareTo(foreignKey[jj]) > 0) {
 swap(foreignKey, j, jj);



[33/50] [abbrv] kylin git commit: KYLIN-2613 fix DimensionDesc.hashCode()

2017-05-19 Thread liyang
KYLIN-2613 fix DimensionDesc.hashCode()


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

Branch: refs/heads/KYLIN-2624
Commit: c8524efe7c49db6a3225ef0caa7bf900f55c2ae3
Parents: fd671d1
Author: Yang Li 
Authored: Sun May 14 16:42:34 2017 +0800
Committer: Yang Li 
Committed: Sun May 14 16:42:34 2017 +0800

--
 .../src/main/java/org/apache/kylin/cube/model/DimensionDesc.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/c8524efe/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java 
b/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java
index 344b7c8..578831f 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/model/DimensionDesc.java
@@ -33,6 +33,7 @@ import com.google.common.base.Objects;
 
 /**
  */
+@SuppressWarnings("serial")
 @JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = 
Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = 
Visibility.NONE)
 public class DimensionDesc implements java.io.Serializable {
 
@@ -178,7 +179,7 @@ public class DimensionDesc implements java.io.Serializable {
 final int prime = 31;
 int result = 1;
 result = prime * result + ((name == null) ? 0 : name.hashCode());
-result = prime * result + ((column == null) ? 0 : name.hashCode());
+result = prime * result + ((column == null) ? 0 : column.hashCode());
 result = prime * result + ((table == null) ? 0 : table.hashCode());
 result = prime * result + ((derived == null) ? 0 : derived.hashCode());
 return result;



[27/50] [abbrv] kylin git commit: minor, remove useless scripts

2017-05-19 Thread liyang
minor, remove useless scripts


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

Branch: refs/heads/KYLIN-2624
Commit: b08d278e5ed688457758eee43aff4f479fd0fb72
Parents: 949237d
Author: Hongbin Ma 
Authored: Fri May 12 12:10:21 2017 +0800
Committer: Dong Li 
Committed: Fri May 12 12:46:35 2017 +0800

--
 build/script/package_diag.sh |  77 -
 build/script/package_libs.sh | 100 --
 2 files changed, 177 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/b08d278e/build/script/package_diag.sh
--
diff --git a/build/script/package_diag.sh b/build/script/package_diag.sh
deleted file mode 100755
index 5d163e3..000
--- a/build/script/package_diag.sh
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/bash
-
-#
-# 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.
-#
-
-echo "Checking maven..."
-
-if [ -z "$(command -v mvn)" ]
-then
-echo "Please install maven first so that Kylin packaging can proceed"
-exit 1
-else
-echo "maven check passed"
-fi
-
-echo "Checking git..."
-
-if [ -z "$(command -v git)" ]
-then
-echo "Please install git first so that Kylin packaging can proceed"
-exit 1
-else
-echo "git check passed"
-fi
-
-dir=$(dirname ${0})
-cd ${dir}/../..
-version=`mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate 
-Dexpression=project.version |  grep -E '^[0-9]+\.[0-9]+\.[0-9]+' `
-
-if [ "$version" == "" ];then
-   echo "Failed to identify kylin version (current: `pwd`)"
-   exit 1
-fi
-
-echo "kylin version: ${version}"
-
-echo "package libraries"
-mvn clean install -DskipTests   || { exit 1; }
-
-echo "copy libraries"
-rm -rf build/tool
-mkdir build/tool
-cp tool/target/kylin-tool-${version}-assembly.jar 
build/tool/kylin-tool-${version}.jar
-# Copied file becomes 000 for some env (e.g. my Cygwin)
-chmod 644 build/tool/kylin-tool-${version}.jar
-
-echo 'package tar.gz'
-package_name=apache-kylin-${version}-diag
-cd build/
-rm -rf ${package_name}
-mkdir ${package_name}
-mkdir ${package_name}/bin
-cp -r tool ${package_name}
-cp bin/diag.sh ${package_name}/bin/
-rm -rf tool
-find ${package_name} -type d -exec chmod 755 {} \;
-find ${package_name} -type f -exec chmod 644 {} \;
-find ${package_name} -type f -name "*.sh" -exec chmod 755 {} \;
-mkdir -p ../dist
-tar -cvzf ../dist/${package_name}.tar.gz ${package_name}
-rm -rf ${package_name}
-
-echo "Library package ready: dist/${package_name}.tar.gz"

http://git-wip-us.apache.org/repos/asf/kylin/blob/b08d278e/build/script/package_libs.sh
--
diff --git a/build/script/package_libs.sh b/build/script/package_libs.sh
deleted file mode 100755
index 7ef6b5d..000
--- a/build/script/package_libs.sh
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/bin/bash
-
-#
-# 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.
-#
-
-echo "Checking maven..."
-
-if [ -z "$(command -v mvn)" ]
-then
-echo "Please install maven first so that Kylin packaging can proceed"
-exit 1
-else
-echo "maven check passed"
-fi
-
-echo "Checking git..."
-
-if [ -z "$

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

2017-05-19 Thread liyang
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-2624
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 class AbstractHadoopJob extends Configured 
imple

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

2017-05-19 Thread liyang
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-2624
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 = KylinConfig.getInstanceFromEnv().getMetadataUrl();
-   

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

2017-05-19 Thread liyang
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-2624
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;
 }
 
 }



[50/50] [abbrv] kylin git commit: KYLIN-2624 fix again

2017-05-19 Thread liyang
KYLIN-2624 fix again


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

Branch: refs/heads/KYLIN-2624
Commit: 3c9607fc48508c2ea8573cfa84c215f9adcac8e4
Parents: be32f75
Author: Yang Li 
Authored: Sat May 20 07:56:24 2017 +0800
Committer: Yang Li 
Committed: Sat May 20 07:56:24 2017 +0800

--
 .../apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/3c9607fc/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 dc2a23e..05d3a5a 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
@@ -102,7 +102,7 @@ public class ZookeeperDistributedLock implements 
DistributedLock, JobLock {
 
 public Factory(KylinConfig config) {
 this.curator = getZKClient(config);
-this.zkPathBase = "/kylin/" + 
KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix();
+this.zkPathBase = dropDoubleSlash("/kylin/" + 
KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix());
 }
 
 @Override



[35/50] [abbrv] kylin git commit: KYLIN-2557 code review

2017-05-19 Thread liyang
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-2624
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 {
 }
 }
 
-//desc.setValue(HTABLE_UUID_TAG, UUID.randomUUID().toString());
-hbase.createTable(desc);
+admin.createTable(desc);
 
 logger.debug

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

2017-05-19 Thread liyang
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-2624
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;
+}
+hiveConfFile = new File(path + File.separator + "conf", 
hiveConfF

[30/50] [abbrv] kylin git commit: KYLIN-2596 Enable generating multiple streaming messages with one input message in streaming parser

2017-05-19 Thread liyang
KYLIN-2596 Enable generating multiple streaming messages with one input message 
in streaming parser

* Minor, remove useless imports.

* Enable generating multiple streaming messages with one input message in 
streaming parser

* Make MR input can generate multiple rows of date.

* For multiple rows, outputKV() should be called for each row.

* Try&catch for each row's data processing.


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

Branch: refs/heads/KYLIN-2624
Commit: edc4d4cc558473476b18d48f232635e44640c27a
Parents: 7c0038d
Author: nichunen 
Authored: Fri May 12 14:55:14 2017 +0800
Committer: hongbin ma 
Committed: Fri May 12 14:55:14 2017 +0800

--
 .../java/org/apache/kylin/job/DeployUtil.java   |   2 +-
 .../kylin/common/util/StreamingMessage.java |  62 --
 .../kylin/common/util/StreamingMessageRow.java  |  62 ++
 .../org/apache/kylin/engine/mr/IMRInput.java|   4 +-
 .../mr/steps/FactDistinctColumnsMapper.java | 113 ++-
 .../engine/mr/steps/HiveToBaseCuboidMapper.java |  15 ++-
 .../engine/mr/steps/InMemCuboidMapper.java  |  15 ++-
 .../apache/kylin/source/hive/HiveMRInput.java   |   6 +-
 .../cardinality/ColumnCardinalityMapper.java|  25 ++--
 .../apache/kylin/source/kafka/KafkaMRInput.java |  16 ++-
 .../kylin/source/kafka/StreamingParser.java |   8 +-
 .../source/kafka/TimedJsonStreamParser.java |  11 +-
 .../source/kafka/TimedJsonStreamParserTest.java |  22 ++--
 13 files changed, 194 insertions(+), 167 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/edc4d4cc/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java
--
diff --git a/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java 
b/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java
index fdcd52c..077c056 100644
--- a/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java
+++ b/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java
@@ -166,7 +166,7 @@ public class DeployUtil {
 TimedJsonStreamParser timedJsonStreamParser = new 
TimedJsonStreamParser(tableColumns, null);
 StringBuilder sb = new StringBuilder();
 for (String json : data) {
-List rowColumns = 
timedJsonStreamParser.parse(ByteBuffer.wrap(json.getBytes())).getData();
+List rowColumns = 
timedJsonStreamParser.parse(ByteBuffer.wrap(json.getBytes())).get(0).getData();
 sb.append(StringUtils.join(rowColumns, ","));
 sb.append(System.getProperty("line.separator"));
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/edc4d4cc/core-common/src/main/java/org/apache/kylin/common/util/StreamingMessage.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/StreamingMessage.java 
b/core-common/src/main/java/org/apache/kylin/common/util/StreamingMessage.java
deleted file mode 100644
index 981c8a8..000
--- 
a/core-common/src/main/java/org/apache/kylin/common/util/StreamingMessage.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.common.util;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- */
-public class StreamingMessage {
-
-private final List data;
-
-private long offset;
-
-private long timestamp;
-
-private Map params;
-
-public StreamingMessage(List data, long offset, long timestamp, 
Map params) {
-this.data = data;
-this.offset = offset;
-this.timestamp = timestamp;
-this.params = params;
-}
-
-public final List getData() {
-return data;
-}
-
-public final long getOffset() {
-return offset;
-}
-
-public void setOffset(long offset) {
-this.offset = offset;
-}
-
-

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

2017-05-19 Thread liyang
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-2624
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;
 }
 
 // 




[19/50] [abbrv] kylin git commit: KYLIN-2599 more complete fix

2017-05-19 Thread liyang
KYLIN-2599 more complete fix


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

Branch: refs/heads/KYLIN-2624
Commit: f277b2d586d4b306d15a2fc7de83b1dfb38d628e
Parents: c3d8183
Author: Hongbin Ma 
Authored: Wed May 10 13:52:14 2017 +0800
Committer: liyang-gmt8 
Committed: Wed May 10 14:16:18 2017 +0800

--
 .../calcite/sql2rel/SqlToRelConverter.java  | 43 ++--
 .../apache/kylin/query/ITKylinQueryTest.java|  1 +
 .../resources/query/sql_verifyCount/query09.sql | 34 
 .../query/sql_verifyCount/query09.sql.expected  |  2 +
 .../resources/query/sql_verifyCount/query10.sql | 34 
 .../query/sql_verifyCount/query10.sql.expected  |  2 +
 .../resources/query/sql_verifyCount/query11.sql | 36 
 .../query/sql_verifyCount/query11.sql.expected  |  2 +
 8 files changed, 142 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/f277b2d5/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
--
diff --git 
a/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java 
b/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
index a520aa6..8085a70 100644
--- 
a/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
+++ 
b/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
@@ -29,6 +29,7 @@ import org.apache.calcite.plan.RelTraitSet;
 import org.apache.calcite.prepare.Prepare;
 import org.apache.calcite.prepare.RelOptTableImpl;
 import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollationImpl;
 import org.apache.calcite.rel.RelCollationTraitDef;
 import org.apache.calcite.rel.RelCollations;
 import org.apache.calcite.rel.RelFieldCollation;
@@ -613,15 +614,6 @@ public class SqlToRelConverter {
 return root;
 }
 
-RelNode tableScanOrJoin = null;
-RelNode rootProjInput = rootPrj.getInput(0) instanceof LogicalFilter ? 
rootPrj.getInput(0).getInput(0): rootPrj.getInput(0);
-if(rootProjInput instanceof TableScan || rootProjInput instanceof 
LogicalJoin) { 
-tableScanOrJoin = rootProjInput;
-}
-if(tableScanOrJoin == null) {
-return root;
-}
-
 //
 RelNode input = rootPrj.getInput();
 //if (!(//
@@ -637,25 +629,52 @@ public class SqlToRelConverter {
 List inFields = inType.getFieldNames();
 List projExp = new ArrayList<>();
 List> projFields = new ArrayList<>();
+Map projFieldMapping = new HashMap<>();
 RelDataTypeFactory.FieldInfoBuilder projTypeBuilder = 
getCluster().getTypeFactory().builder();
 RelDataTypeFactory.FieldInfoBuilder validTypeBuilder = 
getCluster().getTypeFactory().builder();
+
+boolean hiddenColumnExists = false;
+for (int i = 0; i < root.validatedRowType.getFieldList().size(); i++) {
+if 
(root.validatedRowType.getFieldNames().get(i).startsWith("_KY_")) 
+hiddenColumnExists = true;
+}
+if(!hiddenColumnExists) {
+return root;
+}
+
 for (int i = 0; i < inFields.size(); i++) {
 if (!inFields.get(i).startsWith("_KY_")) {
 projExp.add(rootPrj.getProjects().get(i));
+projFieldMapping.put(i, projFields.size());
 projFields.add(Pair.of(projFields.size(), inFields.get(i)));
 projTypeBuilder.add(inType.getFieldList().get(i));
-
validTypeBuilder.add(root.validatedRowType.getFieldList().get(i));
+
+if (i < root.validatedRowType.getFieldList().size()) //for 
cases like kylin-it/src/test/resources/query/sql_verifyCount/query10.sql
+
validTypeBuilder.add(root.validatedRowType.getFieldList().get(i));
 }
 }
 
 RelDataType projRowType = 
getCluster().getTypeFactory().createStructType(projTypeBuilder);
 rootPrj = LogicalProject.create(input, projExp, projRowType);
 if (rootSort != null) {
-rootSort = (LogicalSort) rootSort.copy(rootSort.getTraitSet(), 
rootPrj, rootSort.collation, rootSort.offset, rootSort.fetch);
+//for cases like 
kylin-it/src/test/resources/query/sql_verifyCount/query10.sql, original 
RelCollation is stale, need to fix its fieldIndex
+RelCollation originalCollation = rootSort.collation;
+RelCollation newCollation = null;
+List fieldCollations = 
originalC

[12/50] [abbrv] kylin git commit: KYLIN-2575 Experimental feature: Computed Column

2017-05-19 Thread liyang
KYLIN-2575 Experimental feature: Computed Column


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

Branch: refs/heads/KYLIN-2624
Commit: 9a812d5fc917ddcdb736cd1c91fdfe9c933e603a
Parents: d6fdda2
Author: Hongbin Ma 
Authored: Mon May 8 15:49:57 2017 +0800
Committer: liyang-gmt8 
Committed: Mon May 8 16:01:48 2017 +0800

--
 .../kylin/cube/CubeCapabilityChecker.java   |   11 +-
 .../java/org/apache/kylin/cube/JoinChecker.java |   60 -
 .../org/apache/kylin/cube/cuboid/CuboidCLI.java |7 +
 .../org/apache/kylin/cube/model/CubeDesc.java   |   12 +-
 .../kylin/cube/cuboid/CuboidSchedulerTest.java  |   23 +
 .../model/validation/rule/FunctionRuleTest.java |   11 +-
 .../org/apache/kylin/job/JoinedFlatTable.java   |4 +-
 .../apache/kylin/metadata/MetadataManager.java  |   31 +-
 .../apache/kylin/metadata/model/ColumnDesc.java |   41 +-
 .../metadata/model/ComputedColumnDesc.java  |   95 ++
 .../kylin/metadata/model/DataModelDesc.java |   81 +-
 .../apache/kylin/metadata/model/JoinsTree.java  |2 +-
 .../kylin/metadata/model/PartitionDesc.java |   10 +-
 .../apache/kylin/metadata/model/TableDesc.java  |   35 +-
 .../apache/kylin/metadata/model/TableRef.java   |   14 +-
 .../apache/kylin/metadata/model/TblColRef.java  |   36 +-
 .../kylin/metadata/project/ProjectL2Cache.java  |   13 +-
 .../kylin/metadata/model/DataModelDescTest.java |   15 +-
 .../localmeta/cube_desc/ci_inner_join_cube.json | 1016 ++---
 .../localmeta/cube_desc/ci_left_join_cube.json  | 1036 ++
 .../model_desc/ci_inner_join_model.json |   37 +-
 .../model_desc/ci_left_join_model.json  |   37 +-
 .../test_case_data/sandbox/kylin.properties |2 +-
 .../kylin/query/CompareQueryBySuffix.java   |   37 +
 .../kylin/query/ICompareQueryTranslator.java|   29 +
 .../apache/kylin/query/ITKylinQueryTest.java|5 +
 .../org/apache/kylin/query/KylinTestBase.java   |   25 +-
 .../query/sql_computedcolumn/query01.sql|   14 +
 .../sql_computedcolumn/query01.sql.compare  |   14 +
 .../query/sql_computedcolumn/query02.sql|   21 +
 .../sql_computedcolumn/query02.sql.compare  |   21 +
 .../query/sql_verifyCount/query01.sql.expected  |2 +-
 .../query/sql_verifyCount/query03.sql.expected  |2 +-
 .../query/sql_verifyCount/query04.sql.expected  |2 +-
 .../apache/kylin/query/schema/OLAPSchema.java   |2 +-
 .../kylin/rest/controller/ModelController.java  |2 +-
 .../kylin/rest/service/CacheServiceTest.java|1 -
 .../kylin/rest/service/ModelServiceTest.java|   97 ++
 .../apache/kylin/source/hive/SchemaChecker.java |2 +-
 39 files changed, 1894 insertions(+), 1011 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java 
b/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
index c45144b..20cb0a9 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
@@ -52,12 +52,7 @@ public class CubeCapabilityChecker {
 CapabilityResult result = new CapabilityResult();
 result.capable = false;
 
-// match joins
-boolean isJoinMatch = JoinChecker.isJoinMatch(digest.joinDescs, cube);
-if (!isJoinMatch) {
-logger.info("Exclude cube " + cube.getName() + " because unmatched 
joins");
-return result;
-}
+// match joins is ensured at model select
 
 // dimensions & measures
 Collection dimensionColumns = getDimensionColumns(digest);
@@ -106,12 +101,12 @@ public class CubeCapabilityChecker {
 }
 
 if (!unmatchedDimensions.isEmpty()) {
-logger.info("Exclude cube " + cube.getName() + " because unmatched 
dimensions");
+logger.info("Exclude cube " + cube.getName() + " because unmatched 
dimensions: " + unmatchedDimensions);
 return result;
 }
 
 if (!unmatchedAggregations.isEmpty()) {
-logger.info("Exclude cube " + cube.getName() + " because unmatched 
aggregations");
+logger.info("Exclude cube " + cube.getName() + " because unmatched 
aggregations: " + unmatchedAggregations);
 return result;
 }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/core-cube/src/main/java/org/apache/kylin/cube/JoinChecker.java
-

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

2017-05-19 Thread liyang
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-2624
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; }
  else
 -hive -e "CREATE DATABASE IF NOT EX

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

2017-05-19 Thread liyang
minor, fix csv export garbled issue


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

Branch: refs/heads/KYLIN-2624
Commit: 949237ddca0ab24bf8121ccc002d802df678761c
Parents: a059064
Author: Hongbin Ma 
Authored: Thu May 11 17:29:14 2017 +0800
Committer: Dong Li 
Committed: Fri May 12 12:46:35 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/949237dd/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 c5f896d..99447a1 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=utf-8");
+response.setContentType("text/" + format + ";charset=ansi");
 response.setHeader("Content-Disposition", "attachment; 
filename=\"result." + format + "\"");
 ICsvListWriter csvWriter = null;
 



[11/50] [abbrv] kylin git commit: KYLIN-2575 Experimental feature: Computed Column

2017-05-19 Thread liyang
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
--
diff --git a/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json 
b/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
index 221ffb6..cbf7a76 100644
--- a/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
+++ b/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
@@ -1,455 +1,627 @@
 {
-  "uuid" : "629ab7a8-3929-4dff-b59d-2100aadccd1a",
-  "name" : "ci_left_join_cube",
-  "model_name" : "ci_left_join_model",
-  "description" : null,
-  "dimensions" : [ {
-"name" : "CAL_DT",
-"table" : "TEST_CAL_DT",
-"column" : "{FK}",
-"derived" : [ "WEEK_BEG_DT" ]
-  }, {
-"name" : "ORDER_ID",
-"table" : "TEST_KYLIN_FACT",
-"column" : "ORDER_ID"
-  }, {
-"name" : "TEST_DATE_ENC",
-"table" : "TEST_ORDER",
-"column" : "TEST_DATE_ENC"
-  }, {
-"name" : "TEST_TIME_ENC",
-"table" : "TEST_ORDER",
-"column" : "TEST_TIME_ENC"
-  }, {
-"name" : "CATEGORY",
-"table" : "TEST_CATEGORY_GROUPINGS",
-"column" : "{FK}",
-"derived" : [ "USER_DEFINED_FIELD1", "USER_DEFINED_FIELD3", "UPD_DATE", 
"UPD_USER" ]
-  }, {
-"name" : "CATEGORY_HIERARCHY",
-"table" : "TEST_CATEGORY_GROUPINGS",
-"column" : "META_CATEG_NAME",
-"derived" : null
-  }, {
-"name" : "CATEGORY_HIERARCHY",
-"table" : "TEST_CATEGORY_GROUPINGS",
-"column" : "CATEG_LVL2_NAME",
-"derived" : null
-  }, {
-"name" : "CATEGORY_HIERARCHY",
-"table" : "TEST_CATEGORY_GROUPINGS",
-"column" : "CATEG_LVL3_NAME",
-"derived" : null
-  }, {
-"name" : "LSTG_FORMAT_NAME",
-"table" : "TEST_KYLIN_FACT",
-"column" : "LSTG_FORMAT_NAME",
-"derived" : null
-  }, {
-"name" : "SITE_ID",
-"table" : "TEST_SITES",
-"column" : "{FK}",
-"derived" : [ "SITE_NAME", "CRE_USER" ]
-  }, {
-"name" : "SELLER_TYPE_CD",
-"table" : "TEST_SELLER_TYPE_DIM",
-"column" : "{FK}",
-"derived" : [ "SELLER_TYPE_DESC" ]
-  }, {
-"name" : "SELLER_ID",
-"table" : "TEST_KYLIN_FACT",
-"column" : "SELLER_ID"
-  }, {
-"name" : "SELLER_BUYER_LEVEL",
-"table" : "SELLER_ACCOUNT",
-"column" : "ACCOUNT_BUYER_LEVEL"
-  }, {
-"name" : "SELLER_SELLER_LEVEL",
-"table" : "SELLER_ACCOUNT",
-"column" : "ACCOUNT_SELLER_LEVEL"
-  }, {
-"name" : "SELLER_COUNTRY",
-"table" : "SELLER_ACCOUNT",
-"column" : "ACCOUNT_COUNTRY"
-  }, {
-"name" : "SELLER_COUNTRY_NAME",
-"table" : "SELLER_COUNTRY",
-"column" : "NAME"
-  }, {
-"name" : "BUYER_ID",
-"table" : "TEST_ORDER",
-"column" : "BUYER_ID"
-  }, {
-"name" : "BUYER_BUYER_LEVEL",
-"table" : "BUYER_ACCOUNT",
-"column" : "ACCOUNT_BUYER_LEVEL"
-  }, {
-"name" : "BUYER_SELLER_LEVEL",
-"table" : "BUYER_ACCOUNT",
-"column" : "ACCOUNT_SELLER_LEVEL"
-  }, {
-"name" : "BUYER_COUNTRY",
-"table" : "BUYER_ACCOUNT",
-"column" : "ACCOUNT_COUNTRY"
-  }, {
-"name" : "BUYER_COUNTRY_NAME",
-"table" : "BUYER_COUNTRY",
-"column" : "NAME"
-  } ],
-  "measures" : [ {
-"name" : "TRANS_CNT",
-"function" : {
-  "expression" : "COUNT",
-  "parameter" : {
-"type" : "constant",
-"value" : "1"
-  },
-  "returntype" : "bigint"
+  "uuid": "629ab7a8-3929-4dff-b59d-2100aadccd1a",
+  "name": "ci_left_join_cube",
+  "model_name": "ci_left_join_model",
+  "description": null,
+  "dimensions": [
+{
+  "name": "CAL_DT",
+  "table": "TEST_CAL_DT",
+  "column": "{FK}",
+  "derived": [
+"WEEK_BEG_DT"
+  ]
+},
+{
+  "name": "ORDER_ID",
+  "table": "TEST_KYLIN_FACT",
+  "column": "ORDER_ID"
+},
+{
+  "name": "TEST_DATE_ENC",
+  "table": "TEST_ORDER",
+  "column": "TEST_DATE_ENC"
+},
+{
+  "name": "TEST_TIME_ENC",
+  "table": "TEST_ORDER",
+  "column": "TEST_TIME_ENC"
+},
+{
+  "name": "CATEGORY",
+  "table": "TEST_CATEGORY_GROUPINGS",
+  "column": "{FK}",
+  "derived": [
+"USER_DEFINED_FIELD1",
+"USER_DEFINED_FIELD3",
+"UPD_DATE",
+"UPD_USER"
+  ]
+},
+{
+  "name": "CATEGORY_HIERARCHY",
+  "table": "TEST_CATEGORY_GROUPINGS",
+  "column": "META_CATEG_NAME",
+  "derived": null
+},
+{
+  "name": "CATEGORY_HIERARCHY",
+  "table": "TEST_CATEGORY_GROUPINGS",
+  "column": "CATEG_LVL2_NAME",
+  "derived": null
+},
+{
+  "name": "CATEGORY_HIERARCHY",
+  "table": "TEST_CATEGORY_GROUPINGS",
+  "column": "CATEG_LVL3_NAME",
+  "derived": null
+},
+{
+  "name": "LSTG_FORMAT_NAME",
+  "table": "TEST_KYLIN_FACT",
+  "column": "LSTG_FORMAT_NAME",
+  "derived": null
+},
+{
+  "name": "SITE_ID",
+  "table": "TEST_SITES",
+  "col

[07/50] [abbrv] kylin git commit: KYLIN-2578 ensures zk path is prefix-ed with /kylin/metadata-url

2017-05-19 Thread liyang
KYLIN-2578 ensures zk path is prefix-ed with /kylin/metadata-url


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

Branch: refs/heads/KYLIN-2624
Commit: 263a1e8889ba223883ba42178debeee0bd02c240
Parents: d738544
Author: Yang Li 
Authored: Sun May 7 15:56:43 2017 +0800
Committer: Yang Li 
Committed: Sun May 7 15:56:43 2017 +0800

--
 .../kylin/common/lock/DistributedLock.java  |  2 ++
 .../kylin/dict/GlobalDictionaryBuilder.java |  4 +--
 .../impl/threadpool/DistributedScheduler.java   |  6 ++--
 .../hbase/util/ZookeeperDistributedLock.java| 35 +---
 .../util/ITZookeeperDistributedLockTest.java|  2 +-
 5 files changed, 38 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/263a1e88/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java 
b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
index e8844fd..8f1fae0 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
@@ -23,6 +23,8 @@ import java.util.concurrent.Executor;
 
 /**
  * A distributed lock. Every instance is owned by a client, on whose behalf 
locks are acquired and/or released.
+ * 
+ * Implementation must ensure all lockPath will be prefix-ed with 
"/kylin/metadata-prefix" automatically.
  */
 public interface DistributedLock {
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/263a1e88/core-dictionary/src/main/java/org/apache/kylin/dict/GlobalDictionaryBuilder.java
--
diff --git 
a/core-dictionary/src/main/java/org/apache/kylin/dict/GlobalDictionaryBuilder.java
 
b/core-dictionary/src/main/java/org/apache/kylin/dict/GlobalDictionaryBuilder.java
index 0ec7730..a593371 100644
--- 
a/core-dictionary/src/main/java/org/apache/kylin/dict/GlobalDictionaryBuilder.java
+++ 
b/core-dictionary/src/main/java/org/apache/kylin/dict/GlobalDictionaryBuilder.java
@@ -93,10 +93,8 @@ public class GlobalDictionaryBuilder implements 
IDictionaryBuilder {
 return new AppendTrieDictionary<>();
 }
 
-private static final String GLOBAL_DICT_LOCK_PATH = "/kylin/dict/lock";
-
 private String getLockPath(String pathName) {
-return GLOBAL_DICT_LOCK_PATH + "/" + 
KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix() + "/" + pathName + 
"/lock";
+return "/dict/" + pathName + "/lock";
 }
 
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/263a1e88/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 e80f485..0714d90 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
@@ -84,7 +84,7 @@ public class DistributedScheduler implements 
Scheduler, Conn
 
 
 private final static String SEGMENT_ID = "segmentId";
-public static final String ZOOKEEPER_LOCK_PATH = "/kylin/job_engine/lock";
+public static final String ZOOKEEPER_LOCK_PATH = "/job_engine/lock"; // 
note ZookeeperDistributedLock will ensure zk path prefix: /kylin/metadata
 
 //only for it test
 public static DistributedScheduler getInstance(KylinConfig config) {
@@ -305,11 +305,11 @@ public class DistributedScheduler implements 
Scheduler, Conn
 }
 
 public String getLockPath(String pathName) {
-return ZOOKEEPER_LOCK_PATH + "/" + 
KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix() + "/" + pathName;
+return ZOOKEEPER_LOCK_PATH + "/" + pathName;
 }
 
 private String getWatchPath() {
-return ZOOKEEPER_LOCK_PATH + "/" + 
KylinConfig.getInstanceFromEnv().getMetadataUrlPrefix();
+return ZOOKEEPER_LOCK_PATH;
 }
 
 @Override

http://git-wip-us.apache.org/repos/asf/kylin/blob/263a1e88/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/o

[04/50] [abbrv] kylin git commit: KYLIN-2588 fix ParameterDesc.equals()

2017-05-19 Thread liyang
KYLIN-2588 fix ParameterDesc.equals()


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

Branch: refs/heads/KYLIN-2624
Commit: 0396923651cda8428b3022febcf013ff6d0457cf
Parents: 9a0598e
Author: lidongsjtu 
Authored: Fri May 5 18:49:48 2017 +0800
Committer: hongbin ma 
Committed: Fri May 5 20:56:52 2017 +0800

--
 .../java/org/apache/kylin/metadata/model/ParameterDesc.java| 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/03969236/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
index 0cf31b1..930dc02 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
@@ -96,7 +96,7 @@ public class ParameterDesc implements Serializable {
 void setValue(String value) {
 this.value = value;
 }
-
+
 public TblColRef getColRef() {
 return colRef;
 }
@@ -112,7 +112,7 @@ public class ParameterDesc implements Serializable {
 while (p != null) {
 if (p.isColumnType())
 all.add(p.getColRef());
-
+
 p = p.nextParameter;
 }
 allColRefsIncludingNexts = all;
@@ -145,7 +145,7 @@ public class ParameterDesc implements Serializable {
 if (p.isColumnType()) {
 if (q.isColumnType() == false)
 return false;
-if (this.getColRef().equals(that.getColRef()) == false)
+if (q.getColRef().equals(p.getColRef()) == false)
 return false;
 } else {
 if (q.isColumnType() == true)



[13/50] [abbrv] kylin git commit: KYLIN-2574 RawQueryLastHacker should group by all possible dimensions

2017-05-19 Thread liyang
KYLIN-2574 RawQueryLastHacker should group by all possible dimensions


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

Branch: refs/heads/KYLIN-2624
Commit: d6fdda2c24ac89ec72ff9663a36993f42a70960b
Parents: 1ba9af7
Author: Hongbin Ma 
Authored: Fri Apr 28 15:03:43 2017 +0800
Committer: liyang-gmt8 
Committed: Mon May 8 16:01:48 2017 +0800

--
 .../main/java/org/apache/kylin/cube/RawQueryLastHacker.java| 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/d6fdda2c/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java 
b/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java
index 682e48c..d2e3a83 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java
@@ -46,8 +46,8 @@ public class RawQueryLastHacker {
 boolean isSelectAll = sqlDigest.allColumns.isEmpty() || 
sqlDigest.allColumns.equals(sqlDigest.filterColumns);
 for (TblColRef col : cubeDesc.listAllColumns()) {
 if (cubeDesc.listDimensionColumnsIncludingDerived().contains(col) 
|| isSelectAll) {
-if (tupleInfo.hasColumn(col))
-sqlDigest.allColumns.add(col);
+//if (tupleInfo.hasColumn(col))
+sqlDigest.allColumns.add(col);
 }
 }
 
@@ -77,4 +77,4 @@ public class RawQueryLastHacker {
 }
 }
 }
-}
\ No newline at end of file
+}



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

2017-05-19 Thread liyang
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-2624
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()



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

2017-05-19 Thread liyang
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-2624
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 {
+if (origResData.containsKey(resPath))
+return;
+
+   

[24/50] [abbrv] kylin git commit: KYLIN-2609 Grant role access to the project failed on the project manage page.

2017-05-19 Thread liyang
KYLIN-2609 Grant role access to the project failed on the project manage page.

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/c6428efa
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/c6428efa
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/c6428efa

Branch: refs/heads/KYLIN-2624
Commit: c6428efae6d0c5c53823666e1bc72ea0bdd9f4e7
Parents: d449c40
Author: 10069681 
Authored: Thu May 11 20:19:14 2017 +0800
Committer: Billy Liu 
Committed: Thu May 11 21:51:30 2017 +0800

--
 webapp/app/js/controllers/access.js | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/c6428efa/webapp/app/js/controllers/access.js
--
diff --git a/webapp/app/js/controllers/access.js 
b/webapp/app/js/controllers/access.js
index 0e0664a..6187f9a 100644
--- a/webapp/app/js/controllers/access.js
+++ b/webapp/app/js/controllers/access.js
@@ -55,6 +55,7 @@ KylinApp.controller('AccessCtrl', function ($scope, 
AccessService, MessageServic
 //MessageService.sendMsg('Access granted!', 'success', {});
   SweetAlert.swal('Success!', 'Access granted!', 'success');
 }, function (e) {
+  grantRequst.uuid = uuid;
   if (e.status == 404) {
 //MessageService.sendMsg('User not found!', 'error', {});
 SweetAlert.swal('Oops...', 'User not found!!', 'error');



[42/50] [abbrv] kylin git commit: KYLIN-2635 fix IT

2017-05-19 Thread liyang
KYLIN-2635 fix IT


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

Branch: refs/heads/KYLIN-2624
Commit: 5f52cea4f7ffbb0fa885df650803156cd1daa5d2
Parents: ea5caba
Author: Hongbin Ma 
Authored: Wed May 17 21:26:09 2017 +0800
Committer: Roger Shi 
Committed: Thu May 18 11:02:49 2017 +0800

--
 .../org/apache/kylin/metadata/filter/CompareTupleFilter.java   | 6 ++
 1 file changed, 6 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/5f52cea4/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 2771250..c091c7c 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
@@ -167,7 +167,13 @@ public class CompareTupleFilter extends TupleFilter {
 return true;
 else
 return false;
+} else {
+if (operator == FilterOperatorEnum.ISNOTNULL)
+return true;
+else if (operator == FilterOperatorEnum.ISNULL)
+return false;
 }
+
 if (cs.isNull(firstCondValue)) {
 return false;
 }



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

2017-05-19 Thread liyang
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-2624
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);
 }



[06/50] [abbrv] kylin git commit: minor, check random port availability before using it

2017-05-19 Thread liyang
minor, check random port availability before using it


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

Branch: refs/heads/KYLIN-2624
Commit: d738544eeb03235ed2cf9e2f4509c1d09d98db8a
Parents: 7df407d
Author: Yang Li 
Authored: Sun May 7 09:33:45 2017 +0800
Committer: Yang Li 
Committed: Sun May 7 14:52:14 2017 +0800

--
 .../org/apache/kylin/common/util/CheckUtil.java | 50 +++-
 .../kylin/rest/service/CacheServiceTest.java|  5 +-
 2 files changed, 51 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/d738544e/core-common/src/main/java/org/apache/kylin/common/util/CheckUtil.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/CheckUtil.java 
b/core-common/src/main/java/org/apache/kylin/common/util/CheckUtil.java
index ae189f7..0f75ff2 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/CheckUtil.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/CheckUtil.java
@@ -17,10 +17,16 @@
 */
 package org.apache.kylin.common.util;
 
+import java.io.IOException;
+import java.net.DatagramSocket;
+import java.net.ServerSocket;
+import java.util.Random;
+
+import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class CheckUtil {
-public static final org.slf4j.Logger logger = 
LoggerFactory.getLogger(CheckUtil.class);
+public static final Logger logger = 
LoggerFactory.getLogger(CheckUtil.class);
 
 public static boolean checkCondition(boolean condition, String message, 
Object... args) {
 if (condition) {
@@ -30,4 +36,46 @@ public class CheckUtil {
 return false;
 }
 }
+
+public static int randomAvailablePort(int minPort, int maxPort) {
+Random rand = new Random();
+for (int i = 0; i < 100; i++) {
+int p = minPort + rand.nextInt(maxPort - minPort);
+if (checkPortAvailable(p))
+return p;
+}
+throw new RuntimeException("Failed to get random available port 
between [" + minPort + "," + maxPort + ")");
+}
+
+/**
+ * Checks to see if a specific port is available.
+ *
+ * @param port the port to check for availability
+ */
+public static boolean checkPortAvailable(int port) {
+ServerSocket ss = null;
+DatagramSocket ds = null;
+try {
+ss = new ServerSocket(port);
+ss.setReuseAddress(true);
+ds = new DatagramSocket(port);
+ds.setReuseAddress(true);
+return true;
+} catch (IOException e) {
+} finally {
+if (ds != null) {
+ds.close();
+}
+
+if (ss != null) {
+try {
+ss.close();
+} catch (IOException e) {
+/* should not be thrown */
+}
+}
+}
+
+return false;
+}
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/d738544e/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
--
diff --git 
a/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java 
b/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
index 3601ec1..6410aaa 100644
--- a/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
+++ b/server/src/test/java/org/apache/kylin/rest/service/CacheServiceTest.java
@@ -24,12 +24,12 @@ import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 import java.util.Arrays;
-import java.util.Random;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.util.CheckUtil;
 import org.apache.kylin.common.util.LocalFileMetadataTestCase;
 import org.apache.kylin.cube.CubeDescManager;
 import org.apache.kylin.cube.CubeInstance;
@@ -74,8 +74,7 @@ public class CacheServiceTest extends 
LocalFileMetadataTestCase {
 public static void beforeClass() throws Exception {
 staticCreateTestMetadata();
 
-Random random = new Random();
-int port = random.nextInt(1) + 4;
+int port = CheckUtil.randomAvailablePort(4, 5);
 logger.info("Chosen port for CacheServiceTest is " + port);
 configA = KylinConfig.getInstanceFromEnv();
 configA.setProperty("kylin.server.cluster-servers", "localhost:" + 
port);



[18/50] [abbrv] kylin git commit: KYLIN-2599 select * in subquery fail due to bug in hackSelectStar

2017-05-19 Thread liyang
KYLIN-2599 select * in subquery fail due to bug in hackSelectStar


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

Branch: refs/heads/KYLIN-2624
Commit: c3d81832f796ab281526d3ac1cd97b11eb986a92
Parents: 9dc6553
Author: Hongbin Ma 
Authored: Tue May 9 21:42:47 2017 +0800
Committer: liyang-gmt8 
Committed: Wed May 10 09:41:40 2017 +0800

--
 .../calcite/sql2rel/SqlToRelConverter.java  | 11 +
 .../src/test/resources/query/sql/query105.sql   | 26 
 2 files changed, 37 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/c3d81832/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
--
diff --git 
a/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java 
b/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
index c199c31..a520aa6 100644
--- 
a/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
+++ 
b/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
@@ -47,6 +47,7 @@ import org.apache.calcite.rel.core.Project;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.rel.core.Sample;
 import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.TableScan;
 import org.apache.calcite.rel.core.Uncollect;
 import org.apache.calcite.rel.logical.LogicalAggregate;
 import org.apache.calcite.rel.logical.LogicalCorrelate;
@@ -611,6 +612,16 @@ public class SqlToRelConverter {
 } else {
 return root;
 }
+
+RelNode tableScanOrJoin = null;
+RelNode rootProjInput = rootPrj.getInput(0) instanceof LogicalFilter ? 
rootPrj.getInput(0).getInput(0): rootPrj.getInput(0);
+if(rootProjInput instanceof TableScan || rootProjInput instanceof 
LogicalJoin) { 
+tableScanOrJoin = rootProjInput;
+}
+if(tableScanOrJoin == null) {
+return root;
+}
+
 //
 RelNode input = rootPrj.getInput();
 //if (!(//

http://git-wip-us.apache.org/repos/asf/kylin/blob/c3d81832/kylin-it/src/test/resources/query/sql/query105.sql
--
diff --git a/kylin-it/src/test/resources/query/sql/query105.sql 
b/kylin-it/src/test/resources/query/sql/query105.sql
new file mode 100644
index 000..a467b65
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql/query105.sql
@@ -0,0 +1,26 @@
+--
+-- 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 fact.lstg_format_name from 
+ 
+ (select * from test_kylin_fact where cal_dt > date'2010-01-01' ) as fact
+ 
+ group by fact.lstg_format_name 
+ 
+ order by CASE WHEN fact.lstg_format_name IS NULL THEN 'sdf' ELSE 
fact.lstg_format_name END 
+ 



[29/50] [abbrv] kylin git commit: KYLIN-2598 increase default kylin.query.translated-in-clause-max-size

2017-05-19 Thread liyang
KYLIN-2598 increase default kylin.query.translated-in-clause-max-size


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

Branch: refs/heads/KYLIN-2624
Commit: 7c0038db4aab12c6fbd8f249b104a473e1d5a61c
Parents: b08d278
Author: Hongbin Ma 
Authored: Fri May 12 13:11:01 2017 +0800
Committer: Dong Li 
Committed: Fri May 12 13:12:08 2017 +0800

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


http://git-wip-us.apache.org/repos/asf/kylin/blob/7c0038db/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 10209d7..b620924 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
@@ -845,7 +845,7 @@ abstract public class KylinConfigBase implements 
Serializable {
 }
 
 public int getTranslatedInClauseMaxSize() {
-return 
Integer.parseInt(getOptional("kylin.query.translated-in-clause-max-size", 
"1024"));
+return 
Integer.parseInt(getOptional("kylin.query.translated-in-clause-max-size", 
String.valueOf(1024 * 1024)));
 }
 
 public int getLargeQueryThreshold() {



[20/50] [abbrv] kylin git commit: The return type of tinyint for sum measure should be bigint

2017-05-19 Thread liyang
The return type of tinyint for sum measure should be bigint


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

Branch: refs/heads/KYLIN-2624
Commit: 1264ff39b740f9515653d30e0712739bc717d438
Parents: 901b10c
Author: kangkaisen 
Authored: Wed May 10 20:03:40 2017 +0800
Committer: kangkaisen 
Committed: Wed May 10 20:03:40 2017 +0800

--
 webapp/app/js/controllers/cubeMeasures.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/1264ff39/webapp/app/js/controllers/cubeMeasures.js
--
diff --git a/webapp/app/js/controllers/cubeMeasures.js 
b/webapp/app/js/controllers/cubeMeasures.js
index 73a6cd0..824e2ca 100644
--- a/webapp/app/js/controllers/cubeMeasures.js
+++ b/webapp/app/js/controllers/cubeMeasures.js
@@ -367,7 +367,7 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, 
$modal,MetaModel,cubes
 
   switch($scope.newMeasure.function.expression){
 case "SUM":
-  
if(colType==="smallint"||colType==="int"||colType==="bigint"||colType==="integer"){
+  
if(colType==="tinyint"||colType==="smallint"||colType==="int"||colType==="bigint"||colType==="integer"){
 $scope.newMeasure.function.returntype= 'bigint';
   }else{

if(colType.indexOf('decimal')!=-1||colType==="double"||colType==="float"){



[17/50] [abbrv] kylin git commit: KYLIN-2597 Deal with trivial expression in filters like x = 1+2

2017-05-19 Thread liyang
KYLIN-2597 Deal with trivial expression in filters like x = 1+2


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

Branch: refs/heads/KYLIN-2624
Commit: 529b1be2f9f0f1c7bfb2798928b8c6c60cb581ea
Parents: 9a812d5
Author: Hongbin Ma 
Authored: Tue May 9 17:30:03 2017 +0800
Committer: Dong Li 
Committed: Tue May 9 20:30:21 2017 +0800

--
 .../test/resources/query/sql_limit/query03.sql  | 31 +++
 .../kylin/query/relnode/OLAPFilterRel.java  | 55 
 2 files changed, 86 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/529b1be2/kylin-it/src/test/resources/query/sql_limit/query03.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_limit/query03.sql 
b/kylin-it/src/test/resources/query/sql_limit/query03.sql
new file mode 100644
index 000..4844395
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_limit/query03.sql
@@ -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.
+--
+
+SELECT 
+ test_kylin_fact.lstg_format_name ,test_kylin_fact.cal_dt , 
sum(test_kylin_fact.price) as GMV, count(*) as TRANS_CNT 
+ 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 test_kylin_fact.seller_id = 1002 + 4 
+ 
+ group by  seller_id,test_kylin_fact.cal_dt,lstg_format_name
+ limit 10

http://git-wip-us.apache.org/repos/asf/kylin/blob/529b1be2/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
--
diff --git 
a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java 
b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
index 0ee9204..06ad0c6 100755
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
@@ -18,6 +18,7 @@
 
 package org.apache.kylin.query.relnode;
 
+import java.math.BigDecimal;
 import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -68,6 +69,7 @@ import org.apache.kylin.metadata.filter.function.Functions;
 import org.apache.kylin.metadata.model.TblColRef;
 
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
@@ -140,6 +142,16 @@ public class OLAPFilterRel extends Filter implements 
OLAPRel {
 case OTHER_FUNCTION:
 filter = Functions.getFunctionTupleFilter(op.getName());
 break;
+case PLUS:
+case MINUS:
+case TIMES:
+case DIVIDE:
+TupleFilter f = dealWithTrivialExpr(call);
+if (f != null) {
+// is a trivial expr
+return f;
+}
+//else go to default
 default:
 filter = new 
UnsupportedTupleFilter(FilterOperatorEnum.UNSUPPORTED);
 break;
@@ -166,6 +178,49 @@ public class OLAPFilterRel extends Filter implements 
OLAPRel {
 return filter;
 }
 
+//KYLIN-2597 - Deal with trivial expression in filters like x = 1 + 2 
+private TupleFilter dealWithTrivialExpr(RexCall call) {
+ImmutableList operators = call.operands;
+if (operators.size() != 2) {
+return null;
+}
+
+BigDecimal left = null;
+BigDecimal right = null;
+  

[03/50] [abbrv] kylin git commit: Minor, remove useless imports.

2017-05-19 Thread liyang
Minor, remove useless imports.


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

Branch: refs/heads/KYLIN-2624
Commit: 9a0598e31592b204f92e9f30843103b5552a9883
Parents: 5e6ed11
Author: nichunen 
Authored: Fri May 5 10:22:40 2017 +0800
Committer: hongbin ma 
Committed: Fri May 5 10:42:44 2017 +0800

--
 .../main/java/org/apache/kylin/rest/controller/JobController.java  | 2 --
 1 file changed, 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/9a0598e3/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java 
b/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
index 7b1de37..2e6f6cd 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
@@ -28,9 +28,7 @@ import java.util.Map;
 import org.apache.kylin.job.JobInstance;
 import org.apache.kylin.job.constant.JobStatusEnum;
 import org.apache.kylin.job.constant.JobTimeFilterEnum;
-import org.apache.kylin.job.exception.JobException;
 import org.apache.kylin.rest.exception.InternalErrorException;
-import org.apache.kylin.rest.exception.NotFoundException;
 import org.apache.kylin.rest.request.JobListRequest;
 import org.apache.kylin.rest.service.JobService;
 import org.slf4j.Logger;



[09/50] [abbrv] kylin git commit: KYLIN-2428 more cleaning

2017-05-19 Thread liyang
KYLIN-2428 more cleaning


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

Branch: refs/heads/KYLIN-2624
Commit: 8b277d5e492d8d54e6fd1f38eef7cf8d174f2b00
Parents: 0396923
Author: Hongbin Ma 
Authored: Fri May 5 21:12:46 2017 +0800
Committer: liyang-gmt8 
Committed: Sun May 7 21:22:28 2017 +0800

--
 assembly/pom.xml|  4 --
 core-common/pom.xml |  5 --
 core-cube/pom.xml   |  4 +-
 core-dictionary/pom.xml |  5 --
 engine-mr/pom.xml   |  5 --
 engine-spark/pom.xml|  8 +--
 kylin-it/pom.xml|  5 --
 pom.xml | 60 ---
 server/pom.xml  | 15 -
 source-hive/pom.xml |  5 --
 source-kafka/pom.xml|  7 +--
 .../kylin/source/kafka/DateTimeParser.java  | 62 
 storage-hbase/pom.xml   |  4 +-
 tool-assembly/pom.xml   |  5 ++
 14 files changed, 51 insertions(+), 143 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/assembly/pom.xml
--
diff --git a/assembly/pom.xml b/assembly/pom.xml
index 121ccee..dae7152 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -207,10 +207,6 @@
 
${shadeBase}.org.apache.commons.codec
 
 
-
org.apache.commons.collections
-
${shadeBase}.org.apache.commons.collections
-
-
 org.apache.commons.lang3
 
${shadeBase}.org.apache.commons.lang3
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/core-common/pom.xml
--
diff --git a/core-common/pom.xml b/core-common/pom.xml
index 55f025f..8852743 100644
--- a/core-common/pom.xml
+++ b/core-common/pom.xml
@@ -64,11 +64,6 @@
 
 
 
-org.apache.hadoop
-hadoop-common
-provided
-
-
 junit
 junit
 test

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/core-cube/pom.xml
--
diff --git a/core-cube/pom.xml b/core-cube/pom.xml
index cd382ef..930b6cd 100644
--- a/core-cube/pom.xml
+++ b/core-cube/pom.xml
@@ -44,12 +44,12 @@
 kylin-core-dictionary
 
 
+
+
 
 commons-collections
 commons-collections
 
-
-
 
 commons-lang
 commons-lang

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/core-dictionary/pom.xml
--
diff --git a/core-dictionary/pom.xml b/core-dictionary/pom.xml
index 09dde1e..c292982 100644
--- a/core-dictionary/pom.xml
+++ b/core-dictionary/pom.xml
@@ -41,11 +41,6 @@
 
 
 
-org.apache.hadoop
-hadoop-common
-provided
-
-
 org.apache.kylin
 kylin-core-common
 test-jar

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/engine-mr/pom.xml
--
diff --git a/engine-mr/pom.xml b/engine-mr/pom.xml
index 8aab79d..f2cedf6 100644
--- a/engine-mr/pom.xml
+++ b/engine-mr/pom.xml
@@ -55,11 +55,6 @@
 
 
 org.apache.hadoop
-hadoop-common
-provided
-
-
-org.apache.hadoop
 hadoop-hdfs
 provided
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/engine-spark/pom.xml
--
diff --git a/engine-spark/pom.xml b/engine-spark/pom.xml
index c5d23ce..93b6f9b 100644
--- a/engine-spark/pom.xml
+++ b/engine-spark/pom.xml
@@ -69,12 +69,6 @@
 
 
 
-org.apache.hadoop
-hadoop-common
-provided
-
-
-
 org.apache.hbase
 hbase-common
 provided
@@ -120,4 +114,4 @@
 
 
 
-
\ No newline at end of fil

[22/50] [abbrv] kylin git commit: KYLIN-2605 Execute sample.sh script failure in hdfs federation environment

2017-05-19 Thread liyang
KYLIN-2605 Execute sample.sh script failure in hdfs federation environment

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/d449c40d
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/d449c40d
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/d449c40d

Branch: refs/heads/KYLIN-2624
Commit: d449c40d58b8af10ebc638be4aadb80e09787a9d
Parents: b3310dc
Author: 10069681 
Authored: Thu May 11 11:19:01 2017 +0800
Committer: Billy Liu 
Committed: Thu May 11 13:34:24 2017 +0800

--
 build/bin/sample.sh   | 25 --
 examples/sample_cube/create_sample_tables.sql | 10 -
 2 files changed, 23 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/d449c40d/build/bin/sample.sh
--
diff --git a/build/bin/sample.sh b/build/bin/sample.sh
index 617b671..10900bb 100644
--- a/build/bin/sample.sh
+++ b/build/bin/sample.sh
@@ -31,9 +31,20 @@ else
 hadoop_conf_param="--config ${kylin_hadoop_conf_dir}"
 fi
 
-echo "Loading sample data into HDFS tmp path: /tmp/kylin/sample_cube/data"
-hadoop ${hadoop_conf_param} fs -mkdir -p /tmp/kylin/sample_cube/data
-hadoop ${hadoop_conf_param} fs -put * /tmp/kylin/sample_cube/data/
+if [ -z "$1" ]; then
+hdfs_tmp_dir=/tmp/kylin
+else
+hdfs_tmp_dir=$1
+fi
+
+echo "Loading sample data into HDFS tmp path: ${hdfs_tmp_dir}/sample_cube/data"
+hadoop ${hadoop_conf_param} fs -mkdir -p ${hdfs_tmp_dir}/sample_cube/data
+if [ $? != 0 ]
+then
+quit "Failed to create ${hdfs_tmp_dir}/sample_cube/data. Please make sure 
the user has right to access ${hdfs_tmp_dir}/sample_cube/data or usage: 
sample.sh hdfs_tmp_dir"
+fi
+
+hadoop ${hadoop_conf_param} fs -put * ${hdfs_tmp_dir}/sample_cube/data/
 
 hive_client_mode=`bash ${KYLIN_HOME}/bin/get-properties.sh 
kylin.source.hive.client`
 sample_database=`bash ${KYLIN_HOME}/bin/get-properties.sh 
kylin.source.hive.database-for-flat-table`
@@ -51,14 +62,14 @@ then
 else
 
beeline_params=${beeline_params/${hive2_url}/${hive2_url}${sample_database}}
 fi
-beeline ${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; }
 else
 hive -e "CREATE DATABASE IF NOT EXISTS "$sample_database
-hive --database $sample_database -f 
${KYLIN_HOME}/sample_cube/create_sample_tables.sql  || { exit 1; }
+hive --database $sample_database --hivevar hdfs_tmp_dir=${hdfs_tmp_dir} -f 
${KYLIN_HOME}/sample_cube/create_sample_tables.sql  || { exit 1; }
 fi
 
 echo "Sample hive tables are created successfully; Going to create sample 
cube..."
-hadoop ${hadoop_conf_param} fs -rm -r /tmp/kylin/sample_cube
+hadoop ${hadoop_conf_param} fs -rm -r ${hdfs_tmp_dir}/sample_cube
 
 # set engine type and storage type to cube desc
 default_engine_type=`bash ${KYLIN_HOME}/bin/get-properties.sh 
kylin.engine.default`
@@ -85,4 +96,4 @@ ls -1 DEFAULT.KYLIN_*.json|sed "s/\(DEFAULT\)\(.*\)\.json/mv 
& $sample_database\
 cd ${KYLIN_HOME}
 hbase org.apache.hadoop.util.RunJar ${job_jar} 
org.apache.kylin.common.persistence.ResourceTool upload 
${KYLIN_HOME}/sample_cube/metadata  || { exit 1; }
 echo "Sample cube is created successfully in project 'learn_kylin'."
-echo "Restart Kylin server or reload the metadata from web UI to see the 
change."
+echo "Restart Kylin server or reload the metadata from web UI to see the 
change."
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/d449c40d/examples/sample_cube/create_sample_tables.sql
--
diff --git a/examples/sample_cube/create_sample_tables.sql 
b/examples/sample_cube/create_sample_tables.sql
index 24f26f8..c33a99e 100644
--- a/examples/sample_cube/create_sample_tables.sql
+++ b/examples/sample_cube/create_sample_tables.sql
@@ -216,8 +216,8 @@ COMMENT 'Sales order table, fact table'
 ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
 STORED AS TEXTFILE;
 
-LOAD DATA INPATH '/tmp/kylin/sample_cube/data/DEFAULT.KYLIN_SALES.csv' 
OVERWRITE INTO TABLE KYLIN_SALES;
-LOAD DATA INPATH '/tmp/kylin/sample_cube/data/DEFAULT.KYLIN_ACCOUNT.csv' 
OVERWRITE INTO TABLE KYLIN_ACCOUNT;
-LOAD DATA INPATH '/tmp/kylin/sample_cube/data/DEFAULT.KYLIN_COUNTRY.csv' 
OVERWRITE INTO TABLE KYLIN_COUNTRY;
-LOAD DATA INPATH '/tmp/kylin/sample_cube/data/DEFAULT.KYLIN_CAL_DT.csv' 
OVERWRITE INTO TABLE KYLIN_CAL_DT;
-LOAD DATA INPATH 
'/tmp/kylin/sample_cube/data/DEFAULT.KYLIN_CATEGORY_GROUPINGS.csv' OVERWRITE 
INTO TABLE KYLIN_CATEGORY_GROUPINGS;
+LOAD DATA INPATH '${hdfs_tmp_dir}/sample_cube/data/DEFAULT.KYLIN_

[28/50] [abbrv] kylin git commit: KYLIN-2610 Optimize BuiltInFunctionTransformer performance

2017-05-19 Thread liyang
KYLIN-2610 Optimize BuiltInFunctionTransformer performance

KYLIN-2610 fix three percent sign bug


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

Branch: refs/heads/KYLIN-2624
Commit: b3ba338eaf889d42e02870007c1876eb32c884ee
Parents: 3976420
Author: Hongbin Ma 
Authored: Thu May 11 20:26:14 2017 +0800
Committer: Hongbin Ma 
Committed: Fri May 12 13:00:43 2017 +0800

--
 .../kylin/dict/BuiltInFunctionTransformer.java  |   9 +-
 .../metadata/filter/function/BuiltInMethod.java |  39 +++--
 .../metadata/filter/function/LikeMatchers.java  | 141 +++
 3 files changed, 177 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/b3ba338e/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 6ef2f96..5196593 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
@@ -57,13 +57,13 @@ public class BuiltInFunctionTransformer implements 
ITupleFilterTransformer {
 //normal case
 translated = translateCompareTupleFilter((CompareTupleFilter) 
tupleFilter);
 if (translated != null) {
-logger.debug("Translated {{}} to IN clause: {{}}", 
tupleFilter, translated);
+logger.debug("Translated {{}} to IN clause. ", tupleFilter);
 }
 } else if (tupleFilter instanceof BuiltInFunctionTupleFilter) {
-//like case
+//like,tolower case
 translated = 
translateFunctionTupleFilter((BuiltInFunctionTupleFilter) tupleFilter);
 if (translated != null) {
-logger.debug("Translated {{}} to IN clause: {{}}", 
tupleFilter, translated);
+logger.debug("Translated {{}} to IN clause. ", tupleFilter);
 }
 } else if (tupleFilter instanceof LogicalTupleFilter) {
 @SuppressWarnings("unchecked")
@@ -99,6 +99,7 @@ public class BuiltInFunctionTransformer implements 
ITupleFilterTransformer {
 translated.addChild(new ConstantTupleFilter(dictVal));
 }
 }
+logger.debug("getting a in clause with {} children", 
translated.getChildren().size());
 } catch (Exception e) {
 logger.debug(e.getMessage());
 return null;
@@ -175,4 +176,4 @@ public class BuiltInFunctionTransformer implements 
ITupleFilterTransformer {
 }
 return translated;
 }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/kylin/blob/b3ba338e/core-metadata/src/main/java/org/apache/kylin/metadata/filter/function/BuiltInMethod.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/function/BuiltInMethod.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/function/BuiltInMethod.java
index 2f28fae..31ee297 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/function/BuiltInMethod.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/function/BuiltInMethod.java
@@ -18,8 +18,11 @@
 
 package org.apache.kylin.metadata.filter.function;
 
+import static 
org.apache.kylin.metadata.filter.function.LikeMatchers.LikeMatcher;
+
 import java.lang.reflect.Method;
-import java.util.regex.Pattern;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.commons.lang3.reflect.MethodUtils;
 
@@ -28,9 +31,15 @@ import com.google.common.collect.ImmutableMap;
 public enum BuiltInMethod {
 UPPER(BuiltInMethod.class, "upper", String.class), 
LOWER(BuiltInMethod.class, "lower", String.class), 
SUBSTRING(BuiltInMethod.class, "substring", String.class, int.class, 
int.class), CHAR_LENGTH(BuiltInMethod.class, "charLength", String.class), 
LIKE(BuiltInMethod.class, "like", String.class, String.class), 
INITCAP(BuiltInMethod.class, "initcap", String.class);
 public final Method method;
-
 public static final ImmutableMap MAP;
 
+private static ThreadLocal> likePatterns = new 
ThreadLocal>() {
+@Override
+public Map initialValue() {
+return new HashMap<>();
+}
+};
+
 static {
 final ImmutableMap.Builder builder = 
ImmutableMap.builder();
 for (BuiltInMethod 

[34/50] [abbrv] kylin git commit: KYLIN-2557-The-kylin-will-start-failed

2017-05-19 Thread liyang
KYLIN-2557-The-kylin-will-start-failed

Signed-off-by: Yang Li 


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

Branch: refs/heads/KYLIN-2624
Commit: e6a8a00b89dbdf922405f8586b43d1c9b99cff90
Parents: c8524ef
Author: 10069681 
Authored: Tue May 9 10:47:50 2017 +0800
Committer: Yang Li 
Committed: Sun May 14 19:45:48 2017 +0800

--
 .../kylin/storage/hbase/HBaseConnection.java| 21 +++-
 1 file changed, 20 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/e6a8a00b/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 f0b9428..ef82641 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
@@ -33,6 +33,7 @@ import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.util.Threads;
 import org.apache.hadoop.hdfs.DFSConfigKeys;
 import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.lock.DistributedLock;
 import org.apache.kylin.common.persistence.StorageException;
 import org.apache.kylin.common.util.HadoopUtil;
 import org.slf4j.Logger;
@@ -66,6 +67,8 @@ public class HBaseConnection {
 
 private static ExecutorService coprocessorPool = null;
 
+private static DistributedLock lock = null;
+
 static {
 Runtime.getRuntime().addShutdownHook(new Thread() {
 @Override
@@ -267,6 +270,7 @@ public class HBaseConnection {
 public static void createHTableIfNeeded(Connection conn, String table, 
String... families) throws IOException {
 Admin hbase = conn.getAdmin();
 TableName tableName = TableName.valueOf(table);
+boolean hasLock = false;
 try {
 if (tableExists(conn, table)) {
 logger.debug("HTable '" + table + "' already exists");
@@ -290,6 +294,14 @@ public class HBaseConnection {
 return;
 }
 
+lock = 
KylinConfig.getInstanceFromEnv().getDistributedLockFactory().lockForCurrentProcess();
+hasLock = lock.lock(getLockPath(table), Long.MAX_VALUE);
+
+if (tableExists(conn, table)) {
+logger.debug("HTable '" + table + "' already exists");
+return;
+}
+
 logger.debug("Creating HTable '" + table + "'");
 
 HTableDescriptor desc = new 
HTableDescriptor(TableName.valueOf(table));
@@ -307,6 +319,9 @@ public class HBaseConnection {
 logger.debug("HTable '" + table + "' created");
 } finally {
 hbase.close();
+if (hasLock && lock != null) {
+lock.unlock(getLockPath(table));
+}
 }
 }
 
@@ -350,4 +365,8 @@ public class HBaseConnection {
 }
 }
 
-}
+private static String getLockPath(String pathName) {
+return "/create_htable/" + pathName + "/lock";
+}
+
+}
\ No newline at end of file



[32/50] [abbrv] kylin git commit: KYLIN-2581 fix possible deadlock in Broadcaster

2017-05-19 Thread liyang
KYLIN-2581 fix possible deadlock in Broadcaster


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

Branch: refs/heads/KYLIN-2624
Commit: fd671d165aa59c734b2f273ffae6d1017dc61153
Parents: 320e56a
Author: Yang Li 
Authored: Sun May 14 13:34:58 2017 +0800
Committer: Yang Li 
Committed: Sun May 14 13:35:29 2017 +0800

--
 .../kylin/metadata/cachesync/Broadcaster.java   | 66 ++--
 1 file changed, 32 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/fd671d16/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 5b45d9e..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
@@ -142,7 +142,7 @@ public class Broadcaster {
 }
 
 public void registerListener(Listener listener, String... entities) {
-synchronized (CACHE) {
+synchronized (listenerMap) {
 // ignore re-registration
 List all = listenerMap.get(SYNC_ALL);
 if (all != null && all.contains(listener)) {
@@ -181,43 +181,41 @@ public class Broadcaster {
 }
 
 public void notifyListener(String entity, Event event, String cacheKey) 
throws IOException {
-synchronized (CACHE) {
-List list = listenerMap.get(entity);
-if (list == null)
-return;
+List list = listenerMap.get(entity);
+if (list == null)
+return;
 
-logger.debug("Broadcasting metadata change: entity=" + entity + ", 
event=" + event + ", cacheKey=" + cacheKey + ", listeners=" + list);
+logger.debug("Broadcasting metadata change: entity=" + entity + ", 
event=" + event + ", cacheKey=" + cacheKey + ", listeners=" + list);
 
-// prevents concurrent modification exception
-list = Lists.newArrayList(list);
-switch (entity) {
-case SYNC_ALL:
-for (Listener l : list) {
-l.onClearAll(this);
-}
-clearCache(); // clear broadcaster too in the end
-break;
-case SYNC_PRJ_SCHEMA:
-ProjectManager.getInstance(config).clearL2Cache();
-for (Listener l : list) {
-l.onProjectSchemaChange(this, cacheKey);
-}
-break;
-case SYNC_PRJ_DATA:
-ProjectManager.getInstance(config).clearL2Cache(); // cube's 
first becoming ready leads to schema change too
-for (Listener l : list) {
-l.onProjectDataChange(this, cacheKey);
-}
-break;
-default:
-for (Listener l : list) {
-l.onEntityChange(this, entity, event, cacheKey);
-}
-break;
+// prevents concurrent modification exception
+list = Lists.newArrayList(list);
+switch (entity) {
+case SYNC_ALL:
+for (Listener l : list) {
+l.onClearAll(this);
 }
-
-logger.debug("Done broadcasting metadata change: entity=" + entity 
+ ", event=" + event + ", cacheKey=" + cacheKey);
+clearCache(); // clear broadcaster too in the end
+break;
+case SYNC_PRJ_SCHEMA:
+ProjectManager.getInstance(config).clearL2Cache();
+for (Listener l : list) {
+l.onProjectSchemaChange(this, cacheKey);
+}
+break;
+case SYNC_PRJ_DATA:
+ProjectManager.getInstance(config).clearL2Cache(); // cube's first 
becoming ready leads to schema change too
+for (Listener l : list) {
+l.onProjectDataChange(this, cacheKey);
+}
+break;
+default:
+for (Listener l : list) {
+l.onEntityChange(this, entity, event, cacheKey);
+}
+break;
 }
+
+logger.debug("Done broadcasting metadata change: entity=" + entity + 
", event=" + event + ", cacheKey=" + cacheKey);
 }
 
 /**



[31/50] [abbrv] kylin git commit: KYLIN-2607 Add http timeout for RestClient

2017-05-19 Thread liyang
KYLIN-2607 Add http timeout for RestClient


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

Branch: refs/heads/KYLIN-2624
Commit: 320e56a532cf6d4968430c8111d239961a07c7f8
Parents: b3ba338
Author: kangkaisen 
Authored: Thu May 11 14:57:29 2017 +0800
Committer: kangkaisen 
Committed: Fri May 12 16:47:39 2017 +0800

--
 .../apache/kylin/common/restclient/RestClient.java  | 16 +---
 1 file changed, 13 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/320e56a5/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 825c67f..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
@@ -40,6 +40,9 @@ import org.apache.http.client.methods.HttpRequestBase;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.BasicCredentialsProvider;
 import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.params.BasicHttpParams;
+import org.apache.http.params.HttpConnectionParams;
+import org.apache.http.params.HttpParams;
 import org.apache.http.util.EntityUtils;
 import org.apache.kylin.common.util.JsonUtil;
 
@@ -59,6 +62,9 @@ public class RestClient {
 
 protected static Pattern fullRestPattern = 
Pattern.compile("(?:([^:]+)[:]([^@]+)[@])?([^:]+)(?:[:](\\d+))?");
 
+private static final int HTTP_CONNECTION_TIMEOUT_MS = 3;
+private static final int HTTP_SOCKET_TIMEOUT_MS = 12;
+
 public static boolean matchFullRestPattern(String uri) {
 Matcher m = fullRestPattern.matcher(uri);
 return m.matches();
@@ -93,7 +99,11 @@ public class RestClient {
 this.password = password;
 this.baseUrl = "http://"; + host + ":" + port + "/kylin/api";
 
-client = new DefaultHttpClient();
+final HttpParams httpParams = new BasicHttpParams();
+HttpConnectionParams.setSoTimeout(httpParams, HTTP_SOCKET_TIMEOUT_MS);
+HttpConnectionParams.setConnectionTimeout(httpParams, 
HTTP_CONNECTION_TIMEOUT_MS);
+
+client = new DefaultHttpClient(httpParams);
 
 if (userName != null && password != null) {
 CredentialsProvider provider = new BasicCredentialsProvider();
@@ -263,14 +273,14 @@ public class RestClient {
 InputStreamReader reader = null;
 BufferedReader rd = null;
 StringBuffer result = new StringBuffer();
-try{
+try {
 reader = new InputStreamReader(response.getEntity().getContent());
 rd = new BufferedReader(reader);
 String line = null;
 while ((line = rd.readLine()) != null) {
 result.append(line);
 }
-}finally {
+} finally {
 IOUtils.closeQuietly(reader);
 IOUtils.closeQuietly(rd);
 }



[14/50] [abbrv] kylin git commit: KYLIN-2582 'Server Config' should be refreshed automatically in web page 'System', after we update it successfully.

2017-05-19 Thread liyang
KYLIN-2582 'Server Config' should be refreshed automatically in web page 
'System', after we update it successfully.

Signed-off-by: Yang Li 


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

Branch: refs/heads/KYLIN-2624
Commit: 42f7e7dad7f34f9d0849c72f1a20c3e2d4475b99
Parents: 41c7a4d
Author: 10069681 
Authored: Wed May 3 11:11:02 2017 +0800
Committer: Yang Li 
Committed: Tue May 9 07:06:03 2017 +0800

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


http://git-wip-us.apache.org/repos/asf/kylin/blob/42f7e7da/webapp/app/js/controllers/admin.js
--
diff --git a/webapp/app/js/controllers/admin.js 
b/webapp/app/js/controllers/admin.js
index 783ab17..10e2c38 100644
--- a/webapp/app/js/controllers/admin.js
+++ b/webapp/app/js/controllers/admin.js
@@ -71,6 +71,7 @@ KylinApp.controller('AdminCtrl', function ($scope, 
AdminService, CacheService, T
   if (isConfirm) {
 CacheService.reloadConfig({}, function () {
   SweetAlert.swal('Success!', 'config reload successfully', 'success');
+  $scope.getConfig();
 }, function (e) {
   if (e.data && e.data.exception) {
 var message = e.data.exception;
@@ -214,6 +215,7 @@ KylinApp.controller('AdminCtrl', function ($scope, 
AdminService, CacheService, T
 $modal.open({
   templateUrl: 'updateConfig.html',
   controller: updateConfigCtrl,
+  scope: $scope,
   resolve: {}
 });
   }
@@ -256,11 +258,10 @@ KylinApp.controller('AdminCtrl', function ($scope, 
AdminService, CacheService, T
   $modalInstance.dismiss('cancel');
 };
 $scope.update = function () {
-
-
   AdminService.updateConfig({}, {key: $scope.state.key, value: 
$scope.state.value}, function (result) {
 SweetAlert.swal('Success!', 'Config updated successfully!', 'success');
 $modalInstance.dismiss();
+$scope.getConfig();
   }, function (e) {
 if (e.data && e.data.exception) {
   var message = e.data.exception;



[25/50] [abbrv] kylin git commit: KYLIN-2595 Result query should use alias name to replace dimension column name when used Keyword As

2017-05-19 Thread liyang
KYLIN-2595 Result query should use alias name to replace dimension column name 
when used Keyword As

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/39764200
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/39764200
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/39764200

Branch: refs/heads/KYLIN-2624
Commit: 397642009ed6056d7ee5ee66f51f7f67026933d4
Parents: c6428ef
Author: wuyingjun 
Authored: Thu May 11 23:17:09 2017 +0800
Committer: Billy Liu 
Committed: Thu May 11 23:45:45 2017 +0800

--
 webapp/app/js/controllers/query.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/39764200/webapp/app/js/controllers/query.js
--
diff --git a/webapp/app/js/controllers/query.js 
b/webapp/app/js/controllers/query.js
index 6be915b..945ddef 100644
--- a/webapp/app/js/controllers/query.js
+++ b/webapp/app/js/controllers/query.js
@@ -185,14 +185,14 @@ KylinApp
 angular.forEach(result.results, function (row, index) {
 var oneRow = {};
 angular.forEach(result.columnMetas, function (meta, metaIndex) 
{
-oneRow[meta.name] = row[metaIndex];
+oneRow[meta.label] = row[metaIndex];
 });
 data.push(oneRow);
 });
 
 var columnDefs = [];
 angular.forEach(result.columnMetas, function (meta, metaIndex) {
-columnDefs.push({field: meta.name, width: 120});
+columnDefs.push({field: meta.label, width: 120});
 });
 
 if (oneQuery.result.results) {



[08/50] [abbrv] kylin git commit: KYLIN-2578 fix ITDistributedSchedulerBaseTest

2017-05-19 Thread liyang
KYLIN-2578 fix ITDistributedSchedulerBaseTest


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

Branch: refs/heads/KYLIN-2624
Commit: 41c7a4d9417eb75dad5f0da4e5a07a14e8f7e056
Parents: 263a1e8
Author: Yang Li 
Authored: Sun May 7 20:36:24 2017 +0800
Committer: Yang Li 
Committed: Sun May 7 20:36:24 2017 +0800

--
 .../kylin/job/impl/threadpool/DistributedScheduler.java |  4 ++--
 .../apache/kylin/job/BaseTestDistributedScheduler.java  | 12 ++--
 2 files changed, 8 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/41c7a4d9/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 0714d90..6d12b8b 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
@@ -304,11 +304,11 @@ public class DistributedScheduler implements 
Scheduler, Conn
 }
 }
 
-public String getLockPath(String pathName) {
+public static String getLockPath(String pathName) {
 return ZOOKEEPER_LOCK_PATH + "/" + pathName;
 }
 
-private String getWatchPath() {
+private static String getWatchPath() {
 return ZOOKEEPER_LOCK_PATH;
 }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/41c7a4d9/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 3576d18..48ef923 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
@@ -163,8 +163,8 @@ public class BaseTestDistributedScheduler extends 
HBaseMetadataTestCase {
 }
 }
 
-boolean lock(ZookeeperDistributedLock jobLock, String cubeName) {
-return jobLock.lock(getLockPath(cubeName));
+boolean lock(ZookeeperDistributedLock jobLock, String segName) {
+return jobLock.lock(DistributedScheduler.getLockPath(segName));
 }
 
 private static void initZk() {
@@ -177,8 +177,8 @@ public class BaseTestDistributedScheduler extends 
HBaseMetadataTestCase {
 zkClient.start();
 }
 
-String getServerName(String cubeName) {
-String lockPath = getLockPath(cubeName);
+String getServerName(String segName) {
+String lockPath = getFullLockPath(segName);
 String serverName = null;
 if (zkClient.getState().equals(CuratorFrameworkState.STARTED)) {
 try {
@@ -193,7 +193,7 @@ public class BaseTestDistributedScheduler extends 
HBaseMetadataTestCase {
 return serverName;
 }
 
-private String getLockPath(String pathName) {
-return DistributedScheduler.ZOOKEEPER_LOCK_PATH + "/" + 
kylinConfig1.getMetadataUrlPrefix() + "/" + pathName;
+private String getFullLockPath(String segName) {
+return "/kylin/" + kylinConfig1.getMetadataUrlPrefix() + 
DistributedScheduler.getLockPath(segName);
 }
 }



[02/50] [abbrv] kylin git commit: KYLIN-2583 introduce DBCP as DataSource with cache logic

2017-05-19 Thread liyang
KYLIN-2583 introduce DBCP as DataSource with cache logic


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

Branch: refs/heads/KYLIN-2624
Commit: 5e6ed11efd9a6a607fd1c8abf01f2c0d829c5e62
Parents: ca106b8
Author: Yifan Zhang 
Authored: Fri May 5 09:46:28 2017 +0800
Committer: hongbin ma 
Committed: Fri May 5 10:31:54 2017 +0800

--
 .../org/apache/kylin/query/KylinTestBase.java   |   4 +-
 .../java/org/apache/kylin/query/QueryCli.java   |   9 +-
 .../org/apache/kylin/query/QueryDataSource.java | 162 +++
 .../apache/kylin/query/QueryDataSourceTest.java |  86 ++
 .../apache/kylin/rest/service/CacheService.java |  39 +
 5 files changed, 256 insertions(+), 44 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/5e6ed11e/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
--
diff --git a/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java 
b/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
index 2174094..fad7a94 100644
--- a/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
+++ b/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
@@ -49,7 +49,6 @@ import org.apache.kylin.common.util.Pair;
 import org.apache.kylin.metadata.project.ProjectInstance;
 import org.apache.kylin.query.relnode.OLAPContext;
 import org.apache.kylin.query.routing.rules.RemoveBlackoutRealizationsRule;
-import org.apache.kylin.query.schema.OLAPSchemaFactory;
 import org.dbunit.DatabaseUnitException;
 import org.dbunit.database.DatabaseConfig;
 import org.dbunit.database.DatabaseConnection;
@@ -659,8 +658,7 @@ public class KylinTestBase {
 config = KylinConfig.getInstanceFromEnv();
 
 //setup cube conn
-File olapTmp = 
OLAPSchemaFactory.createTempOLAPJson(ProjectInstance.DEFAULT_PROJECT_NAME, 
config);
-cubeConnection = DriverManager.getConnection("jdbc:calcite:model=" + 
olapTmp.getAbsolutePath());
+cubeConnection = 
QueryDataSource.create(ProjectInstance.DEFAULT_PROJECT_NAME, 
config).getConnection();
 
 //setup h2
 h2Connection = DriverManager.getConnection("jdbc:h2:mem:db" + 
(h2InstanceCount++) + ";CACHE_SIZE=32072", "sa", "");

http://git-wip-us.apache.org/repos/asf/kylin/blob/5e6ed11e/query/src/main/java/org/apache/kylin/query/QueryCli.java
--
diff --git a/query/src/main/java/org/apache/kylin/query/QueryCli.java 
b/query/src/main/java/org/apache/kylin/query/QueryCli.java
index d3f1521..5ced8e3 100644
--- a/query/src/main/java/org/apache/kylin/query/QueryCli.java
+++ b/query/src/main/java/org/apache/kylin/query/QueryCli.java
@@ -18,14 +18,11 @@
 
 package org.apache.kylin.query;
 
-import java.io.File;
 import java.sql.Connection;
-import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.Statement;
 
-import org.apache.calcite.jdbc.Driver;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.GnuParser;
@@ -34,7 +31,6 @@ import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.DBUtils;
-import org.apache.kylin.query.schema.OLAPSchemaFactory;
 
 public class QueryCli {
 
@@ -55,14 +51,11 @@ public class QueryCli {
 KylinConfig config = 
KylinConfig.createInstanceFromUri(commandLine.getOptionValue(OPTION_METADATA.getOpt()));
 String sql = commandLine.getOptionValue(OPTION_SQL.getOpt());
 
-Class.forName(Driver.class.getName());
-File olapTmp = OLAPSchemaFactory.createTempOLAPJson(null, config);
-
 Connection conn = null;
 Statement stmt = null;
 ResultSet rs = null;
 try {
-conn = DriverManager.getConnection("jdbc:calcite:model=" + 
olapTmp.getAbsolutePath());
+conn = QueryDataSource.create(null, config).getConnection();
 
 stmt = conn.createStatement();
 rs = stmt.executeQuery(sql);

http://git-wip-us.apache.org/repos/asf/kylin/blob/5e6ed11e/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
--
diff --git a/query/src/main/java/org/apache/kylin/query/QueryDataSource.java 
b/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
new file mode 100644
index 000..32feea6
--- /dev/null
+++ b/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
@@ -0,0 +1,162 @

[05/50] [abbrv] kylin git commit: KYLIN-2578 Refactor DistributedLock

2017-05-19 Thread liyang
KYLIN-2578 Refactor DistributedLock


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

Branch: refs/heads/KYLIN-2624
Commit: 7df407da0cff32feaba4570698fdddcd86c4c48f
Parents: 783bb4e
Author: Yang Li 
Authored: Sat May 6 22:33:10 2017 +0800
Committer: Yang Li 
Committed: Sun May 7 14:51:53 2017 +0800

--
 .../apache/kylin/common/KylinConfigBase.java|   8 +-
 .../kylin/common/lock/DistributedLock.java  |  61 +++-
 .../common/lock/DistributedLockFactory.java |  43 +++
 .../kylin/dict/GlobalDictionaryBuilder.java |  67 +
 .../impl/threadpool/DistributedScheduler.java   |  45 +--
 .../kylin/job/lock/DistributedJobLock.java  |  24 --
 .../kylin/job/BaseTestDistributedScheduler.java |  26 +-
 .../job/ITDistributedSchedulerBaseTest.java |   6 +-
 .../job/ITDistributedSchedulerTakeOverTest.java |   2 +-
 .../hbase/util/ZookeeperDistributedJobLock.java | 257 -
 .../hbase/util/ZookeeperDistributedLock.java| 280 +++
 .../storage/hbase/util/ZookeeperJobLock.java| 144 +++---
 .../apache/kylin/storage/hdfs/LockManager.java  |   8 +-
 .../util/ITZookeeperDistributedLockTest.java| 254 +
 14 files changed, 721 insertions(+), 504 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/7df407da/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 eafdbbb..956518f 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
@@ -29,7 +29,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.commons.lang.StringUtils;
-import org.apache.kylin.common.lock.DistributedLock;
+import org.apache.kylin.common.lock.DistributedLockFactory;
 import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.common.util.CliCommandExecutor;
 import org.slf4j.Logger;
@@ -238,9 +238,9 @@ abstract public class KylinConfigBase implements 
Serializable {
 return getPropertiesByPrefix("kylin.metadata.custom-measure-types.");
 }
 
-public DistributedLock getDistributedLock() {
-String clsName = getOptional("kylin.metadata.distributed-lock-impl", 
"org.apache.kylin.storage.hbase.util.ZookeeperDistributedJobLock");
-return (DistributedLock) ClassUtil.newInstance(clsName);
+public DistributedLockFactory getDistributedLockFactory() {
+String clsName = getOptional("kylin.metadata.distributed-lock-impl", 
"org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock$Factory");
+return (DistributedLockFactory) ClassUtil.newInstance(clsName);
 }
 
 // 


http://git-wip-us.apache.org/repos/asf/kylin/blob/7df407da/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java 
b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
index 9f04f05..e8844fd 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
@@ -21,17 +21,66 @@ package org.apache.kylin.common.lock;
 import java.io.Closeable;
 import java.util.concurrent.Executor;
 
-public interface DistributedLock extends Closeable {
+/**
+ * A distributed lock. Every instance is owned by a client, on whose behalf 
locks are acquired and/or released.
+ */
+public interface DistributedLock {
 
-boolean lockPath(String lockPath, String lockClient);
+/**
+ * Returns the client that owns this instance.
+ */
+String getClient();
+
+/**
+ * Acquire the lock at given path, non-blocking.
+ * 
+ * @return If the lock is acquired or not.
+ */
+boolean lock(String lockPath);
+
+/**
+ * Acquire the lock at given path, block until given timeout.
+ * 
+ * @return If the lock is acquired or not.
+ */
+boolean lock(String lockPath, long timeout);
 
-boolean isPathLocked(String lockPath);
+/**
+ * Returns if lock is available at given path.
+ */
+boolean isLocked(String lockPath);
+
+/**
+ * Returns if lock is available at given path.
+ */
+  

[15/50] [abbrv] kylin git commit: KYLIN-2573 'kylin.sh stop' can't kill kylin's process by sometimes.

2017-05-19 Thread liyang
KYLIN-2573 'kylin.sh stop' can't kill kylin's process by sometimes.

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/901b10ce
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/901b10ce
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/901b10ce

Branch: refs/heads/KYLIN-2624
Commit: 901b10cee549a9c1e8d2df711a8c8d83789d7717
Parents: 42f7e7d
Author: mango77881 <12169...@qq.com>
Authored: Fri May 5 15:25:56 2017 +0800
Committer: Billy Liu 
Committed: Tue May 9 13:47:32 2017 +0800

--
 build/bin/kylin.sh | 41 ++---
 1 file changed, 34 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/901b10ce/build/bin/kylin.sh
--
diff --git a/build/bin/kylin.sh b/build/bin/kylin.sh
index cd87436..d9e932e 100644
--- a/build/bin/kylin.sh
+++ b/build/bin/kylin.sh
@@ -131,20 +131,47 @@ then
 if [ -f "${KYLIN_HOME}/pid" ]
 then
 PID=`cat $KYLIN_HOME/pid`
+WAIT_TIME=2
+LOOP_COUNTER=10
 if ps -p $PID > /dev/null
 then
-   echo "Stopping Kylin: $PID"
-   kill $PID
-   rm ${KYLIN_HOME}/pid
-   exit 0
+echo "Stopping Kylin: $PID"
+kill $PID
+
+for ((i=0; i<$LOOP_COUNTER; i++))
+do
+# wait to process stopped 
+sleep $WAIT_TIME
+if ps -p $PID > /dev/null ; then
+echo "Stopping in progress. Will check after $WAIT_TIME 
secs again..."
+continue;
+else
+break;
+fi
+done
+
+# if process is still around, use kill -9
+if ps -p $PID > /dev/null
+then
+echo "Initial kill failed, getting serious now..."
+kill -9 $PID
+sleep 1 #give kill -9  sometime to "kill"
+if ps -p $PID > /dev/null
+then
+   quit "Warning, even kill -9 failed, giving up! Sorry..."
+fi
+fi
+
+# process is killed , remove pid file  
+rm -rf ${KYLIN_HOME}/pid
+echo "Kylin with pid ${PID} has been stopped."
+exit 0
 else
-   quit "Kylin is not running"
+   quit "Kylin with pid ${PID} is not running"
 fi
-
 else
 quit "Kylin is not running"
 fi
-
 elif [ "$1" = "version" ]
 then
 retrieveDependency



kylin git commit: KYLIN-2624 fix IT with refactored DistributedLock

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/master f36372bc6 -> be32f7588


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/master
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;
 }
 
 // 




[17/37] kylin git commit: KYLIN-2575 Experimental feature: Computed Column

2017-05-19 Thread liyang
http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
--
diff --git a/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json 
b/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
index 221ffb6..cbf7a76 100644
--- a/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
+++ b/examples/test_case_data/localmeta/cube_desc/ci_left_join_cube.json
@@ -1,455 +1,627 @@
 {
-  "uuid" : "629ab7a8-3929-4dff-b59d-2100aadccd1a",
-  "name" : "ci_left_join_cube",
-  "model_name" : "ci_left_join_model",
-  "description" : null,
-  "dimensions" : [ {
-"name" : "CAL_DT",
-"table" : "TEST_CAL_DT",
-"column" : "{FK}",
-"derived" : [ "WEEK_BEG_DT" ]
-  }, {
-"name" : "ORDER_ID",
-"table" : "TEST_KYLIN_FACT",
-"column" : "ORDER_ID"
-  }, {
-"name" : "TEST_DATE_ENC",
-"table" : "TEST_ORDER",
-"column" : "TEST_DATE_ENC"
-  }, {
-"name" : "TEST_TIME_ENC",
-"table" : "TEST_ORDER",
-"column" : "TEST_TIME_ENC"
-  }, {
-"name" : "CATEGORY",
-"table" : "TEST_CATEGORY_GROUPINGS",
-"column" : "{FK}",
-"derived" : [ "USER_DEFINED_FIELD1", "USER_DEFINED_FIELD3", "UPD_DATE", 
"UPD_USER" ]
-  }, {
-"name" : "CATEGORY_HIERARCHY",
-"table" : "TEST_CATEGORY_GROUPINGS",
-"column" : "META_CATEG_NAME",
-"derived" : null
-  }, {
-"name" : "CATEGORY_HIERARCHY",
-"table" : "TEST_CATEGORY_GROUPINGS",
-"column" : "CATEG_LVL2_NAME",
-"derived" : null
-  }, {
-"name" : "CATEGORY_HIERARCHY",
-"table" : "TEST_CATEGORY_GROUPINGS",
-"column" : "CATEG_LVL3_NAME",
-"derived" : null
-  }, {
-"name" : "LSTG_FORMAT_NAME",
-"table" : "TEST_KYLIN_FACT",
-"column" : "LSTG_FORMAT_NAME",
-"derived" : null
-  }, {
-"name" : "SITE_ID",
-"table" : "TEST_SITES",
-"column" : "{FK}",
-"derived" : [ "SITE_NAME", "CRE_USER" ]
-  }, {
-"name" : "SELLER_TYPE_CD",
-"table" : "TEST_SELLER_TYPE_DIM",
-"column" : "{FK}",
-"derived" : [ "SELLER_TYPE_DESC" ]
-  }, {
-"name" : "SELLER_ID",
-"table" : "TEST_KYLIN_FACT",
-"column" : "SELLER_ID"
-  }, {
-"name" : "SELLER_BUYER_LEVEL",
-"table" : "SELLER_ACCOUNT",
-"column" : "ACCOUNT_BUYER_LEVEL"
-  }, {
-"name" : "SELLER_SELLER_LEVEL",
-"table" : "SELLER_ACCOUNT",
-"column" : "ACCOUNT_SELLER_LEVEL"
-  }, {
-"name" : "SELLER_COUNTRY",
-"table" : "SELLER_ACCOUNT",
-"column" : "ACCOUNT_COUNTRY"
-  }, {
-"name" : "SELLER_COUNTRY_NAME",
-"table" : "SELLER_COUNTRY",
-"column" : "NAME"
-  }, {
-"name" : "BUYER_ID",
-"table" : "TEST_ORDER",
-"column" : "BUYER_ID"
-  }, {
-"name" : "BUYER_BUYER_LEVEL",
-"table" : "BUYER_ACCOUNT",
-"column" : "ACCOUNT_BUYER_LEVEL"
-  }, {
-"name" : "BUYER_SELLER_LEVEL",
-"table" : "BUYER_ACCOUNT",
-"column" : "ACCOUNT_SELLER_LEVEL"
-  }, {
-"name" : "BUYER_COUNTRY",
-"table" : "BUYER_ACCOUNT",
-"column" : "ACCOUNT_COUNTRY"
-  }, {
-"name" : "BUYER_COUNTRY_NAME",
-"table" : "BUYER_COUNTRY",
-"column" : "NAME"
-  } ],
-  "measures" : [ {
-"name" : "TRANS_CNT",
-"function" : {
-  "expression" : "COUNT",
-  "parameter" : {
-"type" : "constant",
-"value" : "1"
-  },
-  "returntype" : "bigint"
+  "uuid": "629ab7a8-3929-4dff-b59d-2100aadccd1a",
+  "name": "ci_left_join_cube",
+  "model_name": "ci_left_join_model",
+  "description": null,
+  "dimensions": [
+{
+  "name": "CAL_DT",
+  "table": "TEST_CAL_DT",
+  "column": "{FK}",
+  "derived": [
+"WEEK_BEG_DT"
+  ]
+},
+{
+  "name": "ORDER_ID",
+  "table": "TEST_KYLIN_FACT",
+  "column": "ORDER_ID"
+},
+{
+  "name": "TEST_DATE_ENC",
+  "table": "TEST_ORDER",
+  "column": "TEST_DATE_ENC"
+},
+{
+  "name": "TEST_TIME_ENC",
+  "table": "TEST_ORDER",
+  "column": "TEST_TIME_ENC"
+},
+{
+  "name": "CATEGORY",
+  "table": "TEST_CATEGORY_GROUPINGS",
+  "column": "{FK}",
+  "derived": [
+"USER_DEFINED_FIELD1",
+"USER_DEFINED_FIELD3",
+"UPD_DATE",
+"UPD_USER"
+  ]
+},
+{
+  "name": "CATEGORY_HIERARCHY",
+  "table": "TEST_CATEGORY_GROUPINGS",
+  "column": "META_CATEG_NAME",
+  "derived": null
+},
+{
+  "name": "CATEGORY_HIERARCHY",
+  "table": "TEST_CATEGORY_GROUPINGS",
+  "column": "CATEG_LVL2_NAME",
+  "derived": null
+},
+{
+  "name": "CATEGORY_HIERARCHY",
+  "table": "TEST_CATEGORY_GROUPINGS",
+  "column": "CATEG_LVL3_NAME",
+  "derived": null
+},
+{
+  "name": "LSTG_FORMAT_NAME",
+  "table": "TEST_KYLIN_FACT",
+  "column": "LSTG_FORMAT_NAME",
+  "derived": null
+},
+{
+  "name": "SITE_ID",
+  "table": "TEST_SITES",
+  "col

[12/37] kylin git commit: KYLIN-2583 introduce DBCP as DataSource with cache logic

2017-05-19 Thread liyang
KYLIN-2583 introduce DBCP as DataSource with cache logic


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

Branch: refs/heads/master
Commit: 5e6ed11efd9a6a607fd1c8abf01f2c0d829c5e62
Parents: ca106b8
Author: Yifan Zhang 
Authored: Fri May 5 09:46:28 2017 +0800
Committer: hongbin ma 
Committed: Fri May 5 10:31:54 2017 +0800

--
 .../org/apache/kylin/query/KylinTestBase.java   |   4 +-
 .../java/org/apache/kylin/query/QueryCli.java   |   9 +-
 .../org/apache/kylin/query/QueryDataSource.java | 162 +++
 .../apache/kylin/query/QueryDataSourceTest.java |  86 ++
 .../apache/kylin/rest/service/CacheService.java |  39 +
 5 files changed, 256 insertions(+), 44 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/5e6ed11e/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
--
diff --git a/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java 
b/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
index 2174094..fad7a94 100644
--- a/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
+++ b/kylin-it/src/test/java/org/apache/kylin/query/KylinTestBase.java
@@ -49,7 +49,6 @@ import org.apache.kylin.common.util.Pair;
 import org.apache.kylin.metadata.project.ProjectInstance;
 import org.apache.kylin.query.relnode.OLAPContext;
 import org.apache.kylin.query.routing.rules.RemoveBlackoutRealizationsRule;
-import org.apache.kylin.query.schema.OLAPSchemaFactory;
 import org.dbunit.DatabaseUnitException;
 import org.dbunit.database.DatabaseConfig;
 import org.dbunit.database.DatabaseConnection;
@@ -659,8 +658,7 @@ public class KylinTestBase {
 config = KylinConfig.getInstanceFromEnv();
 
 //setup cube conn
-File olapTmp = 
OLAPSchemaFactory.createTempOLAPJson(ProjectInstance.DEFAULT_PROJECT_NAME, 
config);
-cubeConnection = DriverManager.getConnection("jdbc:calcite:model=" + 
olapTmp.getAbsolutePath());
+cubeConnection = 
QueryDataSource.create(ProjectInstance.DEFAULT_PROJECT_NAME, 
config).getConnection();
 
 //setup h2
 h2Connection = DriverManager.getConnection("jdbc:h2:mem:db" + 
(h2InstanceCount++) + ";CACHE_SIZE=32072", "sa", "");

http://git-wip-us.apache.org/repos/asf/kylin/blob/5e6ed11e/query/src/main/java/org/apache/kylin/query/QueryCli.java
--
diff --git a/query/src/main/java/org/apache/kylin/query/QueryCli.java 
b/query/src/main/java/org/apache/kylin/query/QueryCli.java
index d3f1521..5ced8e3 100644
--- a/query/src/main/java/org/apache/kylin/query/QueryCli.java
+++ b/query/src/main/java/org/apache/kylin/query/QueryCli.java
@@ -18,14 +18,11 @@
 
 package org.apache.kylin.query;
 
-import java.io.File;
 import java.sql.Connection;
-import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.Statement;
 
-import org.apache.calcite.jdbc.Driver;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.GnuParser;
@@ -34,7 +31,6 @@ import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.DBUtils;
-import org.apache.kylin.query.schema.OLAPSchemaFactory;
 
 public class QueryCli {
 
@@ -55,14 +51,11 @@ public class QueryCli {
 KylinConfig config = 
KylinConfig.createInstanceFromUri(commandLine.getOptionValue(OPTION_METADATA.getOpt()));
 String sql = commandLine.getOptionValue(OPTION_SQL.getOpt());
 
-Class.forName(Driver.class.getName());
-File olapTmp = OLAPSchemaFactory.createTempOLAPJson(null, config);
-
 Connection conn = null;
 Statement stmt = null;
 ResultSet rs = null;
 try {
-conn = DriverManager.getConnection("jdbc:calcite:model=" + 
olapTmp.getAbsolutePath());
+conn = QueryDataSource.create(null, config).getConnection();
 
 stmt = conn.createStatement();
 rs = stmt.executeQuery(sql);

http://git-wip-us.apache.org/repos/asf/kylin/blob/5e6ed11e/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
--
diff --git a/query/src/main/java/org/apache/kylin/query/QueryDataSource.java 
b/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
new file mode 100644
index 000..32feea6
--- /dev/null
+++ b/query/src/main/java/org/apache/kylin/query/QueryDataSource.java
@@ -0,0 +1,162 @@
+/

[18/37] kylin git commit: KYLIN-2575 Experimental feature: Computed Column

2017-05-19 Thread liyang
KYLIN-2575 Experimental feature: Computed Column


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

Branch: refs/heads/master
Commit: 9a812d5fc917ddcdb736cd1c91fdfe9c933e603a
Parents: d6fdda2
Author: Hongbin Ma 
Authored: Mon May 8 15:49:57 2017 +0800
Committer: liyang-gmt8 
Committed: Mon May 8 16:01:48 2017 +0800

--
 .../kylin/cube/CubeCapabilityChecker.java   |   11 +-
 .../java/org/apache/kylin/cube/JoinChecker.java |   60 -
 .../org/apache/kylin/cube/cuboid/CuboidCLI.java |7 +
 .../org/apache/kylin/cube/model/CubeDesc.java   |   12 +-
 .../kylin/cube/cuboid/CuboidSchedulerTest.java  |   23 +
 .../model/validation/rule/FunctionRuleTest.java |   11 +-
 .../org/apache/kylin/job/JoinedFlatTable.java   |4 +-
 .../apache/kylin/metadata/MetadataManager.java  |   31 +-
 .../apache/kylin/metadata/model/ColumnDesc.java |   41 +-
 .../metadata/model/ComputedColumnDesc.java  |   95 ++
 .../kylin/metadata/model/DataModelDesc.java |   81 +-
 .../apache/kylin/metadata/model/JoinsTree.java  |2 +-
 .../kylin/metadata/model/PartitionDesc.java |   10 +-
 .../apache/kylin/metadata/model/TableDesc.java  |   35 +-
 .../apache/kylin/metadata/model/TableRef.java   |   14 +-
 .../apache/kylin/metadata/model/TblColRef.java  |   36 +-
 .../kylin/metadata/project/ProjectL2Cache.java  |   13 +-
 .../kylin/metadata/model/DataModelDescTest.java |   15 +-
 .../localmeta/cube_desc/ci_inner_join_cube.json | 1016 ++---
 .../localmeta/cube_desc/ci_left_join_cube.json  | 1036 ++
 .../model_desc/ci_inner_join_model.json |   37 +-
 .../model_desc/ci_left_join_model.json  |   37 +-
 .../test_case_data/sandbox/kylin.properties |2 +-
 .../kylin/query/CompareQueryBySuffix.java   |   37 +
 .../kylin/query/ICompareQueryTranslator.java|   29 +
 .../apache/kylin/query/ITKylinQueryTest.java|5 +
 .../org/apache/kylin/query/KylinTestBase.java   |   25 +-
 .../query/sql_computedcolumn/query01.sql|   14 +
 .../sql_computedcolumn/query01.sql.compare  |   14 +
 .../query/sql_computedcolumn/query02.sql|   21 +
 .../sql_computedcolumn/query02.sql.compare  |   21 +
 .../query/sql_verifyCount/query01.sql.expected  |2 +-
 .../query/sql_verifyCount/query03.sql.expected  |2 +-
 .../query/sql_verifyCount/query04.sql.expected  |2 +-
 .../apache/kylin/query/schema/OLAPSchema.java   |2 +-
 .../kylin/rest/controller/ModelController.java  |2 +-
 .../kylin/rest/service/CacheServiceTest.java|1 -
 .../kylin/rest/service/ModelServiceTest.java|   97 ++
 .../apache/kylin/source/hive/SchemaChecker.java |2 +-
 39 files changed, 1894 insertions(+), 1011 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java 
b/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
index c45144b..20cb0a9 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeCapabilityChecker.java
@@ -52,12 +52,7 @@ public class CubeCapabilityChecker {
 CapabilityResult result = new CapabilityResult();
 result.capable = false;
 
-// match joins
-boolean isJoinMatch = JoinChecker.isJoinMatch(digest.joinDescs, cube);
-if (!isJoinMatch) {
-logger.info("Exclude cube " + cube.getName() + " because unmatched 
joins");
-return result;
-}
+// match joins is ensured at model select
 
 // dimensions & measures
 Collection dimensionColumns = getDimensionColumns(digest);
@@ -106,12 +101,12 @@ public class CubeCapabilityChecker {
 }
 
 if (!unmatchedDimensions.isEmpty()) {
-logger.info("Exclude cube " + cube.getName() + " because unmatched 
dimensions");
+logger.info("Exclude cube " + cube.getName() + " because unmatched 
dimensions: " + unmatchedDimensions);
 return result;
 }
 
 if (!unmatchedAggregations.isEmpty()) {
-logger.info("Exclude cube " + cube.getName() + " because unmatched 
aggregations");
+logger.info("Exclude cube " + cube.getName() + " because unmatched 
aggregations: " + unmatchedAggregations);
 return result;
 }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/9a812d5f/core-cube/src/main/java/org/apache/kylin/cube/JoinChecker.java
-

[28/37] kylin git commit: KYLIN-2596 Enable generating multiple streaming messages with one input message in streaming parser

2017-05-19 Thread liyang
KYLIN-2596 Enable generating multiple streaming messages with one input message 
in streaming parser

* Minor, remove useless imports.

* Enable generating multiple streaming messages with one input message in 
streaming parser

* Make MR input can generate multiple rows of date.

* For multiple rows, outputKV() should be called for each row.

* Try&catch for each row's data processing.


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

Branch: refs/heads/master
Commit: edc4d4cc558473476b18d48f232635e44640c27a
Parents: 7c0038d
Author: nichunen 
Authored: Fri May 12 14:55:14 2017 +0800
Committer: hongbin ma 
Committed: Fri May 12 14:55:14 2017 +0800

--
 .../java/org/apache/kylin/job/DeployUtil.java   |   2 +-
 .../kylin/common/util/StreamingMessage.java |  62 --
 .../kylin/common/util/StreamingMessageRow.java  |  62 ++
 .../org/apache/kylin/engine/mr/IMRInput.java|   4 +-
 .../mr/steps/FactDistinctColumnsMapper.java | 113 ++-
 .../engine/mr/steps/HiveToBaseCuboidMapper.java |  15 ++-
 .../engine/mr/steps/InMemCuboidMapper.java  |  15 ++-
 .../apache/kylin/source/hive/HiveMRInput.java   |   6 +-
 .../cardinality/ColumnCardinalityMapper.java|  25 ++--
 .../apache/kylin/source/kafka/KafkaMRInput.java |  16 ++-
 .../kylin/source/kafka/StreamingParser.java |   8 +-
 .../source/kafka/TimedJsonStreamParser.java |  11 +-
 .../source/kafka/TimedJsonStreamParserTest.java |  22 ++--
 13 files changed, 194 insertions(+), 167 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/edc4d4cc/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java
--
diff --git a/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java 
b/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java
index fdcd52c..077c056 100644
--- a/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java
+++ b/assembly/src/test/java/org/apache/kylin/job/DeployUtil.java
@@ -166,7 +166,7 @@ public class DeployUtil {
 TimedJsonStreamParser timedJsonStreamParser = new 
TimedJsonStreamParser(tableColumns, null);
 StringBuilder sb = new StringBuilder();
 for (String json : data) {
-List rowColumns = 
timedJsonStreamParser.parse(ByteBuffer.wrap(json.getBytes())).getData();
+List rowColumns = 
timedJsonStreamParser.parse(ByteBuffer.wrap(json.getBytes())).get(0).getData();
 sb.append(StringUtils.join(rowColumns, ","));
 sb.append(System.getProperty("line.separator"));
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/edc4d4cc/core-common/src/main/java/org/apache/kylin/common/util/StreamingMessage.java
--
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/StreamingMessage.java 
b/core-common/src/main/java/org/apache/kylin/common/util/StreamingMessage.java
deleted file mode 100644
index 981c8a8..000
--- 
a/core-common/src/main/java/org/apache/kylin/common/util/StreamingMessage.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.common.util;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- */
-public class StreamingMessage {
-
-private final List data;
-
-private long offset;
-
-private long timestamp;
-
-private Map params;
-
-public StreamingMessage(List data, long offset, long timestamp, 
Map params) {
-this.data = data;
-this.offset = offset;
-this.timestamp = timestamp;
-this.params = params;
-}
-
-public final List getData() {
-return data;
-}
-
-public final long getOffset() {
-return offset;
-}
-
-public void setOffset(long offset) {
-this.offset = offset;
-}
-
-publ

[19/37] kylin git commit: KYLIN-2574 RawQueryLastHacker should group by all possible dimensions

2017-05-19 Thread liyang
KYLIN-2574 RawQueryLastHacker should group by all possible dimensions


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

Branch: refs/heads/master
Commit: d6fdda2c24ac89ec72ff9663a36993f42a70960b
Parents: 1ba9af7
Author: Hongbin Ma 
Authored: Fri Apr 28 15:03:43 2017 +0800
Committer: liyang-gmt8 
Committed: Mon May 8 16:01:48 2017 +0800

--
 .../main/java/org/apache/kylin/cube/RawQueryLastHacker.java| 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/d6fdda2c/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java
--
diff --git 
a/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java 
b/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java
index 682e48c..d2e3a83 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/RawQueryLastHacker.java
@@ -46,8 +46,8 @@ public class RawQueryLastHacker {
 boolean isSelectAll = sqlDigest.allColumns.isEmpty() || 
sqlDigest.allColumns.equals(sqlDigest.filterColumns);
 for (TblColRef col : cubeDesc.listAllColumns()) {
 if (cubeDesc.listDimensionColumnsIncludingDerived().contains(col) 
|| isSelectAll) {
-if (tupleInfo.hasColumn(col))
-sqlDigest.allColumns.add(col);
+//if (tupleInfo.hasColumn(col))
+sqlDigest.allColumns.add(col);
 }
 }
 
@@ -77,4 +77,4 @@ public class RawQueryLastHacker {
 }
 }
 }
-}
\ No newline at end of file
+}



[04/37] kylin git commit: KYLIN-2577, fix hiveCmdBuilderTest UT

2017-05-19 Thread liyang
KYLIN-2577, fix hiveCmdBuilderTest UT


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

Branch: refs/heads/master
Commit: 299b584151f75f475c61a88bd15167dbbd744386
Parents: ea5fcff
Author: Cheng Wang 
Authored: Sat Apr 29 20:34:08 2017 +0800
Committer: Cheng Wang 
Committed: Sat Apr 29 20:34:08 2017 +0800

--
 .../org/apache/kylin/common/util/HiveCmdBuilder.java |  6 ++
 .../org/apache/kylin/common/util/HiveCmdBuilderTest.java | 11 +--
 2 files changed, 11 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/299b5841/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 9279973..255867a 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
@@ -61,9 +61,8 @@ public class HiveCmdBuilder {
 for (String statement : statements) {
 buf.append(statement).append("\n");
 }
-buf.append("\"").append(" \\").append("\n");
+buf.append("\"");
 buf.append(parseProps());
-buf.append("\n");
 break;
 case BEELINE:
 BufferedWriter bw = null;
@@ -110,11 +109,10 @@ public class HiveCmdBuilder {
 private String parseProps() {
 StringBuilder s = new StringBuilder();
 for (Map.Entry prop : hiveConfProps.entrySet()) {
-s.append("--hiveconf ");
+s.append(" --hiveconf ");
 s.append(prop.getKey());
 s.append("=");
 s.append(prop.getValue());
-s.append(" \\").append("\n");
 }
 return s.toString();
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/299b5841/core-common/src/test/java/org/apache/kylin/common/util/HiveCmdBuilderTest.java
--
diff --git 
a/core-common/src/test/java/org/apache/kylin/common/util/HiveCmdBuilderTest.java
 
b/core-common/src/test/java/org/apache/kylin/common/util/HiveCmdBuilderTest.java
index 3bc34b4..d847575 100644
--- 
a/core-common/src/test/java/org/apache/kylin/common/util/HiveCmdBuilderTest.java
+++ 
b/core-common/src/test/java/org/apache/kylin/common/util/HiveCmdBuilderTest.java
@@ -24,6 +24,8 @@ import static org.junit.Assert.assertTrue;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
 import org.junit.After;
@@ -48,12 +50,17 @@ public class HiveCmdBuilderTest {
 public void testHiveCLI() {
 System.setProperty("kylin.source.hive.client", "cli");
 
+Map hiveProps = new HashMap<>();
+hiveProps.put("hive.execution.engine", "mr");
+Map hivePropsOverwrite = new HashMap<>();
+hivePropsOverwrite.put("hive.execution.engine", "tez");
 HiveCmdBuilder hiveCmdBuilder = new HiveCmdBuilder();
 hiveCmdBuilder.addStatement("USE default;");
 hiveCmdBuilder.addStatement("DROP TABLE test;");
 hiveCmdBuilder.addStatement("SHOW\n TABLES;");
-
-assertEquals("hive -e \"USE default;\nDROP TABLE test;\nSHOW\n 
TABLES;\n\"", hiveCmdBuilder.build());
+hiveCmdBuilder.setHiveConfProps(hiveProps);
+hiveCmdBuilder.overwriteHiveProps(hivePropsOverwrite);
+assertEquals("hive -e \"USE default;\nDROP TABLE test;\nSHOW\n 
TABLES;\n\" --hiveconf hive.execution.engine=tez", hiveCmdBuilder.build());
 }
 
 @Test



[14/37] kylin git commit: KYLIN-2588 fix ParameterDesc.equals()

2017-05-19 Thread liyang
KYLIN-2588 fix ParameterDesc.equals()


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

Branch: refs/heads/master
Commit: 0396923651cda8428b3022febcf013ff6d0457cf
Parents: 9a0598e
Author: lidongsjtu 
Authored: Fri May 5 18:49:48 2017 +0800
Committer: hongbin ma 
Committed: Fri May 5 20:56:52 2017 +0800

--
 .../java/org/apache/kylin/metadata/model/ParameterDesc.java| 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/03969236/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
index 0cf31b1..930dc02 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
@@ -96,7 +96,7 @@ public class ParameterDesc implements Serializable {
 void setValue(String value) {
 this.value = value;
 }
-
+
 public TblColRef getColRef() {
 return colRef;
 }
@@ -112,7 +112,7 @@ public class ParameterDesc implements Serializable {
 while (p != null) {
 if (p.isColumnType())
 all.add(p.getColRef());
-
+
 p = p.nextParameter;
 }
 allColRefsIncludingNexts = all;
@@ -145,7 +145,7 @@ public class ParameterDesc implements Serializable {
 if (p.isColumnType()) {
 if (q.isColumnType() == false)
 return false;
-if (this.getColRef().equals(that.getColRef()) == false)
+if (q.getColRef().equals(p.getColRef()) == false)
 return false;
 } else {
 if (q.isColumnType() == true)



[11/37] kylin git commit: Support dropping jobs.

2017-05-19 Thread liyang
Support dropping jobs.


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

Branch: refs/heads/master
Commit: ca106b824f50613385c98f8276bcbfaa04cb6cde
Parents: 8a4b6b9
Author: nichunen 
Authored: Wed May 3 15:30:34 2017 +0800
Committer: hongbin ma 
Committed: Thu May 4 22:32:55 2017 +0800

--
 .../kylin/rest/controller/JobController.java| 23 +++
 .../apache/kylin/rest/service/JobService.java   |  6 
 webapp/app/js/controllers/job.js| 30 
 webapp/app/js/model/jobListModel.js |  1 +
 webapp/app/js/services/jobs.js  |  3 +-
 webapp/app/partials/jobs/jobList.html   |  4 +++
 6 files changed, 66 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ca106b82/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java 
b/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
index 6dc7887..7b1de37 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
@@ -28,7 +28,9 @@ import java.util.Map;
 import org.apache.kylin.job.JobInstance;
 import org.apache.kylin.job.constant.JobStatusEnum;
 import org.apache.kylin.job.constant.JobTimeFilterEnum;
+import org.apache.kylin.job.exception.JobException;
 import org.apache.kylin.rest.exception.InternalErrorException;
+import org.apache.kylin.rest.exception.NotFoundException;
 import org.apache.kylin.rest.request.JobListRequest;
 import org.apache.kylin.rest.service.JobService;
 import org.slf4j.Logger;
@@ -194,6 +196,27 @@ public class JobController extends BasicController {
 }
 }
 
+/**
+ * Drop a cube job
+ *
+ * @return
+ * @throws IOException
+ */
+@RequestMapping(value = "/{jobId}/drop", method = { RequestMethod.DELETE })
+@ResponseBody
+public JobInstance dropJob(@PathVariable String jobId) {
+JobInstance jobInstance = null;
+try {
+jobInstance = jobService.getJobInstance(jobId);
+jobService.dropJob(jobInstance);
+} catch (Exception e) {
+logger.error(e.getLocalizedMessage(), e);
+throw new InternalErrorException(e);
+}
+
+return jobInstance;
+}
+
 public void setJobService(JobService jobService) {
 this.jobService = jobService;
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/ca106b82/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
index 4ba426e..56a148d 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
@@ -321,6 +321,12 @@ public class JobService extends BasicService implements 
InitializingBean {
 return job;
 }
 
+@PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#job, 
'ADMINISTRATION') or hasPermission(#job, 'OPERATION') or hasPermission(#job, 
'MANAGEMENT')")
+public void dropJob(JobInstance job) throws IOException, JobException {
+cancelJob(job);
+getExecutableManager().deleteJob(job.getId());
+}
+
 /**
  * currently only support substring match
  * @return

http://git-wip-us.apache.org/repos/asf/kylin/blob/ca106b82/webapp/app/js/controllers/job.js
--
diff --git a/webapp/app/js/controllers/job.js b/webapp/app/js/controllers/job.js
index e6aba7e..abb3bed 100644
--- a/webapp/app/js/controllers/job.js
+++ b/webapp/app/js/controllers/job.js
@@ -215,6 +215,36 @@ KylinApp
 });
   }
 
+ $scope.drop = function (job) {
+SweetAlert.swal({
+  title: '',
+  text: 'Are you sure to drop the job?',
+  type: '',
+  showCancelButton: true,
+  confirmButtonColor: '#DD6B55',
+  confirmButtonText: "Yes",
+  closeOnConfirm: true
+}, function(isConfirm) {
+  if(isConfirm) {
+loadingRequest.show();
+JobService.drop({jobId: job.uuid}, {}, function (job) {
+  loadingRequest.hide();
+  SweetAlert.swal('Success!', 'Jo

[37/37] kylin git commit: Merge commit '87fedf75e5bbf61a33cf1b31720ad9ac55de6287'

2017-05-19 Thread liyang
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/master
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; }
  else
 -hive -e "CREATE DATABASE IF NOT EXISTS

[27/37] kylin git commit: KYLIN-2598 increase default kylin.query.translated-in-clause-max-size

2017-05-19 Thread liyang
KYLIN-2598 increase default kylin.query.translated-in-clause-max-size


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

Branch: refs/heads/master
Commit: 7c0038db4aab12c6fbd8f249b104a473e1d5a61c
Parents: b08d278
Author: Hongbin Ma 
Authored: Fri May 12 13:11:01 2017 +0800
Committer: Dong Li 
Committed: Fri May 12 13:12:08 2017 +0800

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


http://git-wip-us.apache.org/repos/asf/kylin/blob/7c0038db/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 10209d7..b620924 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
@@ -845,7 +845,7 @@ abstract public class KylinConfigBase implements 
Serializable {
 }
 
 public int getTranslatedInClauseMaxSize() {
-return 
Integer.parseInt(getOptional("kylin.query.translated-in-clause-max-size", 
"1024"));
+return 
Integer.parseInt(getOptional("kylin.query.translated-in-clause-max-size", 
String.valueOf(1024 * 1024)));
 }
 
 public int getLargeQueryThreshold() {



[10/37] kylin git commit: minor, fix typo

2017-05-19 Thread liyang
minor, fix typo


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

Branch: refs/heads/master
Commit: 8a4b6b9611a25c8e0f8bf2ec99244a250d9dd91b
Parents: 32b8f2c
Author: Hongbin Ma 
Authored: Thu May 4 16:58:09 2017 +0800
Committer: Dong Li 
Committed: Thu May 4 17:00:22 2017 +0800

--
 build/script/build.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/8a4b6b96/build/script/build.sh
--
diff --git a/build/script/build.sh b/build/script/build.sh
index 390a2c5..458c612 100755
--- a/build/script/build.sh
+++ b/build/script/build.sh
@@ -22,7 +22,7 @@ echo "package back-end"
 dir=$(dirname ${0})
 cd ${dir}/../..
 
-mvn clean intall -DskipTests $@ || { exit 1; }
+mvn clean install -DskipTests $@ || { exit 1; }
 
 #package webapp
 echo 'package front-end'



[15/37] kylin git commit: KYLIN-2428 more cleaning

2017-05-19 Thread liyang
KYLIN-2428 more cleaning


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

Branch: refs/heads/master
Commit: 8b277d5e492d8d54e6fd1f38eef7cf8d174f2b00
Parents: 0396923
Author: Hongbin Ma 
Authored: Fri May 5 21:12:46 2017 +0800
Committer: liyang-gmt8 
Committed: Sun May 7 21:22:28 2017 +0800

--
 assembly/pom.xml|  4 --
 core-common/pom.xml |  5 --
 core-cube/pom.xml   |  4 +-
 core-dictionary/pom.xml |  5 --
 engine-mr/pom.xml   |  5 --
 engine-spark/pom.xml|  8 +--
 kylin-it/pom.xml|  5 --
 pom.xml | 60 ---
 server/pom.xml  | 15 -
 source-hive/pom.xml |  5 --
 source-kafka/pom.xml|  7 +--
 .../kylin/source/kafka/DateTimeParser.java  | 62 
 storage-hbase/pom.xml   |  4 +-
 tool-assembly/pom.xml   |  5 ++
 14 files changed, 51 insertions(+), 143 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/assembly/pom.xml
--
diff --git a/assembly/pom.xml b/assembly/pom.xml
index 121ccee..dae7152 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -207,10 +207,6 @@
 
${shadeBase}.org.apache.commons.codec
 
 
-
org.apache.commons.collections
-
${shadeBase}.org.apache.commons.collections
-
-
 org.apache.commons.lang3
 
${shadeBase}.org.apache.commons.lang3
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/core-common/pom.xml
--
diff --git a/core-common/pom.xml b/core-common/pom.xml
index 55f025f..8852743 100644
--- a/core-common/pom.xml
+++ b/core-common/pom.xml
@@ -64,11 +64,6 @@
 
 
 
-org.apache.hadoop
-hadoop-common
-provided
-
-
 junit
 junit
 test

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/core-cube/pom.xml
--
diff --git a/core-cube/pom.xml b/core-cube/pom.xml
index cd382ef..930b6cd 100644
--- a/core-cube/pom.xml
+++ b/core-cube/pom.xml
@@ -44,12 +44,12 @@
 kylin-core-dictionary
 
 
+
+
 
 commons-collections
 commons-collections
 
-
-
 
 commons-lang
 commons-lang

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/core-dictionary/pom.xml
--
diff --git a/core-dictionary/pom.xml b/core-dictionary/pom.xml
index 09dde1e..c292982 100644
--- a/core-dictionary/pom.xml
+++ b/core-dictionary/pom.xml
@@ -41,11 +41,6 @@
 
 
 
-org.apache.hadoop
-hadoop-common
-provided
-
-
 org.apache.kylin
 kylin-core-common
 test-jar

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/engine-mr/pom.xml
--
diff --git a/engine-mr/pom.xml b/engine-mr/pom.xml
index 8aab79d..f2cedf6 100644
--- a/engine-mr/pom.xml
+++ b/engine-mr/pom.xml
@@ -55,11 +55,6 @@
 
 
 org.apache.hadoop
-hadoop-common
-provided
-
-
-org.apache.hadoop
 hadoop-hdfs
 provided
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/8b277d5e/engine-spark/pom.xml
--
diff --git a/engine-spark/pom.xml b/engine-spark/pom.xml
index c5d23ce..93b6f9b 100644
--- a/engine-spark/pom.xml
+++ b/engine-spark/pom.xml
@@ -69,12 +69,6 @@
 
 
 
-org.apache.hadoop
-hadoop-common
-provided
-
-
-
 org.apache.hbase
 hbase-common
 provided
@@ -120,4 +114,4 @@
 
 
 
-
\ No newline at end of file
+

[29/37] kylin git commit: KYLIN-2623 Move output(Hbase) code to outputside

2017-05-19 Thread liyang
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/master
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 class AbstractHadoopJob extends Configured 
implement

[34/37] kylin git commit: KYLIN-2526 refine find-hive-dependency.sh to support Ubuntu

2017-05-19 Thread liyang
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/master
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()



[01/37] kylin git commit: after affects of KYLIN-2335

2017-05-19 Thread liyang
Repository: kylin
Updated Branches:
  refs/heads/master 87fedf75e -> f36372bc6


after affects of KYLIN-2335


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

Branch: refs/heads/master
Commit: d609809939d8221ec37b8056abad359a58154f4b
Parents: 02a3d14
Author: Hongbin Ma 
Authored: Fri Apr 28 13:26:57 2017 +0800
Committer: Hongbin Ma 
Committed: Fri Apr 28 13:26:57 2017 +0800

--
 .../rest/service/AclTableMigrationTool.java |   6 +-
 .../apache/kylin/rest/service/UserService.java  | 162 +--
 .../kylin/rest/service/ServiceTestBase.java |   6 +-
 3 files changed, 87 insertions(+), 87 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/d6098099/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
 
b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
index da017b3..d147686 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
@@ -146,7 +146,7 @@ public class AclTableMigrationTool {
 Result result = rs.next();
 while (result != null) {
 User user = hbaseRowToUser(result);
-UserInfo userInfo = convert(user);
+UserService.UserInfo userInfo = convert(user);
 
store.deleteResource(UserService.getId(userInfo.getUsername()));
 
store.putResource(UserService.getId(userInfo.getUsername()), userInfo, 0, 
UserService.UserInfoSerializer.getInstance());
 result = rs.next();
@@ -252,10 +252,10 @@ public class AclTableMigrationTool {
 return newInfo;
 }
 
-private UserInfo convert(User user) {
+private UserService.UserInfo convert(User user) {
 if (user == null)
 return null;
-UserInfo newInfo = new UserInfo();
+UserService.UserInfo newInfo = new UserService.UserInfo();
 newInfo.setUsername(user.getUserName());
 newInfo.setPassword(user.getPassword());
 List authorities = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/kylin/blob/d6098099/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java
index 6a552fd..dd75ace 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java
@@ -180,107 +180,107 @@ public class UserService implements UserDetailsManager {
 }
 }
 
-}
+public static class UserInfo extends RootPersistentEntity {
+@JsonProperty()
+private String username;
+@JsonProperty()
+private String password;
+@JsonProperty()
+private List authorities = new ArrayList<>();
+
+public UserInfo(String username, String password, List 
authorities) {
+this.username = username;
+this.password = password;
+this.authorities = authorities;
+}
 
-class UserInfo extends RootPersistentEntity {
-@JsonProperty()
-private String username;
-@JsonProperty()
-private String password;
-@JsonProperty()
-private List authorities = new ArrayList<>();
-
-public UserInfo(String username, String password, List 
authorities) {
-this.username = username;
-this.password = password;
-this.authorities = authorities;
-}
+public UserInfo(UserDetails user) {
+this.username = user.getUsername();
+this.password = user.getPassword();
+for (GrantedAuthority a : user.getAuthorities()) {
+this.authorities.add(a.getAuthority());
+}
+}
 
-public UserInfo(UserDetails user) {
-this.username = user.getUsername();
-this.password = user.getPassword();
-for (GrantedAuthority a : user.getAuthorities()) {
-this.authorities.add(a.getAuthority());
+public UserInfo() {
 }
-}
 
-public UserInfo() {
-}
+public String getUsername() {
+return username;
+}
 
-public String getUsernam

[09/37] kylin git commit: minor, cleanup unused logs

2017-05-19 Thread liyang
minor, cleanup unused logs


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

Branch: refs/heads/master
Commit: 32b8f2c7fe7e4179dec9ce1ccafac917dbe2eb27
Parents: 0e0c970
Author: lidongsjtu 
Authored: Wed May 3 19:45:10 2017 +0800
Committer: hongbin ma 
Committed: Wed May 3 20:00:29 2017 +0800

--
 .../main/java/org/apache/kylin/common/KylinConfig.java   |  2 +-
 .../apache/kylin/job/execution/AbstractExecutable.java   |  4 ++--
 .../apache/kylin/dimension/DimensionEncodingFactory.java |  2 --
 .../metadata/filter/BuiltInFunctionTupleFilter.java  |  2 +-
 .../apache/kylin/metadata/project/ProjectL2Cache.java|  2 +-
 .../kylin/engine/mr/common/HadoopShellExecutable.java|  3 +--
 .../org/apache/kylin/rest/service/DiagnosisService.java  | 11 +++
 .../java/org/apache/kylin/tool/CubeMetaExtractor.java|  2 +-
 8 files changed, 10 insertions(+), 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/32b8f2c7/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
--
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java 
b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
index c00054f..04af9f5 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
@@ -232,7 +232,7 @@ public class KylinConfig extends KylinConfigBase {
 return getKylinPropertiesFile(kylinConfHome);
 }
 
-logger.warn("KYLIN_CONF property was not set, will seek KYLIN_HOME env 
variable");
+logger.debug("KYLIN_CONF property was not set, will seek KYLIN_HOME 
env variable");
 
 String kylinHome = getKylinHome();
 if (StringUtils.isEmpty(kylinHome))

http://git-wip-us.apache.org/repos/asf/kylin/blob/32b8f2c7/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java
--
diff --git 
a/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java 
b/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java
index cd9b033..1f1be41 100644
--- 
a/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java
+++ 
b/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java
@@ -255,7 +255,7 @@ public abstract class AbstractExecutable implements 
Executable, Idempotent {
 try {
 List users = getAllNofifyUsers(config);
 if (users.isEmpty()) {
-logger.warn("no need to send email, user list is empty");
+logger.debug("no need to send email, user list is empty");
 return;
 }
 final Pair email = formatNotifications(context, 
state);
@@ -293,7 +293,7 @@ public abstract class AbstractExecutable implements 
Executable, Idempotent {
 try {
 List users = getAllNofifyUsers(config);
 if (users.isEmpty()) {
-logger.warn("no need to send email, user list is empty");
+logger.debug("no need to send email, user list is empty");
 return;
 }
 doSendMail(config, users, email);

http://git-wip-us.apache.org/repos/asf/kylin/blob/32b8f2c7/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java
--
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java
 
b/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java
index 3eddba7..8f1fcd6 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/dimension/DimensionEncodingFactory.java
@@ -18,7 +18,6 @@
 
 package org.apache.kylin.dimension;
 
-import java.util.Arrays;
 import java.util.Map;
 
 import javax.annotation.Nullable;
@@ -54,7 +53,6 @@ public abstract class DimensionEncodingFactory {
  * Create a DimensionEncoding instance, with inputs corresponding to 
RowKeyColDesc.encodingName and RowKeyColDesc.encodingArgs.
  */
 public static DimensionEncoding create(String encodingName, String[] args, 
int version) {
-logger.debug("Encoding Name : {}, args : {}, version {}", 
encodingName, Arrays.toString(args), version);
 if (factoryMap == null)
 initFactoryMap();
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/32b8f2c7/core-metadata/src/m

[25/37] kylin git commit: minor, fix csv export garbled issue

2017-05-19 Thread liyang
minor, fix csv export garbled issue


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

Branch: refs/heads/master
Commit: 949237ddca0ab24bf8121ccc002d802df678761c
Parents: a059064
Author: Hongbin Ma 
Authored: Thu May 11 17:29:14 2017 +0800
Committer: Dong Li 
Committed: Fri May 12 12:46:35 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/949237dd/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 c5f896d..99447a1 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=utf-8");
+response.setContentType("text/" + format + ";charset=ansi");
 response.setHeader("Content-Disposition", "attachment; 
filename=\"result." + format + "\"");
 ICsvListWriter csvWriter = null;
 



[06/37] kylin git commit: KYLIN-2535 minor, refactor some beans in acl service and user service

2017-05-19 Thread liyang
KYLIN-2535 minor, refactor some beans in acl service and user service



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

Branch: refs/heads/master
Commit: 2b6a91f14e791347f19bb1a7811c691fb1b6afb0
Parents: 0b51f7b
Author: FAN XIE 
Authored: Tue May 2 13:33:47 2017 +0800
Committer: hongbin ma 
Committed: Tue May 2 13:33:47 2017 +0800

--
 .../hbase/ITAclTableMigrationToolTest.java  |   9 +-
 .../org/apache/kylin/rest/service/AceInfo.java  |  55 +
 .../apache/kylin/rest/service/AclService.java   |  95 ---
 .../rest/service/AclTableMigrationTool.java |  53 ++---
 .../kylin/rest/service/DomainObjectInfo.java|  52 
 .../kylin/rest/service/LegacyAclService.java| 118 ++-
 .../kylin/rest/service/LegacyUserService.java   |  51 
 .../org/apache/kylin/rest/service/SidInfo.java  |  61 ++
 8 files changed, 199 insertions(+), 295 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/2b6a91f1/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITAclTableMigrationToolTest.java
--
diff --git 
a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITAclTableMigrationToolTest.java
 
b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITAclTableMigrationToolTest.java
index 35535e5..65d5b52 100644
--- 
a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITAclTableMigrationToolTest.java
+++ 
b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITAclTableMigrationToolTest.java
@@ -45,6 +45,7 @@ import org.apache.kylin.rest.security.AclHBaseStorage;
 import org.apache.kylin.rest.service.AclService;
 import org.apache.kylin.rest.service.AclTableMigrationTool;
 import org.apache.kylin.rest.service.LegacyUserService;
+import org.apache.kylin.rest.service.UserGrantedAuthority;
 import org.apache.kylin.rest.service.UserService;
 import org.apache.kylin.rest.util.Serializer;
 import org.junit.After;
@@ -70,7 +71,7 @@ public class ITAclTableMigrationToolTest extends 
HBaseMetadataTestCase {
 
 private TableName userTable = TableName.valueOf(STORE_WITH_OLD_TABLE + 
AclHBaseStorage.USER_TABLE_NAME);
 
-private Serializer ugaSerializer 
= new 
Serializer(LegacyUserService.UserGrantedAuthority[].class);
+private Serializer ugaSerializer = new 
Serializer(UserGrantedAuthority[].class);
 
 private AclTableMigrationTool aclTableMigrationJob;
 
@@ -192,13 +193,13 @@ public class ITAclTableMigrationToolTest extends 
HBaseMetadataTestCase {
 if (authorities == null)
 authorities = Collections.emptyList();
 
-LegacyUserService.UserGrantedAuthority[] serializing = new 
LegacyUserService.UserGrantedAuthority[authorities.size() + 1];
+UserGrantedAuthority[] serializing = new 
UserGrantedAuthority[authorities.size() + 1];
 
 // password is stored as the [0] authority
-serializing[0] = new 
LegacyUserService.UserGrantedAuthority(LegacyUserService.PWD_PREFIX + 
"password");
+serializing[0] = new UserGrantedAuthority(LegacyUserService.PWD_PREFIX 
+ "password");
 int i = 1;
 for (GrantedAuthority a : authorities) {
-serializing[i++] = new 
LegacyUserService.UserGrantedAuthority(a.getAuthority());
+serializing[i++] = new UserGrantedAuthority(a.getAuthority());
 }
 
 byte[] value = ugaSerializer.serialize(serializing);

http://git-wip-us.apache.org/repos/asf/kylin/blob/2b6a91f1/server-base/src/main/java/org/apache/kylin/rest/service/AceInfo.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/AceInfo.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/AceInfo.java
new file mode 100644
index 000..0be1019
--- /dev/null
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/AceInfo.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ * 

[35/37] kylin git commit: KYLIN-2624 introduce StorageURL and set timeout for metadata access

2017-05-19 Thread liyang
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/master
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 = KylinConfig.getInstanceFromEnv().getMetadataUrl();
-   

[26/37] kylin git commit: minor, remove useless scripts

2017-05-19 Thread liyang
minor, remove useless scripts


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

Branch: refs/heads/master
Commit: b08d278e5ed688457758eee43aff4f479fd0fb72
Parents: 949237d
Author: Hongbin Ma 
Authored: Fri May 12 12:10:21 2017 +0800
Committer: Dong Li 
Committed: Fri May 12 12:46:35 2017 +0800

--
 build/script/package_diag.sh |  77 -
 build/script/package_libs.sh | 100 --
 2 files changed, 177 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/b08d278e/build/script/package_diag.sh
--
diff --git a/build/script/package_diag.sh b/build/script/package_diag.sh
deleted file mode 100755
index 5d163e3..000
--- a/build/script/package_diag.sh
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/bash
-
-#
-# 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.
-#
-
-echo "Checking maven..."
-
-if [ -z "$(command -v mvn)" ]
-then
-echo "Please install maven first so that Kylin packaging can proceed"
-exit 1
-else
-echo "maven check passed"
-fi
-
-echo "Checking git..."
-
-if [ -z "$(command -v git)" ]
-then
-echo "Please install git first so that Kylin packaging can proceed"
-exit 1
-else
-echo "git check passed"
-fi
-
-dir=$(dirname ${0})
-cd ${dir}/../..
-version=`mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate 
-Dexpression=project.version |  grep -E '^[0-9]+\.[0-9]+\.[0-9]+' `
-
-if [ "$version" == "" ];then
-   echo "Failed to identify kylin version (current: `pwd`)"
-   exit 1
-fi
-
-echo "kylin version: ${version}"
-
-echo "package libraries"
-mvn clean install -DskipTests   || { exit 1; }
-
-echo "copy libraries"
-rm -rf build/tool
-mkdir build/tool
-cp tool/target/kylin-tool-${version}-assembly.jar 
build/tool/kylin-tool-${version}.jar
-# Copied file becomes 000 for some env (e.g. my Cygwin)
-chmod 644 build/tool/kylin-tool-${version}.jar
-
-echo 'package tar.gz'
-package_name=apache-kylin-${version}-diag
-cd build/
-rm -rf ${package_name}
-mkdir ${package_name}
-mkdir ${package_name}/bin
-cp -r tool ${package_name}
-cp bin/diag.sh ${package_name}/bin/
-rm -rf tool
-find ${package_name} -type d -exec chmod 755 {} \;
-find ${package_name} -type f -exec chmod 644 {} \;
-find ${package_name} -type f -name "*.sh" -exec chmod 755 {} \;
-mkdir -p ../dist
-tar -cvzf ../dist/${package_name}.tar.gz ${package_name}
-rm -rf ${package_name}
-
-echo "Library package ready: dist/${package_name}.tar.gz"

http://git-wip-us.apache.org/repos/asf/kylin/blob/b08d278e/build/script/package_libs.sh
--
diff --git a/build/script/package_libs.sh b/build/script/package_libs.sh
deleted file mode 100755
index 7ef6b5d..000
--- a/build/script/package_libs.sh
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/bin/bash
-
-#
-# 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.
-#
-
-echo "Checking maven..."
-
-if [ -z "$(command -v mvn)" ]
-then
-echo "Please install maven first so that Kylin packaging can proceed"
-exit 1
-else
-echo "maven check passed"
-fi
-
-echo "Checking git..."
-
-if [ -z "$(com

[32/37] kylin git commit: KYLIN-2635 fix IT

2017-05-19 Thread liyang
KYLIN-2635 fix IT


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

Branch: refs/heads/master
Commit: 5f52cea4f7ffbb0fa885df650803156cd1daa5d2
Parents: ea5caba
Author: Hongbin Ma 
Authored: Wed May 17 21:26:09 2017 +0800
Committer: Roger Shi 
Committed: Thu May 18 11:02:49 2017 +0800

--
 .../org/apache/kylin/metadata/filter/CompareTupleFilter.java   | 6 ++
 1 file changed, 6 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/5f52cea4/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 2771250..c091c7c 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
@@ -167,7 +167,13 @@ public class CompareTupleFilter extends TupleFilter {
 return true;
 else
 return false;
+} else {
+if (operator == FilterOperatorEnum.ISNOTNULL)
+return true;
+else if (operator == FilterOperatorEnum.ISNULL)
+return false;
 }
+
 if (cs.isNull(firstCondValue)) {
 return false;
 }



[22/37] kylin git commit: KYLIN-2599 select * in subquery fail due to bug in hackSelectStar

2017-05-19 Thread liyang
KYLIN-2599 select * in subquery fail due to bug in hackSelectStar


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

Branch: refs/heads/master
Commit: c3d81832f796ab281526d3ac1cd97b11eb986a92
Parents: 9dc6553
Author: Hongbin Ma 
Authored: Tue May 9 21:42:47 2017 +0800
Committer: liyang-gmt8 
Committed: Wed May 10 09:41:40 2017 +0800

--
 .../calcite/sql2rel/SqlToRelConverter.java  | 11 +
 .../src/test/resources/query/sql/query105.sql   | 26 
 2 files changed, 37 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/c3d81832/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
--
diff --git 
a/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java 
b/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
index c199c31..a520aa6 100644
--- 
a/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
+++ 
b/atopcalcite/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
@@ -47,6 +47,7 @@ import org.apache.calcite.rel.core.Project;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.rel.core.Sample;
 import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.TableScan;
 import org.apache.calcite.rel.core.Uncollect;
 import org.apache.calcite.rel.logical.LogicalAggregate;
 import org.apache.calcite.rel.logical.LogicalCorrelate;
@@ -611,6 +612,16 @@ public class SqlToRelConverter {
 } else {
 return root;
 }
+
+RelNode tableScanOrJoin = null;
+RelNode rootProjInput = rootPrj.getInput(0) instanceof LogicalFilter ? 
rootPrj.getInput(0).getInput(0): rootPrj.getInput(0);
+if(rootProjInput instanceof TableScan || rootProjInput instanceof 
LogicalJoin) { 
+tableScanOrJoin = rootProjInput;
+}
+if(tableScanOrJoin == null) {
+return root;
+}
+
 //
 RelNode input = rootPrj.getInput();
 //if (!(//

http://git-wip-us.apache.org/repos/asf/kylin/blob/c3d81832/kylin-it/src/test/resources/query/sql/query105.sql
--
diff --git a/kylin-it/src/test/resources/query/sql/query105.sql 
b/kylin-it/src/test/resources/query/sql/query105.sql
new file mode 100644
index 000..a467b65
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql/query105.sql
@@ -0,0 +1,26 @@
+--
+-- 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 fact.lstg_format_name from 
+ 
+ (select * from test_kylin_fact where cal_dt > date'2010-01-01' ) as fact
+ 
+ group by fact.lstg_format_name 
+ 
+ order by CASE WHEN fact.lstg_format_name IS NULL THEN 'sdf' ELSE 
fact.lstg_format_name END 
+ 



[36/37] kylin git commit: KAP-733 minor UT fix

2017-05-19 Thread liyang
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/master
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() {



[08/37] kylin git commit: change all mvn clean package back to mvn clean install

2017-05-19 Thread liyang
change all mvn clean package back to mvn clean install


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

Branch: refs/heads/master
Commit: 0e0c970aadb17d9abec7166a3ab87b0c5a783d65
Parents: 4c58b98
Author: Hongbin Ma 
Authored: Wed May 3 13:46:50 2017 +0800
Committer: Dong Li 
Committed: Wed May 3 13:51:55 2017 +0800

--
 build/script/build.sh   | 2 +-
 build/script/package_diag.sh| 2 +-
 build/script/package_libs.sh| 2 +-
 dev-support/sync_hbase_cdh_branches.sh  | 2 +-
 dev-support/test_all_against_hdp_2_4_0_0_169.sh | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/0e0c970a/build/script/build.sh
--
diff --git a/build/script/build.sh b/build/script/build.sh
index 6b1d767..390a2c5 100755
--- a/build/script/build.sh
+++ b/build/script/build.sh
@@ -22,7 +22,7 @@ echo "package back-end"
 dir=$(dirname ${0})
 cd ${dir}/../..
 
-mvn clean package -DskipTests $@ || { exit 1; }
+mvn clean intall -DskipTests $@ || { exit 1; }
 
 #package webapp
 echo 'package front-end'

http://git-wip-us.apache.org/repos/asf/kylin/blob/0e0c970a/build/script/package_diag.sh
--
diff --git a/build/script/package_diag.sh b/build/script/package_diag.sh
index 5a41f63..5d163e3 100755
--- a/build/script/package_diag.sh
+++ b/build/script/package_diag.sh
@@ -49,7 +49,7 @@ fi
 echo "kylin version: ${version}"
 
 echo "package libraries"
-mvn clean package -DskipTests   || { exit 1; }
+mvn clean install -DskipTests   || { exit 1; }
 
 echo "copy libraries"
 rm -rf build/tool

http://git-wip-us.apache.org/repos/asf/kylin/blob/0e0c970a/build/script/package_libs.sh
--
diff --git a/build/script/package_libs.sh b/build/script/package_libs.sh
index 01e52bc..7ef6b5d 100755
--- a/build/script/package_libs.sh
+++ b/build/script/package_libs.sh
@@ -70,7 +70,7 @@ EOF
 git rev-parse HEAD >> build/commit_SHA1
 
 echo "package libraries"
-mvn clean package -DskipTests   || { exit 1; }
+mvn clean install -DskipTests   || { exit 1; }
 
 echo "copy libraries"
 rm -rf build/lib

http://git-wip-us.apache.org/repos/asf/kylin/blob/0e0c970a/dev-support/sync_hbase_cdh_branches.sh
--
diff --git a/dev-support/sync_hbase_cdh_branches.sh 
b/dev-support/sync_hbase_cdh_branches.sh
index 340c570..fba4fca 100755
--- a/dev-support/sync_hbase_cdh_branches.sh
+++ b/dev-support/sync_hbase_cdh_branches.sh
@@ -45,7 +45,7 @@ git checkout -b tmp
 git reset apache/$base --hard
 
 git am -3 --ignore-whitespace 
0001-KYLIN-2307-Create-a-branch-for-master-with-HBase-0.9.patch
-mvn clean package -DskipTests
+mvn clean install -DskipTests
 git push apache tmp:$base-hbase0.98 -f
 rm 0001-KYLIN-2307-Create-a-branch-for-master-with-HBase-0.9.patch
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/0e0c970a/dev-support/test_all_against_hdp_2_4_0_0_169.sh
--
diff --git a/dev-support/test_all_against_hdp_2_4_0_0_169.sh 
b/dev-support/test_all_against_hdp_2_4_0_0_169.sh
index 26ca825..2a3d24b 100755
--- a/dev-support/test_all_against_hdp_2_4_0_0_169.sh
+++ b/dev-support/test_all_against_hdp_2_4_0_0_169.sh
@@ -21,5 +21,5 @@ dir=$(dirname ${0})
 cd ${dir}
 cd ..
 
-mvn clean package -DskipTests 2>&1 | tee mci.log
+mvn clean install -DskipTests 2>&1 | tee mci.log
 mvn verify -Dhdp.version=${HDP_VERSION:-"2.4.0.0-169"} -fae 2>&1 | tee 
mvnverify.log



[03/37] kylin git commit: KYLIN-2577, improve hive configurations during cubing steps

2017-05-19 Thread liyang
KYLIN-2577, improve 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/ea5fcff8
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ea5fcff8
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ea5fcff8

Branch: refs/heads/master
Commit: ea5fcff8397026de315324bf1797b62944591908
Parents: 4c18526
Author: Cheng Wang 
Authored: Fri Apr 28 17:52:58 2017 +0800
Committer: nichunen 
Committed: Fri Apr 28 18:41:52 2017 +0800

--
 build/bin/load-hive-conf.sh | 15 
 build/bin/sample.sh |  9 ++-
 .../kylin/common/util/HiveCmdBuilder.java   | 29 ++-
 .../org/apache/kylin/job/JoinedFlatTable.java   | 37 ++---
 .../kylin/job/engine/JobEngineConfig.java   | 32 +++-
 .../source/hive/CreateFlatHiveTableStep.java|  4 +
 .../apache/kylin/source/hive/HiveMRInput.java   |  8 +-
 .../org/apache/kylin/tool/HiveConfigCLI.java| 81 
 8 files changed, 173 insertions(+), 42 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/ea5fcff8/build/bin/load-hive-conf.sh
--
diff --git a/build/bin/load-hive-conf.sh b/build/bin/load-hive-conf.sh
new file mode 100644
index 000..a5046f0
--- /dev/null
+++ b/build/bin/load-hive-conf.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# Kyligence Inc. License
+
+source $(cd -P -- "$(dirname -- "$0")" && pwd -P)/header.sh
+
+# source me
+
+hive_conf_dir="${KYLIN_HOME}/conf/kylin_hive_conf.xml"
+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."
+hive_conf_properties=`cat ${hive_conf_prop}`
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/ea5fcff8/build/bin/sample.sh
--
diff --git a/build/bin/sample.sh b/build/bin/sample.sh
index 617b671..2e13805 100644
--- a/build/bin/sample.sh
+++ b/build/bin/sample.sh
@@ -19,6 +19,7 @@
 
 source $(cd -P -- "$(dirname -- "$0")" && pwd -P)/header.sh
 source $(cd -P -- "$(dirname -- "$0")" && pwd -P)/find-hadoop-conf-dir.sh
+source $(cd -P -- "$(dirname -- "$0")" && pwd -P)/load-hive-conf.sh
 
 source ${dir}/check-env.sh "if-not-yet"
 job_jar=`find -L ${KYLIN_HOME}/lib/ -name kylin-job*.jar`
@@ -43,7 +44,7 @@ echo "Going to create sample tables in hive to database 
"$sample_database" by "$
 if [ "${hive_client_mode}" == "beeline" ]
 then
 beeline_params=`bash ${KYLIN_HOME}/bin/get-properties.sh 
kylin.source.hive.beeline-params`
-beeline ${beeline_params} -e "CREATE DATABASE IF NOT EXISTS 
"$sample_database
+beeline ${hive_conf_properties} ${beeline_params} -e "CREATE DATABASE IF 
NOT EXISTS "$sample_database
 hive2_url=`expr match "${beeline_params}" '.*\(hive2:.*:[0-9]\{4,6\}\/\)'`
 if [ -z ${hive2_url} ]; then
 hive2_url=`expr match "${beeline_params}" 
'.*\(hive2:.*:[0-9]\{4,6\}\)'`
@@ -51,10 +52,10 @@ then
 else
 
beeline_params=${beeline_params/${hive2_url}/${hive2_url}${sample_database}}
 fi
-beeline ${beeline_params} -f 
${KYLIN_HOME}/sample_cube/create_sample_tables.sql  || { exit 1; }
+beeline ${hive_conf_properties} ${beeline_params} -f 
${KYLIN_HOME}/sample_cube/create_sample_tables.sql  || { exit 1; }
 else
-hive -e "CREATE DATABASE IF NOT EXISTS "$sample_database
-hive --database $sample_database -f 
${KYLIN_HOME}/sample_cube/create_sample_tables.sql  || { exit 1; }
+hive ${hive_conf_properties} -e "CREATE DATABASE IF NOT EXISTS 
"$sample_database
+hive ${hive_conf_properties} --database $sample_database -f 
${KYLIN_HOME}/sample_cube/create_sample_tables.sql  || { exit 1; }
 fi
 
 echo "Sample hive tables are created successfully; Going to create sample 
cube..."

http://git-wip-us.apache.org/repos/asf/kylin/blob/ea5fcff8/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 855ee48..9279973 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
@@ -24,6 +24,8 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.commons.i

[02/37] kylin git commit: KYLIN-2535 minor, bug fix

2017-05-19 Thread liyang
KYLIN-2535 minor, bug fix


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

Branch: refs/heads/master
Commit: 4c18526cff0c8437f3724fb32833636050bb7fe1
Parents: d609809
Author: xiefan46 <958034...@qq.com>
Authored: Fri Apr 28 18:06:29 2017 +0800
Committer: hongbin ma 
Committed: Fri Apr 28 18:09:53 2017 +0800

--
 .../rest/service/AclTableMigrationTool.java |   6 +-
 .../rest/service/UserGrantedAuthority.java  |  74 +
 .../org/apache/kylin/rest/service/UserInfo.java |  79 +
 .../apache/kylin/rest/service/UserService.java  | 111 +--
 .../kylin/rest/service/ServiceTestBase.java |   6 +-
 5 files changed, 164 insertions(+), 112 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/4c18526c/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
 
b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
index d147686..da017b3 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
@@ -146,7 +146,7 @@ public class AclTableMigrationTool {
 Result result = rs.next();
 while (result != null) {
 User user = hbaseRowToUser(result);
-UserService.UserInfo userInfo = convert(user);
+UserInfo userInfo = convert(user);
 
store.deleteResource(UserService.getId(userInfo.getUsername()));
 
store.putResource(UserService.getId(userInfo.getUsername()), userInfo, 0, 
UserService.UserInfoSerializer.getInstance());
 result = rs.next();
@@ -252,10 +252,10 @@ public class AclTableMigrationTool {
 return newInfo;
 }
 
-private UserService.UserInfo convert(User user) {
+private UserInfo convert(User user) {
 if (user == null)
 return null;
-UserService.UserInfo newInfo = new UserService.UserInfo();
+UserInfo newInfo = new UserInfo();
 newInfo.setUsername(user.getUserName());
 newInfo.setPassword(user.getPassword());
 List authorities = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/kylin/blob/4c18526c/server-base/src/main/java/org/apache/kylin/rest/service/UserGrantedAuthority.java
--
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/UserGrantedAuthority.java
 
b/server-base/src/main/java/org/apache/kylin/rest/service/UserGrantedAuthority.java
new file mode 100644
index 000..4c2a392
--- /dev/null
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/service/UserGrantedAuthority.java
@@ -0,0 +1,74 @@
+/*
+ * 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 org.springframework.security.core.GrantedAuthority;
+
+
+public class UserGrantedAuthority implements GrantedAuthority {
+private static final long serialVersionUID = -5128905636841891058L;
+
+private String authority;
+
+public UserGrantedAuthority() {
+}
+
+public UserGrantedAuthority(String authority) {
+setAuthority(authority);
+}
+
+@Override
+public String getAuthority() {
+return authority;
+}
+
+public void setAuthority(String authority) {
+this.authority = authority;
+}
+
+@Override
+public int hashCode() {
+final int prime = 31;
+int result = 1;
+result = prime * result + ((authority == null) ? 0 : 
authority.hashCode());
+return result;
+}
+
+@

[31/37] kylin git commit: KYLIN-2627 add simple rollback on ResourceStore

2017-05-19 Thread liyang
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/master
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 {
+if (origResData.containsKey(resPath))
+return;
+
+Raw

[30/37] kylin git commit: KYLIN-2625 not null filter clause should be evaluable in storage

2017-05-19 Thread liyang
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/master
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
+ 



[21/37] kylin git commit: KYLIN-2597 Deal with trivial expression in filters like x = 1+2

2017-05-19 Thread liyang
KYLIN-2597 Deal with trivial expression in filters like x = 1+2


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

Branch: refs/heads/master
Commit: 529b1be2f9f0f1c7bfb2798928b8c6c60cb581ea
Parents: 9a812d5
Author: Hongbin Ma 
Authored: Tue May 9 17:30:03 2017 +0800
Committer: Dong Li 
Committed: Tue May 9 20:30:21 2017 +0800

--
 .../test/resources/query/sql_limit/query03.sql  | 31 +++
 .../kylin/query/relnode/OLAPFilterRel.java  | 55 
 2 files changed, 86 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/529b1be2/kylin-it/src/test/resources/query/sql_limit/query03.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_limit/query03.sql 
b/kylin-it/src/test/resources/query/sql_limit/query03.sql
new file mode 100644
index 000..4844395
--- /dev/null
+++ b/kylin-it/src/test/resources/query/sql_limit/query03.sql
@@ -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.
+--
+
+SELECT 
+ test_kylin_fact.lstg_format_name ,test_kylin_fact.cal_dt , 
sum(test_kylin_fact.price) as GMV, count(*) as TRANS_CNT 
+ 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 test_kylin_fact.seller_id = 1002 + 4 
+ 
+ group by  seller_id,test_kylin_fact.cal_dt,lstg_format_name
+ limit 10

http://git-wip-us.apache.org/repos/asf/kylin/blob/529b1be2/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
--
diff --git 
a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java 
b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
index 0ee9204..06ad0c6 100755
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java
@@ -18,6 +18,7 @@
 
 package org.apache.kylin.query.relnode;
 
+import java.math.BigDecimal;
 import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -68,6 +69,7 @@ import org.apache.kylin.metadata.filter.function.Functions;
 import org.apache.kylin.metadata.model.TblColRef;
 
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
@@ -140,6 +142,16 @@ public class OLAPFilterRel extends Filter implements 
OLAPRel {
 case OTHER_FUNCTION:
 filter = Functions.getFunctionTupleFilter(op.getName());
 break;
+case PLUS:
+case MINUS:
+case TIMES:
+case DIVIDE:
+TupleFilter f = dealWithTrivialExpr(call);
+if (f != null) {
+// is a trivial expr
+return f;
+}
+//else go to default
 default:
 filter = new 
UnsupportedTupleFilter(FilterOperatorEnum.UNSUPPORTED);
 break;
@@ -166,6 +178,49 @@ public class OLAPFilterRel extends Filter implements 
OLAPRel {
 return filter;
 }
 
+//KYLIN-2597 - Deal with trivial expression in filters like x = 1 + 2 
+private TupleFilter dealWithTrivialExpr(RexCall call) {
+ImmutableList operators = call.operands;
+if (operators.size() != 2) {
+return null;
+}
+
+BigDecimal left = null;
+BigDecimal right = null;
+  

[07/37] kylin git commit: change mvn compile to mvn package

2017-05-19 Thread liyang
change mvn compile to mvn package


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

Branch: refs/heads/master
Commit: 4c58b9837bfff6493051a7f0a4a68132e59b9ef2
Parents: 2b6a91f
Author: Hongbin Ma 
Authored: Wed May 3 11:37:41 2017 +0800
Committer: Dong Li 
Committed: Wed May 3 11:40:19 2017 +0800

--
 dev-support/sync_hbase_cdh_branches.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/4c58b983/dev-support/sync_hbase_cdh_branches.sh
--
diff --git a/dev-support/sync_hbase_cdh_branches.sh 
b/dev-support/sync_hbase_cdh_branches.sh
index 592053a..340c570 100755
--- a/dev-support/sync_hbase_cdh_branches.sh
+++ b/dev-support/sync_hbase_cdh_branches.sh
@@ -45,7 +45,7 @@ git checkout -b tmp
 git reset apache/$base --hard
 
 git am -3 --ignore-whitespace 
0001-KYLIN-2307-Create-a-branch-for-master-with-HBase-0.9.patch
-mvn clean compile -DskipTests
+mvn clean package -DskipTests
 git push apache tmp:$base-hbase0.98 -f
 rm 0001-KYLIN-2307-Create-a-branch-for-master-with-HBase-0.9.patch
 



[20/37] kylin git commit: KYLIN-2598 Should not translate filter to a in-clause filter with too many elements

2017-05-19 Thread liyang
KYLIN-2598 Should not translate filter to a in-clause filter with too many 
elements


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

Branch: refs/heads/master
Commit: 9dc6553d29eb3f106823026f45dc878347a2a108
Parents: 529b1be
Author: Hongbin Ma 
Authored: Tue May 9 18:33:21 2017 +0800
Committer: Dong Li 
Committed: Tue May 9 20:30:21 2017 +0800

--
 .../apache/kylin/common/KylinConfigBase.java|  4 +++
 .../kylin/dict/BuiltInFunctionTransformer.java  | 10 +-
 .../test/resources/query/sql_like/query01.sql   |  6 ++--
 .../test/resources/query/sql_like/query05.sql   | 33 
 .../test/resources/query/sql_like/query06.sql   | 33 
 .../test/resources/query/sql_like/query22.sql   | 31 ++
 .../test/resources/query/sql_like/query23.sql   | 31 ++
 7 files changed, 144 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/9dc6553d/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 eafdbbb..10209d7 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
@@ -844,6 +844,10 @@ abstract public class KylinConfigBase implements 
Serializable {
 return value > 0 ? value : Long.MAX_VALUE;
 }
 
+public int getTranslatedInClauseMaxSize() {
+return 
Integer.parseInt(getOptional("kylin.query.translated-in-clause-max-size", 
"1024"));
+}
+
 public int getLargeQueryThreshold() {
 return 
Integer.parseInt(getOptional("kylin.query.large-query-threshold", 
String.valueOf(100)));
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/9dc6553d/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 6ef2f96..4d7b15d 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
@@ -21,6 +21,7 @@ package org.apache.kylin.dict;
 import java.util.Collection;
 import java.util.ListIterator;
 
+import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.Dictionary;
 import org.apache.kylin.dimension.IDimensionEncodingMap;
 import org.apache.kylin.metadata.filter.BuiltInFunctionTupleFilter;
@@ -93,12 +94,19 @@ public class BuiltInFunctionTransformer implements 
ITupleFilterTransformer {
 translated.addChild(new ColumnTupleFilter(columnRef));
 
 try {
+int translatedInClauseMaxSize = 
KylinConfig.getInstanceFromEnv().getTranslatedInClauseMaxSize();
+
 for (int i = dict.getMinId(); i <= dict.getMaxId(); i++) {
 Object dictVal = dict.getValueFromId(i);
 if ((Boolean) 
builtInFunctionTupleFilter.invokeFunction(dictVal)) {
 translated.addChild(new ConstantTupleFilter(dictVal));
+
+if (translated.getChildren().size() > 
translatedInClauseMaxSize) {
+return null;
+}
 }
 }
+
 } catch (Exception e) {
 logger.debug(e.getMessage());
 return null;
@@ -175,4 +183,4 @@ public class BuiltInFunctionTransformer implements 
ITupleFilterTransformer {
 }
 return translated;
 }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/kylin/blob/9dc6553d/kylin-it/src/test/resources/query/sql_like/query01.sql
--
diff --git a/kylin-it/src/test/resources/query/sql_like/query01.sql 
b/kylin-it/src/test/resources/query/sql_like/query01.sql
index e1f131d..e3a05ca 100644
--- a/kylin-it/src/test/resources/query/sql_like/query01.sql
+++ b/kylin-it/src/test/resources/query/sql_like/query01.sql
@@ -16,7 +16,7 @@
 -- limitations under the License.
 --
 
-select lstg_format_name as lstg_format_name, count(*) as cnt 
+select META_CATEG_NAME as META_CATEG_NAME, count(*) as cnt 
  
  from test_kylin_fact 
 inner JOIN edw.test_cal_dt as test_cal_dt
@@ -27,5 +27,5 @@ inner JOIN edw.test_cal

[33/37] kylin git commit: KYLIN-2577, refine hive configurations during cubing steps

2017-05-19 Thread liyang
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/master
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;
+}
+hiveConfFile = new File(path + File.separator + "conf", 
hiveConfFileN

[05/37] kylin git commit: KYLIN-2471 support subquery for parenthesized sub-clause in JOIN

2017-05-19 Thread liyang
KYLIN-2471 support subquery for parenthesized sub-clause in JOIN



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

Branch: refs/heads/master
Commit: 0b51f7bec9d6f721d8e6a092f23b2f1d445f7a18
Parents: 299b584
Author: Dong Li 
Authored: Mon May 1 11:35:07 2017 +0800
Committer: hongbin ma 
Committed: Mon May 1 11:35:07 2017 +0800

--
 .../query/util/CognosParenthesesEscape.java | 114 +++
 .../query/util/CognosParentesesEscapeTest.java  |  61 --
 .../query/util/CognosParenthesesEscapeTest.java |  81 +
 .../src/test/resources/query/cognos/query02.sql |  27 +
 .../resources/query/cognos/query02.sql.expected |  27 +
 .../src/test/resources/query/cognos/query03.sql |  29 +
 .../resources/query/cognos/query03.sql.expected |  29 +
 7 files changed, 262 insertions(+), 106 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/kylin/blob/0b51f7be/query/src/main/java/org/apache/kylin/query/util/CognosParenthesesEscape.java
--
diff --git 
a/query/src/main/java/org/apache/kylin/query/util/CognosParenthesesEscape.java 
b/query/src/main/java/org/apache/kylin/query/util/CognosParenthesesEscape.java
index 70ab8da..6d930a5 100644
--- 
a/query/src/main/java/org/apache/kylin/query/util/CognosParenthesesEscape.java
+++ 
b/query/src/main/java/org/apache/kylin/query/util/CognosParenthesesEscape.java
@@ -6,77 +6,101 @@
  * 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.query.util;
 
-import java.util.LinkedList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
-import java.util.UUID;
+import java.util.Map;
+import java.util.Stack;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.kylin.common.util.Pair;
+import com.google.common.collect.Lists;
 
-/**
- * from (a join b on a.x = b.y) join c
- * 
- * similar in https://issues.apache.org/jira/browse/CALCITE-35
- * 
- * we'll find such pattern and remove the parentheses
- */
 public class CognosParenthesesEscape implements QueryUtil.IQueryTransformer {
-
-private static final String S0 = "\\s*";
-private static final String S1 = "\\s";
-private static final String SM = "\\s+";
-private static final String TABLE_OR_COLUMN_NAME = "[\\w\\\"\\'\\.]+";
-private static final String TABLE_NAME_WITH_OPTIONAL_ALIAS = 
TABLE_OR_COLUMN_NAME + "((\\s+as)?\\s+" + TABLE_OR_COLUMN_NAME + ")?";
-private static final String JOIN = 
"(\\s+inner|\\s+((left|right|full)(\\s+outer)?))?\\s+join";// as per 
http://stackoverflow.com/questions/406294/left-join-vs-left-outer-join-in-sql-server
-private static final String EQUAL_CONDITION = SM + TABLE_OR_COLUMN_NAME + 
S0 + "=" + S0 + TABLE_OR_COLUMN_NAME;
-private static final String PARENTHESE_PATTERN_STR = "\\(" + S0 + // (
-TABLE_NAME_WITH_OPTIONAL_ALIAS + // a
-JOIN + SM + // join
-TABLE_NAME_WITH_OPTIONAL_ALIAS + //b
-SM + "on" + EQUAL_CONDITION + "(\\s+and" + EQUAL_CONDITION + ")*" 
+ // on a.x = b.y [and a.x2 = b.y2]
-S0 + "\\)";// )
-private static final Pattern PARENTTHESES_PATTERN = 
Pattern.compile(PARENTHESE_PATTERN_STR, Pattern.CASE_INSENSITIVE);
-
-private static int identifierNum = 0;
+private static final Pattern FROM_PATTERN = 
Pattern.compile("\\s+from\\s+(\\s*\\(\\s*)+(?!\\s*select\\s)", 
Pattern.CASE_INSENSITIVE);
 
 @Override
 public String transform(String sql) {
+if (sql == null || sql.isEmpty()) {
+return sql;
+}
+
+Map parenthesesPairs = findParenthesesPairs(sql);
+if (parenthesesPairs.isEmpty()) {
+// parentheses not found
+return sql;
+}
+
+List parentheses = Lists.newArrayList();
+StringBuilder result = new StringBuilder(sql);
+
 Matcher m;
-List> matches = new LinkedList<>();
 while (true) {
-m = PARENTTHESES_PATTERN.matcher(sql);
-if (!m.find())
+m = FROM_PATTERN.matcher(sql);
+i

  1   2   >