[41/50] [abbrv] kylin git commit: KYLIN-2603 enable GTAggregateScanner when there is having filter
KYLIN-2603 enable GTAggregateScanner when there is having filter Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/0e44a195 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0e44a195 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0e44a195 Branch: refs/heads/KYLIN-2606 Commit: 0e44a195b5b2a0074896ffae0636b82a1d7c1355 Parents: e1bc72e Author: Li YangAuthored: Thu May 11 17:26:10 2017 +0800 Committer: hongbin ma Committed: Tue May 23 20:18:17 2017 +0800 -- .../src/main/java/org/apache/kylin/gridtable/GTScanRequest.java| 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/0e44a195/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java index 9b6b2a6..ffaa8bd 100644 --- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java +++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java @@ -195,7 +195,7 @@ public class GTScanRequest { return new EmptyGTScanner(); } -if (!this.isAllowStorageAggregation()) { +if (!this.isAllowStorageAggregation() && havingFilterPushDown == null) { logger.info("pre aggregation is not beneficial, skip it"); } else if (this.hasAggregation()) { logger.info("pre aggregating results before returning");
[02/50] [abbrv] kylin git commit: KYLIN-2619 Use newCachedThreadPool instead of newFixedThreadPool in Broadcaster
KYLIN-2619 Use newCachedThreadPool instead of newFixedThreadPool in Broadcaster Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/1c3ed36f Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1c3ed36f Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1c3ed36f Branch: refs/heads/KYLIN-2606 Commit: 1c3ed36f7dcf2152b17966bb69dd3211ce4e8aba Parents: 1c80c29 Author: gaodayueAuthored: Sat May 6 05:21:22 2017 +0800 Committer: kangkaisen Committed: Mon May 15 16:02:01 2017 +0800 -- .../java/org/apache/kylin/common/restclient/RestClient.java | 4 .../java/org/apache/kylin/metadata/cachesync/Broadcaster.java | 7 +-- 2 files changed, 9 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/1c3ed36f/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java -- diff --git a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java index 33a4e7a..470386b 100644 --- a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java +++ b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java @@ -287,4 +287,8 @@ public class RestClient { return result.toString(); } +@Override +public String toString() { +return String.format("RestClient(%s:%d)", host, port); +} } http://git-wip-us.apache.org/repos/asf/kylin/blob/1c3ed36f/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java -- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java index 1394f7b..e787dfd 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java @@ -35,6 +35,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.restclient.RestClient; import org.apache.kylin.common.util.DaemonThreadFactory; +import org.apache.kylin.common.util.SetThreadName; import org.apache.kylin.metadata.project.ProjectManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -116,7 +117,7 @@ public class Broadcaster { for (String node : config.getRestServers()) { restClients.add(new RestClient(node)); } -final ExecutorService wipingCachePool = Executors.newFixedThreadPool(restClients.size(), new DaemonThreadFactory()); +final ExecutorService wipingCachePool = Executors.newCachedThreadPool(new DaemonThreadFactory()); while (true) { try { final BroadcastEvent broadcastEvent = broadcastEvents.takeFirst(); @@ -125,8 +126,10 @@ public class Broadcaster { wipingCachePool.execute(new Runnable() { @Override public void run() { -try { +try (SetThreadName ignored = new SetThreadName("CacheWiper %s %s", restClient, broadcastEvent)) { +logger.info("{} wipe cache {}", restClient, broadcastEvent); restClient.wipeCache(broadcastEvent.getEntity(), broadcastEvent.getEvent(), broadcastEvent.getCacheKey()); +logger.info("{} wipe cache {} success", restClient, broadcastEvent); } catch (IOException e) { logger.warn("Thread failed during wipe cache at " + broadcastEvent, e); }
[18/50] [abbrv] kylin git commit: minor, more stable ITZookeeperDistributedLockTest
minor, more stable ITZookeeperDistributedLockTest Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/fd3bfedb Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/fd3bfedb Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/fd3bfedb Branch: refs/heads/KYLIN-2606 Commit: fd3bfedb50f488d6679b9a01bc17e214622b8838 Parents: 0bdd1c2 Author: Yang LiAuthored: Sat May 20 14:00:06 2017 +0800 Committer: Yang Li Committed: Sat May 20 14:00:06 2017 +0800 -- .../kylin/storage/hbase/ITZookeeperDistributedLockTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/fd3bfedb/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java -- diff --git a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java index 8460cb9..48d6736 100644 --- a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java +++ b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java @@ -113,12 +113,12 @@ public class ITZookeeperDistributedLockTest extends HBaseMetadataTestCase { new Thread() { @Override public void run() { -d.lock(path, 1); +d.lock(path, 15000); } }.start(); c.unlock(path); -Thread.sleep(1); +Thread.sleep(2); assertTrue(c.isLocked(path)); assertEquals(d.getClient(), d.peekLock(path));
[30/50] [abbrv] kylin git commit: minor, apply first found hive_lib_dir
minor, apply first found hive_lib_dir Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/8cd807f7 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/8cd807f7 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/8cd807f7 Branch: refs/heads/KYLIN-2606 Commit: 8cd807f778eeafbb54effb0dd1c7ab552e68c730 Parents: 11a0b57 Author: Cheng WangAuthored: Mon May 22 17:03:45 2017 +0800 Committer: æ Committed: Tue May 23 11:30:25 2017 +0800 -- build/bin/find-hive-dependency.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/8cd807f7/build/bin/find-hive-dependency.sh -- diff --git a/build/bin/find-hive-dependency.sh b/build/bin/find-hive-dependency.sh index 8ebdfbd..6f28fd1 100644 --- a/build/bin/find-hive-dependency.sh +++ b/build/bin/find-hive-dependency.sh @@ -46,7 +46,8 @@ fi for data in ${arr[@]} do result=`echo $data | grep -e 'hive-exec[a-z0-9A-Z\.-]*.jar'` -if [ $result ] +# In some cases there are more than one lib dirs, only the first one will be applied. +if [ $result ] && [ -z "$hive_exec_path" ] then hive_exec_path=$data fi
[19/50] [abbrv] kylin git commit: KYLIN-2624 pass IT
KYLIN-2624 pass IT Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/1b864f04 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1b864f04 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1b864f04 Branch: refs/heads/KYLIN-2606 Commit: 1b864f04e3fbf50c08978c2f8533ead4ca9784c6 Parents: d21c817 Author: Yang LiAuthored: Sat May 20 14:14:43 2017 +0800 Committer: hongbin ma Committed: Sat May 20 14:19:07 2017 +0800 -- examples/test_case_data/localmeta/UUID | 1 + .../kylin/job/BaseTestDistributedScheduler.java | 2 + .../hbase/ITZookeeperDistributedLockTest.java | 257 +++ .../hbase/util/ZookeeperDistributedLock.java| 11 +- .../util/ITZookeeperDistributedLockTest.java| 254 -- 5 files changed, 268 insertions(+), 257 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/1b864f04/examples/test_case_data/localmeta/UUID -- diff --git a/examples/test_case_data/localmeta/UUID b/examples/test_case_data/localmeta/UUID new file mode 100644 index 000..e3f5e6b --- /dev/null +++ b/examples/test_case_data/localmeta/UUID @@ -0,0 +1 @@ +$3591078f-9401-481a-a233-e7755c1142d0 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/kylin/blob/1b864f04/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java -- diff --git a/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java b/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java index 6343dfa..1ea6507 100644 --- a/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java +++ b/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java @@ -113,6 +113,8 @@ public class BaseTestDistributedScheduler extends HBaseMetadataTestCase { @AfterClass public static void after() throws Exception { +jobLock1.purgeLocks(""); + if (scheduler1 != null) { scheduler1.shutdown(); scheduler1 = null; http://git-wip-us.apache.org/repos/asf/kylin/blob/1b864f04/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java -- diff --git a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java new file mode 100644 index 000..48d6736 --- /dev/null +++ b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +package org.apache.kylin.storage.hbase; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.Closeable; +import java.io.IOException; +import java.util.Random; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; + +import org.apache.kylin.common.lock.DistributedLock; +import org.apache.kylin.common.lock.DistributedLock.Watcher; +import org.apache.kylin.common.util.HBaseMetadataTestCase; +import org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ITZookeeperDistributedLockTest extends HBaseMetadataTestCase { +private static final Logger logger = LoggerFactory.getLogger(ITZookeeperDistributedLockTest.class); +private static final String ZK_PFX = "/test/ZookeeperDistributedLockTest/" + new Random().nextInt(1000); + +static ZookeeperDistributedLock.Factory factory; + +@BeforeClass +public static void setup() throws Exception { +
[22/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/service/CubeServiceV2.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/CubeServiceV2.java b/server-base/src/main/java/org/apache/kylin/rest/service/CubeServiceV2.java new file mode 100644 index 000..2fae789 --- /dev/null +++ b/server-base/src/main/java/org/apache/kylin/rest/service/CubeServiceV2.java @@ -0,0 +1,497 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +package org.apache.kylin.rest.service; + +import static org.apache.kylin.cube.model.CubeDesc.STATUS_DRAFT; +import static org.apache.kylin.rest.controller2.CubeControllerV2.VALID_CUBENAME; + +import java.io.IOException; +import java.util.EnumSet; +import java.util.List; +import java.util.UUID; + +import org.apache.commons.lang.StringUtils; +import org.apache.kylin.cube.CubeInstance; +import org.apache.kylin.cube.CubeManager; +import org.apache.kylin.cube.CubeSegment; +import org.apache.kylin.cube.CubeUpdate; +import org.apache.kylin.cube.cuboid.CuboidCLI; +import org.apache.kylin.cube.model.CubeDesc; +import org.apache.kylin.engine.mr.CubingJob; +import org.apache.kylin.job.exception.JobException; +import org.apache.kylin.job.execution.ExecutableState; +import org.apache.kylin.metadata.model.DataModelDesc; +import org.apache.kylin.metadata.model.SegmentStatusEnum; +import org.apache.kylin.metadata.project.ProjectInstance; +import org.apache.kylin.metadata.project.ProjectManager; +import org.apache.kylin.metadata.realization.RealizationStatusEnum; +import org.apache.kylin.metadata.realization.RealizationType; +import org.apache.kylin.rest.constant.Constant; +import org.apache.kylin.rest.exception.BadRequestException; +import org.apache.kylin.rest.exception.ForbiddenException; +import org.apache.kylin.rest.msg.Message; +import org.apache.kylin.rest.msg.MsgPicker; +import org.apache.kylin.rest.security.AclPermission; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; + +/** + * Created by luwei on 17-4-17. + */ + +@Component("cubeMgmtServiceV2") +public class CubeServiceV2 extends CubeService { + +private static final Logger logger = LoggerFactory.getLogger(CubeServiceV2.class); + +@Autowired +@Qualifier("accessService") +private AccessService accessService; + +@Autowired +@Qualifier("jobService") +private JobService jobService; + +@Autowired +@Qualifier("modelMgmtServiceV2") +private ModelServiceV2 modelServiceV2; + + +@PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#cube, 'ADMINISTRATION') or hasPermission(#cube, 'OPERATION') or hasPermission(#cube, 'MANAGEMENT')") +public CubeInstance deleteSegment(CubeInstance cube, String segmentName) throws IOException { +Message msg = MsgPicker.getMsg(); + +if (!segmentName.equals(cube.getSegments().get(0).getName()) && !segmentName.equals(cube.getSegments().get(cube.getSegments().size() - 1).getName())) { +throw new BadRequestException(String.format(msg.getDELETE_NOT_FIRST_LAST_SEG(), segmentName)); +} +CubeSegment toDelete = null; +for (CubeSegment seg : cube.getSegments()) { +if (seg.getName().equals(segmentName)) { +toDelete = seg; +} +} + +if (toDelete == null) { +throw new BadRequestException(String.format(msg.getSEG_NOT_FOUND(), segmentName)); +} + +if (toDelete.getStatus() != SegmentStatusEnum.READY) { +throw new BadRequestException(String.format(msg.getDELETE_NOT_READY_SEG(), segmentName)); +} + +CubeUpdate update = new CubeUpdate(cube); +update.setToRemoveSegs(new CubeSegment[] { toDelete }); +
[26/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention
KYLIN-2632 Refactor REST API for better convention Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/73a78dbe Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/73a78dbe Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/73a78dbe Branch: refs/heads/KYLIN-2606 Commit: 73a78dbee84808de42925ca5a0b8e16761840233 Parents: 429dfbd Author: Luwei-ChenAuthored: Fri May 19 21:49:31 2017 +0800 Committer: liyang-gmt8 Committed: Sun May 21 09:18:59 2017 +0800 -- .../org/apache/kylin/cube/CubeDescManager.java | 91 ++- .../org/apache/kylin/cube/model/CubeDesc.java | 56 +- .../validation/rule/DictionaryRuleTest.java | 8 +- .../model/validation/rule/FunctionRuleTest.java | 6 +- .../apache/kylin/metadata/MetadataManager.java | 16 +- .../kylin/metadata/model/DataModelDesc.java | 49 +- .../kylin/metadata/model/JoinTableDesc.java | 6 +- .../apache/kylin/metadata/model/JoinsTree.java | 10 + .../kylin/metadata/model/TableExtDesc.java | 10 + .../org/apache/kylin/engine/mr/IMRInput.java| 3 - .../java/org/apache/kylin/engine/mr/MRUtil.java | 14 +- .../kylin/rest/controller/AccessController.java | 12 +- .../kylin/rest/controller/AdminController.java | 34 +- .../kylin/rest/controller/CacheController.java | 8 +- .../kylin/rest/controller/CubeController.java | 67 +- .../rest/controller/CubeDescController.java | 6 +- .../rest/controller/DiagnosisController.java| 9 +- .../rest/controller/EncodingController.java | 5 +- .../controller/ExternalFilterController.java| 10 +- .../kylin/rest/controller/HybridController.java | 13 +- .../kylin/rest/controller/JobController.java| 21 +- .../kylin/rest/controller/ModelController.java | 17 +- .../rest/controller/ModelDescController.java| 4 +- .../rest/controller/ProjectController.java | 19 +- .../kylin/rest/controller/QueryController.java | 14 +- .../rest/controller/StreamingController.java| 16 +- .../kylin/rest/controller/TableController.java | 16 +- .../kylin/rest/controller/UserController.java | 11 +- .../rest/controller2/AccessControllerV2.java| 135 .../rest/controller2/AdminControllerV2.java | 106 +++ .../rest/controller2/CacheControllerV2.java | 91 +++ .../rest/controller2/CubeControllerV2.java | 755 +++ .../rest/controller2/CubeDescControllerV2.java | 141 .../rest/controller2/DiagnosisControllerV2.java | 121 +++ .../rest/controller2/EncodingControllerV2.java | 80 ++ .../controller2/ExternalFilterControllerV2.java | 101 +++ .../rest/controller2/HybridControllerV2.java| 97 +++ .../kylin/rest/controller2/JobControllerV2.java | 222 ++ .../rest/controller2/ModelControllerV2.java | 284 +++ .../rest/controller2/ModelDescControllerV2.java | 107 +++ .../rest/controller2/ProjectControllerV2.java | 269 +++ .../rest/controller2/QueryControllerV2.java | 186 + .../rest/controller2/StreamingControllerV2.java | 288 +++ .../rest/controller2/TableControllerV2.java | 159 .../rest/controller2/UserControllerV2.java | 103 +++ .../rest/exception/BadRequestException.java | 1 + .../org/apache/kylin/rest/model/ColumnMeta.java | 46 +- .../kylin/rest/model/ColumnMetaWithType.java| 70 ++ .../org/apache/kylin/rest/model/TableMeta.java | 20 +- .../kylin/rest/model/TableMetaWithType.java | 57 ++ .../org/apache/kylin/rest/msg/CnMessage.java| 38 + .../java/org/apache/kylin/rest/msg/Message.java | 588 +++ .../org/apache/kylin/rest/msg/MsgPicker.java| 42 ++ .../kylin/rest/request/HiveTableRequestV2.java | 59 ++ .../rest/response/CubeInstanceResponse.java | 72 ++ .../rest/response/DataModelDescResponse.java| 62 ++ .../kylin/rest/response/HBaseResponse.java | 9 + .../kylin/rest/response/ResponseCode.java | 2 +- .../security/KylinAuthenticationProvider.java | 2 + .../kylin/rest/security/LdapProvider.java | 2 + .../kylin/rest/service/AccessService.java | 59 +- .../apache/kylin/rest/service/AclService.java | 49 +- .../apache/kylin/rest/service/AdminService.java | 63 +- .../apache/kylin/rest/service/CacheService.java | 10 +- .../apache/kylin/rest/service/CubeService.java | 55 +- .../kylin/rest/service/CubeServiceV2.java | 497 .../kylin/rest/service/DiagnosisService.java| 18 +- .../kylin/rest/service/EncodingService.java | 7 +- .../kylin/rest/service/ExtFilterService.java| 12 +- .../apache/kylin/rest/service/JobService.java | 122 +-- .../kylin/rest/service/KafkaConfigService.java | 8 +- .../apache/kylin/rest/service/ModelService.java | 20 +- .../kylin/rest/service/ModelServiceV2.java | 351 +
[04/50] [abbrv] kylin git commit: KYLIN-2623 Move output(Hbase) code to outputside
KYLIN-2623 Move output(Hbase) code to outputside Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/a38b02df Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/a38b02df Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/a38b02df Branch: refs/heads/KYLIN-2606 Commit: a38b02df0387541684aa1689e044927af650f1c7 Parents: edc4d4c Author: Roger ShiAuthored: Tue May 16 13:50:23 2017 +0800 Committer: liyang-gmt8 Committed: Tue May 16 14:03:50 2017 +0800 -- .../org/apache/kylin/engine/mr/IMROutput2.java | 33 +- .../engine/mr/common/AbstractHadoopJob.java | 6 +- .../apache/kylin/engine/mr/steps/CuboidJob.java | 37 +++ .../kylin/engine/mr/steps/InMemCuboidJob.java | 55 ++ .../engine/mr/steps/LayerReducerNumSizing.java | 80 -- .../kylin/engine/mr/steps/MergeCuboidJob.java | 37 --- .../engine/mr/steps/MergeCuboidMapper.java | 35 +- .../kylin/engine/mr/steps/ReducerNumSizing.java | 106 +++ .../apache/kylin/source/hive/HiveMRInput.java | 2 - .../apache/kylin/source/kafka/KafkaMRInput.java | 1 - .../hbase/steps/HBaseMROutput2Transition.java | 97 + 11 files changed, 284 insertions(+), 205 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/a38b02df/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java -- diff --git a/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java b/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java index 603f207..69bba0a 100644 --- a/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java +++ b/engine-mr/src/main/java/org/apache/kylin/engine/mr/IMROutput2.java @@ -18,11 +18,14 @@ package org.apache.kylin.engine.mr; +import java.util.List; + +import org.apache.hadoop.mapreduce.Job; +import org.apache.hadoop.mapreduce.lib.input.FileSplit; +import org.apache.kylin.cube.CubeInstance; import org.apache.kylin.cube.CubeSegment; import org.apache.kylin.job.execution.DefaultChainedExecutable; -import java.util.List; - public interface IMROutput2 { /** Return a helper to participate in batch cubing job flow. */ @@ -53,6 +56,19 @@ public interface IMROutput2 { /** Add step that does any necessary clean up. */ public void addStepPhase4_Cleanup(DefaultChainedExecutable jobFlow); + +public IMROutputFormat getOuputFormat(); + +} + +public interface IMROutputFormat { + +/** Configure the InputFormat of given job. */ +public void configureJobInput(Job job, String input) throws Exception; + +/** Configure the OutputFormat of given job. */ +public void configureJobOutput(Job job, String output, CubeSegment segment, int level) throws Exception; + } /** Return a helper to participate in batch merge job flow. */ @@ -82,6 +98,19 @@ public interface IMROutput2 { /** Add step that does any necessary clean up. */ public void addStepPhase3_Cleanup(DefaultChainedExecutable jobFlow); + +public IMRMergeOutputFormat getOuputFormat(); +} + +public interface IMRMergeOutputFormat { + +/** Configure the InputFormat of given job. */ +public void configureJobInput(Job job, String input) throws Exception; + +/** Configure the OutputFormat of given job. */ +public void configureJobOutput(Job job, String output, CubeSegment segment) throws Exception; + +public CubeSegment findSourceSegment(FileSplit fileSplit, CubeInstance cube); } } http://git-wip-us.apache.org/repos/asf/kylin/blob/a38b02df/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java -- diff --git a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java index 44686d6..764cbdd 100644 --- a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java +++ b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/AbstractHadoopJob.java @@ -559,7 +559,7 @@ public abstract class AbstractHadoopJob extends Configured implements Tool { HadoopUtil.deletePath(conf, path); } -protected double getTotalMapInputMB() throws ClassNotFoundException, IOException, InterruptedException, JobException { +public static double getTotalMapInputMB(Job job) throws ClassNotFoundException, IOException, InterruptedException, JobException { if (job == null) { throw new JobException("Job is null"); } @@ -576,6 +576,10 @@ public abstract
[36/50] [abbrv] kylin git commit: Merge commit 'ce6e3ede2f670bf037a55234630b85098265075a'
Merge commit 'ce6e3ede2f670bf037a55234630b85098265075a' Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/81ed3011 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/81ed3011 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/81ed3011 Branch: refs/heads/KYLIN-2606 Commit: 81ed30110186e2c13511a3fc50f6098645412aab Parents: 2471d5e ce6e3ed Author: Hongbin MaAuthored: Tue May 23 19:31:36 2017 +0800 Committer: Hongbin Ma Committed: Tue May 23 19:31:36 2017 +0800 -- build/bin/load-hive-conf.sh | 2 +- .../impl/threadpool/DistributedScheduler.java | 1 + .../apache/kylin/metadata/MetadataManager.java | 2 ++ .../kylin/metadata/model/DataModelDesc.java | 1 + .../security/KylinAuthenticationProvider.java | 20 +++- .../apache/kylin/rest/service/CacheService.java | 1 - .../kylin/rest/service/ModelServiceTest.java| 2 +- .../hbase/util/ZookeeperDistributedLock.java| 2 -- webapp/app/js/controllers/page.js | 16 +--- 9 files changed, 26 insertions(+), 21 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/build/bin/load-hive-conf.sh -- diff --cc build/bin/load-hive-conf.sh index c7317c6,a42cd0c..0937719 --- a/build/bin/load-hive-conf.sh +++ b/build/bin/load-hive-conf.sh @@@ -12,4 -12,4 +12,4 @@@ rm -rf ${hive_conf_prop export ENABLE_CHECK_ENV=false ${dir}/kylin.sh org.apache.kylin.tool.HiveConfigCLI ${hive_conf_dir} ${hive_conf_prop} [[ 0 == $? ]] || quit "Can not parse xml file: ${hive_conf_dir}, please check it." --hive_conf_properties=`cat ${hive_conf_prop}` ++hive_conf_properties=`cat ${hive_conf_prop}` http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java -- diff --cc core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java index 00fafaf,b3ca14a..39d7830 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java @@@ -603,9 -600,7 +603,10 @@@ public class MetadataManager ResourceStore store = getStore(); try { DataModelDesc dataModelDesc = store.getResource(path, DataModelDesc.class, MODELDESC_SERIALIZER); -dataModelDesc.init(config, this.getAllTablesMap(), this.ccInfoMap); ++ +if (dataModelDesc.getStatus() == null) +dataModelDesc.init(config, this.getAllTablesMap(), this.ccInfoMap); + dataModelDescMap.putLocal(dataModelDesc.getName(), dataModelDesc); return dataModelDesc; } catch (Exception e) { @@@ -653,8 -648,7 +654,9 @@@ } private DataModelDesc saveDataModelDesc(DataModelDesc dataModelDesc) throws IOException { -dataModelDesc.init(config, this.getAllTablesMap(), this.ccInfoMap); ++ +if (dataModelDesc.getStatus() == null) +dataModelDesc.init(config, this.getAllTablesMap(), this.ccInfoMap); String path = dataModelDesc.getResourcePath(); getStore().putResource(path, dataModelDesc, MODELDESC_SERIALIZER); http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java -- diff --cc core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java index c3554f2,2174b7a..a689979 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java @@@ -415,10 -385,9 +415,11 @@@ public class DataModelDesc extends Root TableDesc tableDesc = tables.get(join.getTable()); String alias = join.getAlias(); -if (alias == null) +if (alias == null) { alias = tableDesc.getName(); +join.setAlias(alias); +} + TableRef ref = new TableRef(this, alias, tableDesc); join.setTableRef(ref); http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java -- http://git-wip-us.apache.org/repos/asf/kylin/blob/81ed3011/server-base/src/main/java/org/apache/kylin/rest/service/CacheService.java -- diff --cc
[25/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java index 99447a1..b6e2d45 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java +++ b/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java @@ -39,6 +39,7 @@ import org.apache.kylin.rest.service.QueryService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; @@ -61,9 +62,10 @@ public class QueryController extends BasicController { private static final Logger logger = LoggerFactory.getLogger(QueryController.class); @Autowired +@Qualifier("queryService") private QueryService queryService; -@RequestMapping(value = "/query", method = RequestMethod.POST) +@RequestMapping(value = "/query", method = RequestMethod.POST, produces = { "application/json" }) @ResponseBody public SQLResponse query(@RequestBody SQLRequest sqlRequest) { return queryService.doQueryWithCache(sqlRequest); @@ -76,7 +78,7 @@ public class QueryController extends BasicController { return queryService.doQueryWithCache(sqlRequest); } -@RequestMapping(value = "/saved_queries", method = RequestMethod.POST) +@RequestMapping(value = "/saved_queries", method = RequestMethod.POST, produces = { "application/json" }) @ResponseBody public void saveQuery(@RequestBody SaveSqlRequest sqlRequest) throws IOException { String creator = SecurityContextHolder.getContext().getAuthentication().getName(); @@ -85,21 +87,21 @@ public class QueryController extends BasicController { queryService.saveQuery(creator, newQuery); } -@RequestMapping(value = "/saved_queries/{id}", method = RequestMethod.DELETE) +@RequestMapping(value = "/saved_queries/{id}", method = RequestMethod.DELETE, produces = { "application/json" }) @ResponseBody public void removeQuery(@PathVariable String id) throws IOException { String creator = SecurityContextHolder.getContext().getAuthentication().getName(); queryService.removeQuery(creator, id); } -@RequestMapping(value = "/saved_queries", method = RequestMethod.GET) +@RequestMapping(value = "/saved_queries", method = RequestMethod.GET, produces = { "application/json" }) @ResponseBody public List getQueries() throws IOException { String creator = SecurityContextHolder.getContext().getAuthentication().getName(); return queryService.getQueries(creator); } -@RequestMapping(value = "/query/format/{format}", method = RequestMethod.GET) +@RequestMapping(value = "/query/format/{format}", method = RequestMethod.GET, produces = { "application/json" }) @ResponseBody public void downloadQueryResult(@PathVariable String format, SQLRequest sqlRequest, HttpServletResponse response) { SQLResponse result = queryService.doQueryWithCache(sqlRequest); @@ -129,7 +131,7 @@ public class QueryController extends BasicController { } } -@RequestMapping(value = "/tables_and_columns", method = RequestMethod.GET) +@RequestMapping(value = "/tables_and_columns", method = RequestMethod.GET, produces = { "application/json" }) @ResponseBody public List getMetadata(MetaRequest metaRequest) { try { http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java index 407ee2e..b0bb02a 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java +++ b/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingController.java @@ -39,6 +39,7 @@ import org.apache.kylin.source.kafka.config.KafkaConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.security.access.AccessDeniedException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; @@ -63,13
[38/50] [abbrv] kylin git commit: KYLIN-2641 - The current selected project is incorrect after we delete a project.
KYLIN-2641 - The current selected project is incorrect after we delete a project. Signed-off-by: Billy LiuProject: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/9fef04d9 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/9fef04d9 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/9fef04d9 Branch: refs/heads/KYLIN-2606 Commit: 9fef04d9a98e11454d00247d8cd2f4d501ba66a2 Parents: 81ed301 Author: 10069681 Authored: Tue May 23 18:34:26 2017 +0800 Committer: Billy Liu Committed: Tue May 23 20:02:21 2017 +0800 -- webapp/app/js/model/projectModel.js | 18 -- 1 file changed, 12 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/9fef04d9/webapp/app/js/model/projectModel.js -- diff --git a/webapp/app/js/model/projectModel.js b/webapp/app/js/model/projectModel.js index d2d32b4..77f47e8 100644 --- a/webapp/app/js/model/projectModel.js +++ b/webapp/app/js/model/projectModel.js @@ -21,7 +21,6 @@ KylinApp.service('ProjectModel', function () { this.projects = []; this.selectedProject = "_null"; - this.setSelectedProject = function (project) { var _projects =[]; angular.forEach(this.projects,function(pro){ @@ -31,6 +30,7 @@ KylinApp.service('ProjectModel', function () { this.selectedProject = project; } }; + this.getSelectedProject = function (project) { if (this.selectedProject == "_null") { return null; @@ -56,10 +56,10 @@ KylinApp.service('ProjectModel', function () { this.sortProjects(); } - this.removeProject = function (project) { + this.removeProject = function (projectName) { var index = -1; for (var i = 0; i < this.projects.length; i++) { - if (this.projects[i].name == project) { + if (this.projects[i].name == projectName) { index = i; break; } @@ -67,7 +67,15 @@ KylinApp.service('ProjectModel', function () { if (index > -1) { this.projects.splice(index, 1); } -this.selectedProject = this.projects[0]; + +if (this.selectedProject == projectName) { +if (this.projects.length) { + this.selectedProject = this.projects[0].name; +} else { + this.selectedProject = "_null"; +} +} + this.sortProjects(); } @@ -96,7 +104,6 @@ KylinApp.service('ProjectModel', function () { } } } -; return this.getSelectedProject(); } @@ -124,7 +131,6 @@ KylinApp.service('ProjectModel', function () { } } return index; - } })
[11/50] [abbrv] kylin git commit: KYLIN-2624 introduce StorageURL and set timeout for metadata access
KYLIN-2624 introduce StorageURL and set timeout for metadata access Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2dfc5bb3 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2dfc5bb3 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2dfc5bb3 Branch: refs/heads/KYLIN-2606 Commit: 2dfc5bb36a00245b95deeebb5bb3bca9c353c934 Parents: 7c152c5 Author: Li YangAuthored: Thu May 18 14:16:17 2017 +0800 Committer: nichunen Committed: Fri May 19 13:52:53 2017 +0800 -- .../apache/kylin/common/KylinConfigBase.java| 30 ++- .../org/apache/kylin/common/StorageURL.java | 183 +++ .../common/persistence/FileResourceStore.java | 2 +- .../apache/kylin/common/KylinConfigTest.java| 9 +- .../org/apache/kylin/common/StorageURLTest.java | 103 +++ .../persistence/LocalFileResourceStoreTest.java | 3 +- .../common/persistence/ResourceStoreTest.java | 18 +- .../common/util/LocalFileMetadataTestCase.java | 7 + .../apache/kylin/dict/DictionaryManager.java| 18 +- .../dict/global/AppendTrieDictionaryTest.java | 5 +- .../impl/threadpool/DistributedScheduler.java | 11 +- .../apache/kylin/storage/StorageContext.java| 7 +- .../kylin/engine/mr/steps/CubeReducerTest.java | 2 +- .../engine/mr/steps/NDCuboidMapperTest.java | 2 +- .../kylin/job/BaseTestDistributedScheduler.java | 5 +- .../kylin/storage/hbase/ITStorageTest.java | 3 +- .../apache/kylin/query/schema/OLAPSchema.java | 5 +- .../rest/security/MockAclHBaseStorage.java | 11 +- .../rest/security/RealAclHBaseStorage.java | 15 +- .../apache/kylin/rest/service/QueryService.java | 11 +- .../kylin/storage/hbase/HBaseConnection.java| 51 +++--- .../kylin/storage/hbase/HBaseResourceStore.java | 46 +++-- .../storage/hbase/util/CubeMigrationCLI.java| 20 +- .../hbase/util/GridTableHBaseBenchmark.java | 3 +- .../kylin/storage/hdfs/HDFSResourceStore.java | 50 ++--- .../hbase/steps/CubeHFileMapper2Test.java | 4 +- .../storage/hbase/steps/MockupMapContext.java | 2 +- .../org/apache/kylin/tool/CubeMigrationCLI.java | 20 +- 28 files changed, 461 insertions(+), 185 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/2dfc5bb3/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java -- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index b620924..caef95e 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -169,7 +169,7 @@ abstract public class KylinConfigBase implements Serializable { } public String toString() { -return getMetadataUrl(); +return getMetadataUrl().toString(); } // @@ -205,8 +205,8 @@ abstract public class KylinConfigBase implements Serializable { // METADATA // -public String getMetadataUrl() { -return getOptional("kylin.metadata.url"); +public StorageURL getMetadataUrl() { +return StorageURL.valueOf(getOptional("kylin.metadata.url", "")); } // for test only @@ -215,14 +215,7 @@ abstract public class KylinConfigBase implements Serializable { } public String getMetadataUrlPrefix() { -String metadataUrl = getMetadataUrl(); -String defaultPrefix = "kylin_metadata"; - -int cut = metadataUrl.lastIndexOf('@'); -if (cut > 0) { -return metadataUrl.substring(0, cut); -} -return defaultPrefix; +return getMetadataUrl().getIdentifier(); } public String[] getRealizationProviders() { @@ -558,8 +551,14 @@ abstract public class KylinConfigBase implements Serializable { return Integer.parseInt(getOptional("kylin.storage.default", "2")); } -public String getStorageUrl() { -return getOptional("kylin.storage.url"); +public StorageURL getStorageUrl() { +String url = getOptional("kylin.storage.url", "default@hbase"); + +// for backward compatibility +if ("hbase".equals(url)) +url = "default@hbase"; + +return StorageURL.valueOf(url); } public String getHBaseClusterFs() { @@ -987,10 +986,7 @@ abstract public class KylinConfigBase implements Serializable { } public String getResourceStoreImpl() { -String metadataUrl =
[45/50] [abbrv] kylin git commit: KYLIN-2635 optimize determined case when filters
KYLIN-2635 optimize determined case when filters Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2c549895 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2c549895 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2c549895 Branch: refs/heads/KYLIN-2606 Commit: 2c549895dab065491faef3a46cf0b710791ef2af Parents: f870c6c Author: Hongbin MaAuthored: Mon May 22 15:05:20 2017 +0800 Committer: Hongbin Ma Committed: Tue May 23 20:30:06 2017 +0800 -- .../kylin/dict/BuiltInFunctionTransformer.java | 2 + .../kylin/metadata/filter/CaseTupleFilter.java | 52 ++-- .../metadata/filter/CompareTupleFilter.java | 29 +-- .../filter/FilterOptimizeTransformer.java | 88 ++-- .../filter/IOptimizeableTupleFilter.java| 22 + .../filter/ITupleFilterTransformer.java | 5 ++ .../metadata/filter/LogicalTupleFilter.java | 27 +- .../kylin/metadata/filter/TupleFilter.java | 1 - .../gtrecord/GTCubeStorageQueryBase.java| 26 +++--- .../kylin/query/relnode/OLAPFilterRel.java | 2 +- .../apache/kylin/query/relnode/OLAPJoinRel.java | 1 + .../kylin/rest/controller/UserController.java | 4 +- 12 files changed, 203 insertions(+), 56 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/2c549895/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java -- diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java b/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java index f5cbe68..7a48a1c 100755 --- a/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java +++ b/core-dictionary/src/main/java/org/apache/kylin/dict/BuiltInFunctionTransformer.java @@ -41,6 +41,8 @@ import com.google.common.primitives.Primitives; /** * only take effect when the compare filter has function + * + * is a first type transformer defined in ITupleFilterTransformer */ public class BuiltInFunctionTransformer implements ITupleFilterTransformer { public static final Logger logger = LoggerFactory.getLogger(BuiltInFunctionTransformer.class); http://git-wip-us.apache.org/repos/asf/kylin/blob/2c549895/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java -- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java index 2b00d69..9083212 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CaseTupleFilter.java @@ -26,11 +26,13 @@ import java.util.List; import org.apache.kylin.metadata.tuple.IEvaluatableTuple; +import com.google.common.collect.Lists; + /** * @author xjiang * */ -public class CaseTupleFilter extends TupleFilter { +public class CaseTupleFilter extends TupleFilter implements IOptimizeableTupleFilter { private List whenFilters; private List thenFilters; @@ -40,6 +42,12 @@ public class CaseTupleFilter extends TupleFilter { public CaseTupleFilter() { super(new ArrayList(), FilterOperatorEnum.CASE); +reinit(); +} + +private void reinit() { +this.children.clear(); + this.filterIndex = 0; this.values = Collections.emptyList(); this.whenFilters = new ArrayList(); @@ -47,14 +55,31 @@ public class CaseTupleFilter extends TupleFilter { this.elseFilter = null; } +public List getWhenFilters() { +return Collections.unmodifiableList(whenFilters); +} + +public List getThenFilters() { +return Collections.unmodifiableList(thenFilters); +} + +public TupleFilter getElseFilter() { +return elseFilter; +} + @Override public void addChild(TupleFilter child) { -super.addChild(child); + if (this.filterIndex % 2 == 0) { -this.whenFilters.add(child); +this.elseFilter = child; } else { +this.whenFilters.add(this.elseFilter); this.thenFilters.add(child); +this.elseFilter = null; } + +super.addChild(child); + this.filterIndex++; } @@ -65,9 +90,7 @@ public class CaseTupleFilter extends TupleFilter { @Override public boolean evaluate(IEvaluatableTuple tuple, IFilterCodeSystem cs) { -if (whenFilters.size() != thenFilters.size()) { -elseFilter =
[49/50] [abbrv] kylin git commit: minor, fix CI
minor, fix CI Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/fdacf5d3 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/fdacf5d3 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/fdacf5d3 Branch: refs/heads/KYLIN-2606 Commit: fdacf5d3fac8740ab031f35d6317571f11a87c23 Parents: 5d2934b Author: Hongbin MaAuthored: Wed May 24 10:42:30 2017 +0800 Committer: hongbin ma Committed: Wed May 24 10:52:57 2017 +0800 -- kylin-it/src/test/resources/query/sql_subquery/query32.sql | 2 +- kylin-it/src/test/resources/query/sql_subquery/query33.sql | 2 +- kylin-it/src/test/resources/query/sql_subquery/query34.sql | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/fdacf5d3/kylin-it/src/test/resources/query/sql_subquery/query32.sql -- diff --git a/kylin-it/src/test/resources/query/sql_subquery/query32.sql b/kylin-it/src/test/resources/query/sql_subquery/query32.sql index 394ea15..6565aa0 100644 --- a/kylin-it/src/test/resources/query/sql_subquery/query32.sql +++ b/kylin-it/src/test/resources/query/sql_subquery/query32.sql @@ -1,5 +1,5 @@ - select sum(price) as sum_price, (case when '1'='1' then test_cal_dt.week_beg_dt when '1'='2' then test_kylin_fact.lstg_site_id else test_kylin_fact.leaf_categ_id end) as xxx + select (case when '1'='1' then test_cal_dt.week_beg_dt when '1'='2' then test_kylin_fact.lstg_site_id else test_kylin_fact.leaf_categ_id end) as xxx , sum(price) as sum_price from test_kylin_fact inner JOIN edw.test_cal_dt as test_cal_dt ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt http://git-wip-us.apache.org/repos/asf/kylin/blob/fdacf5d3/kylin-it/src/test/resources/query/sql_subquery/query33.sql -- diff --git a/kylin-it/src/test/resources/query/sql_subquery/query33.sql b/kylin-it/src/test/resources/query/sql_subquery/query33.sql index 08ecc8e..6ed1e37 100644 --- a/kylin-it/src/test/resources/query/sql_subquery/query33.sql +++ b/kylin-it/src/test/resources/query/sql_subquery/query33.sql @@ -1,5 +1,5 @@ - select sum(price) as sum_price, lstg_format_name,(case when '2'='1' then test_kylin_fact.lstg_site_id when '2'='2' then test_cal_dt.week_beg_dt else test_kylin_fact.leaf_categ_id end) as xxx + selectlstg_format_name,(case when '2'='1' then test_kylin_fact.lstg_site_id when '2'='2' then test_cal_dt.week_beg_dt else test_kylin_fact.leaf_categ_id end) as xxx ,sum(price) as sum_price from test_kylin_fact inner JOIN edw.test_cal_dt as test_cal_dt ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt http://git-wip-us.apache.org/repos/asf/kylin/blob/fdacf5d3/kylin-it/src/test/resources/query/sql_subquery/query34.sql -- diff --git a/kylin-it/src/test/resources/query/sql_subquery/query34.sql b/kylin-it/src/test/resources/query/sql_subquery/query34.sql index 0dda9aa..56d04fa 100644 --- a/kylin-it/src/test/resources/query/sql_subquery/query34.sql +++ b/kylin-it/src/test/resources/query/sql_subquery/query34.sql @@ -1,5 +1,5 @@ - select sum(price) as sum_price, (case when '3'='1' then test_cal_dt.week_beg_dt else test_kylin_fact.cal_dt end) as xxx + select (case when '3'='1' then test_cal_dt.week_beg_dt else test_kylin_fact.cal_dt end) as xxx , sum(price) as sum_price from test_kylin_fact inner JOIN edw.test_cal_dt as test_cal_dt ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt
[28/50] [abbrv] kylin git commit: Revert "minor, fix csv export garbled issue"
Revert "minor, fix csv export garbled issue" This reverts commit 949237ddca0ab24bf8121ccc002d802df678761c. Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/f9b6db6a Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/f9b6db6a Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/f9b6db6a Branch: refs/heads/KYLIN-2606 Commit: f9b6db6a582747f58e91d22de76ff7549172f460 Parents: ce09d6c Author: shaofengshiAuthored: Mon May 22 16:52:47 2017 +0800 Committer: shaofengshi Committed: Mon May 22 16:52:47 2017 +0800 -- .../java/org/apache/kylin/rest/controller/QueryController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/f9b6db6a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java index 99447a1..c5f896d 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java +++ b/server-base/src/main/java/org/apache/kylin/rest/controller/QueryController.java @@ -103,7 +103,7 @@ public class QueryController extends BasicController { @ResponseBody public void downloadQueryResult(@PathVariable String format, SQLRequest sqlRequest, HttpServletResponse response) { SQLResponse result = queryService.doQueryWithCache(sqlRequest); -response.setContentType("text/" + format + ";charset=ansi"); +response.setContentType("text/" + format + ";charset=utf-8"); response.setHeader("Content-Disposition", "attachment; filename=\"result." + format + "\""); ICsvListWriter csvWriter = null;
[31/50] [abbrv] kylin git commit: minor, materialize lookup views as external table
minor, materialize lookup views as external table Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/4766c789 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/4766c789 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/4766c789 Branch: refs/heads/KYLIN-2606 Commit: 4766c789d8298b477edad7a9e86ebaec603f1b52 Parents: 8cd807f Author: Cheng WangAuthored: Tue May 23 11:10:41 2017 +0800 Committer: æ Committed: Tue May 23 11:30:25 2017 +0800 -- .../src/main/java/org/apache/kylin/source/hive/HiveMRInput.java| 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/4766c789/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java -- diff --git a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java index bdbe321..dffba8a 100644 --- a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java +++ b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java @@ -193,7 +193,7 @@ public class HiveMRInput implements IMRInput { if (lookUpTableDesc.isView()) { StringBuilder createIntermediateTableHql = new StringBuilder(); createIntermediateTableHql.append("DROP TABLE IF EXISTS " + lookUpTableDesc.getMaterializedName() + ";\n"); -createIntermediateTableHql.append("CREATE TABLE IF NOT EXISTS " + lookUpTableDesc.getMaterializedName() + "\n"); +createIntermediateTableHql.append("CREATE EXTERNAL TABLE IF NOT EXISTS " + lookUpTableDesc.getMaterializedName() + "\n"); createIntermediateTableHql.append("LOCATION '" + jobWorkingDir + "/" + lookUpTableDesc.getMaterializedName() + "'\n"); createIntermediateTableHql.append("AS SELECT * FROM " + lookUpTableDesc.getIdentity() + ";\n"); hiveCmdBuilder.addStatement(createIntermediateTableHql.toString());
[24/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java new file mode 100644 index 000..ddf745a --- /dev/null +++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/HybridControllerV2.java @@ -0,0 +1,97 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +package org.apache.kylin.rest.controller2; + +import org.apache.kylin.rest.controller.BasicController; +import org.apache.kylin.rest.msg.MsgPicker; +import org.apache.kylin.rest.request.HybridRequest; +import org.apache.kylin.rest.response.EnvelopeResponse; +import org.apache.kylin.rest.response.ResponseCode; +import org.apache.kylin.rest.service.HybridService; +import org.apache.kylin.storage.hybrid.HybridInstance; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +@RequestMapping(value = "/hybrids") +public class HybridControllerV2 extends BasicController { + +@Autowired +private HybridService hybridService; + +@RequestMapping(value = "", method = RequestMethod.POST, produces = { "application/vnd.apache.kylin-v2+json" }) +@ResponseBody +public EnvelopeResponse createV2(@RequestHeader("Accept-Language") String lang, @RequestBody HybridRequest request) { +MsgPicker.setMsg(lang); + +checkRequiredArg("hybrid", request.getHybrid()); +checkRequiredArg("project", request.getProject()); +checkRequiredArg("model", request.getModel()); +checkRequiredArg("cubes", request.getCubes()); +HybridInstance instance = hybridService.createHybridCube(request.getHybrid(), request.getProject(), request.getModel(), request.getCubes()); +return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, instance, ""); +} + +@RequestMapping(value = "", method = RequestMethod.PUT, produces = { "application/vnd.apache.kylin-v2+json" }) +@ResponseBody +public EnvelopeResponse updateV2(@RequestHeader("Accept-Language") String lang, @RequestBody HybridRequest request) { +MsgPicker.setMsg(lang); + +checkRequiredArg("hybrid", request.getHybrid()); +checkRequiredArg("project", request.getProject()); +checkRequiredArg("model", request.getModel()); +checkRequiredArg("cubes", request.getCubes()); +HybridInstance instance = hybridService.updateHybridCube(request.getHybrid(), request.getProject(), request.getModel(), request.getCubes()); +return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, instance, ""); +} + +@RequestMapping(value = "", method = RequestMethod.DELETE, produces = { "application/vnd.apache.kylin-v2+json" }) +@ResponseBody +public void deleteV2(@RequestHeader("Accept-Language") String lang, @RequestBody HybridRequest request) { +MsgPicker.setMsg(lang); + +checkRequiredArg("hybrid", request.getHybrid()); +checkRequiredArg("project", request.getProject()); +checkRequiredArg("model", request.getModel()); +hybridService.deleteHybridCube(request.getHybrid(), request.getProject(), request.getModel()); +} + +@RequestMapping(value = "", method = RequestMethod.GET, produces = { "application/vnd.apache.kylin-v2+json" }) +@ResponseBody +public EnvelopeResponse listV2(@RequestHeader("Accept-Language") String lang, @RequestParam(required = false) String project, @RequestParam(required = false) String model) { +MsgPicker.setMsg(lang); + +
[40/50] [abbrv] kylin git commit: KYLIN-2603, push down having clause when possible
KYLIN-2603, push down having clause when possible Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/e1bc72e3 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/e1bc72e3 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/e1bc72e3 Branch: refs/heads/KYLIN-2606 Commit: e1bc72e36d83a42d364e6d9b0ee893fbc018d498 Parents: 83fb144 Author: Li YangAuthored: Wed May 10 21:01:53 2017 +0800 Committer: hongbin ma Committed: Tue May 23 20:18:17 2017 +0800 -- .../cube/gridtable/ScanRangePlannerBase.java| 3 +- .../org/apache/kylin/cube/model/RowKeyDesc.java | 16 +- .../kylin/gridtable/GTAggregateScanner.java | 223 ++- .../apache/kylin/gridtable/GTScanRequest.java | 19 +- .../kylin/gridtable/GTScanRequestBuilder.java | 8 +- .../java/org/apache/kylin/gridtable/GTUtil.java | 33 ++- .../apache/kylin/metadata/model/ColumnDesc.java | 2 + .../apache/kylin/metadata/model/TblColRef.java | 2 + .../kylin/metadata/realization/SQLDigest.java | 36 ++- .../storage/gtrecord/CubeScanRangePlanner.java | 12 +- .../storage/gtrecord/CubeSegmentScanner.java| 10 +- .../gtrecord/GTCubeStorageQueryBase.java| 51 - .../gtrecord/GTCubeStorageQueryRequest.java | 14 +- .../kylin/storage/gtrecord/ScannerWorker.java | 4 + .../storage/gtrecord/DictGridTableTest.java | 14 ++ .../kylin/storage/hbase/ITStorageTest.java | 6 +- .../kylin/query/relnode/OLAPAggregateRel.java | 6 +- .../apache/kylin/query/relnode/OLAPContext.java | 9 +- .../kylin/query/relnode/OLAPFilterRel.java | 9 +- 19 files changed, 370 insertions(+), 107 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/e1bc72e3/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java index d938f2b..ed0a77a 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/ScanRangePlannerBase.java @@ -44,14 +44,15 @@ import com.google.common.collect.Sets; public abstract class ScanRangePlannerBase { //GT -protected TupleFilter gtFilter; protected GTInfo gtInfo; +protected TupleFilter gtFilter; protected Pair gtStartAndEnd; protected TblColRef gtPartitionCol; protected ImmutableBitSet gtDimensions; protected ImmutableBitSet gtAggrGroups; protected ImmutableBitSet gtAggrMetrics; protected String[] gtAggrFuncs; +protected TupleFilter havingFilter; protected boolean isPartitionColUsingDatetimeEncoding = true; protected RecordComparator rangeStartComparator; http://git-wip-us.apache.org/repos/asf/kylin/blob/e1bc72e3/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java index 00557c5..124f126 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/RowKeyDesc.java @@ -18,21 +18,23 @@ package org.apache.kylin.cube.model; -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.Objects; -import org.apache.commons.lang.ArrayUtils; -import org.apache.kylin.metadata.model.TblColRef; - import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import org.apache.commons.lang.ArrayUtils; +import org.apache.kylin.metadata.model.TblColRef; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.base.Objects; + /** */ +@SuppressWarnings("serial") @JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE) public class RowKeyDesc implements java.io.Serializable { http://git-wip-us.apache.org/repos/asf/kylin/blob/e1bc72e3/core-cube/src/main/java/org/apache/kylin/gridtable/GTAggregateScanner.java -- diff --git
[29/50] [abbrv] kylin git commit: KYLIN-2637 The tips is not shown after creating project successfully.
KYLIN-2637 The tips is not shown after creating project successfully. Signed-off-by: Billy LiuProject: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ce6e3ede Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ce6e3ede Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ce6e3ede Branch: refs/heads/KYLIN-2606 Commit: ce6e3ede2f670bf037a55234630b85098265075a Parents: f9b6db6 Author: 10069681 Authored: Mon May 22 20:34:53 2017 +0800 Committer: Billy Liu Committed: Tue May 23 09:43:07 2017 +0800 -- webapp/app/js/controllers/page.js | 16 +--- 1 file changed, 13 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/ce6e3ede/webapp/app/js/controllers/page.js -- diff --git a/webapp/app/js/controllers/page.js b/webapp/app/js/controllers/page.js index 056cc48..c426516 100644 --- a/webapp/app/js/controllers/page.js +++ b/webapp/app/js/controllers/page.js @@ -188,7 +188,7 @@ KylinApp.controller('PageCtrl', function ($scope, $q, AccessService, $modal, $lo }); -var projCtrl = function ($scope, $location, $modalInstance, ProjectService, MessageService, projects, project, SweetAlert, ProjectModel, $cookieStore, $route) { +var projCtrl = function ($scope, $location, $modalInstance, ProjectService, MessageService, projects, project, SweetAlert, ProjectModel, $cookieStore, $route, $timeout) { $scope.state = { isEdit: false, oldProjName: null, @@ -240,10 +240,20 @@ var projCtrl = function ($scope, $location, $modalInstance, ProjectService, Mess } else { ProjectService.save({}, {projectDescData: angular.toJson($scope.proj)}, function (newProj) { -SweetAlert.swal('Success!', 'New project created successfully!', 'success'); $modalInstance.dismiss('cancel'); $cookieStore.put("project", newProj.name); -location.reload(); +SweetAlert.swal({ + title: "Success!", + text: "New project created successfully!", + confirmButtonClass: 'btn-primary', + type: "success" +},function(){ + location.reload(); +}); + +$timeout(function () { + location.reload(); +}, 3000); }, function (e) { if (e.data && e.data.exception) { var message = e.data.exception;
[01/50] [abbrv] kylin git commit: KYLIN-2557 code review [Forced Update!]
Repository: kylin Updated Branches: refs/heads/KYLIN-2606 f8336d4bb -> d610a6dd5 (forced update) KYLIN-2557 code review Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/1c80c29b Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1c80c29b Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1c80c29b Branch: refs/heads/KYLIN-2606 Commit: 1c80c29b22d9c00de1eb2e9a09c21377714248b7 Parents: e6a8a00 Author: Yang LiAuthored: Sun May 14 20:14:29 2017 +0800 Committer: Yang Li Committed: Sun May 14 20:14:29 2017 +0800 -- .../kylin/storage/hbase/HBaseConnection.java| 54 ++-- 1 file changed, 27 insertions(+), 27 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/1c80c29b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java -- diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java index ef82641..5fafa2b 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/HBaseConnection.java @@ -18,7 +18,18 @@ package org.apache.kylin.storage.hbase; -import com.google.common.collect.Sets; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Collection; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; @@ -39,17 +50,7 @@ import org.apache.kylin.common.util.HadoopUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.util.Collection; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; +import com.google.common.collect.Sets; /** * @author yangli9 @@ -67,8 +68,6 @@ public class HBaseConnection { private static ExecutorService coprocessorPool = null; -private static DistributedLock lock = null; - static { Runtime.getRuntime().addShutdownHook(new Thread() { @Override @@ -268,18 +267,20 @@ public class HBaseConnection { } public static void createHTableIfNeeded(Connection conn, String table, String... families) throws IOException { -Admin hbase = conn.getAdmin(); +Admin admin = conn.getAdmin(); TableName tableName = TableName.valueOf(table); -boolean hasLock = false; +DistributedLock lock = null; +String lockPath = getLockPath(table); + try { if (tableExists(conn, table)) { logger.debug("HTable '" + table + "' already exists"); -Set existingFamilies = getFamilyNames(hbase.getTableDescriptor(tableName)); +Set existingFamilies = getFamilyNames(admin.getTableDescriptor(tableName)); boolean wait = false; for (String family : families) { if (existingFamilies.contains(family) == false) { logger.debug("Adding family '" + family + "' to HTable '" + table + "'"); -hbase.addColumn(tableName, newFamilyDescriptor(family)); +admin.addColumn(tableName, newFamilyDescriptor(family)); // addColumn() is async, is there a way to wait it finish? wait = true; } @@ -295,7 +296,8 @@ public class HBaseConnection { } lock = KylinConfig.getInstanceFromEnv().getDistributedLockFactory().lockForCurrentProcess(); -hasLock = lock.lock(getLockPath(table), Long.MAX_VALUE); +if (!lock.lock(lockPath, Long.MAX_VALUE)) +throw new RuntimeException("Cannot acquire lock to create HTable " + table); if (tableExists(conn, table)) { logger.debug("HTable '" + table + "' already exists"); @@ -313,15 +315,13 @@ public class HBaseConnection { } } -
[09/50] [abbrv] kylin git commit: KYLIN-2577, refine hive configurations during cubing steps
KYLIN-2577, refine hive configurations during cubing steps Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/7c152c51 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/7c152c51 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/7c152c51 Branch: refs/heads/KYLIN-2606 Commit: 7c152c515ce6cebe380c4e1b7c16d109192308db Parents: 0061900 Author: Cheng WangAuthored: Thu May 18 11:05:34 2017 +0800 Committer: liyang-gmt8 Committed: Thu May 18 15:27:36 2017 +0800 -- build/bin/load-hive-conf.sh | 2 +- .../kylin/common/util/HiveCmdBuilder.java | 56 +++- .../kylin/common/util/HiveCmdBuilderTest.java | 2 +- .../kylin/job/engine/JobEngineConfig.java | 43 --- .../source/hive/CreateFlatHiveTableStep.java| 3 -- .../apache/kylin/source/hive/HiveMRInput.java | 4 -- 6 files changed, 57 insertions(+), 53 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/7c152c51/build/bin/load-hive-conf.sh -- diff --git a/build/bin/load-hive-conf.sh b/build/bin/load-hive-conf.sh index a5046f0..a42cd0c 100644 --- a/build/bin/load-hive-conf.sh +++ b/build/bin/load-hive-conf.sh @@ -11,5 +11,5 @@ hive_conf_prop="${KYLIN_HOME}/logs/hive_props" rm -rf ${hive_conf_prop} export ENABLE_CHECK_ENV=false ${dir}/kylin.sh org.apache.kylin.tool.HiveConfigCLI ${hive_conf_dir} ${hive_conf_prop} -[[ 0 == $? ]] || quit "Error, can not parse ${hive_conf_dir} and can not apply it to hive relevant check." +[[ 0 == $? ]] || quit "Can not parse xml file: ${hive_conf_dir}, please check it." hive_conf_properties=`cat ${hive_conf_prop}` \ No newline at end of file http://git-wip-us.apache.org/repos/asf/kylin/blob/7c152c51/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java -- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java b/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java index 255867a..2f6b9a0 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java @@ -27,17 +27,25 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; import org.apache.kylin.common.KylinConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; import com.google.common.collect.Lists; public class HiveCmdBuilder { private static final Logger logger = LoggerFactory.getLogger(HiveCmdBuilder.class); +public static final String HIVE_CONF_FILENAME = "kylin_hive_conf"; + public enum HiveClientMode { CLI, BEELINE } @@ -50,6 +58,7 @@ public class HiveCmdBuilder { public HiveCmdBuilder() { kylinConfig = KylinConfig.getInstanceFromEnv(); clientMode = HiveClientMode.valueOf(kylinConfig.getHiveClientMode().toUpperCase()); +loadHiveConfiguration(); } public String build() { @@ -75,8 +84,8 @@ public class HiveCmdBuilder { bw.newLine(); } buf.append("beeline "); -buf.append(parseProps()); buf.append(kylinConfig.getHiveBeelineParams()); +buf.append(parseProps()); buf.append(" -f "); buf.append(tmpHql.getAbsolutePath()); buf.append(";ret_code=$?;rm -f "); @@ -123,6 +132,7 @@ public class HiveCmdBuilder { } public void setHiveConfProps(Map hiveConfProps) { +this.hiveConfProps.clear(); this.hiveConfProps.putAll(hiveConfProps); } @@ -144,4 +154,48 @@ public class HiveCmdBuilder { public String toString() { return build(); } + +private void loadHiveConfiguration() { + +File hiveConfFile; +String hiveConfFileName = (HIVE_CONF_FILENAME + ".xml"); +String path = System.getProperty(KylinConfig.KYLIN_CONF); + +if (StringUtils.isNotEmpty(path)) { +hiveConfFile = new File(path, hiveConfFileName); +} else { +path = KylinConfig.getKylinHome(); +if (StringUtils.isEmpty(path)) { +logger.error("KYLIN_HOME is not set, can not locate hive conf: {}.xml", HIVE_CONF_FILENAME); +return; +} +
[14/50] [abbrv] kylin git commit: Merge commit '87fedf75e5bbf61a33cf1b31720ad9ac55de6287'
Merge commit '87fedf75e5bbf61a33cf1b31720ad9ac55de6287' Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/f36372bc Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/f36372bc Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/f36372bc Branch: refs/heads/KYLIN-2606 Commit: f36372bc657b1edb312b36a071b077cde184eab8 Parents: 8ce972f 87fedf7 Author: Hongbin MaAuthored: Fri May 19 17:55:26 2017 +0800 Committer: Hongbin Ma Committed: Fri May 19 17:55:26 2017 +0800 -- .../rel/rules/OLAPJoinPushThroughJoinRule.java | 172 .../rel/rules/OLAPJoinPushThroughJoinRule2.java | 205 + .../java/org/apache/calcite/tools/Programs.java | 438 +++ build/bin/find-hive-dependency.sh | 4 +- build/bin/kylin.sh | 41 +- build/bin/sample.sh | 24 +- .../apache/kylin/common/KylinConfigBase.java| 8 +- .../kylin/common/lock/DistributedLock.java | 63 ++- .../common/lock/DistributedLockFactory.java | 43 ++ .../kylin/common/restclient/RestClient.java | 16 +- .../org/apache/kylin/common/util/CheckUtil.java | 50 ++- .../apache/kylin/cube/model/DimensionDesc.java | 3 +- .../kylin/dict/BuiltInFunctionTransformer.java | 8 +- .../kylin/dict/GlobalDictionaryBuilder.java | 71 +-- .../impl/threadpool/DistributedScheduler.java | 55 +-- .../kylin/job/lock/DistributedJobLock.java | 24 - .../kylin/metadata/cachesync/Broadcaster.java | 66 ++- .../metadata/filter/function/BuiltInMethod.java | 39 +- .../metadata/filter/function/LikeMatchers.java | 141 ++ examples/sample_cube/create_sample_tables.sql | 10 +- .../kylin/job/BaseTestDistributedScheduler.java | 35 +- .../job/ITDistributedSchedulerBaseTest.java | 6 +- .../job/ITDistributedSchedulerTakeOverTest.java | 2 +- .../resources/query/sql_subquery/query17.sql| 17 + .../resources/query/sql_subquery/query18.sql| 23 + .../resources/query/sql_subquery/query19.sql| 20 + .../resources/query/sql_subquery/query21.sql| 26 ++ .../resources/query/sql_subquery/query22.sql| 25 ++ .../resources/query/sql_subquery/query23.sql| 26 ++ .../resources/query/sql_subquery/query24.sql| 29 ++ .../resources/query/sql_subquery/query25.sql| 22 + .../resources/query/sql_subquery/query26.sql| 16 + .../resources/query/sql_subquery/query27.sql| 20 + .../resources/query/sql_subquery/query28.sql| 21 + .../query/sql_subquery/query29.sql.todo | 22 + .../kylin/query/relnode/OLAPAggregateRel.java | 4 +- .../apache/kylin/query/relnode/OLAPContext.java | 10 + .../kylin/query/relnode/OLAPFilterRel.java | 2 +- .../apache/kylin/query/relnode/OLAPJoinRel.java | 12 +- .../kylin/query/relnode/OLAPProjectRel.java | 15 +- .../rest/security/AuthoritiesPopulator.java | 20 +- .../apache/kylin/rest/service/AclService.java | 1 - .../kylin/rest/service/CacheServiceTest.java| 10 +- .../kylin/storage/hbase/HBaseConnection.java| 30 +- .../hbase/util/ZookeeperDistributedJobLock.java | 257 --- .../hbase/util/ZookeeperDistributedLock.java| 307 + .../storage/hbase/util/ZookeeperJobLock.java| 144 ++ .../apache/kylin/storage/hdfs/LockManager.java | 8 +- .../util/ITZookeeperDistributedLockTest.java| 254 +++ .../apache/kylin/tool/MetadataCleanupJob.java | 14 +- webapp/app/js/controllers/access.js | 1 + webapp/app/js/controllers/admin.js | 12 +- webapp/app/js/controllers/cubeMeasures.js | 2 +- webapp/app/js/controllers/query.js | 4 +- 54 files changed, 2273 insertions(+), 625 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/f36372bc/build/bin/find-hive-dependency.sh -- http://git-wip-us.apache.org/repos/asf/kylin/blob/f36372bc/build/bin/sample.sh -- diff --cc build/bin/sample.sh index 2e13805,10900bb..b9c4ea3 --- a/build/bin/sample.sh +++ b/build/bin/sample.sh @@@ -52,10 -62,10 +63,11 @@@ the else beeline_params=${beeline_params/${hive2_url}/${hive2_url}${sample_database}} fi - beeline ${hive_conf_properties} ${beeline_params} -f ${KYLIN_HOME}/sample_cube/create_sample_tables.sql || { exit 1; } -beeline ${beeline_params} --hivevar hdfs_tmp_dir=${hdfs_tmp_dir} -f ${KYLIN_HOME}/sample_cube/create_sample_tables.sql || { exit 1; } ++ ++beeline ${hive_conf_properties} --hivevar hdfs_tmp_dir=${hdfs_tmp_dir} ${beeline_params} -f ${KYLIN_HOME}/sample_cube/create_sample_tables.sql || { exit 1; }
[12/50] [abbrv] kylin git commit: fix KYLIN-2594: After reloading metadata, refresh the project list
fix KYLIN-2594: After reloading metadata, refresh the project list Signed-off-by: Billy LiuProject: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/87fedf75 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/87fedf75 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/87fedf75 Branch: refs/heads/KYLIN-2606 Commit: 87fedf75e5bbf61a33cf1b31720ad9ac55de6287 Parents: a34db26 Author: pengjianlin Authored: Fri May 19 16:24:28 2017 +0800 Committer: Billy Liu Committed: Fri May 19 16:44:28 2017 +0800 -- webapp/app/js/controllers/admin.js | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/87fedf75/webapp/app/js/controllers/admin.js -- diff --git a/webapp/app/js/controllers/admin.js b/webapp/app/js/controllers/admin.js index 10e2c38..37c1d67 100644 --- a/webapp/app/js/controllers/admin.js +++ b/webapp/app/js/controllers/admin.js @@ -18,7 +18,7 @@ 'use strict'; -KylinApp.controller('AdminCtrl', function ($scope, AdminService, CacheService, TableService, loadingRequest, MessageService, $modal, SweetAlert,kylinConfig,ProjectModel,$window) { +KylinApp.controller('AdminCtrl', function ($scope, AdminService, CacheService, TableService, loadingRequest, MessageService, ProjectService, $modal, SweetAlert,kylinConfig,ProjectModel,$window) { $scope.configStr = ""; $scope.envStr = ""; @@ -84,7 +84,7 @@ KylinApp.controller('AdminCtrl', function ($scope, AdminService, CacheService, T } }); } - + $scope.reloadMeta = function () { SweetAlert.swal({ title: '', @@ -98,6 +98,9 @@ KylinApp.controller('AdminCtrl', function ($scope, AdminService, CacheService, T if (isConfirm) { CacheService.clean({}, function () { SweetAlert.swal('Success!', 'Cache reload successfully', 'success'); + ProjectService.listReadable({}, function(projects) { +ProjectModel.setProjects(projects); + }); }, function (e) { if (e.data && e.data.exception) { var message = e.data.exception;
[05/50] [abbrv] kylin git commit: KYLIN-2625 not null filter clause should be evaluable in storage
KYLIN-2625 not null filter clause should be evaluable in storage Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/c9dc7cc7 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/c9dc7cc7 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/c9dc7cc7 Branch: refs/heads/KYLIN-2606 Commit: c9dc7cc78c5eed40f4c5a438423b857a145f17b1 Parents: a38b02d Author: Hongbin MaAuthored: Tue May 16 18:04:03 2017 +0800 Committer: Roger Shi Committed: Tue May 16 20:59:12 2017 +0800 -- .../metadata/filter/CompareTupleFilter.java | 3 ++- .../test/resources/query/sql_limit/query04.sql | 25 2 files changed, 27 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/c9dc7cc7/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java -- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java index d783e52..2771250 100755 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/filter/CompareTupleFilter.java @@ -215,7 +215,8 @@ public class CompareTupleFilter extends TupleFilter { @Override public boolean isEvaluable() { return (column != null || (function != null && function.isEvaluable())) // -&& !conditionValues.isEmpty() && secondColumn == null; +&& (!conditionValues.isEmpty() || operator == FilterOperatorEnum.ISNOTNULL || operator == FilterOperatorEnum.ISNULL) // +&& secondColumn == null; } public boolean alwaysReturnTrue() { http://git-wip-us.apache.org/repos/asf/kylin/blob/c9dc7cc7/kylin-it/src/test/resources/query/sql_limit/query04.sql -- diff --git a/kylin-it/src/test/resources/query/sql_limit/query04.sql b/kylin-it/src/test/resources/query/sql_limit/query04.sql new file mode 100644 index 000..381ab65 --- /dev/null +++ b/kylin-it/src/test/resources/query/sql_limit/query04.sql @@ -0,0 +1,25 @@ +-- +-- Licensed to the Apache Software Foundation (ASF) under one +-- or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information +-- regarding copyright ownership. The ASF licenses this file +-- to you under the Apache License, Version 2.0 (the +-- "License"); you may not use this file except in compliance +-- with the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + + + +select * from ( +select * from test_kylin_fact + where lstg_format_name is not null + ) limit 20 +
[39/50] [abbrv] kylin git commit: minor, use soft reference in dict cache
minor, use soft reference in dict cache Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ed0430bc Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ed0430bc Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ed0430bc Branch: refs/heads/KYLIN-2606 Commit: ed0430bc0649ac5b4de7a6c3df0f65b8121d12cd Parents: 0e44a19 Author: Li YangAuthored: Fri May 12 15:23:19 2017 +0800 Committer: hongbin ma Committed: Tue May 23 20:18:17 2017 +0800 -- .../src/main/java/org/apache/kylin/dict/DictionaryManager.java| 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/ed0430bc/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java -- diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java index bbe6cac..1628f4e 100644 --- a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java +++ b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java @@ -99,8 +99,7 @@ public class DictionaryManager { } })// .maximumSize(config.getCachedDictMaxEntrySize())// -.expireAfterWrite(1, TimeUnit.DAYS)// -.build(new CacheLoader () { +.expireAfterWrite(1, TimeUnit.DAYS).build(new CacheLoader () { @Override public DictionaryInfo load(String key) throws Exception { DictionaryInfo dictInfo = DictionaryManager.this.load(key, true);
[13/50] [abbrv] kylin git commit: KAP-733 minor UT fix
KAP-733 minor UT fix Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/8ce972fd Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/8ce972fd Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/8ce972fd Branch: refs/heads/KYLIN-2606 Commit: 8ce972fd6475e923af2a5e525d8ddb698d0dbadf Parents: 2dfc5bb Author: Li YangAuthored: Fri May 19 15:50:32 2017 +0800 Committer: liyang-gmt8 Committed: Fri May 19 17:25:55 2017 +0800 -- .../apache/kylin/common/util/LocalFileMetadataTestCase.java| 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/8ce972fd/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java -- diff --git a/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java b/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java index e5e4f8b..a44a55d 100644 --- a/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java +++ b/core-common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java @@ -81,7 +81,11 @@ public class LocalFileMetadataTestCase extends AbstractKylinTestCase { String dir = KylinConfig.getInstanceFromEnv().getHdfsWorkingDirectory(); if (dir.startsWith("file://")) dir = dir.substring("file://".length()); -return dir; +try { +return new File(dir).getCanonicalPath(); +} catch (IOException e) { +throw new RuntimeException(e); +} } protected ResourceStore getStore() {
[15/50] [abbrv] kylin git commit: KYLIN-2624 fix IT with refactored DistributedLock
KYLIN-2624 fix IT with refactored DistributedLock Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/be32f758 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/be32f758 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/be32f758 Branch: refs/heads/KYLIN-2606 Commit: be32f75883c21bf32545d1b06158ad7cf36d676b Parents: f36372b Author: Yang LiAuthored: Fri May 19 22:02:38 2017 +0800 Committer: Yang Li Committed: Fri May 19 22:02:38 2017 +0800 -- .../job/impl/threadpool/DistributedScheduler.java | 1 + .../hbase/util/ZookeeperDistributedLock.java| 16 2 files changed, 13 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/be32f758/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java -- diff --git a/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java b/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java index d01cb5a..8812dad 100644 --- a/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java +++ b/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java @@ -319,6 +319,7 @@ public class DistributedScheduler implements Scheduler, Conn } return path; } + @Override public void shutdown() throws SchedulerException { logger.info("Will shut down Job Engine "); http://git-wip-us.apache.org/repos/asf/kylin/blob/be32f758/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java -- diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java index d181d81..dc2a23e 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java @@ -281,10 +281,18 @@ public class ZookeeperDistributedLock implements DistributedLock, JobLock { // normalize lock path private String norm(String lockPath) { -if (lockPath.startsWith(zkPathBase)) -return lockPath; -else -return zkPathBase + (lockPath.startsWith("/") ? "" : "/") + lockPath; +if (!lockPath.startsWith(zkPathBase)) +lockPath = zkPathBase + (lockPath.startsWith("/") ? "" : "/") + lockPath; + +return dropDoubleSlash(lockPath); +} + +public static String dropDoubleSlash(String path) { +for (int n = Integer.MAX_VALUE; n > path.length();) { +n = path.length(); +path = path.replace("//", "/"); +} +return path; } //
[44/50] [abbrv] kylin git commit: KYLIN-2631 Seek to next model when no cube in current model satisfies query
KYLIN-2631 Seek to next model when no cube in current model satisfies query KYLIN-2631 bug fix Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/f870c6c4 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/f870c6c4 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/f870c6c4 Branch: refs/heads/KYLIN-2606 Commit: f870c6c4d64e4aa2ae5f3495534d97e04466b843 Parents: ada37a9 Author: Hongbin MaAuthored: Fri May 19 21:12:26 2017 +0800 Committer: Hongbin Ma Committed: Tue May 23 20:30:03 2017 +0800 -- .../apache/kylin/metadata/model/TblColRef.java | 20 +- .../kylin/metadata/realization/SQLDigest.java | 2 + .../gtrecord/GTCubeStorageQueryBase.java| 3 - .../kylin/query/relnode/OLAPTableScan.java | 13 +- .../relnode/OLAPToEnumerableConverter.java | 11 +- .../kylin/query/routing/ModelChooser.java | 219 -- .../apache/kylin/query/routing/QueryRouter.java | 2 +- .../kylin/query/routing/RealizationChooser.java | 224 +++ 8 files changed, 260 insertions(+), 234 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/f870c6c4/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java -- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java index aa4c056..3bca61c 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java @@ -87,8 +87,12 @@ public class TblColRef implements Serializable { checkArgument(col.table.getModel() == UNKNOWN_MODEL || col.table.getModel() == model); TableRef tableRef = model.findTable(alias); checkArgument(tableRef.getTableDesc().getIdentity().equals(col.column.getTable().getIdentity())); -col.table = tableRef; -col.identity = null; +checkArgument(tableRef.getTableDesc() == col.column.getTable()); +col.fixTableRef(tableRef); +} + +public static void unfixUnknownModel(TblColRef col) { +col.unfixTableRef(); } // for test mainly @@ -105,6 +109,7 @@ public class TblColRef implements Serializable { // private TableRef table; +private TableRef backupTable;// only used in fixTableRef() private ColumnDesc column; private String identity; private String parserDescription; @@ -119,6 +124,17 @@ public class TblColRef implements Serializable { this.column = column; } +public void fixTableRef(TableRef tableRef) { +this.backupTable = this.table; +this.table = tableRef; +this.identity = null; +} + +public void unfixTableRef() { +this.table = backupTable; +this.identity = null; +} + public ColumnDesc getColumnDesc() { return column; } http://git-wip-us.apache.org/repos/asf/kylin/blob/f870c6c4/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java -- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java index 03ff3ff..9ce65bb 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/SQLDigest.java @@ -96,6 +96,8 @@ public class SQLDigest { this.sortOrders = sortOrders; this.isRawQuery = isRawQuery(); this.limitPrecedesAggr = limitPrecedesAggr; + +this.includeSubqueryJoinParticipants(); } private boolean isRawQuery() { http://git-wip-us.apache.org/repos/asf/kylin/blob/f870c6c4/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java -- diff --git a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java index 5faa098..176d73c 100644 --- a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java +++ b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java @@ -99,9 +99,6 @@ public abstract class GTCubeStorageQueryBase implements IStorageQuery { protected GTCubeStorageQueryRequest
[06/50] [abbrv] kylin git commit: KYLIN-2621 The user of the LDAP group named admin always has ROLE_ADMIN permission
KYLIN-2621 The user of the LDAP group named admin always has ROLE_ADMIN permission Signed-off-by: Billy LiuProject: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/a34db26f Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/a34db26f Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/a34db26f Branch: refs/heads/KYLIN-2606 Commit: a34db26f0bd594b55fd4df29b66f15579bb3c8ff Parents: 858d947 Author: 10069681 Authored: Mon May 15 20:31:26 2017 +0800 Committer: Billy Liu Committed: Wed May 17 16:23:12 2017 +0800 -- .../rest/security/AuthoritiesPopulator.java | 20 ++-- 1 file changed, 10 insertions(+), 10 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/a34db26f/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java b/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java index 2b290ce..592791c 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java +++ b/server-base/src/main/java/org/apache/kylin/rest/security/AuthoritiesPopulator.java @@ -52,8 +52,11 @@ public class AuthoritiesPopulator extends DefaultLdapAuthoritiesPopulator { this.adminRoleAsAuthority = new SimpleGrantedAuthority(adminRole); String[] defaultRoles = StringUtils.split(defaultRole, ","); -if (ArrayUtils.contains(defaultRoles, Constant.ROLE_MODELER)) +if (ArrayUtils.contains(defaultRoles, Constant.ROLE_MODELER)) { this.defaultAuthorities.add(modelerAuthority); +this.defaultAuthorities.add(analystAuthority); +} + if (ArrayUtils.contains(defaultRoles, Constant.ROLE_ANALYST)) this.defaultAuthorities.add(analystAuthority); } @@ -62,19 +65,16 @@ public class AuthoritiesPopulator extends DefaultLdapAuthoritiesPopulator { public Set getGroupMembershipRoles(String userDn, String username) { Set authorities = super.getGroupMembershipRoles(userDn, username); -authorities.addAll(defaultAuthorities); +Set userAuthorities = new HashSet(); +userAuthorities.addAll(defaultAuthorities); if (authorities.contains(adminRoleAsAuthority)) { -authorities.add(adminAuthority); -authorities.add(modelerAuthority); -authorities.add(analystAuthority); -} - -if (authorities.contains(modelerAuthority)) { -authorities.add(analystAuthority); +userAuthorities.add(adminAuthority); +userAuthorities.add(modelerAuthority); +userAuthorities.add(analystAuthority); } -return authorities; +return userAuthorities; } }
[20/50] [abbrv] kylin git commit: KYLIN-2459 fix implementation
KYLIN-2459 fix implementation Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/429dfbdc Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/429dfbdc Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/429dfbdc Branch: refs/heads/KYLIN-2606 Commit: 429dfbdc93371e8df2095e35298425ccab8ac7de Parents: 1b864f0 Author: Yang LiAuthored: Sat May 20 19:52:30 2017 +0800 Committer: Roger Shi Committed: Sat May 20 21:35:36 2017 +0800 -- .../apache/kylin/common/KylinConfigBase.java| 36 ++-- .../kylin/common/persistence/ResourceStore.java | 45 ++-- .../common/persistence/ResourceStoreTest.java | 11 + .../common/util/LocalFileMetadataTestCase.java | 7 +-- 4 files changed, 32 insertions(+), 67 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/429dfbdc/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java -- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index df3baf4..8930129 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -218,6 +218,16 @@ abstract public class KylinConfigBase implements Serializable { return getMetadataUrl().getIdentifier(); } +public Map getResourceStoreImpls() { +Map r = Maps.newLinkedHashMap(); +// ref constants in ISourceAware +r.put("", "org.apache.kylin.common.persistence.FileResourceStore"); +r.put("hbase", "org.apache.kylin.storage.hbase.HBaseResourceStore"); +r.put("hdfs", "org.apache.kylin.storage.hdfs.HDFSResourceStore"); + r.putAll(getPropertiesByPrefix("kylin.metadata.resource-store-provider.")); // note the naming convention -- http://kylin.apache.org/development/coding_naming_convention.html +return r; +} + public String[] getRealizationProviders() { return getOptionalStringArray("kylin.metadata.realization-providers", // new String[] { "org.apache.kylin.cube.CubeManager", "org.apache.kylin.storage.hybrid.HybridManager" }); @@ -456,6 +466,10 @@ abstract public class KylinConfigBase implements Serializable { return getOptional("kylin.job.advanced-flat-table.class"); } +public String getJobTrackingURLPattern() { +return getOptional("kylin.job.tracking-url-pattern", ""); +} + // // SOURCE.HIVE // @@ -970,26 +984,4 @@ abstract public class KylinConfigBase implements Serializable { return Boolean.parseBoolean(getOptional("kylin.web.cross-domain-enabled", "true")); } -//ResourceStore Impl -/*public String getResourceStoreImpl() { -return getOptional("kylin.metadata.default-resource-store-impl", "org.apache.kylin.storage.hbase.HBaseResourceStore"); -}*/ - -public Map getResourceStoreImpls() { -Map r = Maps.newLinkedHashMap(); -// ref constants in ISourceAware -r.put("", "org.apache.kylin.common.persistence.FileResourceStore"); -r.put("hbase", "org.apache.kylin.storage.hbase.HBaseResourceStore"); -r.put("hdfs", "org.apache.kylin.storage.hdfs.HDFSResourceStore"); -r.putAll(getPropertiesByPrefix("kylin.resource.store.provider.")); -return r; -} - -public String getResourceStoreImpl() { -return getResourceStoreImpls().get(getMetadataUrl().getScheme()); -} - -public String getJobTrackingURLPattern() { -return getOptional("kylin.job.tracking-url-pattern", ""); -} } http://git-wip-us.apache.org/repos/asf/kylin/blob/429dfbdc/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java -- diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java index 0565c66..7fb93e7 100644 --- a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java +++ b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java @@ -39,6 +39,7 @@ import java.util.concurrent.ConcurrentMap; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.kylin.common.KylinConfig; +import
[33/50] [abbrv] kylin git commit: KYLIN-2640 refactor ISource API
http://git-wip-us.apache.org/repos/asf/kylin/blob/0a0edfef/server-base/src/main/java/org/apache/kylin/rest/service/TableSchemaUpdateChecker.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/TableSchemaUpdateChecker.java b/server-base/src/main/java/org/apache/kylin/rest/service/TableSchemaUpdateChecker.java new file mode 100644 index 000..a87ddd8 --- /dev/null +++ b/server-base/src/main/java/org/apache/kylin/rest/service/TableSchemaUpdateChecker.java @@ -0,0 +1,207 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +package org.apache.kylin.rest.service; + +import static com.google.common.base.Preconditions.checkNotNull; +import static java.lang.String.format; + +import java.util.List; +import java.util.Set; + +import javax.annotation.Nullable; + +import org.apache.kylin.cube.CubeInstance; +import org.apache.kylin.cube.CubeManager; +import org.apache.kylin.metadata.MetadataManager; +import org.apache.kylin.metadata.model.ColumnDesc; +import org.apache.kylin.metadata.model.DataModelDesc; +import org.apache.kylin.metadata.model.TableDesc; +import org.apache.kylin.metadata.model.TblColRef; + +import com.google.common.base.Predicate; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; + +public class TableSchemaUpdateChecker { +private final MetadataManager metadataManager; +private final CubeManager cubeManager; + +static class CheckResult { +private final boolean valid; +private final String reason; + +private CheckResult(boolean valid, String reason) { +this.valid = valid; +this.reason = reason; +} + +void raiseExceptionWhenInvalid() { +if (!valid) { +throw new RuntimeException(reason); +} +} + +static CheckResult validOnFirstLoad(String tableName) { +return new CheckResult(true, format("Table '%s' hasn't been loaded before", tableName)); +} + +static CheckResult validOnCompatibleSchema(String tableName) { +return new CheckResult(true, format("Table '%s' is compatible with all existing cubes", tableName)); +} + +static CheckResult invalidOnFetchSchema(String tableName, Exception e) { +return new CheckResult(false, format("Failed to fetch metadata of '%s': %s", tableName, e.getMessage())); +} + +static CheckResult invalidOnIncompatibleSchema(String tableName, List reasons) { +StringBuilder buf = new StringBuilder(); +for (String reason : reasons) { +buf.append("- ").append(reason).append("\n"); +} + +return new CheckResult(false, format("Found %d issue(s) with '%s':%n%s Please disable and purge related cube(s) first", reasons.size(), tableName, buf.toString())); +} +} + +TableSchemaUpdateChecker(MetadataManager metadataManager, CubeManager cubeManager) { +this.metadataManager = checkNotNull(metadataManager, "metadataManager is null"); +this.cubeManager = checkNotNull(cubeManager, "cubeManager is null"); +} + +private List findCubeByTable(final String fullTableName) { +Iterable relatedCubes = Iterables.filter(cubeManager.listAllCubes(), new Predicate() { +@Override +public boolean apply(@Nullable CubeInstance cube) { +if (cube == null || cube.allowBrokenDescriptor()) { +return false; +} +DataModelDesc model = cube.getModel(); +if (model == null) +return false; +return model.containsTable(fullTableName); +} +}); + +return ImmutableList.copyOf(relatedCubes); +} + +private boolean isColumnCompatible(ColumnDesc column, ColumnDesc newCol) { +if (!column.getName().equalsIgnoreCase(newCol.getName())) { +return false; +} + +if (column.getType().isIntegerFamily()) { +//
[50/50] [abbrv] kylin git commit: KYLIN-2606 Only return counter for precise count_distinct if query is exactAggregate
KYLIN-2606 Only return counter for precise count_distinct if query is exactAggregate Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/d610a6dd Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/d610a6dd Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/d610a6dd Branch: refs/heads/KYLIN-2606 Commit: d610a6dd50b547c0f1f4d1529aaf626760c66549 Parents: fdacf5d Author: kangkaisenAuthored: Wed Feb 15 19:53:17 2017 +0800 Committer: kangkaisen Committed: Wed May 24 15:36:38 2017 +0800 -- .../kylin/cube/gridtable/CubeCodeSystem.java| 4 + .../org/apache/kylin/gridtable/GTRecord.java| 8 + .../kylin/gridtable/GTSampleCodeSystem.java | 4 + .../apache/kylin/gridtable/IGTCodeSystem.java | 3 + .../measure/bitmap/BitmapCounterFactory.java| 2 + .../kylin/measure/bitmap/BitmapSerializer.java | 37 - .../measure/bitmap/RoaringBitmapCounter.java| 10 ++ .../bitmap/RoaringBitmapCounterFactory.java | 5 + .../metadata/datatype/DataTypeSerializer.java | 13 ++ .../gtrecord/GTCubeStorageQueryBase.java| 47 ++ .../hbase/cube/v2/CubeHBaseEndpointRPC.java | 1 + .../storage/hbase/cube/v2/CubeHBaseScanRPC.java | 2 +- .../hbase/cube/v2/HBaseReadonlyStore.java | 33 +++- .../coprocessor/endpoint/CubeVisitService.java | 2 +- .../endpoint/generated/CubeVisitProtos.java | 151 +++ .../endpoint/protobuf/CubeVisit.proto | 1 + 16 files changed, 286 insertions(+), 37 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/d610a6dd/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java index aaa12a7..9eae6f3 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java @@ -177,4 +177,8 @@ public class CubeCodeSystem implements IGTCodeSystem { return result; } +@Override +public DataTypeSerializer getSerializer(int col) { +return serializers[col]; +} } http://git-wip-us.apache.org/repos/asf/kylin/blob/d610a6dd/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java b/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java index 3e62ea7..f65e4b5 100644 --- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java +++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTRecord.java @@ -296,4 +296,12 @@ public class GTRecord implements Comparable, Cloneable { } } +/** change pointers to point to data in given buffer, this + * method allows to defined specific column to load */ +public void loadColumns(int selectedCol, ByteBuffer buf) { +int pos = buf.position(); +int len = info.codeSystem.codeLength(selectedCol, buf); +cols[selectedCol].set(buf.array(), buf.arrayOffset() + pos, len); +} + } http://git-wip-us.apache.org/repos/asf/kylin/blob/d610a6dd/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java b/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java index 3f3c844..2a5e791 100644 --- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java +++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTSampleCodeSystem.java @@ -118,4 +118,8 @@ public class GTSampleCodeSystem implements IGTCodeSystem { } }; +@Override +public DataTypeSerializer getSerializer(int col) { +return serializers[col]; +} } http://git-wip-us.apache.org/repos/asf/kylin/blob/d610a6dd/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java b/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java index 89dfc99..9c8ad6b 100644 --- a/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java +++ b/core-cube/src/main/java/org/apache/kylin/gridtable/IGTCodeSystem.java @@ -23,6 +23,7 @@ import java.nio.ByteBuffer; import org.apache.kylin.common.util.ImmutableBitSet; import
[16/50] [abbrv] kylin git commit: KYLIN-2624 fix IT with refactored DistributedLock
KYLIN-2624 fix IT with refactored DistributedLock Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/d21c8170 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/d21c8170 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/d21c8170 Branch: refs/heads/KYLIN-2606 Commit: d21c8170b7bbc8f750aadab5c68d229dee6d252f Parents: f36372b Author: Hongbin MaAuthored: Fri May 19 22:44:50 2017 +0800 Committer: hongbin ma Committed: Fri May 19 22:48:41 2017 +0800 -- .../hbase/util/ZookeeperDistributedLock.java| 30 +--- 1 file changed, 19 insertions(+), 11 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/d21c8170/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java -- diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java index d181d81..ea64bbf 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/ZookeeperDistributedLock.java @@ -123,7 +123,7 @@ public class ZookeeperDistributedLock implements DistributedLock, JobLock { throw new NullPointerException("client must not be null"); if (zkPathBase == null) throw new NullPointerException("zkPathBase must not be null"); - + this.curator = curator; this.zkPathBase = zkPathBase; this.client = client; @@ -138,7 +138,7 @@ public class ZookeeperDistributedLock implements DistributedLock, JobLock { @Override public boolean lock(String lockPath) { lockPath = norm(lockPath); - + logger.debug(client + " trying to lock " + lockPath); try { @@ -148,7 +148,7 @@ public class ZookeeperDistributedLock implements DistributedLock, JobLock { } catch (Exception ex) { throw new RuntimeException("Error while " + client + " trying to lock " + lockPath, ex); } - + String lockOwner = peekLock(lockPath); if (client.equals(lockOwner)) { logger.info(client + " acquired lock at " + lockPath); @@ -214,7 +214,7 @@ public class ZookeeperDistributedLock implements DistributedLock, JobLock { public boolean isLockedByMe(String lockPath) { return client.equals(peekLock(lockPath)); } - + @Override public void unlock(String lockPath) { lockPath = norm(lockPath); @@ -236,7 +236,7 @@ public class ZookeeperDistributedLock implements DistributedLock, JobLock { throw new RuntimeException("Error while " + client + " trying to unlock " + lockPath, ex); } } - + @Override public void purgeLocks(String lockPathRoot) { lockPathRoot = norm(lockPathRoot); @@ -245,7 +245,7 @@ public class ZookeeperDistributedLock implements DistributedLock, JobLock { curator.delete().guaranteed().deletingChildrenIfNeeded().forPath(lockPathRoot); logger.info(client + " purged all locks under " + lockPathRoot); - + } catch (Exception ex) { throw new RuntimeException("Error while " + client + " trying to purge " + lockPathRoot, ex); } @@ -278,13 +278,21 @@ public class ZookeeperDistributedLock implements DistributedLock, JobLock { } return cache; } - + // normalize lock path private String norm(String lockPath) { -if (lockPath.startsWith(zkPathBase)) -return lockPath; -else -return zkPathBase + (lockPath.startsWith("/") ? "" : "/") + lockPath; +if (!lockPath.startsWith(zkPathBase)) +lockPath = zkPathBase + (lockPath.startsWith("/") ? "" : "/") + lockPath; + +return dropDoubleSlash(lockPath); +} + +public static String dropDoubleSlash(String path) { +for (int n = Integer.MAX_VALUE; n > path.length();) { +n = path.length(); +path = path.replace("//", "/"); +} +return path; } //
[27/50] [abbrv] kylin git commit: KYLIN-2589 fix MessageDigest not thread safe in KylinAuthenticationProvider
KYLIN-2589 fix MessageDigest not thread safe in KylinAuthenticationProvider Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ce09d6c7 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ce09d6c7 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ce09d6c7 Branch: refs/heads/KYLIN-2606 Commit: ce09d6c7f027cdc55c10fb96ea21a70c4002f244 Parents: fd3bfed Author: shaofengshiAuthored: Mon May 22 11:24:38 2017 +0800 Committer: shaofengshi Committed: Mon May 22 11:25:13 2017 +0800 -- .../security/KylinAuthenticationProvider.java | 20 +++- 1 file changed, 7 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/ce09d6c7/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java b/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java index d0dd06a..ffe9811 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java +++ b/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java @@ -18,10 +18,9 @@ package org.apache.kylin.rest.security; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.Arrays; - +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hashing; +import org.apache.kylin.common.util.ByteArray; import org.apache.kylin.rest.service.UserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,26 +54,21 @@ public class KylinAuthenticationProvider implements AuthenticationProvider { //Embedded authentication provider private AuthenticationProvider authenticationProvider; -MessageDigest md = null; +private HashFunction hf = null; public KylinAuthenticationProvider(AuthenticationProvider authenticationProvider) { super(); Assert.notNull(authenticationProvider, "The embedded authenticationProvider should not be null."); this.authenticationProvider = authenticationProvider; -try { -md = MessageDigest.getInstance("MD5"); -} catch (NoSuchAlgorithmException e) { -throw new RuntimeException("Failed to init Message Digest ", e); -} +hf = Hashing.murmur3_128(); } @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { Authentication authed = null; Cache userCache = cacheManager.getCache("UserCache"); -md.reset(); -byte[] hashKey = md.digest((authentication.getName() + authentication.getCredentials()).getBytes()); -String userKey = Arrays.toString(hashKey); +byte[] hashKey = hf.hashString(authentication.getName() + authentication.getCredentials()).asBytes(); +ByteArray userKey = new ByteArray(hashKey); Element authedUser = userCache.get(userKey); if (null != authedUser) {
[43/50] [abbrv] kylin git commit: KYLIN-2630 NPE when a subquery joins another lookup tables
KYLIN-2630 NPE when a subquery joins another lookup tables Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ada37a91 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ada37a91 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ada37a91 Branch: refs/heads/KYLIN-2606 Commit: ada37a9109678abf347d3600b3a19888d6f64056 Parents: 34a65ba Author: Hongbin MaAuthored: Thu May 18 20:54:45 2017 +0800 Committer: Hongbin Ma Committed: Tue May 23 20:24:46 2017 +0800 -- .../resources/query/sql_subquery/query30.sql| 15 ++ .../resources/query/sql_subquery/query31.sql| 19 .../apache/kylin/query/relnode/OLAPJoinRel.java | 12 .../org/apache/kylin/query/relnode/OLAPRel.java | 31 +++- .../kylin/query/relnode/OLAPTableScan.java | 18 ++-- 5 files changed, 72 insertions(+), 23 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/ada37a91/kylin-it/src/test/resources/query/sql_subquery/query30.sql -- diff --git a/kylin-it/src/test/resources/query/sql_subquery/query30.sql b/kylin-it/src/test/resources/query/sql_subquery/query30.sql new file mode 100644 index 000..3b0dfbf --- /dev/null +++ b/kylin-it/src/test/resources/query/sql_subquery/query30.sql @@ -0,0 +1,15 @@ + +SELECT t1.cal_dt, t1.sum_price,t1.lstg_site_id +FROM ( + select cal_dt, lstg_site_id, sum(price) as sum_price + from test_kylin_fact + group by cal_dt, lstg_site_id + +) t1 + +inner JOIN edw.test_cal_dt as test_cal_dt +on t1.cal_dt=test_cal_dt.cal_dt + +inner JOIN edw.test_sites as test_sites +on t1.lstg_site_id = test_sites.site_id + http://git-wip-us.apache.org/repos/asf/kylin/blob/ada37a91/kylin-it/src/test/resources/query/sql_subquery/query31.sql -- diff --git a/kylin-it/src/test/resources/query/sql_subquery/query31.sql b/kylin-it/src/test/resources/query/sql_subquery/query31.sql new file mode 100644 index 000..fafc01f --- /dev/null +++ b/kylin-it/src/test/resources/query/sql_subquery/query31.sql @@ -0,0 +1,19 @@ + +SELECT t1.week_beg_dt, t1.sum_price,t1.lstg_site_id +FROM ( + select test_cal_dt.week_beg_dt, sum(price) as sum_price, lstg_site_id + from test_kylin_fact + inner JOIN edw.test_cal_dt as test_cal_dt + ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt + inner JOIN test_category_groupings + ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND test_kylin_fact.lstg_site_id = test_category_groupings.site_id + inner JOIN edw.test_sites as test_sites + ON test_kylin_fact.lstg_site_id = test_sites.site_id + group by test_cal_dt.week_beg_dt, lstg_site_id +) t1 +inner JOIN edw.test_cal_dt as test_cal_dt +on t1.week_beg_dt=test_cal_dt.week_beg_dt + inner JOIN edw.test_sites as test_sites + + on t1.lstg_site_id = test_sites.site_id + http://git-wip-us.apache.org/repos/asf/kylin/blob/ada37a91/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java -- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java index 60b5712..1b5970c 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java @@ -140,12 +140,24 @@ public class OLAPJoinRel extends EnumerableJoin implements OLAPRel { implementor.freeContext(); } } + +if (leftHasSubquery) { +// After KYLIN-2579, leftHasSubquery means right side have to be separate olap context +implementor.setNewOLAPContextRequired(true); +} + implementor.fixSharedOlapTableScanOnTheRight(this); implementor.visitChild(this.right, this); if (this.context != implementor.getContext() || ((OLAPRel) this.right).hasSubQuery()) { this.hasSubQuery = true; rightHasSubquery = true; // if child is also an OLAPJoin, then the context has already been popped + +if (leftHasSubquery) { + Preconditions.checkState(!implementor.isNewOLAPContextRequired());//should have been satisfied +Preconditions.checkState(this.context != implementor.getContext(), "missing a new olapcontext"); +} + if (this.context != implementor.getContext()) { implementor.freeContext(); } http://git-wip-us.apache.org/repos/asf/kylin/blob/ada37a91/query/src/main/java/org/apache/kylin/query/relnode/OLAPRel.java
[47/50] [abbrv] kylin git commit: Merge commit '79c75015e49b2216f6e8ca9ec0cedbff72737821'
Merge commit '79c75015e49b2216f6e8ca9ec0cedbff72737821' Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/92b64043 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/92b64043 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/92b64043 Branch: refs/heads/KYLIN-2606 Commit: 92b640437ca09ba75fc7bce6407cf722f4f4dd8b Parents: 34a65ba 79c7501 Author: Hongbin MaAuthored: Tue May 23 20:34:28 2017 +0800 Committer: Hongbin Ma Committed: Tue May 23 20:34:28 2017 +0800 -- .../kylin/dict/BuiltInFunctionTransformer.java | 2 + .../kylin/metadata/filter/CaseTupleFilter.java | 52 - .../metadata/filter/CompareTupleFilter.java | 29 ++- .../filter/FilterOptimizeTransformer.java | 88 +--- .../filter/IOptimizeableTupleFilter.java| 22 ++ .../filter/ITupleFilterTransformer.java | 5 + .../metadata/filter/LogicalTupleFilter.java | 27 ++- .../kylin/metadata/filter/TupleFilter.java | 1 - .../apache/kylin/metadata/model/TblColRef.java | 20 +- .../kylin/metadata/realization/SQLDigest.java | 2 + .../gtrecord/GTCubeStorageQueryBase.java| 27 +-- .../resources/query/sql_subquery/query30.sql| 15 ++ .../resources/query/sql_subquery/query31.sql| 19 ++ .../resources/query/sql_subquery/query32.sql| 14 ++ .../resources/query/sql_subquery/query33.sql| 14 ++ .../resources/query/sql_subquery/query34.sql| 14 ++ .../kylin/query/relnode/OLAPFilterRel.java | 2 +- .../apache/kylin/query/relnode/OLAPJoinRel.java | 13 ++ .../kylin/query/relnode/OLAPProjectRel.java | 61 - .../org/apache/kylin/query/relnode/OLAPRel.java | 31 +-- .../kylin/query/relnode/OLAPTableScan.java | 29 ++- .../relnode/OLAPToEnumerableConverter.java | 11 +- .../kylin/query/routing/ModelChooser.java | 219 -- .../apache/kylin/query/routing/QueryRouter.java | 2 +- .../kylin/query/routing/RealizationChooser.java | 224 +++ .../kylin/rest/controller/UserController.java | 4 +- 26 files changed, 634 insertions(+), 313 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/92b64043/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java -- diff --cc core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java index 5faa098,b4e9d47..a8c4872 --- a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java +++ b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/GTCubeStorageQueryBase.java @@@ -85,7 -86,7 +86,6 @@@ public abstract class GTCubeStorageQuer } scanner = new CubeSegmentScanner(cubeSeg, request.getCuboid(), request.getDimensions(), request.getGroups(), request.getMetrics(), request.getFilter(), request.getHavingFilter(), request.getContext()); - - if (!scanner.isSegmentSkipped()) scanners.add(scanner); } @@@ -455,7 -458,7 +457,6 @@@ } aggrOutCol.getColumnDesc().setId("" + (aggrIdxAmongMetrics + 1)); } - - return havingFilter; }
[10/50] [abbrv] kylin git commit: KYLIN-2526 refine find-hive-dependency.sh to support Ubuntu
KYLIN-2526 refine find-hive-dependency.sh to support Ubuntu Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/0061900b Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0061900b Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0061900b Branch: refs/heads/KYLIN-2606 Commit: 0061900bb5bd34c8f0cc1c6e955d34bf34ca48e2 Parents: 5f52cea Author: Cheng WangAuthored: Thu May 18 11:04:47 2017 +0800 Committer: liyang-gmt8 Committed: Thu May 18 15:27:36 2017 +0800 -- build/bin/find-hive-dependency.sh | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/0061900b/build/bin/find-hive-dependency.sh -- diff --git a/build/bin/find-hive-dependency.sh b/build/bin/find-hive-dependency.sh index 02a47ef..c4c7523 100644 --- a/build/bin/find-hive-dependency.sh +++ b/build/bin/find-hive-dependency.sh @@ -100,10 +100,10 @@ fi function checkFileExist() { -files=$1 +files=(`echo $1 | cut -d ":" -f 1- | sed 's/:/ /g'`) misFiles=0 outputMissFiles= -for file in ${files//:/ } +for file in ${files} do let allFiles++ if [ ! -f "${file}" ]; then @@ -111,8 +111,10 @@ function checkFileExist() let misFiles++ fi done -ratio=`echo "scale=3; ${misFiles}/${allFiles}" | bc` -[[ `echo "$ratio < 0.01" | bc ` -eq 1 ]] || quit "A couple of hive jars can't be found: ${outputMisFiles}!" +if [ 0 != ${misFiles} ]; then +times=`expr ${allFiles} / ${misFiles}` +[[ ${times} -gt 10 ]] || quit "A couple of hive jars can't be found: ${outputMisFiles}, please export HIVE_LIB='YOUR_LOCAL_HIVE_LIB'" +fi } function validateDirectory()
[07/50] [abbrv] kylin git commit: KYLIN-2627 add simple rollback on ResourceStore
KYLIN-2627 add simple rollback on ResourceStore Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ea5cabac Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ea5cabac Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ea5cabac Branch: refs/heads/KYLIN-2606 Commit: ea5cabac95b3d27aa60d6b16263904142e3d2daa Parents: c9dc7cc Author: Li YangAuthored: Wed May 17 17:46:08 2017 +0800 Committer: Roger Shi Committed: Wed May 17 19:40:34 2017 +0800 -- .../kylin/common/persistence/ResourceStore.java | 103 ++- .../persistence/LocalFileResourceStoreTest.java | 44 2 files changed, 145 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/ea5cabac/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java -- diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java index d5fbc2e..0565c66 100644 --- a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java +++ b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java @@ -18,7 +18,9 @@ package org.apache.kylin.common.persistence; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.Closeable; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; @@ -27,6 +29,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.LinkedHashMap; import java.util.List; import java.util.NavigableSet; import java.util.UUID; @@ -237,6 +240,11 @@ abstract public class ResourceStore { final public void putResource(String resPath, InputStream content, long ts) throws IOException { resPath = norm(resPath); logger.trace("Directly saving resource " + resPath + " (Store " + kylinConfig.getMetadataUrl() + ")"); +putResourceCheckpoint(resPath, content, ts); +} + +private void putResourceCheckpoint(String resPath, InputStream content, long ts) throws IOException { +beforeChange(resPath); putResourceImpl(resPath, content, ts); } @@ -266,7 +274,7 @@ abstract public class ResourceStore { dout.close(); buf.close(); -newTS = checkAndPutResourceImpl(resPath, buf.toByteArray(), oldTS, newTS); +newTS = checkAndPutResourceCheckpoint(resPath, buf.toByteArray(), oldTS, newTS); obj.setLastModified(newTS); // update again the confirmed TS return newTS; } catch (IOException e) { @@ -278,6 +286,11 @@ abstract public class ResourceStore { } } +private long checkAndPutResourceCheckpoint(String resPath, byte[] content, long oldTS, long newTS) throws IOException { +beforeChange(resPath); +return checkAndPutResourceImpl(resPath, content, oldTS, newTS); +} + /** * checks old timestamp when overwriting existing */ @@ -288,7 +301,12 @@ abstract public class ResourceStore { */ final public void deleteResource(String resPath) throws IOException { logger.trace("Deleting resource " + resPath + " (Store " + kylinConfig.getMetadataUrl() + ")"); -deleteResourceImpl(norm(resPath)); +deleteResourceCheckpoint(norm(resPath)); +} + +private void deleteResourceCheckpoint(String resPath) throws IOException { +beforeChange(resPath); +deleteResourceImpl(resPath); } abstract protected void deleteResourceImpl(String resPath) throws IOException; @@ -315,6 +333,87 @@ abstract public class ResourceStore { // +ThreadLocal checkpointing = new ThreadLocal<>(); + +public Checkpoint checkpoint() { +Checkpoint cp = checkpointing.get(); +if (cp != null) +throw new IllegalStateException("A checkpoint has been open for this thread: " + cp); + +cp = new Checkpoint(); +checkpointing.set(cp); +return cp; +} + +private void beforeChange(String resPath) throws IOException { +Checkpoint cp = checkpointing.get(); +if (cp != null) +cp.beforeChange(resPath); +} + +public class Checkpoint implements Closeable { + +LinkedHashMap origResData = new LinkedHashMap<>(); +LinkedHashMap origResTimestamp = new LinkedHashMap<>(); + +private void beforeChange(String resPath) throws IOException { +
[03/50] [abbrv] kylin git commit: Revert "KYLIN-2619 Use newCachedThreadPool instead of newFixedThreadPool in Broadcaster"
Revert "KYLIN-2619 Use newCachedThreadPool instead of newFixedThreadPool in Broadcaster" This reverts commit 1c3ed36f7dcf2152b17966bb69dd3211ce4e8aba. Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/858d9475 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/858d9475 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/858d9475 Branch: refs/heads/KYLIN-2606 Commit: 858d947518b308c1a33b832ea8ef49144285c02e Parents: 1c3ed36 Author: kangkaisenAuthored: Tue May 16 09:48:22 2017 +0800 Committer: kangkaisen Committed: Tue May 16 09:48:22 2017 +0800 -- .../java/org/apache/kylin/common/restclient/RestClient.java | 4 .../java/org/apache/kylin/metadata/cachesync/Broadcaster.java | 7 ++- 2 files changed, 2 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/858d9475/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java -- diff --git a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java index 470386b..33a4e7a 100644 --- a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java +++ b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java @@ -287,8 +287,4 @@ public class RestClient { return result.toString(); } -@Override -public String toString() { -return String.format("RestClient(%s:%d)", host, port); -} } http://git-wip-us.apache.org/repos/asf/kylin/blob/858d9475/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java -- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java index e787dfd..1394f7b 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java @@ -35,7 +35,6 @@ import org.apache.commons.lang.StringUtils; import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.restclient.RestClient; import org.apache.kylin.common.util.DaemonThreadFactory; -import org.apache.kylin.common.util.SetThreadName; import org.apache.kylin.metadata.project.ProjectManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -117,7 +116,7 @@ public class Broadcaster { for (String node : config.getRestServers()) { restClients.add(new RestClient(node)); } -final ExecutorService wipingCachePool = Executors.newCachedThreadPool(new DaemonThreadFactory()); +final ExecutorService wipingCachePool = Executors.newFixedThreadPool(restClients.size(), new DaemonThreadFactory()); while (true) { try { final BroadcastEvent broadcastEvent = broadcastEvents.takeFirst(); @@ -126,10 +125,8 @@ public class Broadcaster { wipingCachePool.execute(new Runnable() { @Override public void run() { -try (SetThreadName ignored = new SetThreadName("CacheWiper %s %s", restClient, broadcastEvent)) { -logger.info("{} wipe cache {}", restClient, broadcastEvent); +try { restClient.wipeCache(broadcastEvent.getEntity(), broadcastEvent.getEvent(), broadcastEvent.getCacheKey()); -logger.info("{} wipe cache {} success", restClient, broadcastEvent); } catch (IOException e) { logger.warn("Thread failed during wipe cache at " + broadcastEvent, e); }
[23/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java b/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java index 9a48851..47002b5 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java +++ b/server-base/src/main/java/org/apache/kylin/rest/model/TableMeta.java @@ -27,16 +27,16 @@ import java.util.List; public class TableMeta implements Serializable { private static final long serialVersionUID = 1L; -private String TABLE_CAT; -private String TABLE_SCHEM; -private String TABLE_NAME; -private String TABLE_TYPE; -private String REMARKS; -private String TYPE_CAT; -private String TYPE_SCHEM; -private String TYPE_NAME; -private String SELF_REFERENCING_COL_NAME; -private String REF_GENERATION; +protected String TABLE_CAT; +protected String TABLE_SCHEM; +protected String TABLE_NAME; +protected String TABLE_TYPE; +protected String REMARKS; +protected String TYPE_CAT; +protected String TYPE_SCHEM; +protected String TYPE_NAME; +protected String SELF_REFERENCING_COL_NAME; +protected String REF_GENERATION; private List columns = new ArrayList(); public TableMeta() { http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/model/TableMetaWithType.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/model/TableMetaWithType.java b/server-base/src/main/java/org/apache/kylin/rest/model/TableMetaWithType.java new file mode 100644 index 000..55198fe --- /dev/null +++ b/server-base/src/main/java/org/apache/kylin/rest/model/TableMetaWithType.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +package org.apache.kylin.rest.model; + +import java.io.Serializable; +import java.util.HashSet; + +/** + * Created by luwei on 17-4-26. + */ +public class TableMetaWithType extends TableMeta { +public static enum tableTypeEnum implements Serializable { + +LOOKUP, FACT + +} + +private HashSet TYPE; + +public TableMetaWithType(String tABLE_CAT, String tABLE_SCHEM, String tABLE_NAME, String tABLE_TYPE, String rEMARKS, String tYPE_CAT, String tYPE_SCHEM, String tYPE_NAME, String sELF_REFERENCING_COL_NAME, String rEF_GENERATION) { +TABLE_CAT = tABLE_CAT; +TABLE_SCHEM = tABLE_SCHEM; +TABLE_NAME = tABLE_NAME; +TABLE_TYPE = tABLE_TYPE; +REMARKS = rEMARKS; +TYPE_CAT = tYPE_CAT; +TYPE_SCHEM = tYPE_SCHEM; +TYPE_NAME = tYPE_NAME; +SELF_REFERENCING_COL_NAME = sELF_REFERENCING_COL_NAME; +REF_GENERATION = rEF_GENERATION; +TYPE = new HashSet(); +} + +public HashSet getTYPE() { +return TYPE; +} + +public void setTYPE(HashSet TYPE) { +this.TYPE = TYPE; +} +} http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java b/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java new file mode 100644 index 000..53cbaba --- /dev/null +++ b/server-base/src/main/java/org/apache/kylin/rest/msg/CnMessage.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the
[21/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API for better convention
http://git-wip-us.apache.org/repos/asf/kylin/blob/73a78dbe/server-base/src/main/java/org/apache/kylin/rest/service/QueryServiceV2.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/QueryServiceV2.java b/server-base/src/main/java/org/apache/kylin/rest/service/QueryServiceV2.java new file mode 100644 index 000..368 --- /dev/null +++ b/server-base/src/main/java/org/apache/kylin/rest/service/QueryServiceV2.java @@ -0,0 +1,516 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +package org.apache.kylin.rest.service; + +import static org.apache.kylin.common.util.CheckUtil.checkCondition; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.Time; +import java.sql.Timestamp; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.apache.calcite.avatica.ColumnMetaData; +import org.apache.commons.lang.StringUtils; +import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.QueryContext; +import org.apache.kylin.common.debug.BackdoorToggles; +import org.apache.kylin.common.exceptions.ResourceLimitExceededException; +import org.apache.kylin.common.util.SetThreadName; +import org.apache.kylin.cube.CubeManager; +import org.apache.kylin.metadata.model.DataModelDesc; +import org.apache.kylin.metadata.model.JoinDesc; +import org.apache.kylin.metadata.model.JoinTableDesc; +import org.apache.kylin.metadata.model.ModelDimensionDesc; +import org.apache.kylin.metadata.model.TableRef; +import org.apache.kylin.metadata.project.ProjectInstance; +import org.apache.kylin.query.relnode.OLAPContext; +import org.apache.kylin.query.util.QueryUtil; +import org.apache.kylin.rest.constant.Constant; +import org.apache.kylin.rest.exception.BadRequestException; +import org.apache.kylin.rest.exception.InternalErrorException; +import org.apache.kylin.rest.metrics.QueryMetricsFacade; +import org.apache.kylin.rest.model.ColumnMetaWithType; +import org.apache.kylin.rest.model.SelectedColumnMeta; +import org.apache.kylin.rest.model.TableMetaWithType; +import org.apache.kylin.rest.msg.Message; +import org.apache.kylin.rest.msg.MsgPicker; +import org.apache.kylin.rest.request.PrepareSqlRequest; +import org.apache.kylin.rest.request.SQLRequest; +import org.apache.kylin.rest.response.SQLResponse; +import org.apache.kylin.rest.util.TableauInterceptor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; + +import com.google.common.collect.Lists; + +import net.sf.ehcache.Cache; +import net.sf.ehcache.Element; + +/** + * Created by luwei on 17-4-24. + */ +@Component("queryServiceV2") +public class QueryServiceV2 extends QueryService { +private static final Logger logger = LoggerFactory.getLogger(QueryServiceV2.class); + +@Autowired +@Qualifier("cacheService") +private CacheService cacheService; + +@Autowired +@Qualifier("modelMgmtServiceV2") +private ModelServiceV2 modelServiceV2; + +public SQLResponse doQueryWithCache(SQLRequest sqlRequest) { +Message msg = MsgPicker.getMsg(); + +KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv(); +String serverMode = kylinConfig.getServerMode(); +if (!(Constant.SERVER_MODE_QUERY.equals(serverMode.toLowerCase()) || Constant.SERVER_MODE_ALL.equals(serverMode.toLowerCase( { +throw new BadRequestException(String.format(msg.getQUERY_NOT_ALLOWED(), serverMode)); +} +if (StringUtils.isBlank(sqlRequest.getProject())) { +throw new
[35/50] [abbrv] kylin git commit: KYLIN-2632 Refactor REST API and service
KYLIN-2632 Refactor REST API and service Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2471d5e5 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2471d5e5 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2471d5e5 Branch: refs/heads/KYLIN-2606 Commit: 2471d5e56219d7c51342953ae37eb77370ae1e58 Parents: 0a0edfe Author: Luwei-ChenAuthored: Tue May 23 18:17:29 2017 +0800 Committer: liyang-gmt8 Committed: Tue May 23 18:21:27 2017 +0800 -- .../rest/controller2/CubeControllerV2.java | 74 + .../rest/controller2/DiagnosisControllerV2.java | 21 ++- .../rest/controller2/ModelControllerV2.java | 63 +--- .../rest/controller2/ProjectControllerV2.java | 109 + .../rest/response/CubeInstanceResponse.java | 23 ++- .../rest/response/DataModelDescResponse.java| 23 ++- .../apache/kylin/rest/service/CacheService.java | 14 +- .../kylin/rest/service/CubeServiceV2.java | 159 ++ .../kylin/rest/service/ModelServiceV2.java | 161 +++ .../kylin/rest/service/ProjectServiceV2.java| 91 +++ 10 files changed, 319 insertions(+), 419 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/2471d5e5/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java -- diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java index 05d99f5..a9e00ba 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java +++ b/server-base/src/main/java/org/apache/kylin/rest/controller2/CubeControllerV2.java @@ -21,6 +21,7 @@ package org.apache.kylin.rest.controller2; import java.io.IOException; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -50,6 +51,7 @@ import org.apache.kylin.rest.request.CubeRequest; import org.apache.kylin.rest.request.JobBuildRequest; import org.apache.kylin.rest.request.JobBuildRequest2; import org.apache.kylin.rest.response.CubeInstanceResponse; +import org.apache.kylin.rest.response.CubeInstanceResponse.CubeComparator; import org.apache.kylin.rest.response.EnvelopeResponse; import org.apache.kylin.rest.response.GeneralResponse; import org.apache.kylin.rest.response.HBaseResponse; @@ -74,7 +76,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.google.common.collect.Lists; @@ -149,6 +150,8 @@ public class CubeControllerV2 extends BasicController { cubeInstanceResponses.add(cubeInstanceResponse); } +CubeComparator cubeComparator = new CubeComparator(); +Collections.sort(cubeInstanceResponses, cubeComparator); data.put("cubes", cubeInstanceResponses); data.put("size", cubes.size()); @@ -468,58 +471,6 @@ public class CubeControllerV2 extends BasicController { } /** - * update CubDesc - * - * @return Table metadata array - * @throws JsonProcessingException - * @throws IOException - */ - -@RequestMapping(value = "", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" }) -@ResponseBody -public EnvelopeResponse updateCubeDescV2(@RequestHeader("Accept-Language") String lang, @RequestBody CubeRequest cubeRequest) throws IOException { -MsgPicker.setMsg(lang); - -CubeDesc desc = deserializeCubeDescV2(cubeRequest); -cubeServiceV2.validateCubeDesc(desc, false); - -boolean createNew = cubeServiceV2.unifyCubeDesc(desc, false); - -String projectName = (null == cubeRequest.getProject()) ? ProjectInstance.DEFAULT_PROJECT_NAME : cubeRequest.getProject(); - -desc = cubeServiceV2.updateCubeToResourceStore(desc, projectName, createNew, false); - -String descData = JsonUtil.writeValueAsIndentString(desc); -GeneralResponse data = new GeneralResponse(); -data.setProperty("uuid", desc.getUuid()); -data.setProperty("cubeDescData", descData); - -return new EnvelopeResponse(ResponseCode.CODE_SUCCESS, data, ""); -} - -@RequestMapping(value = "/draft", method = { RequestMethod.PUT }, produces = { "application/vnd.apache.kylin-v2+json" }) -@ResponseBody -public EnvelopeResponse
[46/50] [abbrv] kylin git commit: KYLIN-2636 optimize case when in group by
KYLIN-2636 optimize case when in group by KYLIN-2636 bug fix Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/79c75015 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/79c75015 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/79c75015 Branch: refs/heads/KYLIN-2606 Commit: 79c75015e49b2216f6e8ca9ec0cedbff72737821 Parents: 2c54989 Author: Hongbin MaAuthored: Mon May 22 16:45:24 2017 +0800 Committer: Hongbin Ma Committed: Tue May 23 20:30:06 2017 +0800 -- .../resources/query/sql_subquery/query32.sql| 14 + .../resources/query/sql_subquery/query33.sql| 14 + .../resources/query/sql_subquery/query34.sql| 14 + .../kylin/query/relnode/OLAPProjectRel.java | 61 +++- 4 files changed, 102 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/79c75015/kylin-it/src/test/resources/query/sql_subquery/query32.sql -- diff --git a/kylin-it/src/test/resources/query/sql_subquery/query32.sql b/kylin-it/src/test/resources/query/sql_subquery/query32.sql new file mode 100644 index 000..394ea15 --- /dev/null +++ b/kylin-it/src/test/resources/query/sql_subquery/query32.sql @@ -0,0 +1,14 @@ + + select sum(price) as sum_price, (case when '1'='1' then test_cal_dt.week_beg_dt when '1'='2' then test_kylin_fact.lstg_site_id else test_kylin_fact.leaf_categ_id end) as xxx + from test_kylin_fact + inner JOIN edw.test_cal_dt as test_cal_dt + ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt + inner JOIN test_category_groupings + ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND test_kylin_fact.lstg_site_id = test_category_groupings.site_id + inner JOIN edw.test_sites as test_sites + ON test_kylin_fact.lstg_site_id = test_sites.site_id + + where case when '1'='1' then test_kylin_fact.cal_dt < date'2012-04-01' when '1'='2' then test_cal_dt.week_beg_dt > date'2012-04-01' else test_kylin_fact.lstg_site_id is not null end and lstg_format_name='FP-GTC' + + group by case when '1'='1' then test_cal_dt.week_beg_dt when '1'='2' then test_kylin_fact.lstg_site_id else test_kylin_fact.leaf_categ_id end + http://git-wip-us.apache.org/repos/asf/kylin/blob/79c75015/kylin-it/src/test/resources/query/sql_subquery/query33.sql -- diff --git a/kylin-it/src/test/resources/query/sql_subquery/query33.sql b/kylin-it/src/test/resources/query/sql_subquery/query33.sql new file mode 100644 index 000..08ecc8e --- /dev/null +++ b/kylin-it/src/test/resources/query/sql_subquery/query33.sql @@ -0,0 +1,14 @@ + + select sum(price) as sum_price, lstg_format_name,(case when '2'='1' then test_kylin_fact.lstg_site_id when '2'='2' then test_cal_dt.week_beg_dt else test_kylin_fact.leaf_categ_id end) as xxx + from test_kylin_fact + inner JOIN edw.test_cal_dt as test_cal_dt + ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt + inner JOIN test_category_groupings + ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND test_kylin_fact.lstg_site_id = test_category_groupings.site_id + inner JOIN edw.test_sites as test_sites + ON test_kylin_fact.lstg_site_id = test_sites.site_id + + where case when '2'='1' then test_cal_dt.week_beg_dt > date'2012-04-01' when '2'='2' then test_kylin_fact.cal_dt < date'2012-04-01' else test_kylin_fact.lstg_site_id is not null end + + group by case when '2'='1' then test_kylin_fact.lstg_site_id when '2'='2' then test_cal_dt.week_beg_dt else test_kylin_fact.leaf_categ_id end,lstg_format_name + http://git-wip-us.apache.org/repos/asf/kylin/blob/79c75015/kylin-it/src/test/resources/query/sql_subquery/query34.sql -- diff --git a/kylin-it/src/test/resources/query/sql_subquery/query34.sql b/kylin-it/src/test/resources/query/sql_subquery/query34.sql new file mode 100644 index 000..0dda9aa --- /dev/null +++ b/kylin-it/src/test/resources/query/sql_subquery/query34.sql @@ -0,0 +1,14 @@ + + select sum(price) as sum_price, (case when '3'='1' then test_cal_dt.week_beg_dt else test_kylin_fact.cal_dt end) as xxx + from test_kylin_fact + inner JOIN edw.test_cal_dt as test_cal_dt + ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt + inner JOIN test_category_groupings + ON test_kylin_fact.leaf_categ_id = test_category_groupings.leaf_categ_id AND test_kylin_fact.lstg_site_id = test_category_groupings.site_id + inner JOIN edw.test_sites as test_sites + ON test_kylin_fact.lstg_site_id = test_sites.site_id + + where case when '3'='1' then test_kylin_fact.cal_dt < date'2012-04-01' else
[42/50] [abbrv] kylin git commit: Merge commit '9fef04d9a98e11454d00247d8cd2f4d501ba66a2'
Merge commit '9fef04d9a98e11454d00247d8cd2f4d501ba66a2' Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/34a65bae Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/34a65bae Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/34a65bae Branch: refs/heads/KYLIN-2606 Commit: 34a65baec0d47de0d91aa8a98b8e1a70db7b6d65 Parents: ed0430b 9fef04d Author: Hongbin MaAuthored: Tue May 23 20:22:54 2017 +0800 Committer: Hongbin Ma Committed: Tue May 23 20:22:54 2017 +0800 -- webapp/app/js/model/projectModel.js | 18 -- 1 file changed, 12 insertions(+), 6 deletions(-) --
[37/50] [abbrv] kylin git commit: minor, fix 'CREATE-TABLE-AS-SELECT cannot create external table'
minor, fix 'CREATE-TABLE-AS-SELECT cannot create external table' Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/83fb144f Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/83fb144f Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/83fb144f Branch: refs/heads/KYLIN-2606 Commit: 83fb144f2c3df127a2b893f96a05507b8de01e7f Parents: 81ed301 Author: Cheng WangAuthored: Tue May 23 19:41:21 2017 +0800 Committer: hongbin ma Committed: Tue May 23 19:46:02 2017 +0800 -- .../java/org/apache/kylin/source/hive/HiveMRInput.java | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/83fb144f/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java -- diff --git a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java index dffba8a..15d4456 100644 --- a/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java +++ b/source-hive/src/main/java/org/apache/kylin/source/hive/HiveMRInput.java @@ -190,14 +190,16 @@ public class HiveMRInput implements IMRInput { HiveCmdBuilder hiveCmdBuilder = new HiveCmdBuilder(); hiveCmdBuilder.addStatement(hiveInitStatements); for (TableDesc lookUpTableDesc : lookupViewsTables) { +String identity = lookUpTableDesc.getIdentity(); +String intermediate = lookUpTableDesc.getMaterializedName(); if (lookUpTableDesc.isView()) { StringBuilder createIntermediateTableHql = new StringBuilder(); -createIntermediateTableHql.append("DROP TABLE IF EXISTS " + lookUpTableDesc.getMaterializedName() + ";\n"); -createIntermediateTableHql.append("CREATE EXTERNAL TABLE IF NOT EXISTS " + lookUpTableDesc.getMaterializedName() + "\n"); -createIntermediateTableHql.append("LOCATION '" + jobWorkingDir + "/" + lookUpTableDesc.getMaterializedName() + "'\n"); -createIntermediateTableHql.append("AS SELECT * FROM " + lookUpTableDesc.getIdentity() + ";\n"); +createIntermediateTableHql.append("DROP TABLE IF EXISTS " + intermediate + ";\n"); +createIntermediateTableHql.append("CREATE EXTERNAL TABLE IF NOT EXISTS " + intermediate + " LIKE " + identity + "\n"); +createIntermediateTableHql.append("LOCATION '" + jobWorkingDir + "/" + intermediate + "';\n"); +createIntermediateTableHql.append("INSERT OVERWRITE TABLE " + intermediate + " SELECT * FROM " + identity + ";\n"); hiveCmdBuilder.addStatement(createIntermediateTableHql.toString()); -hiveViewIntermediateTables = hiveViewIntermediateTables + lookUpTableDesc.getMaterializedName() + ";"; +hiveViewIntermediateTables = hiveViewIntermediateTables + intermediate + ";"; } }
[17/50] [abbrv] kylin git commit: KYLIN-2624 pass IT
KYLIN-2624 pass IT Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/0bdd1c21 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0bdd1c21 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0bdd1c21 Branch: refs/heads/KYLIN-2606 Commit: 0bdd1c21981cef4d9e6edafd63b9c5a0fb2a6725 Parents: be32f75 Author: Yang LiAuthored: Sat May 20 07:56:24 2017 +0800 Committer: Yang Li Committed: Sat May 20 09:38:51 2017 +0800 -- examples/test_case_data/localmeta/UUID | 1 + .../kylin/job/BaseTestDistributedScheduler.java | 2 + .../hbase/ITZookeeperDistributedLockTest.java | 257 +++ .../hbase/util/ZookeeperDistributedLock.java| 11 +- .../util/ITZookeeperDistributedLockTest.java| 254 -- 5 files changed, 268 insertions(+), 257 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/0bdd1c21/examples/test_case_data/localmeta/UUID -- diff --git a/examples/test_case_data/localmeta/UUID b/examples/test_case_data/localmeta/UUID new file mode 100644 index 000..e3f5e6b --- /dev/null +++ b/examples/test_case_data/localmeta/UUID @@ -0,0 +1 @@ +$3591078f-9401-481a-a233-e7755c1142d0 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/kylin/blob/0bdd1c21/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java -- diff --git a/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java b/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java index 6343dfa..1ea6507 100644 --- a/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java +++ b/kylin-it/src/test/java/org/apache/kylin/job/BaseTestDistributedScheduler.java @@ -113,6 +113,8 @@ public class BaseTestDistributedScheduler extends HBaseMetadataTestCase { @AfterClass public static void after() throws Exception { +jobLock1.purgeLocks(""); + if (scheduler1 != null) { scheduler1.shutdown(); scheduler1 = null; http://git-wip-us.apache.org/repos/asf/kylin/blob/0bdd1c21/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java -- diff --git a/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java new file mode 100644 index 000..8460cb9 --- /dev/null +++ b/kylin-it/src/test/java/org/apache/kylin/storage/hbase/ITZookeeperDistributedLockTest.java @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +package org.apache.kylin.storage.hbase; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.Closeable; +import java.io.IOException; +import java.util.Random; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; + +import org.apache.kylin.common.lock.DistributedLock; +import org.apache.kylin.common.lock.DistributedLock.Watcher; +import org.apache.kylin.common.util.HBaseMetadataTestCase; +import org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ITZookeeperDistributedLockTest extends HBaseMetadataTestCase { +private static final Logger logger = LoggerFactory.getLogger(ITZookeeperDistributedLockTest.class); +private static final String ZK_PFX = "/test/ZookeeperDistributedLockTest/" + new Random().nextInt(1000); + +static ZookeeperDistributedLock.Factory factory; + +@BeforeClass +public static void setup() throws Exception { +
[48/50] [abbrv] kylin git commit: fix CI
fix CI Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/5d2934b7 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/5d2934b7 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/5d2934b7 Branch: refs/heads/KYLIN-2606 Commit: 5d2934b7e6331e5fef2c18c92d7338932b087b3f Parents: 92b6404 Author: Hongbin MaAuthored: Tue May 23 21:26:02 2017 +0800 Committer: hongbin ma Committed: Tue May 23 21:27:41 2017 +0800 -- .../apache/kylin/metadata/model/TblColRef.java | 1 - .../org/apache/kylin/rest/DebugDeployCLI.java | 31 2 files changed, 31 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/5d2934b7/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java -- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java index 3bca61c..5a28e8b 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java @@ -87,7 +87,6 @@ public class TblColRef implements Serializable { checkArgument(col.table.getModel() == UNKNOWN_MODEL || col.table.getModel() == model); TableRef tableRef = model.findTable(alias); checkArgument(tableRef.getTableDesc().getIdentity().equals(col.column.getTable().getIdentity())); -checkArgument(tableRef.getTableDesc() == col.column.getTable()); col.fixTableRef(tableRef); } http://git-wip-us.apache.org/repos/asf/kylin/blob/5d2934b7/server/src/main/java/org/apache/kylin/rest/DebugDeployCLI.java -- diff --git a/server/src/main/java/org/apache/kylin/rest/DebugDeployCLI.java b/server/src/main/java/org/apache/kylin/rest/DebugDeployCLI.java new file mode 100644 index 000..28c1b12 --- /dev/null +++ b/server/src/main/java/org/apache/kylin/rest/DebugDeployCLI.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +package org.apache.kylin.rest; + +import java.io.IOException; + +import org.apache.kylin.storage.hbase.util.DeployCoprocessorCLI; + +public class DebugDeployCLI { + +public static void main(String[] args) throws IOException { +DebugTomcat.setupDebugEnv(); +DeployCoprocessorCLI.main(new String[] { "default", "all" }); +} +}
kylin git commit: KYLIN-2644 When I refresh the insight page and click 'Add Project'button, but the new project pop-up page is not showing.
Repository: kylin Updated Branches: refs/heads/master fdacf5d3f -> 6914f3f40 KYLIN-2644 When I refresh the insight page and click 'Add Project'button, but the new project pop-up page is not showing. Signed-off-by: Billy LiuProject: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/6914f3f4 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/6914f3f4 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/6914f3f4 Branch: refs/heads/master Commit: 6914f3f409372dc1fd11cd140984aa67d31e5ac4 Parents: fdacf5d Author: 10069681 Authored: Wed May 24 17:41:14 2017 +0800 Committer: Billy Liu Committed: Thu May 25 10:37:03 2017 +0800 -- webapp/app/partials/query/query.html | 2 ++ 1 file changed, 2 insertions(+) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/6914f3f4/webapp/app/partials/query/query.html -- diff --git a/webapp/app/partials/query/query.html b/webapp/app/partials/query/query.html index 69fe649..894113e 100644 --- a/webapp/app/partials/query/query.html +++ b/webapp/app/partials/query/query.html @@ -226,3 +226,5 @@ + +