You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2015/07/11 01:27:05 UTC

[19/50] [abbrv] incubator-kylin git commit: minor, refactor QueryController move dup code into doQuery()

minor, refactor QueryController move dup code into doQuery()


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

Branch: refs/heads/0.7
Commit: e7fcc20d8ab6f824eb6b88b8f8fa133e284dc34f
Parents: 231fcc4
Author: Yang Li <li...@apache.org>
Authored: Tue Jun 30 18:27:15 2015 +0800
Committer: Yang Li <li...@apache.org>
Committed: Tue Jun 30 18:27:38 2015 +0800

----------------------------------------------------------------------
 .../kylin/rest/controller/QueryController.java  | 65 ++++++++++----------
 .../org/apache/kylin/rest/util/QueryUtil.java   |  6 +-
 2 files changed, 36 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/e7fcc20d/server/src/main/java/org/apache/kylin/rest/controller/QueryController.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/kylin/rest/controller/QueryController.java b/server/src/main/java/org/apache/kylin/rest/controller/QueryController.java
index 7cd14ff..53795ec 100644
--- a/server/src/main/java/org/apache/kylin/rest/controller/QueryController.java
+++ b/server/src/main/java/org/apache/kylin/rest/controller/QueryController.java
@@ -18,10 +18,19 @@
 
 package org.apache.kylin.rest.controller;
 
-import com.codahale.metrics.annotation.Timed;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletResponse;
+
 import net.sf.ehcache.Cache;
 import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Element;
+
 import org.apache.commons.io.IOUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.debug.BackdoorToggles;
@@ -45,18 +54,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.AccessDeniedException;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
+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.ResponseBody;
 import org.supercsv.io.CsvListWriter;
 import org.supercsv.io.ICsvListWriter;
 import org.supercsv.prefs.CsvPreference;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import com.codahale.metrics.annotation.Timed;
 
 /**
  * Handle query requests.
@@ -81,35 +88,15 @@ public class QueryController extends BasicController {
     @ResponseBody
     @Timed(name = "query")
     public SQLResponse query(@RequestBody SQLRequest sqlRequest) {
-        initDebugToggles(sqlRequest);
-
-        long startTimestamp = System.currentTimeMillis();
-        SQLResponse response = doQuery(sqlRequest);
-        response.setDuration(System.currentTimeMillis() - startTimestamp);
-        queryService.logQuery(sqlRequest, response, new Date(startTimestamp), new Date(System.currentTimeMillis()));
-
-        cleanupDebugToggles();
-
-        return response;
+        return doQuery(sqlRequest);
     }
 
+    // TODO should be just "prepare" a statement, get back expected ResultSetMetaData
     @RequestMapping(value = "/query/prestate", method = RequestMethod.POST, produces = "application/json")
     @ResponseBody
     @Timed(name = "query")
     public SQLResponse prepareQuery(@RequestBody PrepareSqlRequest sqlRequest) {
-        long startTimestamp = System.currentTimeMillis();
-
-        SQLResponse response = doQuery(sqlRequest);
-        response.setDuration(System.currentTimeMillis() - startTimestamp);
-
-        queryService.logQuery(sqlRequest, response, new Date(startTimestamp), new Date(System.currentTimeMillis()));
-
-        if (response.getIsException()) {
-            String errorMsg = response.getExceptionMessage();
-            throw new InternalErrorException(QueryUtil.makeErrorMsgUserFriendly(errorMsg));
-        }
-
-        return response;
+        return doQuery(sqlRequest);
     }
 
     @RequestMapping(value = "/saved_queries", method = RequestMethod.POST)
@@ -181,6 +168,18 @@ public class QueryController extends BasicController {
     }
 
     private SQLResponse doQuery(SQLRequest sqlRequest) {
+        initDebugToggles(sqlRequest);
+
+        long startTimestamp = System.currentTimeMillis();
+        SQLResponse response = doQueryInternal(sqlRequest);
+        response.setDuration(System.currentTimeMillis() - startTimestamp);
+        queryService.logQuery(sqlRequest, response, new Date(startTimestamp), new Date(System.currentTimeMillis()));
+
+        cleanupDebugToggles();
+        return response;
+    }
+
+    private SQLResponse doQueryInternal(SQLRequest sqlRequest) {
         String sql = sqlRequest.getSql();
         String project = sqlRequest.getProject();
         logger.info("Using project: " + project);
@@ -193,7 +192,7 @@ public class QueryController extends BasicController {
 
         if (sql.toLowerCase().contains("select") == false) {
             logger.debug("Directly return expection as not supported");
-            throw new InternalErrorException(QueryUtil.makeErrorMsgUserFriendly("Not Supported SQL."));
+            throw new InternalErrorException("Not Supported SQL.");
         }
 
         SQLResponse sqlResponse = searchQueryInCache(sqlRequest);

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/e7fcc20d/server/src/main/java/org/apache/kylin/rest/util/QueryUtil.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/kylin/rest/util/QueryUtil.java b/server/src/main/java/org/apache/kylin/rest/util/QueryUtil.java
index 7de4415..dd3ffa9 100644
--- a/server/src/main/java/org/apache/kylin/rest/util/QueryUtil.java
+++ b/server/src/main/java/org/apache/kylin/rest/util/QueryUtil.java
@@ -157,8 +157,10 @@ public class QueryUtil {
      */
     public static String makeErrorMsgUserFriendly(String errorMsg) {
         try {
-            errorMsg = errorMsg.replaceAll("\\s", " ");// replace all invisible
-                                                       // characters
+            // make one line
+            errorMsg = errorMsg.replaceAll("\\s", " ");
+            
+            // move cause to be ahead of sql, calcite creates the message pattern below
             Pattern pattern = Pattern.compile("error while executing SQL \"(.*)\":(.*)");
             Matcher matcher = pattern.matcher(errorMsg);
             if (matcher.find()) {