You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ch...@apache.org on 2018/01/06 09:45:17 UTC
[1/2] kylin git commit: minor, add project filter to saved query
Repository: kylin
Updated Branches:
refs/heads/master f86d0678d -> 18ac702ad
minor, add project filter to saved query
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2ba22a9c
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2ba22a9c
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2ba22a9c
Branch: refs/heads/master
Commit: 2ba22a9ce67b44db62897422e338b29522be67b7
Parents: f86d067
Author: lidongsjtu <li...@apache.org>
Authored: Sat Jan 6 17:16:09 2018 +0800
Committer: chenzhx <ch...@apache.org>
Committed: Sat Jan 6 17:17:19 2018 +0800
----------------------------------------------------------------------
.../kylin/rest/controller/QueryController.java | 5 +++--
.../apache/kylin/rest/service/QueryService.java | 22 ++++++++++++--------
2 files changed, 16 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/2ba22a9c/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 4f83780..edb2dd5 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
@@ -54,6 +54,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
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;
import org.supercsv.io.CsvListWriter;
import org.supercsv.io.ICsvListWriter;
@@ -114,9 +115,9 @@ public class QueryController extends BasicController {
@RequestMapping(value = "/saved_queries", method = RequestMethod.GET, produces = { "application/json" })
@ResponseBody
- public List<Query> getQueries() throws IOException {
+ public List<Query> getQueries(@RequestParam(value = "project", required = false) String project) throws IOException {
String creator = SecurityContextHolder.getContext().getAuthentication().getName();
- return queryService.getQueries(creator);
+ return queryService.getQueries(creator, project);
}
@RequestMapping(value = "/query/format/{format}", method = RequestMethod.GET, produces = { "application/json" })
http://git-wip-us.apache.org/repos/asf/kylin/blob/2ba22a9c/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
index 9789b70..311ad9c 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
@@ -254,15 +254,20 @@ public class QueryService extends BasicService {
}
public List<Query> getQueries(final String creator) throws IOException {
+ return getQueries(creator, null);
+ }
+
+ public List<Query> getQueries(final String creator, final String project) throws IOException {
if (null == creator) {
return null;
}
- List<Query> queries = new ArrayList<Query>();
+ List<Query> queries = new ArrayList<>();
QueryRecord record = queryStore.getResource(getQueryKeyById(creator), QueryRecord.class,
QueryRecordSerializer.getInstance());
if (record != null) {
for (Query query : record.getQueries()) {
- queries.add(query);
+ if (project == null || query.getProject().equals(project))
+ queries.add(query);
}
}
return queries;
@@ -414,7 +419,7 @@ public class QueryService extends BasicService {
try (SetThreadName ignored = new SetThreadName("Query %s", queryContext.getQueryId())) {
long startTime = System.currentTimeMillis();
-
+
SQLResponse sqlResponse = null;
String sql = sqlRequest.getSql();
String project = sqlRequest.getProject();
@@ -433,16 +438,16 @@ public class QueryService extends BasicService {
if (sqlResponse == null && isQueryInspect) {
sqlResponse = new SQLResponse(null, null, 0, false, sqlRequest.getSql());
}
-
+
if (sqlResponse == null && isCreateTempStatement) {
sqlResponse = new SQLResponse(null, null, 0, false, null);
}
-
+
if (sqlResponse == null && isQueryCacheEnabled) {
sqlResponse = searchQueryInCache(sqlRequest);
Trace.addTimelineAnnotation("query cache searched");
}
-
+
// real execution if required
if (sqlResponse == null) {
try (QueryRequestLimits limit = new QueryRequestLimits(sqlRequest.getProject())) {
@@ -481,7 +486,7 @@ public class QueryService extends BasicService {
private SQLResponse queryAndUpdateCache(SQLRequest sqlRequest, long startTime, boolean queryCacheEnabled) {
KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
Message msg = MsgPicker.getMsg();
-
+
SQLResponse sqlResponse = null;
try {
final boolean isSelect = QueryUtil.isSelectStatement(sqlRequest.getSql());
@@ -543,8 +548,7 @@ public class QueryService extends BasicService {
}
private boolean isQueryCacheEnabled(KylinConfig kylinConfig) {
- return checkCondition(kylinConfig.isQueryCacheEnabled(),
- "query cache disabled in KylinConfig") && //
+ return checkCondition(kylinConfig.isQueryCacheEnabled(), "query cache disabled in KylinConfig") && //
checkCondition(!BackdoorToggles.getDisableCache(), "query cache disabled in BackdoorToggles");
}
[2/2] kylin git commit: #3151 query history and save query should be
ssparated by project
Posted by ch...@apache.org.
#3151 query history and save query should be ssparated by project
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/18ac702a
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/18ac702a
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/18ac702a
Branch: refs/heads/master
Commit: 18ac702ade9e630d9baafc0b8c21920d1e44b05e
Parents: 2ba22a9
Author: chenzhx <ch...@apache.org>
Authored: Sat Jan 6 17:43:58 2018 +0800
Committer: chenzhx <ch...@apache.org>
Committed: Sat Jan 6 17:43:58 2018 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/query.js | 31 ++++++++++++++++++++-----------
webapp/app/partials/query/query.html | 12 ++++++------
2 files changed, 26 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/18ac702a/webapp/app/js/controllers/query.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/query.js b/webapp/app/js/controllers/query.js
index dea03f4..cac7ccb 100644
--- a/webapp/app/js/controllers/query.js
+++ b/webapp/app/js/controllers/query.js
@@ -48,13 +48,6 @@ KylinApp
];
$scope.statusFilter = null;
$scope.savedQueries = null;
- $scope.cachedQueries = storage.get("saved_queries");
- if (!$scope.cachedQueries) {
- $scope.cachedQueries = [];
- }
- $scope.cachedQueries.curPage = 1;
- $scope.cachedQueries.perPage = 3;
-
$scope.srcTables = [];
$scope.srcColumns = [];
@@ -130,7 +123,7 @@ KylinApp
function getQuery(queries, query) {
for (var i = 0; i < queries.length; i++) {
- if (queries[i].sql == query.sql) {
+ if (queries[i].sql === query.sql && queries[i].project === query.project) {
return queries[i];
}
}
@@ -338,7 +331,6 @@ KylinApp
if ($scope.cachedQueries.length >= 99) {
delete $scope.cachedQueries.splice(0, 1);
- ;
}
$scope.cachedQueries.push({
@@ -351,13 +343,25 @@ KylinApp
}
$scope.listSavedQueries = function () {
- QueryService.list({}, function (queries) {
- $scope.savedQueries = queries;
+ QueryService.list({project: $scope.projectModel.selectedProject}, function (queries) {
+ $scope.savedQueries = queries
$scope.savedQueries.curPage = 1;
$scope.savedQueries.perPage = 3;
});
}
+ $scope.listCachedQueries = function () {
+ $scope.cachedQueries = storage.get("saved_queries")
+ $scope.cachedFilterQueries = $scope.cachedQueries.filter(function (query) {
+ return query.project === $scope.projectModel.selectedProject
+ });
+ if (!$scope.cachedFilterQueries) {
+ $scope.cachedFilterQueries = [];
+ }
+ $scope.cachedFilterQueries.curPage = 1;
+ $scope.cachedFilterQueries.perPage = 3;
+ }
+
$scope.removeSavedQuery = function (id) {
QueryService.delete({subject_id: id}, function () {
$scope.listSavedQueries();
@@ -404,6 +408,11 @@ KylinApp
}
}
+ $scope.$watch('projectModel.selectedProject', function (newValue, oldValue) {
+ $scope.listCachedQueries();
+ $scope.listSavedQueries();
+ });
+
$scope.$on('$locationChangeStart', function (event, next, current) {
var isExecuting = false;
angular.forEach($scope.queries, function (query, index) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/18ac702a/webapp/app/partials/query/query.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/query/query.html b/webapp/app/partials/query/query.html
index 87c43dc..e43f7c0 100644
--- a/webapp/app/partials/query/query.html
+++ b/webapp/app/partials/query/query.html
@@ -41,7 +41,7 @@
<a ng-click="mainPanel='saved';listSavedQueries()" style="cursor: pointer">Saved Queries</a>
</li>
<li class="{{mainPanel=='cached'?'active':''}}">
- <a ng-click="mainPanel='cached'" style="cursor: pointer">Query History</a>
+ <a ng-click="mainPanel='cached';listCachedQueries()" style="cursor: pointer">Query History</a>
</li>
</ul>
@@ -138,12 +138,12 @@
</div>
<div ng-show="mainPanel=='cached'">
- <div ng-if="cachedQueries.length==0">
+ <div ng-if="cachedFilterQueries.length==0">
<div no-result text="No Query History."></div>
</div>
<table class="table table-hover table-striped list">
- <tr ng-repeat="query in cachedQueries | reverse track by $index"
- ng-if="$index >= (cachedQueries.curPage-1)*cachedQueries.perPage && $index < cachedQueries.curPage*cachedQueries.perPage">
+ <tr ng-repeat="query in cachedFilterQueries | reverse track by $index"
+ ng-if="$index >= (cachedFilterQueries.curPage-1)*cachedFilterQueries.perPage && $index < cachedFilterQueries.curPage*cachedFilterQueries.perPage">
<td>
<span style="color: #808080;line-height: 25px">Queried At: {{query.savedAt}} </span><span ng-if="query.project">in Project: {{query.project}}</span>
@@ -177,8 +177,8 @@
</td>
</tr>
</table>
- <pagination total-items="cachedQueries.length" items-per-page="cachedQueries.perPage" max-size="5"
- page="cachedQueries.curPage" class="pull-right"></pagination>
+ <pagination total-items="cachedFilterQueries.length" items-per-page="cachedFilterQueries.perPage" max-size="5"
+ page="cachedFilterQueries.curPage" class="pull-right"></pagination>
</div>
</div>