You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by el...@apache.org on 2016/03/03 18:30:46 UTC
[2/7] calcite git commit: [CALCITE-1092] Use singleton descriptor
instances for protobuf field presence checks
[CALCITE-1092] Use singleton descriptor instances for protobuf field presence checks
Protobuf uses a FieldDescriptor instance to identify an attribute in
some Message and exposes a single hasField method on Message which
accepts a FieldDescriptor. Profiling showed that the Avatica server
was spending a non-zero amount of time in HashMap operations to repeatedly
fetch the appropriate FieldDescriptor each time we were translating
a protobuf to a POJO.
We can reduce this cost by maintaining singletons of these FieldDescriptors
in the POJO class and avoid the repeated HashMap lookups.
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/0de38aaa
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/0de38aaa
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/0de38aaa
Branch: refs/heads/master
Commit: 0de38aaa38e0dc43d21c0b2dac4278c67c1dc24c
Parents: ea41b34
Author: Josh Elser <el...@apache.org>
Authored: Wed Mar 2 17:43:37 2016 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Wed Mar 2 19:06:33 2016 -0500
----------------------------------------------------------------------
.../apache/calcite/avatica/ColumnMetaData.java | 29 +-
.../avatica/ConnectionPropertiesImpl.java | 20 +-
.../java/org/apache/calcite/avatica/Meta.java | 45 +--
.../calcite/avatica/remote/ProtobufService.java | 14 -
.../apache/calcite/avatica/remote/Service.java | 335 +++++++++++--------
.../avatica/remote/ProtobufHandlerTest.java | 8 +-
6 files changed, 262 insertions(+), 189 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/0de38aaa/avatica/src/main/java/org/apache/calcite/avatica/ColumnMetaData.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/ColumnMetaData.java b/avatica/src/main/java/org/apache/calcite/avatica/ColumnMetaData.java
index 60e744d..bcdc228 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/ColumnMetaData.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/ColumnMetaData.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.google.protobuf.Descriptors.Descriptor;
+import com.google.protobuf.Descriptors.FieldDescriptor;
import java.lang.reflect.Type;
import java.sql.Array;
@@ -47,6 +47,19 @@ import java.util.Objects;
* <p>(Compare with {@link java.sql.ResultSetMetaData}.)
*/
public class ColumnMetaData {
+ private static final FieldDescriptor CATALOG_NAME_DESCRIPTOR = Common.ColumnMetaData
+ .getDescriptor().findFieldByNumber(Common.ColumnMetaData.CATALOG_NAME_FIELD_NUMBER);
+ private static final FieldDescriptor SCHEMA_NAME_DESCRIPTOR = Common.ColumnMetaData
+ .getDescriptor().findFieldByNumber(Common.ColumnMetaData.SCHEMA_NAME_FIELD_NUMBER);
+ private static final FieldDescriptor LABEL_DESCRIPTOR = Common.ColumnMetaData
+ .getDescriptor().findFieldByNumber(Common.ColumnMetaData.LABEL_FIELD_NUMBER);
+ private static final FieldDescriptor COLUMN_NAME_DESCRIPTOR = Common.ColumnMetaData
+ .getDescriptor().findFieldByNumber(Common.ColumnMetaData.COLUMN_NAME_FIELD_NUMBER);
+ private static final FieldDescriptor TABLE_NAME_DESCRIPTOR = Common.ColumnMetaData
+ .getDescriptor().findFieldByNumber(Common.ColumnMetaData.TABLE_NAME_FIELD_NUMBER);
+ private static final FieldDescriptor COLUMN_CLASS_NAME_DESCRIPTOR = Common.ColumnMetaData
+ .getDescriptor().findFieldByNumber(Common.ColumnMetaData.COLUMN_CLASS_NAME_FIELD_NUMBER);
+
public final int ordinal; // 0-based
public final boolean autoIncrement;
public final boolean caseSensitive;
@@ -171,36 +184,34 @@ public class ColumnMetaData {
public static ColumnMetaData fromProto(Common.ColumnMetaData proto) {
AvaticaType nestedType = AvaticaType.fromProto(proto.getType());
- final Descriptor desc = proto.getDescriptorForType();
String catalogName = null;
- if (proto.hasField(desc.findFieldByNumber(Common.ColumnMetaData.CATALOG_NAME_FIELD_NUMBER))) {
+ if (proto.hasField(CATALOG_NAME_DESCRIPTOR)) {
catalogName = proto.getCatalogName();
}
String schemaName = null;
- if (proto.hasField(desc.findFieldByNumber(Common.ColumnMetaData.SCHEMA_NAME_FIELD_NUMBER))) {
+ if (proto.hasField(SCHEMA_NAME_DESCRIPTOR)) {
schemaName = proto.getSchemaName();
}
String label = null;
- if (proto.hasField(desc.findFieldByNumber(Common.ColumnMetaData.LABEL_FIELD_NUMBER))) {
+ if (proto.hasField(LABEL_DESCRIPTOR)) {
label = proto.getLabel();
}
String columnName = null;
- if (proto.hasField(desc.findFieldByNumber(Common.ColumnMetaData.COLUMN_NAME_FIELD_NUMBER))) {
+ if (proto.hasField(COLUMN_NAME_DESCRIPTOR)) {
columnName = proto.getColumnName();
}
String tableName = null;
- if (proto.hasField(desc.findFieldByNumber(Common.ColumnMetaData.TABLE_NAME_FIELD_NUMBER))) {
+ if (proto.hasField(TABLE_NAME_DESCRIPTOR)) {
tableName = proto.getTableName();
}
String columnClassName = null;
- if (proto.hasField(
- desc.findFieldByNumber(Common.ColumnMetaData.COLUMN_CLASS_NAME_FIELD_NUMBER))) {
+ if (proto.hasField(COLUMN_CLASS_NAME_DESCRIPTOR)) {
columnClassName = proto.getColumnClassName();
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/0de38aaa/avatica/src/main/java/org/apache/calcite/avatica/ConnectionPropertiesImpl.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/ConnectionPropertiesImpl.java b/avatica/src/main/java/org/apache/calcite/avatica/ConnectionPropertiesImpl.java
index e4b01bc..c147ecc 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/ConnectionPropertiesImpl.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/ConnectionPropertiesImpl.java
@@ -17,11 +17,10 @@
package org.apache.calcite.avatica;
import org.apache.calcite.avatica.proto.Common;
-import org.apache.calcite.avatica.remote.ProtobufService;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.protobuf.Descriptors.Descriptor;
+import com.google.protobuf.Descriptors.FieldDescriptor;
import java.sql.Connection;
import java.sql.SQLException;
@@ -35,6 +34,14 @@ import java.util.Objects;
* remote.
*/
public class ConnectionPropertiesImpl implements Meta.ConnectionProperties {
+ private static final FieldDescriptor CATALOG_DESCRIPTOR = Common.ConnectionProperties
+ .getDescriptor().findFieldByNumber(Common.ConnectionProperties.CATALOG_FIELD_NUMBER);
+ private static final FieldDescriptor SCHEMA_DESCRIPTOR = Common.ConnectionProperties
+ .getDescriptor().findFieldByNumber(Common.ConnectionProperties.SCHEMA_FIELD_NUMBER);
+ private static final FieldDescriptor TRANSACTION_ISOLATION_DESCRIPTOR = Common
+ .ConnectionProperties.getDescriptor().findFieldByNumber(
+ Common.ConnectionProperties.TRANSACTION_ISOLATION_FIELD_NUMBER);
+
private boolean isDirty = false;
private Boolean autoCommit;
private Boolean readOnly;
@@ -235,15 +242,13 @@ public class ConnectionPropertiesImpl implements Meta.ConnectionProperties {
}
public static ConnectionPropertiesImpl fromProto(Common.ConnectionProperties proto) {
- final Descriptor desc = proto.getDescriptorForType();
-
String catalog = null;
- if (ProtobufService.hasField(proto, desc, Common.ConnectionProperties.CATALOG_FIELD_NUMBER)) {
+ if (proto.hasField(CATALOG_DESCRIPTOR)) {
catalog = proto.getCatalog();
}
String schema = null;
- if (ProtobufService.hasField(proto, desc, Common.ConnectionProperties.SCHEMA_FIELD_NUMBER)) {
+ if (proto.hasField(SCHEMA_DESCRIPTOR)) {
schema = proto.getSchema();
}
@@ -258,8 +263,7 @@ public class ConnectionPropertiesImpl implements Meta.ConnectionProperties {
}
Integer transactionIsolation = null;
- if (ProtobufService.hasField(proto, desc,
- Common.ConnectionProperties.TRANSACTION_ISOLATION_FIELD_NUMBER)) {
+ if (proto.hasField(TRANSACTION_ISOLATION_DESCRIPTOR)) {
transactionIsolation = Integer.valueOf(proto.getTransactionIsolation());
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/0de38aaa/avatica/src/main/java/org/apache/calcite/avatica/Meta.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/Meta.java b/avatica/src/main/java/org/apache/calcite/avatica/Meta.java
index a83f2b3..4cc460c 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/Meta.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/Meta.java
@@ -17,7 +17,6 @@
package org.apache.calcite.avatica;
import org.apache.calcite.avatica.proto.Common;
-import org.apache.calcite.avatica.remote.ProtobufService;
import org.apache.calcite.avatica.remote.TypedValue;
import com.fasterxml.jackson.annotation.JsonCreator;
@@ -26,7 +25,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.google.protobuf.ByteString;
-import com.google.protobuf.Descriptors.Descriptor;
import com.google.protobuf.Descriptors.FieldDescriptor;
import java.lang.reflect.Field;
@@ -476,6 +474,9 @@ public interface Meta {
/** Information necessary to convert an {@link Iterable} into a
* {@link org.apache.calcite.avatica.util.Cursor}. */
final class CursorFactory {
+ private static final FieldDescriptor CLASS_NAME_DESCRIPTOR = Common.CursorFactory.
+ getDescriptor().findFieldByNumber(Common.CursorFactory.CLASS_NAME_FIELD_NUMBER);
+
public final Style style;
public final Class clazz;
@JsonIgnore
@@ -583,10 +584,7 @@ public interface Meta {
// Reconstruct CursorFactory
Class<?> clz = null;
- FieldDescriptor clzFieldDesc = proto.getDescriptorForType()
- .findFieldByNumber(Common.CursorFactory.CLASS_NAME_FIELD_NUMBER);
-
- if (proto.hasField(clzFieldDesc)) {
+ if (proto.hasField(CLASS_NAME_DESCRIPTOR)) {
try {
clz = Class.forName(proto.getClassName());
} catch (ClassNotFoundException e) {
@@ -632,7 +630,12 @@ public interface Meta {
}
/** Result of preparing a statement. */
- class Signature {
+ public class Signature {
+ private static final FieldDescriptor SQL_DESCRIPTOR = Common.Signature
+ .getDescriptor().findFieldByNumber(Common.Signature.SQL_FIELD_NUMBER);
+ private static final FieldDescriptor CURSOR_FACTORY_DESCRIPTOR = Common.Signature
+ .getDescriptor().findFieldByNumber(Common.Signature.CURSOR_FACTORY_FIELD_NUMBER);
+
public final List<ColumnMetaData> columns;
public final String sql;
public final List<AvaticaParameter> parameters;
@@ -731,16 +734,13 @@ public interface Meta {
parameters.add(AvaticaParameter.fromProto(protoParam));
}
- final Descriptor desc = protoSignature.getDescriptorForType();
-
String sql = null;
- if (ProtobufService.hasField(protoSignature, desc, Common.Signature.SQL_FIELD_NUMBER)) {
+ if (protoSignature.hasField(SQL_DESCRIPTOR)) {
sql = protoSignature.getSql();
}
CursorFactory cursorFactory = null;
- if (ProtobufService.hasField(protoSignature, desc,
- Common.Signature.CURSOR_FACTORY_FIELD_NUMBER)) {
+ if (protoSignature.hasField(CURSOR_FACTORY_DESCRIPTOR)) {
cursorFactory = CursorFactory.fromProto(protoSignature.getCursorFactory());
}
final Meta.StatementType statementType =
@@ -765,6 +765,10 @@ public interface Meta {
/** A collection of rows. */
class Frame {
+ private static final FieldDescriptor HAS_ARRAY_VALUE_DESCRIPTOR = Common.ColumnValue
+ .getDescriptor().findFieldByNumber(Common.ColumnValue.HAS_ARRAY_VALUE_FIELD_NUMBER);
+ private static final FieldDescriptor SCALAR_VALUE_DESCRIPTOR = Common.ColumnValue
+ .getDescriptor().findFieldByNumber(Common.ColumnValue.SCALAR_VALUE_FIELD_NUMBER);
/** Frame that has zero rows and is the last frame. */
public static final Frame EMPTY =
new Frame(0, true, Collections.emptyList());
@@ -920,9 +924,8 @@ public interface Meta {
* @return True if the message is the new style, false otherwise.
*/
static boolean isNewStyleColumn(Common.ColumnValue column) {
- final Descriptor desc = column.getDescriptorForType();
- return ProtobufService.hasField(column, desc, Common.ColumnValue.HAS_ARRAY_VALUE_FIELD_NUMBER)
- || ProtobufService.hasField(column, desc, Common.ColumnValue.SCALAR_VALUE_FIELD_NUMBER);
+ return column.hasField(HAS_ARRAY_VALUE_DESCRIPTOR)
+ || column.hasField(SCALAR_VALUE_DESCRIPTOR);
}
/**
@@ -955,8 +958,7 @@ public interface Meta {
// Verify that we have one or the other (scalar or array)
validateColumnValue(column);
- if (!ProtobufService.hasField(column, column.getDescriptorForType(),
- Common.ColumnValue.SCALAR_VALUE_FIELD_NUMBER)) {
+ if (!column.hasField(SCALAR_VALUE_DESCRIPTOR)) {
// Array
List<Object> array = new ArrayList<>(column.getArrayValueCount());
for (Common.TypedValue arrayValue : column.getArrayValueList()) {
@@ -976,8 +978,7 @@ public interface Meta {
* @throws IllegalArgumentException When the above condition is not met
*/
static void validateColumnValue(Common.ColumnValue column) {
- final boolean hasScalar = ProtobufService.hasField(column, column.getDescriptorForType(),
- Common.ColumnValue.SCALAR_VALUE_FIELD_NUMBER);
+ final boolean hasScalar = column.hasField(SCALAR_VALUE_DESCRIPTOR);
final boolean hasArrayValue = column.getHasArrayValue();
// These should always be different
@@ -1107,6 +1108,8 @@ public interface Meta {
/** Statement handle. */
class StatementHandle {
+ private static final FieldDescriptor SIGNATURE_DESCRIPTOR = Common.StatementHandle
+ .getDescriptor().findFieldByNumber(Common.StatementHandle.SIGNATURE_FIELD_NUMBER);
public final String connectionId;
public final int id;
@@ -1138,11 +1141,9 @@ public interface Meta {
}
public static StatementHandle fromProto(Common.StatementHandle protoHandle) {
- final Descriptor desc = protoHandle.getDescriptorForType();
// Signature is optional in the update path for executes.
Signature signature = null;
- if (ProtobufService.hasField(protoHandle, desc,
- Common.StatementHandle.SIGNATURE_FIELD_NUMBER)) {
+ if (protoHandle.hasField(SIGNATURE_DESCRIPTOR)) {
signature = Signature.fromProto(protoHandle.getSignature());
}
return new StatementHandle(protoHandle.getConnectionId(), protoHandle.getId(), signature);
http://git-wip-us.apache.org/repos/asf/calcite/blob/0de38aaa/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 741c34c..56ba125 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
@@ -16,8 +16,6 @@
*/
package org.apache.calcite.avatica.remote;
-import com.google.protobuf.Descriptors.Descriptor;
-
import com.google.protobuf.Message;
/**
@@ -112,18 +110,6 @@ public abstract class ProtobufService extends AbstractService {
}
/**
- * Determines whether the given message has the field, denoted by the provided number, set.
- *
- * @param msg The protobuf message
- * @param desc The descriptor for the message
- * @param fieldNum The identifier for the field
- * @return True if the message contains the field, false otherwise
- */
- public static boolean hasField(Message msg, Descriptor desc, int fieldNum) {
- return msg.hasField(desc.findFieldByNumber(fieldNum));
- }
-
- /**
* Checks if the provided {@link Message} is an instance of the Class given by
* <code>expectedType</code>. Throws an IllegalArgumentException if the message is not of the
* expected type, otherwise, it returns the message cast as the expected type.
http://git-wip-us.apache.org/repos/asf/calcite/blob/0de38aaa/avatica/src/main/java/org/apache/calcite/avatica/remote/Service.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/Service.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/Service.java
index fb3b379..aee5b29 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/remote/Service.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/Service.java
@@ -32,7 +32,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.google.protobuf.Descriptors.Descriptor;
+import com.google.protobuf.Descriptors.FieldDescriptor;
import com.google.protobuf.Message;
import java.io.PrintWriter;
@@ -172,6 +172,8 @@ public interface Service {
/** Request for
* {@link org.apache.calcite.avatica.Meta#getCatalogs(Meta.ConnectionHandle)}. */
class CatalogsRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.CatalogsRequest.
+ getDescriptor().findFieldByNumber(Requests.CatalogsRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
public CatalogsRequest() {
@@ -190,11 +192,8 @@ public interface Service {
@Override CatalogsRequest deserialize(Message genericMsg) {
final Requests.CatalogsRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.CatalogsRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
-
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.CatalogsRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -227,6 +226,10 @@ public interface Service {
/** Request for
* {@link org.apache.calcite.avatica.Meta#getDatabaseProperties(Meta.ConnectionHandle)}. */
class DatabasePropertyRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR =
+ Requests.DatabasePropertyRequest.getDescriptor().
+ findFieldByNumber(Requests.DatabasePropertyRequest.CONNECTION_ID_FIELD_NUMBER);
+
public final String connectionId;
public DatabasePropertyRequest() {
@@ -245,11 +248,9 @@ public interface Service {
@Override DatabasePropertyRequest deserialize(Message genericMsg) {
final Requests.DatabasePropertyRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.DatabasePropertyRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.DatabasePropertyRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -283,6 +284,13 @@ public interface Service {
/** Request for
* {@link Meta#getSchemas(Meta.ConnectionHandle, String, Meta.Pat)}. */
class SchemasRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.SchemasRequest.
+ getDescriptor().findFieldByNumber(Requests.SchemasRequest.CONNECTION_ID_FIELD_NUMBER);
+ private static final FieldDescriptor CATALOG_DESCRIPTOR = Requests.SchemasRequest.
+ getDescriptor().findFieldByNumber(Requests.SchemasRequest.CATALOG_FIELD_NUMBER);
+ private static final FieldDescriptor SCHEMA_PATTERN_DESCRIPTOR = Requests.SchemasRequest.
+ getDescriptor().findFieldByNumber(Requests.SchemasRequest.SCHEMA_PATTERN_FIELD_NUMBER);
+
public final String connectionId;
public final String catalog;
public final String schemaPattern;
@@ -309,21 +317,19 @@ public interface Service {
@Override SchemasRequest deserialize(Message genericMsg) {
final Requests.SchemasRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.SchemasRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc, Requests.SchemasRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
String catalog = null;
- if (ProtobufService.hasField(msg, desc, Requests.SchemasRequest.CATALOG_FIELD_NUMBER)) {
+ if (msg.hasField(CATALOG_DESCRIPTOR)) {
catalog = msg.getCatalog();
}
String schemaPattern = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.SchemasRequest.SCHEMA_PATTERN_FIELD_NUMBER)) {
+ if (msg.hasField(SCHEMA_PATTERN_DESCRIPTOR)) {
schemaPattern = msg.getSchemaPattern();
}
@@ -366,6 +372,15 @@ public interface Service {
* {@link Meta#getTables(Meta.ConnectionHandle, String, org.apache.calcite.avatica.Meta.Pat, org.apache.calcite.avatica.Meta.Pat, java.util.List)}
*/
class TablesRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.TablesRequest.
+ getDescriptor().findFieldByNumber(Requests.TablesRequest.CONNECTION_ID_FIELD_NUMBER);
+ private static final FieldDescriptor CATALOG_DESCRIPTOR = Requests.TablesRequest.
+ getDescriptor().findFieldByNumber(Requests.TablesRequest.CATALOG_FIELD_NUMBER);
+ private static final FieldDescriptor SCHEMA_PATTERN_DESCRIPTOR = Requests.TablesRequest.
+ getDescriptor().findFieldByNumber(Requests.TablesRequest.SCHEMA_PATTERN_FIELD_NUMBER);
+ private static final FieldDescriptor TABLE_NAME_PATTERN_DESCRIPTOR = Requests.TablesRequest.
+ getDescriptor().findFieldByNumber(Requests.TablesRequest.TABLE_NAME_PATTERN_FIELD_NUMBER);
+
public final String connectionId;
public final String catalog;
public final String schemaPattern;
@@ -400,26 +415,24 @@ public interface Service {
@Override Request deserialize(Message genericMsg) {
final Requests.TablesRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.TablesRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc, Requests.TablesRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
String catalog = null;
- if (ProtobufService.hasField(msg, desc, Requests.TablesRequest.CATALOG_FIELD_NUMBER)) {
+ if (msg.hasField(CATALOG_DESCRIPTOR)) {
catalog = msg.getCatalog();
}
String schemaPattern = null;
- if (ProtobufService.hasField(msg, desc, Requests.TablesRequest.SCHEMA_PATTERN_FIELD_NUMBER)) {
+ if (msg.hasField(SCHEMA_PATTERN_DESCRIPTOR)) {
schemaPattern = msg.getSchemaPattern();
}
String tableNamePattern = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.TablesRequest.TABLE_NAME_PATTERN_FIELD_NUMBER)) {
+ if (msg.hasField(TABLE_NAME_PATTERN_DESCRIPTOR)) {
tableNamePattern = msg.getTableNamePattern();
}
@@ -483,6 +496,8 @@ public interface Service {
* Request for {@link Meta#getTableTypes(Meta.ConnectionHandle)}.
*/
class TableTypesRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.TableTypesRequest.
+ getDescriptor().findFieldByNumber(Requests.TableTypesRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
public TableTypesRequest() {
@@ -501,11 +516,9 @@ public interface Service {
@Override TableTypesRequest deserialize(Message genericMsg) {
final Requests.TableTypesRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.TableTypesRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.TableTypesRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -538,6 +551,17 @@ public interface Service {
* {@link Meta#getColumns(Meta.ConnectionHandle, String, org.apache.calcite.avatica.Meta.Pat, org.apache.calcite.avatica.Meta.Pat, org.apache.calcite.avatica.Meta.Pat)}.
*/
class ColumnsRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.ColumnsRequest.
+ getDescriptor().findFieldByNumber(Requests.ColumnsRequest.CONNECTION_ID_FIELD_NUMBER);
+ private static final FieldDescriptor CATALOG_DESCRIPTOR = Requests.ColumnsRequest.
+ getDescriptor().findFieldByNumber(Requests.ColumnsRequest.CATALOG_FIELD_NUMBER);
+ private static final FieldDescriptor SCHEMA_PATTERN_DESCRIPTOR = Requests.ColumnsRequest.
+ getDescriptor().findFieldByNumber(Requests.ColumnsRequest.SCHEMA_PATTERN_FIELD_NUMBER);
+ private static final FieldDescriptor TABLE_NAME_PATTERN_DESCRIPTOR = Requests.ColumnsRequest.
+ getDescriptor().findFieldByNumber(Requests.ColumnsRequest.TABLE_NAME_PATTERN_FIELD_NUMBER);
+ private static final FieldDescriptor COLUMN_NAME_PATTERN_DESCRIPTOR = Requests.ColumnsRequest.
+ getDescriptor().findFieldByNumber(Requests.ColumnsRequest.COLUMN_NAME_PATTERN_FIELD_NUMBER);
+
public final String connectionId;
public final String catalog;
public final String schemaPattern;
@@ -572,33 +596,29 @@ public interface Service {
@Override ColumnsRequest deserialize(Message genericMsg) {
final Requests.ColumnsRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.ColumnsRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc, Requests.ColumnsRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
String catalog = null;
- if (ProtobufService.hasField(msg, desc, Requests.ColumnsRequest.CATALOG_FIELD_NUMBER)) {
+ if (msg.hasField(CATALOG_DESCRIPTOR)) {
catalog = msg.getCatalog();
}
String schemaPattern = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.ColumnsRequest.SCHEMA_PATTERN_FIELD_NUMBER)) {
+ if (msg.hasField(SCHEMA_PATTERN_DESCRIPTOR)) {
schemaPattern = msg.getSchemaPattern();
}
String tableNamePattern = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.ColumnsRequest.TABLE_NAME_PATTERN_FIELD_NUMBER)) {
+ if (msg.hasField(TABLE_NAME_PATTERN_DESCRIPTOR)) {
tableNamePattern = msg.getTableNamePattern();
}
String columnNamePattern = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.ColumnsRequest.COLUMN_NAME_PATTERN_FIELD_NUMBER)) {
+ if (msg.hasField(COLUMN_NAME_PATTERN_DESCRIPTOR)) {
columnNamePattern = msg.getColumnNamePattern();
}
@@ -652,6 +672,8 @@ public interface Service {
/** Request for
* {@link Meta#getTypeInfo(Meta.ConnectionHandle)}. */
class TypeInfoRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.TypeInfoRequest.
+ getDescriptor().findFieldByNumber(Requests.TypeInfoRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
public TypeInfoRequest() {
@@ -670,11 +692,9 @@ public interface Service {
@Override TypeInfoRequest deserialize(Message genericMsg) {
final Requests.TypeInfoRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.TypeInfoRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.TypeInfoRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -716,6 +736,15 @@ public interface Service {
* {@link Meta#getTableTypes(Meta.ConnectionHandle)}
* return this response. */
class ResultSetResponse extends Response {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Responses.ResultSetResponse.
+ getDescriptor().findFieldByNumber(Responses.ResultSetResponse.CONNECTION_ID_FIELD_NUMBER);
+ private static final FieldDescriptor SIGNATURE_DESCRIPTOR = Responses.ResultSetResponse.
+ getDescriptor().findFieldByNumber(Responses.ResultSetResponse.SIGNATURE_FIELD_NUMBER);
+ private static final FieldDescriptor FIRST_FRAME_DESCRIPTOR = Responses.ResultSetResponse.
+ getDescriptor().findFieldByNumber(Responses.ResultSetResponse.FIRST_FRAME_FIELD_NUMBER);
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.ResultSetResponse.
+ getDescriptor().findFieldByNumber(Responses.ResultSetResponse.METADATA_FIELD_NUMBER);
+
public final String connectionId;
public final int statementId;
public final boolean ownStatement;
@@ -760,27 +789,23 @@ public interface Service {
}
static ResultSetResponse fromProto(Responses.ResultSetResponse msg) {
- final Descriptor desc = msg.getDescriptorForType();
-
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.ResultSetResponse.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
Meta.Signature signature = null;
- if (ProtobufService.hasField(msg, desc, Responses.ResultSetResponse.SIGNATURE_FIELD_NUMBER)) {
+ if (msg.hasField(SIGNATURE_DESCRIPTOR)) {
signature = Meta.Signature.fromProto(msg.getSignature());
}
Meta.Frame frame = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.ResultSetResponse.FIRST_FRAME_FIELD_NUMBER)) {
+ if (msg.hasField(FIRST_FRAME_DESCRIPTOR)) {
frame = Meta.Frame.fromProto(msg.getFirstFrame());
}
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc, Responses.ResultSetResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -840,6 +865,13 @@ public interface Service {
/** Request for
* {@link Meta#prepareAndExecute(Meta.StatementHandle, String, long, Meta.PrepareCallback)}. */
class PrepareAndExecuteRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.
+ PrepareAndExecuteRequest.getDescriptor().findFieldByNumber(
+ Requests.PrepareAndExecuteRequest.CONNECTION_ID_FIELD_NUMBER);
+ private static final FieldDescriptor SQL_DESCRIPTOR = Requests.
+ PrepareAndExecuteRequest.getDescriptor().findFieldByNumber(
+ Requests.PrepareAndExecuteRequest.SQL_FIELD_NUMBER);
+
public final String connectionId;
public final String sql;
public final long maxRowCount;
@@ -871,16 +903,14 @@ public interface Service {
@Override PrepareAndExecuteRequest deserialize(Message genericMsg) {
final Requests.PrepareAndExecuteRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.PrepareAndExecuteRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.PrepareAndExecuteRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
String sql = null;
- if (ProtobufService.hasField(msg, desc, Requests.PrepareAndExecuteRequest.SQL_FIELD_NUMBER)) {
+ if (msg.hasField(SQL_DESCRIPTOR)) {
sql = msg.getSql();
}
@@ -926,6 +956,8 @@ public interface Service {
/** Request for
* {@link org.apache.calcite.avatica.Meta#execute}. */
class ExecuteRequest extends Request {
+ private static final FieldDescriptor STATEMENT_HANDLE_DESCRIPTOR = Requests.ExecuteRequest.
+ getDescriptor().findFieldByNumber(Requests.ExecuteRequest.STATEMENTHANDLE_FIELD_NUMBER);
public final Meta.StatementHandle statementHandle;
public final List<TypedValue> parameterValues;
public final long maxRowCount;
@@ -953,11 +985,9 @@ public interface Service {
@Override ExecuteRequest deserialize(Message genericMsg) {
final Requests.ExecuteRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.ExecuteRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
Meta.StatementHandle statemetnHandle = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.ExecuteRequest.STATEMENTHANDLE_FIELD_NUMBER)) {
+ if (msg.hasField(STATEMENT_HANDLE_DESCRIPTOR)) {
statemetnHandle = Meta.StatementHandle.fromProto(msg.getStatementHandle());
}
@@ -1017,6 +1047,8 @@ public interface Service {
/** Response to a
* {@link org.apache.calcite.avatica.remote.Service.PrepareAndExecuteRequest}. */
class ExecuteResponse extends Response {
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.ExecuteResponse.
+ getDescriptor().findFieldByNumber(Responses.ExecuteResponse.METADATA_FIELD_NUMBER);
public final List<ResultSetResponse> results;
public boolean missingStatement = false;
public final RpcMetadataResponse rpcMetadata;
@@ -1038,7 +1070,6 @@ public interface Service {
@Override ExecuteResponse deserialize(Message genericMsg) {
final Responses.ExecuteResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.ExecuteResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
List<Responses.ResultSetResponse> msgResults = msg.getResultsList();
List<ResultSetResponse> copiedResults = new ArrayList<>(msgResults.size());
@@ -1048,7 +1079,7 @@ public interface Service {
}
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc, Responses.ExecuteResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -1089,6 +1120,10 @@ public interface Service {
/** Request for
* {@link Meta#prepare(Meta.ConnectionHandle, String, long)}. */
class PrepareRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.PrepareRequest.
+ getDescriptor().findFieldByNumber(Requests.PrepareRequest.CONNECTION_ID_FIELD_NUMBER);
+ private static final FieldDescriptor SQL_DESCRIPTOR = Requests.PrepareRequest.
+ getDescriptor().findFieldByNumber(Requests.PrepareRequest.SQL_FIELD_NUMBER);
public final String connectionId;
public final String sql;
public final long maxRowCount;
@@ -1116,15 +1151,14 @@ public interface Service {
@Override PrepareRequest deserialize(Message genericMsg) {
final Requests.PrepareRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.PrepareRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc, Requests.PrepareRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
String sql = null;
- if (ProtobufService.hasField(msg, desc, Requests.PrepareRequest.SQL_FIELD_NUMBER)) {
+ if (msg.hasField(SQL_DESCRIPTOR)) {
sql = msg.getSql();
}
@@ -1165,6 +1199,8 @@ public interface Service {
/** Response from
* {@link org.apache.calcite.avatica.remote.Service.PrepareRequest}. */
class PrepareResponse extends Response {
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.PrepareResponse.
+ getDescriptor().findFieldByNumber(Responses.PrepareResponse.METADATA_FIELD_NUMBER);
public final Meta.StatementHandle statement;
public final RpcMetadataResponse rpcMetadata;
@@ -1184,10 +1220,9 @@ public interface Service {
@Override PrepareResponse deserialize(Message genericMsg) {
final Responses.PrepareResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.PrepareResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc, Responses.PrepareResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -1226,6 +1261,8 @@ public interface Service {
/** Request for
* {@link Meta#fetch}. */
class FetchRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.FetchRequest.
+ getDescriptor().findFieldByNumber(Requests.FetchRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
public final int statementId;
public final long offset;
@@ -1259,10 +1296,9 @@ public interface Service {
@Override FetchRequest deserialize(Message genericMsg) {
final Requests.FetchRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.FetchRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc, Requests.FetchRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -1306,6 +1342,8 @@ public interface Service {
/** Response from
* {@link org.apache.calcite.avatica.remote.Service.FetchRequest}. */
class FetchResponse extends Response {
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.FetchResponse.
+ getDescriptor().findFieldByNumber(Responses.FetchResponse.METADATA_FIELD_NUMBER);
public final Meta.Frame frame;
public boolean missingStatement = false;
public boolean missingResults = false;
@@ -1330,10 +1368,9 @@ public interface Service {
@Override FetchResponse deserialize(Message genericMsg) {
final Responses.FetchResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.FetchResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc, Responses.FetchResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -1375,6 +1412,9 @@ public interface Service {
/** Request for
* {@link org.apache.calcite.avatica.Meta#createStatement(org.apache.calcite.avatica.Meta.ConnectionHandle)}. */
class CreateStatementRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.CreateStatementRequest.
+ getDescriptor().findFieldByNumber(
+ Requests.CreateStatementRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
CreateStatementRequest() {
@@ -1394,11 +1434,9 @@ public interface Service {
@Override CreateStatementRequest deserialize(Message genericMsg) {
final Requests.CreateStatementRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.CreateStatementRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.CreateStatementRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -1432,6 +1470,12 @@ public interface Service {
/** Response from
* {@link org.apache.calcite.avatica.remote.Service.CreateStatementRequest}. */
class CreateStatementResponse extends Response {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Responses.
+ CreateStatementResponse.getDescriptor().findFieldByNumber(
+ Responses.CreateStatementResponse.CONNECTION_ID_FIELD_NUMBER);
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.
+ CreateStatementResponse.getDescriptor().findFieldByNumber(
+ Responses.CreateStatementResponse.METADATA_FIELD_NUMBER);
public final String connectionId;
public final int statementId;
public final RpcMetadataResponse rpcMetadata;
@@ -1455,17 +1499,13 @@ public interface Service {
@Override CreateStatementResponse deserialize(Message genericMsg) {
final Responses.CreateStatementResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.CreateStatementResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
-
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.CreateStatementResponse.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.CreateStatementResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -1509,6 +1549,9 @@ public interface Service {
/** Request for
* {@link org.apache.calcite.avatica.Meta#closeStatement(org.apache.calcite.avatica.Meta.StatementHandle)}. */
class CloseStatementRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.CloseStatementRequest.
+ getDescriptor().findFieldByNumber(
+ Requests.CloseStatementRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
public final int statementId;
@@ -1532,11 +1575,9 @@ public interface Service {
@Override CloseStatementRequest deserialize(Message genericMsg) {
final Requests.CloseStatementRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.CloseStatementRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.CloseStatementRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -1571,6 +1612,10 @@ public interface Service {
/** Response from
* {@link org.apache.calcite.avatica.remote.Service.CloseStatementRequest}. */
class CloseStatementResponse extends Response {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Responses.
+ CloseStatementResponse.getDescriptor().findFieldByNumber(
+ Responses.CloseStatementResponse.METADATA_FIELD_NUMBER);
+
public final RpcMetadataResponse rpcMetadata;
public CloseStatementResponse() {
@@ -1585,11 +1630,8 @@ public interface Service {
@Override CloseStatementResponse deserialize(Message genericMsg) {
final Responses.CloseStatementResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.CloseStatementResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
-
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.CloseStatementResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -1623,6 +1665,9 @@ public interface Service {
/** Request for
* {@link Meta#openConnection}. */
class OpenConnectionRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.OpenConnectionRequest
+ .getDescriptor().findFieldByNumber(
+ Requests.OpenConnectionRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
public final Map<String, String> info;
@@ -1670,11 +1715,9 @@ public interface Service {
@Override Request deserialize(Message genericMsg) {
final Requests.OpenConnectionRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.OpenConnectionRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.OpenConnectionRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -1716,6 +1759,9 @@ public interface Service {
/** Response from
* {@link org.apache.calcite.avatica.remote.Service.OpenConnectionRequest}. */
class OpenConnectionResponse extends Response {
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.OpenConnectionResponse
+ .getDescriptor().findFieldByNumber(
+ Responses.OpenConnectionResponse.METADATA_FIELD_NUMBER);
public final RpcMetadataResponse rpcMetadata;
public OpenConnectionResponse() {
@@ -1730,11 +1776,9 @@ public interface Service {
@Override OpenConnectionResponse deserialize(Message genericMsg) {
final Responses.OpenConnectionResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.OpenConnectionResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.OpenConnectionResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -1768,6 +1812,9 @@ public interface Service {
/** Request for
* {@link Meta#closeConnection(org.apache.calcite.avatica.Meta.ConnectionHandle)}. */
class CloseConnectionRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.CloseConnectionRequest
+ .getDescriptor().findFieldByNumber(
+ Requests.CloseConnectionRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
CloseConnectionRequest() {
@@ -1787,11 +1834,8 @@ public interface Service {
@Override CloseConnectionRequest deserialize(Message genericMsg) {
final Requests.CloseConnectionRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.CloseConnectionRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
-
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.CloseConnectionRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -1825,6 +1869,10 @@ public interface Service {
/** Response from
* {@link org.apache.calcite.avatica.remote.Service.CloseConnectionRequest}. */
class CloseConnectionResponse extends Response {
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.CloseConnectionResponse
+ .getDescriptor().findFieldByNumber(
+ Responses.CloseConnectionResponse.METADATA_FIELD_NUMBER);
+
public final RpcMetadataResponse rpcMetadata;
public CloseConnectionResponse() {
@@ -1839,11 +1887,9 @@ public interface Service {
@Override CloseConnectionResponse deserialize(Message genericMsg) {
final Responses.CloseConnectionResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.CloseConnectionResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.CloseConnectionResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -1876,6 +1922,12 @@ public interface Service {
/** Request for {@link Meta#connectionSync(Meta.ConnectionHandle, Meta.ConnectionProperties)}. */
class ConnectionSyncRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.ConnectionSyncRequest
+ .getDescriptor().findFieldByNumber(
+ Requests.ConnectionSyncRequest.CONNECTION_ID_FIELD_NUMBER);
+ private static final FieldDescriptor CONN_PROPS_DESCRIPTOR = Requests.ConnectionSyncRequest
+ .getDescriptor().findFieldByNumber(Requests.ConnectionSyncRequest.CONN_PROPS_FIELD_NUMBER);
+
public final String connectionId;
public final Meta.ConnectionProperties connProps;
@@ -1899,17 +1951,14 @@ public interface Service {
@Override ConnectionSyncRequest deserialize(Message genericMsg) {
final Requests.ConnectionSyncRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.ConnectionSyncRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.ConnectionSyncRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
Meta.ConnectionProperties connProps = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.ConnectionSyncRequest.CONN_PROPS_FIELD_NUMBER)) {
+ if (msg.hasField(CONN_PROPS_DESCRIPTOR)) {
connProps = ConnectionPropertiesImpl.fromProto(msg.getConnProps());
}
@@ -1948,6 +1997,8 @@ public interface Service {
/** Response for
* {@link Meta#connectionSync(Meta.ConnectionHandle, Meta.ConnectionProperties)}. */
class ConnectionSyncResponse extends Response {
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.ConnectionSyncResponse
+ .getDescriptor().findFieldByNumber(Responses.ConnectionSyncResponse.METADATA_FIELD_NUMBER);
public final Meta.ConnectionProperties connProps;
public final RpcMetadataResponse rpcMetadata;
@@ -1966,11 +2017,8 @@ public interface Service {
@Override ConnectionSyncResponse deserialize(Message genericMsg) {
final Responses.ConnectionSyncResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.ConnectionSyncResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
-
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.ConnectionSyncResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -2011,6 +2059,9 @@ public interface Service {
/** Response for
* {@link Meta#getDatabaseProperties(Meta.ConnectionHandle)}. */
class DatabasePropertyResponse extends Response {
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.DatabasePropertyResponse
+ .getDescriptor().findFieldByNumber(
+ Responses.DatabasePropertyResponse.METADATA_FIELD_NUMBER);
public final Map<Meta.DatabaseProperty, Object> map;
public final RpcMetadataResponse rpcMetadata;
@@ -2029,8 +2080,6 @@ public interface Service {
@Override DatabasePropertyResponse deserialize(Message genericMsg) {
final Responses.DatabasePropertyResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.DatabasePropertyResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
-
HashMap<Meta.DatabaseProperty, Object> properties = new HashMap<>();
for (Responses.DatabasePropertyElement property : msg.getPropsList()) {
final Meta.DatabaseProperty dbProp = Meta.DatabaseProperty.fromProto(property.getKey());
@@ -2067,8 +2116,7 @@ public interface Service {
}
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.DatabasePropertyResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -2143,7 +2191,20 @@ public interface Service {
* transport over the wire. Thus, {@link Service#apply} will never return
* an ErrorResponse.
*/
- class ErrorResponse extends Response {
+ public class ErrorResponse extends Response {
+ private static final FieldDescriptor ERROR_MESSAGE_DESCRIPTOR = Responses.ErrorResponse
+ .getDescriptor().findFieldByNumber(
+ Responses.ErrorResponse.ERROR_MESSAGE_FIELD_NUMBER);
+ private static final FieldDescriptor SQL_DESCRIPTOR = Responses.ErrorResponse
+ .getDescriptor().findFieldByNumber(
+ Responses.ErrorResponse.SQL_STATE_FIELD_NUMBER);
+ private static final FieldDescriptor SEVERITY_DESCRIPTOR = Responses.ErrorResponse
+ .getDescriptor().findFieldByNumber(
+ Responses.ErrorResponse.SEVERITY_FIELD_NUMBER);
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.ErrorResponse
+ .getDescriptor().findFieldByNumber(
+ Responses.ErrorResponse.METADATA_FIELD_NUMBER);
+
public static final int UNKNOWN_ERROR_CODE = -1;
public static final int MISSING_CONNECTION_ERROR_CODE = 1;
@@ -2219,30 +2280,28 @@ public interface Service {
@Override ErrorResponse deserialize(Message genericMsg) {
final Responses.ErrorResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.ErrorResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
-
List<String> exceptions = null;
if (msg.getHasExceptions()) {
exceptions = msg.getExceptionsList();
}
String errorMessage = null;
- if (ProtobufService.hasField(msg, desc, Responses.ErrorResponse.ERROR_MESSAGE_FIELD_NUMBER)) {
+ if (msg.hasField(ERROR_MESSAGE_DESCRIPTOR)) {
errorMessage = msg.getErrorMessage();
}
String sqlState = null;
- if (ProtobufService.hasField(msg, desc, Responses.ErrorResponse.SQL_STATE_FIELD_NUMBER)) {
+ if (msg.hasField(SQL_DESCRIPTOR)) {
sqlState = msg.getSqlState();
}
AvaticaSeverity severity = null;
- if (ProtobufService.hasField(msg, desc, Responses.ErrorResponse.SEVERITY_FIELD_NUMBER)) {
+ if (msg.hasField(SEVERITY_DESCRIPTOR)) {
severity = AvaticaSeverity.fromProto(msg.getSeverity());
}
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc, Responses.ErrorResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -2321,6 +2380,14 @@ public interface Service {
* Request for {@link Service#apply(SyncResultsRequest)}
*/
class SyncResultsRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.SyncResultsRequest
+ .getDescriptor().findFieldByNumber(Requests.SyncResultsRequest.CONNECTION_ID_FIELD_NUMBER);
+ private static final FieldDescriptor STATEMENT_ID_DESCRIPTOR = Requests.SyncResultsRequest
+ .getDescriptor().findFieldByNumber(Requests.SyncResultsRequest.STATEMENT_ID_FIELD_NUMBER);
+ private static final FieldDescriptor STATE_DESCRIPTOR = Requests.SyncResultsRequest
+ .getDescriptor().findFieldByNumber(Requests.SyncResultsRequest.STATE_FIELD_NUMBER);
+ private static final FieldDescriptor OFFSET_DESCRIPTOR = Requests.SyncResultsRequest
+ .getDescriptor().findFieldByNumber(Requests.SyncResultsRequest.OFFSET_FIELD_NUMBER);
public final String connectionId;
public final int statementId;
public final QueryState state;
@@ -2349,27 +2416,24 @@ public interface Service {
Request deserialize(Message genericMsg) {
final Requests.SyncResultsRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.SyncResultsRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.SyncResultsRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
int statementId = 0;
- if (ProtobufService.hasField(msg, desc,
- Requests.SyncResultsRequest.STATEMENT_ID_FIELD_NUMBER)) {
+ if (msg.hasField(STATEMENT_ID_DESCRIPTOR)) {
statementId = msg.getStatementId();
}
Common.QueryState state = null;
- if (ProtobufService.hasField(msg, desc, Requests.SyncResultsRequest.STATE_FIELD_NUMBER)) {
+ if (msg.hasField(STATE_DESCRIPTOR)) {
state = msg.getState();
}
long offset = 0;
- if (ProtobufService.hasField(msg, desc, Requests.SyncResultsRequest.OFFSET_FIELD_NUMBER)) {
+ if (msg.hasField(OFFSET_DESCRIPTOR)) {
offset = msg.getOffset();
}
@@ -2417,6 +2481,8 @@ public interface Service {
* Response for {@link Service#apply(SyncResultsRequest)}.
*/
class SyncResultsResponse extends Response {
+ private static final FieldDescriptor METADATA_DESCRIPTOR = Responses.SyncResultsResponse
+ .getDescriptor().findFieldByNumber(Responses.SyncResultsResponse.METADATA_FIELD_NUMBER);
public boolean missingStatement = false;
public final boolean moreResults;
public final RpcMetadataResponse rpcMetadata;
@@ -2437,11 +2503,9 @@ public interface Service {
SyncResultsResponse deserialize(Message genericMsg) {
final Responses.SyncResultsResponse msg = ProtobufService.castProtobufMessage(genericMsg,
Responses.SyncResultsResponse.class);
- final Descriptor desc = msg.getDescriptorForType();
RpcMetadataResponse metadata = null;
- if (ProtobufService.hasField(msg, desc,
- Responses.SyncResultsResponse.METADATA_FIELD_NUMBER)) {
+ if (msg.hasField(METADATA_DESCRIPTOR)) {
metadata = RpcMetadataResponse.fromProto(msg.getMetadata());
}
@@ -2481,7 +2545,9 @@ public interface Service {
* This isn't really a "response", but we want to be able to be able to convert it to protobuf
* and back again, so ignore that there isn't an explicit endpoint for it.
*/
- class RpcMetadataResponse extends Response {
+ public class RpcMetadataResponse extends Response {
+ private static final FieldDescriptor SERVER_ADDRESS_DESCRIPTOR = Responses.RpcMetadata
+ .getDescriptor().findFieldByNumber(Responses.RpcMetadata.SERVER_ADDRESS_FIELD_NUMBER);
public final String serverAddress;
public RpcMetadataResponse() {
@@ -2504,10 +2570,8 @@ public interface Service {
}
static RpcMetadataResponse fromProto(Responses.RpcMetadata msg) {
- final Descriptor desc = msg.getDescriptorForType();
-
String serverAddress = null;
- if (ProtobufService.hasField(msg, desc, Responses.RpcMetadata.SERVER_ADDRESS_FIELD_NUMBER)) {
+ if (msg.hasField(SERVER_ADDRESS_DESCRIPTOR)) {
serverAddress = msg.getServerAddress();
}
@@ -2531,6 +2595,8 @@ public interface Service {
* An RPC request to invoke a commit on a Connection.
*/
class CommitRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.CommitRequest
+ .getDescriptor().findFieldByNumber(Requests.CommitRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
CommitRequest() {
@@ -2548,10 +2614,9 @@ public interface Service {
@Override CommitRequest deserialize(Message genericMsg) {
final Requests.CommitRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.CommitRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc, Requests.CommitRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -2585,6 +2650,9 @@ public interface Service {
* An RPC response from invoking commit on a Connection.
*/
class CommitResponse extends Response {
+ private static final CommitResponse INSTANCE = new CommitResponse();
+ private static final Responses.CommitResponse PB_INSTANCE =
+ Responses.CommitResponse.getDefaultInstance();
CommitResponse() {}
@@ -2592,11 +2660,11 @@ public interface Service {
// Checks the type of genericMsg
ProtobufService.castProtobufMessage(genericMsg, Responses.CommitResponse.class);
- return new CommitResponse();
+ return INSTANCE;
}
@Override Responses.CommitResponse serialize() {
- return Responses.CommitResponse.newBuilder().build();
+ return PB_INSTANCE;
}
@Override public int hashCode() {
@@ -2613,6 +2681,8 @@ public interface Service {
* An RPC request to invoke a rollback on a Connection.
*/
class RollbackRequest extends Request {
+ private static final FieldDescriptor CONNECTION_ID_DESCRIPTOR = Requests.RollbackRequest
+ .getDescriptor().findFieldByNumber(Requests.RollbackRequest.CONNECTION_ID_FIELD_NUMBER);
public final String connectionId;
RollbackRequest() {
@@ -2630,11 +2700,9 @@ public interface Service {
@Override RollbackRequest deserialize(Message genericMsg) {
final Requests.RollbackRequest msg = ProtobufService.castProtobufMessage(genericMsg,
Requests.RollbackRequest.class);
- final Descriptor desc = msg.getDescriptorForType();
String connectionId = null;
- if (ProtobufService.hasField(msg, desc,
- Requests.RollbackRequest.CONNECTION_ID_FIELD_NUMBER)) {
+ if (msg.hasField(CONNECTION_ID_DESCRIPTOR)) {
connectionId = msg.getConnectionId();
}
@@ -2668,17 +2736,20 @@ public interface Service {
* An RPC response from invoking rollback on a Connection.
*/
class RollbackResponse extends Response {
+ private static final RollbackResponse INSTANCE = new RollbackResponse();
+ private static final Responses.RollbackResponse PB_INSTANCE =
+ Responses.RollbackResponse.getDefaultInstance();
RollbackResponse() {}
@Override RollbackResponse deserialize(Message genericMsg) {
// Check that genericMsg is the expected type
ProtobufService.castProtobufMessage(genericMsg, Responses.RollbackResponse.class);
- return new RollbackResponse();
+ return INSTANCE;
}
@Override Responses.RollbackResponse serialize() {
- return Responses.RollbackResponse.newBuilder().build();
+ return PB_INSTANCE;
}
@Override public int hashCode() {
http://git-wip-us.apache.org/repos/asf/calcite/blob/0de38aaa/avatica/src/test/java/org/apache/calcite/avatica/remote/ProtobufHandlerTest.java
----------------------------------------------------------------------
diff --git a/avatica/src/test/java/org/apache/calcite/avatica/remote/ProtobufHandlerTest.java b/avatica/src/test/java/org/apache/calcite/avatica/remote/ProtobufHandlerTest.java
index e7c442c..afb15c3 100644
--- a/avatica/src/test/java/org/apache/calcite/avatica/remote/ProtobufHandlerTest.java
+++ b/avatica/src/test/java/org/apache/calcite/avatica/remote/ProtobufHandlerTest.java
@@ -116,8 +116,8 @@ public class ProtobufHandlerTest {
assertTrue(iter.hasNext());
Common.ColumnValue column = iter.next();
assertTrue("The Column should have contained a scalar: " + column,
- ProtobufService.hasField(column, column.getDescriptorForType(),
- ColumnValue.SCALAR_VALUE_FIELD_NUMBER));
+ column.hasField(ColumnValue.getDescriptor()
+ .findFieldByNumber(ColumnValue.SCALAR_VALUE_FIELD_NUMBER)));
Common.TypedValue value = column.getScalarValue();
assertEquals(Common.Rep.BOOLEAN, value.getType());
@@ -126,8 +126,8 @@ public class ProtobufHandlerTest {
assertTrue(iter.hasNext());
column = iter.next();
assertTrue("The Column should have contained a scalar: " + column,
- ProtobufService.hasField(column, column.getDescriptorForType(),
- ColumnValue.SCALAR_VALUE_FIELD_NUMBER));
+ column.hasField(ColumnValue.getDescriptor()
+ .findFieldByNumber(ColumnValue.SCALAR_VALUE_FIELD_NUMBER)));
value = column.getScalarValue();
assertEquals(Common.Rep.STRING, value.getType());
assertEquals("my_string", value.getStringValue());