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()) {