KYLIN-2236 let query cache honor backdoortoggles in query request
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/8f3239bf Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/8f3239bf Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/8f3239bf Branch: refs/heads/master-hbase1.x Commit: 8f3239bf9ea4f1abd8d2c814967d425d4da68a45 Parents: 9556152 Author: Hongbin Ma <mahong...@apache.org> Authored: Mon Dec 5 13:43:03 2016 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Mon Dec 5 13:43:03 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/jdbc/ITJDBCDriverTest.java | 30 ++++++++++ .../apache/kylin/rest/request/SQLRequest.java | 63 +++++++------------- .../apache/kylin/rest/service/QueryService.java | 1 + 3 files changed, 53 insertions(+), 41 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/8f3239bf/kylin-it/src/test/java/org/apache/kylin/jdbc/ITJDBCDriverTest.java ---------------------------------------------------------------------- diff --git a/kylin-it/src/test/java/org/apache/kylin/jdbc/ITJDBCDriverTest.java b/kylin-it/src/test/java/org/apache/kylin/jdbc/ITJDBCDriverTest.java index 4c847bf..2f8991b 100644 --- a/kylin-it/src/test/java/org/apache/kylin/jdbc/ITJDBCDriverTest.java +++ b/kylin-it/src/test/java/org/apache/kylin/jdbc/ITJDBCDriverTest.java @@ -261,6 +261,36 @@ public class ITJDBCDriverTest extends HBaseMetadataTestCase { } + + @Test + public void testResultSetWithMaxRows() throws Exception { + String sql = "select LSTG_FORMAT_NAME, sum(price) as GMV, count(1) as TRANS_CNT from test_kylin_fact \n" + " group by LSTG_FORMAT_NAME "; + + Connection conn = getConnection(); + Statement statement = conn.createStatement(); + statement.setMaxRows(2); + + statement.execute(sql); + + ResultSet rs = statement.getResultSet(); + + int count = 0; + while (rs.next()) { + count++; + String lstg = rs.getString(1); + double gmv = rs.getDouble(2); + int trans_count = rs.getInt(3); + + System.out.println("Get a line: LSTG_FORMAT_NAME=" + lstg + ", GMV=" + gmv + ", TRANS_CNT=" + trans_count); + } + + Assert.assertTrue(count == 2); + statement.close(); + rs.close(); + conn.close(); + + } + private static class SystemPropertiesOverride { HashMap<String, String> backup = new HashMap<String, String>(); http://git-wip-us.apache.org/repos/asf/kylin/blob/8f3239bf/server-base/src/main/java/org/apache/kylin/rest/request/SQLRequest.java ---------------------------------------------------------------------- diff --git a/server-base/src/main/java/org/apache/kylin/rest/request/SQLRequest.java b/server-base/src/main/java/org/apache/kylin/rest/request/SQLRequest.java index 96f5faa..bd8b7e2 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/request/SQLRequest.java +++ b/server-base/src/main/java/org/apache/kylin/rest/request/SQLRequest.java @@ -83,50 +83,31 @@ public class SQLRequest implements Serializable { this.acceptPartial = acceptPartial; } + @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (acceptPartial ? 1231 : 1237); - result = prime * result + ((offset == null) ? 0 : offset.hashCode()); - result = prime * result + ((limit == null) ? 0 : limit.hashCode()); - result = prime * result + ((project == null) ? 0 : project.hashCode()); - result = prime * result + ((sql == null) ? 0 : sql.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + SQLRequest that = (SQLRequest) o; + + if (acceptPartial != that.acceptPartial) return false; + if (sql != null ? !sql.equals(that.sql) : that.sql != null) return false; + if (project != null ? !project.equals(that.project) : that.project != null) return false; + if (offset != null ? !offset.equals(that.offset) : that.offset != null) return false; + if (limit != null ? !limit.equals(that.limit) : that.limit != null) return false; + return backdoorToggles != null ? backdoorToggles.equals(that.backdoorToggles) : that.backdoorToggles == null; + } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - SQLRequest other = (SQLRequest) obj; - if (acceptPartial != other.acceptPartial) - return false; - if (offset == null) { - if (other.offset != null) - return false; - } else if (!offset.equals(other.offset)) - return false; - if (limit == null) { - if (other.limit != null) - return false; - } else if (!limit.equals(other.limit)) - return false; - if (project == null) { - if (other.project != null) - return false; - } else if (!project.equals(other.project)) - return false; - if (sql == null) { - if (other.sql != null) - return false; - } else if (!sql.equals(other.sql)) - return false; - return true; + public int hashCode() { + int result = sql != null ? sql.hashCode() : 0; + result = 31 * result + (project != null ? project.hashCode() : 0); + result = 31 * result + (offset != null ? offset.hashCode() : 0); + result = 31 * result + (limit != null ? limit.hashCode() : 0); + result = 31 * result + (acceptPartial ? 1 : 0); + result = 31 * result + (backdoorToggles != null ? backdoorToggles.hashCode() : 0); + return result; } - } http://git-wip-us.apache.org/repos/asf/kylin/blob/8f3239bf/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 e1787d7..8810c85 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 @@ -513,6 +513,7 @@ public class QueryService extends BasicService { private void processStatementAttr(Statement s, SQLRequest sqlRequest) throws SQLException { Integer statementMaxRows = BackdoorToggles.getStatementMaxRows(); if (statementMaxRows != null) { + logger.info("Setting current statement's max rows to {}", statementMaxRows); s.setMaxRows(statementMaxRows); } }