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 2016/12/02 13:19:06 UTC
[13/27] kylin git commit: KYLIN-2240 Add a toggle to ignore all cube
signature inconsistency temporally
KYLIN-2240 Add a toggle to ignore all cube signature inconsistency temporally
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/e562aafe
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/e562aafe
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/e562aafe
Branch: refs/heads/KYLIN-1875
Commit: e562aafee10c8bbd125937503d42b958c1843aad
Parents: 3091f06
Author: Hongbin Ma <ma...@apache.org>
Authored: Fri Dec 2 13:33:02 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Fri Dec 2 13:33:18 2016 +0800
----------------------------------------------------------------------
.../kylin/common/debug/BackdoorToggles.java | 18 ++++++++++++++++++
.../java/org/apache/kylin/jdbc/IRemoteClient.java | 3 ++-
.../java/org/apache/kylin/jdbc/KylinClient.java | 7 ++++---
.../org/apache/kylin/jdbc/KylinResultSet.java | 9 ++++++++-
.../org/apache/kylin/jdbc/json/QueryRequest.java | 12 ++++++++++++
.../java/org/apache/kylin/jdbc/DummyClient.java | 3 ++-
.../apache/kylin/rest/service/QueryService.java | 11 ++++++++++-
7 files changed, 56 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/e562aafe/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java b/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java
index f7c90aa..28f7697 100644
--- a/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java
+++ b/core-common/src/main/java/org/apache/kylin/common/debug/BackdoorToggles.java
@@ -79,6 +79,14 @@ public class BackdoorToggles {
}
}
+ public static Integer getStatementMaxRows() {
+ String v = getString(ATTR_STATEMENT_MAX_ROWS);
+ if (v == null)
+ return null;
+ else
+ return Integer.valueOf(v);
+ }
+
private static String getString(String key) {
Map<String, String> toggles = _backdoorToggles.get();
if (toggles == null) {
@@ -183,4 +191,14 @@ public class BackdoorToggles {
*/
public final static String DEBUG_TOGGLE_SHARD_ASSIGNMENT = "DEBUG_TOGGLE_SHARD_ASSIGNMENT";
+ // properties on statement may go with this "channel" too
+ /**
+ * set ATTR_STATEMENT_MAX_ROWS="maxRows" to statement's max rows property
+ *
+ example:(put it into request body)
+ "backdoorToggles": {
+ "ATTR_STATEMENT_MAX_ROWS": "10"
+ }
+ */
+ public final static String ATTR_STATEMENT_MAX_ROWS = "ATTR_STATEMENT_MAX_ROWS";
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/e562aafe/jdbc/src/main/java/org/apache/kylin/jdbc/IRemoteClient.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/IRemoteClient.java b/jdbc/src/main/java/org/apache/kylin/jdbc/IRemoteClient.java
index b6a13e5..dfd8d76 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/IRemoteClient.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/IRemoteClient.java
@@ -21,6 +21,7 @@ package org.apache.kylin.jdbc;
import java.io.Closeable;
import java.io.IOException;
import java.util.List;
+import java.util.Map;
import org.apache.calcite.avatica.AvaticaParameter;
import org.apache.calcite.avatica.ColumnMetaData;
@@ -51,6 +52,6 @@ public interface IRemoteClient extends Closeable {
/**
* Execute query remotely and get back result.
*/
- public QueryResult executeQuery(String sql, List<AvaticaParameter> params, List<Object> paramValues) throws IOException;
+ public QueryResult executeQuery(String sql, List<AvaticaParameter> params, List<Object> paramValues, Map<String, String> queryToggles) throws IOException;
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/e562aafe/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java
index 2d06a92..86c3a5b 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java
@@ -321,9 +321,9 @@ public class KylinClient implements IRemoteClient {
}
@Override
- public QueryResult executeQuery(String sql, List<AvaticaParameter> params, List<Object> paramValues) throws IOException {
+ public QueryResult executeQuery(String sql, List<AvaticaParameter> params, List<Object> paramValues, Map<String, String> queryToggles) throws IOException {
- SQLResponseStub queryResp = executeKylinQuery(sql, convertParameters(params, paramValues));
+ SQLResponseStub queryResp = executeKylinQuery(sql, convertParameters(params, paramValues), queryToggles);
if (queryResp.getIsException())
throw new IOException(queryResp.getExceptionMessage());
@@ -346,7 +346,7 @@ public class KylinClient implements IRemoteClient {
return result;
}
- private SQLResponseStub executeKylinQuery(String sql, List<StatementParameter> params) throws IOException {
+ private SQLResponseStub executeKylinQuery(String sql, List<StatementParameter> params, Map<String, String> queryToggles) throws IOException {
String url = baseUrl() + "/kylin/api/query";
String project = conn.getProject();
@@ -360,6 +360,7 @@ public class KylinClient implements IRemoteClient {
}
request.setSql(sql);
request.setProject(project);
+ request.setBackdoorToggles(queryToggles);
HttpPost post = new HttpPost(url);
addHttpHeaders(post);
http://git-wip-us.apache.org/repos/asf/kylin/blob/e562aafe/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java
index 1bf2555..1c1157a 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java
@@ -21,7 +21,9 @@ package org.apache.kylin.jdbc;
import java.io.IOException;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.TimeZone;
import org.apache.calcite.avatica.AvaticaParameter;
@@ -57,9 +59,14 @@ public class KylinResultSet extends AvaticaResultSet {
}
IRemoteClient client = ((KylinConnection) statement.connection).getRemoteClient();
+
+ Map<String, String> queryToggles = new HashMap<>();
+ int maxRows = statement.getMaxRows();
+ queryToggles.put("ATTR_STATEMENT_MAX_ROWS", String.valueOf(maxRows));
+
QueryResult result;
try {
- result = client.executeQuery(sql, params, paramValues);
+ result = client.executeQuery(sql, params, paramValues, queryToggles);
} catch (IOException e) {
throw new SQLException(e);
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/e562aafe/jdbc/src/main/java/org/apache/kylin/jdbc/json/QueryRequest.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/json/QueryRequest.java b/jdbc/src/main/java/org/apache/kylin/jdbc/json/QueryRequest.java
index 0e21e1f..b66ef8a 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/json/QueryRequest.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/json/QueryRequest.java
@@ -18,11 +18,15 @@
package org.apache.kylin.jdbc.json;
+import java.util.Map;
+
public class QueryRequest {
private String sql;
private String project;
private boolean acceptPartial = false;
+ private Map<String, String> backdoorToggles;
+
public String getSql() {
return sql;
}
@@ -46,4 +50,12 @@ public class QueryRequest {
public void setAcceptPartial(boolean acceptPartial) {
this.acceptPartial = acceptPartial;
}
+
+ public Map<String, String> getBackdoorToggles() {
+ return backdoorToggles;
+ }
+
+ public void setBackdoorToggles(Map<String, String> backdoorToggles) {
+ this.backdoorToggles = backdoorToggles;
+ }
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/e562aafe/jdbc/src/test/java/org/apache/kylin/jdbc/DummyClient.java
----------------------------------------------------------------------
diff --git a/jdbc/src/test/java/org/apache/kylin/jdbc/DummyClient.java b/jdbc/src/test/java/org/apache/kylin/jdbc/DummyClient.java
index d85ccae..6578825 100644
--- a/jdbc/src/test/java/org/apache/kylin/jdbc/DummyClient.java
+++ b/jdbc/src/test/java/org/apache/kylin/jdbc/DummyClient.java
@@ -22,6 +22,7 @@ import java.io.IOException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.apache.calcite.avatica.AvaticaParameter;
import org.apache.calcite.avatica.ColumnMetaData;
@@ -63,7 +64,7 @@ public class DummyClient implements IRemoteClient {
}
@Override
- public QueryResult executeQuery(String sql, List<AvaticaParameter> params, List<Object> paramValues) throws IOException {
+ public QueryResult executeQuery(String sql, List<AvaticaParameter> params, List<Object> paramValues, Map<String, String> queryToggles) throws IOException {
List<Object> data = new ArrayList<Object>();
Object[] row = new Object[] { "foo", "bar", "tool" };
data.add(row);
http://git-wip-us.apache.org/repos/asf/kylin/blob/e562aafe/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 4389a5d..e1787d7 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
@@ -324,12 +324,12 @@ public class QueryService extends BasicService {
}
final String queryId = UUID.randomUUID().toString();
-
Map<String, String> toggles = new HashMap<>();
toggles.put(BackdoorToggles.KEY_QUERY_ID, queryId);
if (sqlRequest.getBackdoorToggles() != null) {
toggles.putAll(sqlRequest.getBackdoorToggles());
}
+ sqlRequest.setBackdoorToggles(toggles);
BackdoorToggles.setToggles(toggles);
try (SetThreadName ignored = new SetThreadName("Query %s", queryId)) {
@@ -510,6 +510,13 @@ public class QueryService extends BasicService {
return tableMetas;
}
+ private void processStatementAttr(Statement s, SQLRequest sqlRequest) throws SQLException {
+ Integer statementMaxRows = BackdoorToggles.getStatementMaxRows();
+ if (statementMaxRows != null) {
+ s.setMaxRows(statementMaxRows);
+ }
+ }
+
/**
* @param sql
* @param sqlRequest
@@ -529,6 +536,7 @@ public class QueryService extends BasicService {
if (sqlRequest instanceof PrepareSqlRequest) {
PreparedStatement preparedState = conn.prepareStatement(sql);
+ processStatementAttr(preparedState, sqlRequest);
for (int i = 0; i < ((PrepareSqlRequest) sqlRequest).getParams().length; i++) {
setParam(preparedState, i + 1, ((PrepareSqlRequest) sqlRequest).getParams()[i]);
@@ -537,6 +545,7 @@ public class QueryService extends BasicService {
resultSet = preparedState.executeQuery();
} else {
stat = conn.createStatement();
+ processStatementAttr(stat, sqlRequest);
resultSet = stat.executeQuery(sql);
}