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>