You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2015/10/22 02:43:26 UTC
[2/3] incubator-calcite git commit: [CALCITE-927] Call finagle for
all calls that return ResultSetResponses (Josh Elser)
[CALCITE-927] Call finagle for all calls that return ResultSetResponses (Josh Elser)
Fix ProtobufService, add a MockDriver test.
Close apache/incubator-calcite#157
Project: http://git-wip-us.apache.org/repos/asf/incubator-calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/afd7e2e2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-calcite/tree/afd7e2e2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-calcite/diff/afd7e2e2
Branch: refs/heads/master
Commit: afd7e2e213d8db6a2a1689bb0e9842833178ff1b
Parents: ee0e824
Author: Josh Elser <el...@apache.org>
Authored: Mon Oct 19 23:00:00 2015 -0400
Committer: Julian Hyde <jh...@apache.org>
Committed: Wed Oct 21 14:26:29 2015 -0700
----------------------------------------------------------------------
.../calcite/avatica/RemoteDriverMockTest.java | 13 +++++++++++++
.../calcite/avatica/remote/RemoteMetaTest.java | 18 ++++++++++++++++++
.../calcite/avatica/remote/AbstractService.java | 3 +++
.../calcite/avatica/remote/JsonService.java | 12 ++++++------
.../calcite/avatica/remote/MockJsonService.java | 19 +++++++++++++++++++
.../avatica/remote/MockProtobufService.java | 11 +++++++++++
.../calcite/avatica/remote/ProtobufService.java | 14 +++++++-------
7 files changed, 77 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/afd7e2e2/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverMockTest.java
----------------------------------------------------------------------
diff --git a/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverMockTest.java b/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverMockTest.java
index 7594391..5c4423d 100644
--- a/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverMockTest.java
+++ b/avatica-server/src/test/java/org/apache/calcite/avatica/RemoteDriverMockTest.java
@@ -202,6 +202,19 @@ public class RemoteDriverMockTest {
connection.close();
}
+ @Test public void testResultSetsFinagled() throws Exception {
+ // These values specified in MockJsonService
+ final String table = "my_table";
+ final long value = 10;
+
+ final Connection connection = getMockConnection();
+ // Not an accurate ResultSet per JDBC, but close enough for testing.
+ ResultSet results = connection.getMetaData().getColumns(null, null, table, null);
+ assertTrue(results.next());
+ assertEquals(table, results.getString(1));
+ assertEquals(value, results.getLong(2));
+ }
+
}
// End RemoteDriverMockTest.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/afd7e2e2/avatica-server/src/test/java/org/apache/calcite/avatica/remote/RemoteMetaTest.java
----------------------------------------------------------------------
diff --git a/avatica-server/src/test/java/org/apache/calcite/avatica/remote/RemoteMetaTest.java b/avatica-server/src/test/java/org/apache/calcite/avatica/remote/RemoteMetaTest.java
index 2007288..1172335 100644
--- a/avatica-server/src/test/java/org/apache/calcite/avatica/remote/RemoteMetaTest.java
+++ b/avatica-server/src/test/java/org/apache/calcite/avatica/remote/RemoteMetaTest.java
@@ -277,6 +277,24 @@ public class RemoteMetaTest {
+ "'" + RANDOM.nextInt(Integer.MAX_VALUE) + "', '" + UUID.randomUUID() + "')");
assertEquals(status, 1);
}
+
+ @Test public void testBigints() throws Exception {
+ final String table = "TESTBIGINTS";
+ ConnectionSpec.getDatabaseLock().lock();
+ try (AvaticaConnection conn = (AvaticaConnection) DriverManager.getConnection(url);
+ Statement stmt = conn.createStatement()) {
+ assertFalse(stmt.execute("DROP TABLE IF EXISTS " + table));
+ assertFalse(stmt.execute("CREATE TABLE " + table + " (id BIGINT)"));
+ assertFalse(stmt.execute("INSERT INTO " + table + " values(10)"));
+ ResultSet results = conn.getMetaData().getColumns(null, null, table, null);
+ assertTrue(results.next());
+ assertEquals(table, results.getString(3));
+ // ordinal position
+ assertEquals(1L, results.getLong(17));
+ } finally {
+ ConnectionSpec.getDatabaseLock().unlock();
+ }
+ }
}
// End RemoteMetaTest.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/afd7e2e2/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractService.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractService.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractService.java
index 451d923..e88a47c 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractService.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractService.java
@@ -98,6 +98,9 @@ public abstract class AbstractService implements Service {
assert r.signature == null;
return r;
}
+ if (r.signature == null) {
+ return r;
+ }
final Meta.Signature signature = finagle(r.signature);
if (signature == r.signature) {
return r;
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/afd7e2e2/avatica/src/main/java/org/apache/calcite/avatica/remote/JsonService.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/JsonService.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/JsonService.java
index fe82879..b56ed4a 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/remote/JsonService.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/JsonService.java
@@ -62,7 +62,7 @@ public abstract class JsonService extends AbstractService {
public ResultSetResponse apply(CatalogsRequest request) {
try {
- return decode(apply(encode(request)), ResultSetResponse.class);
+ return finagle(decode(apply(encode(request)), ResultSetResponse.class));
} catch (IOException e) {
throw handle(e);
}
@@ -70,7 +70,7 @@ public abstract class JsonService extends AbstractService {
public ResultSetResponse apply(SchemasRequest request) {
try {
- return decode(apply(encode(request)), ResultSetResponse.class);
+ return finagle(decode(apply(encode(request)), ResultSetResponse.class));
} catch (IOException e) {
throw handle(e);
}
@@ -78,7 +78,7 @@ public abstract class JsonService extends AbstractService {
public ResultSetResponse apply(TablesRequest request) {
try {
- return decode(apply(encode(request)), ResultSetResponse.class);
+ return finagle(decode(apply(encode(request)), ResultSetResponse.class));
} catch (IOException e) {
throw handle(e);
}
@@ -86,7 +86,7 @@ public abstract class JsonService extends AbstractService {
public ResultSetResponse apply(TableTypesRequest request) {
try {
- return decode(apply(encode(request)), ResultSetResponse.class);
+ return finagle(decode(apply(encode(request)), ResultSetResponse.class));
} catch (IOException e) {
throw handle(e);
}
@@ -94,7 +94,7 @@ public abstract class JsonService extends AbstractService {
public ResultSetResponse apply(TypeInfoRequest request) {
try {
- return decode(apply(encode(request)), ResultSetResponse.class);
+ return finagle(decode(apply(encode(request)), ResultSetResponse.class));
} catch (IOException e) {
throw handle(e);
}
@@ -102,7 +102,7 @@ public abstract class JsonService extends AbstractService {
public ResultSetResponse apply(ColumnsRequest request) {
try {
- return decode(apply(encode(request)), ResultSetResponse.class);
+ return finagle(decode(apply(encode(request)), ResultSetResponse.class));
} catch (IOException e) {
throw handle(e);
}
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/afd7e2e2/avatica/src/main/java/org/apache/calcite/avatica/remote/MockJsonService.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/MockJsonService.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/MockJsonService.java
index 7cc5420..6e278a1 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/remote/MockJsonService.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/MockJsonService.java
@@ -95,6 +95,25 @@ public class MockJsonService extends JsonService {
+ " \"parameters\": [],\n"
+ " \"cursorFactory\": {\"style\": \"ARRAY\"}\n"
+ "}}");
+ map1.put(
+ "{\"request\":\"getColumns\",\"catalog\":null,\"schemaPattern\":null,"
+ + "\"tableNamePattern\":\"my_table\",\"columnNamePattern\":null}",
+ "{\"response\":\"resultSet\",\"connectionId\":\"00000000-0000-0000-0000-000000000000\",\"statementId\":-1,\"ownStatement\":true,"
+ + "\"signature\":{\"columns\":["
+ + "{\"ordinal\":0,\"autoIncrement\":false,\"caseSensitive\":false,\"searchable\":true,\"currency\":false,\"nullable\":1,\"signed\":false,"
+ + "\"displaySize\":40,\"label\":\"TABLE_NAME\",\"columnName\":\"TABLE_NAME\",\"schemaName\":\"\",\"precision\":0,\"scale\":0,\"tableName\":\"SYSTEM.TABLE\","
+ + "\"catalogName\":\"\",\"type\":{\"type\":\"scalar\",\"id\":12,\"name\":\"VARCHAR\",\"rep\":\"STRING\"},\"readOnly\":true,\"writable\":false,"
+ + "\"definitelyWritable\":false,\"columnClassName\":\"java.lang.String\"},"
+ + "{\"ordinal\":1,\"autoIncrement\":false,\"caseSensitive\":false,\"searchable\":true,\"currency\":false,\"nullable\":1,\"signed\":true,"
+ + "\"displaySize\":40,\"label\":\"ORDINAL_POSITION\",\"columnName\":\"ORDINAL_POSITION\",\"schemaName\":\"\",\"precision\":0,\"scale\":0,"
+ + "\"tableName\":\"SYSTEM.TABLE\",\"catalogName\":\"\",\"type\":{\"type\":\"scalar\",\"id\":-5,\"name\":\"BIGINT\",\"rep\":\"PRIMITIVE_LONG\"},"
+ + "\"readOnly\":true,\"writable\":false,\"definitelyWritable\":false,\"columnClassName\":\"java.lang.Long\"}"
+ + "],\"sql\":null,"
+ + "\"parameters\":[],"
+ + "\"cursorFactory\":{\"style\":\"LIST\",\"clazz\":null,\"fieldNames\":null},\"statementType\":null},"
+ + "\"firstFrame\":{\"offset\":0,\"done\":true,"
+ + "\"rows\":[[\"my_table\",10]]"
+ + "},\"updateCount\":-1}");
} catch (IOException e) {
throw new RuntimeException(e);
}
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/afd7e2e2/avatica/src/main/java/org/apache/calcite/avatica/remote/MockProtobufService.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/MockProtobufService.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/MockProtobufService.java
index 834cdcb..d031527 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/remote/MockProtobufService.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/MockProtobufService.java
@@ -79,6 +79,17 @@ public class MockProtobufService extends ProtobufService {
Meta.CursorFactory.ARRAY, Meta.StatementType.SELECT),
null, -1));
+ mappings.put(
+ new ColumnsRequest(null, null, "my_table", null),
+ new ResultSetResponse("00000000-0000-0000-0000-000000000000", -1, true,
+ Meta.Signature.create(
+ Arrays.<ColumnMetaData>asList(
+ MetaImpl.columnMetaData("TABLE_NAME", 0, String.class),
+ MetaImpl.columnMetaData("ORDINAL_POSITION", 1, Long.class)), null,
+ Collections.<AvaticaParameter>emptyList(), Meta.CursorFactory.ARRAY, null),
+ Meta.Frame.create(0, true,
+ Arrays.<Object>asList(new Object[] {new Object[]{"my_table", 10}})), -1));
+
MAPPING = Collections.unmodifiableMap(mappings);
}
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/afd7e2e2/avatica/src/main/java/org/apache/calcite/avatica/remote/ProtobufService.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/ProtobufService.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/ProtobufService.java
index 6464753..2ab7fa0 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/remote/ProtobufService.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/ProtobufService.java
@@ -31,27 +31,27 @@ public abstract class ProtobufService extends AbstractService {
public abstract Response _apply(Request request);
@Override public ResultSetResponse apply(CatalogsRequest request) {
- return (ResultSetResponse) _apply(request);
+ return finagle((ResultSetResponse) _apply(request));
}
@Override public ResultSetResponse apply(SchemasRequest request) {
- return (ResultSetResponse) _apply(request);
+ return finagle((ResultSetResponse) _apply(request));
}
@Override public ResultSetResponse apply(TablesRequest request) {
- return (ResultSetResponse) _apply(request);
+ return finagle((ResultSetResponse) _apply(request));
}
@Override public ResultSetResponse apply(TableTypesRequest request) {
- return (ResultSetResponse) _apply(request);
+ return finagle((ResultSetResponse) _apply(request));
}
@Override public ResultSetResponse apply(TypeInfoRequest request) {
- return (ResultSetResponse) _apply(request);
+ return finagle((ResultSetResponse) _apply(request));
}
@Override public ResultSetResponse apply(ColumnsRequest request) {
- return (ResultSetResponse) _apply(request);
+ return finagle((ResultSetResponse) _apply(request));
}
@Override public PrepareResponse apply(PrepareRequest request) {
@@ -87,7 +87,7 @@ public abstract class ProtobufService extends AbstractService {
}
@Override public ExecuteResponse apply(ExecuteRequest request) {
- return (ExecuteResponse) _apply(request);
+ return finagle((ExecuteResponse) _apply(request));
}
/**