http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/avatica/src/main/java/org/apache/calcite/avatica/proto/Requests.java ---------------------------------------------------------------------- diff --git a/avatica/src/main/java/org/apache/calcite/avatica/proto/Requests.java b/avatica/src/main/java/org/apache/calcite/avatica/proto/Requests.java index 15a9a2e..e098322 100644 --- a/avatica/src/main/java/org/apache/calcite/avatica/proto/Requests.java +++ b/avatica/src/main/java/org/apache/calcite/avatica/proto/Requests.java @@ -10369,6 +10369,758 @@ package org.apache.calcite.avatica.proto; } + public interface SyncResultsRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:SyncResultsRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>optional string connection_id = 1;</code> + */ + java.lang.String getConnectionId(); + /** + * <code>optional string connection_id = 1;</code> + */ + com.google.protobuf.ByteString + getConnectionIdBytes(); + + /** + * <code>optional uint32 statement_id = 2;</code> + */ + int getStatementId(); + + /** + * <code>optional .QueryState state = 3;</code> + */ + boolean hasState(); + /** + * <code>optional .QueryState state = 3;</code> + */ + org.apache.calcite.avatica.proto.Common.QueryState getState(); + /** + * <code>optional .QueryState state = 3;</code> + */ + org.apache.calcite.avatica.proto.Common.QueryStateOrBuilder getStateOrBuilder(); + + /** + * <code>optional uint64 offset = 4;</code> + */ + long getOffset(); + } + /** + * Protobuf type {@code SyncResultsRequest} + */ + public static final class SyncResultsRequest extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:SyncResultsRequest) + SyncResultsRequestOrBuilder { + // Use SyncResultsRequest.newBuilder() to construct. + private SyncResultsRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) { + super(builder); + } + private SyncResultsRequest() { + connectionId_ = ""; + statementId_ = 0; + offset_ = 0L; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); + } + private SyncResultsRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) { + this(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!input.skipField(tag)) { + done = true; + } + break; + } + case 10: { + String s = input.readStringRequireUtf8(); + + connectionId_ = s; + break; + } + case 16: { + + statementId_ = input.readUInt32(); + break; + } + case 26: { + org.apache.calcite.avatica.proto.Common.QueryState.Builder subBuilder = null; + if (state_ != null) { + subBuilder = state_.toBuilder(); + } + state_ = input.readMessage(org.apache.calcite.avatica.proto.Common.QueryState.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(state_); + state_ = subBuilder.buildPartial(); + } + + break; + } + case 32: { + + offset_ = input.readUInt64(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw new RuntimeException(e.setUnfinishedMessage(this)); + } catch (java.io.IOException e) { + throw new RuntimeException( + new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this)); + } finally { + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.apache.calcite.avatica.proto.Requests.internal_static_SyncResultsRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.apache.calcite.avatica.proto.Requests.internal_static_SyncResultsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.calcite.avatica.proto.Requests.SyncResultsRequest.class, org.apache.calcite.avatica.proto.Requests.SyncResultsRequest.Builder.class); + } + + public static final int CONNECTION_ID_FIELD_NUMBER = 1; + private volatile java.lang.Object connectionId_; + /** + * <code>optional string connection_id = 1;</code> + */ + public java.lang.String getConnectionId() { + java.lang.Object ref = connectionId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + connectionId_ = s; + return s; + } + } + /** + * <code>optional string connection_id = 1;</code> + */ + public com.google.protobuf.ByteString + getConnectionIdBytes() { + java.lang.Object ref = connectionId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + connectionId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int STATEMENT_ID_FIELD_NUMBER = 2; + private int statementId_; + /** + * <code>optional uint32 statement_id = 2;</code> + */ + public int getStatementId() { + return statementId_; + } + + public static final int STATE_FIELD_NUMBER = 3; + private org.apache.calcite.avatica.proto.Common.QueryState state_; + /** + * <code>optional .QueryState state = 3;</code> + */ + public boolean hasState() { + return state_ != null; + } + /** + * <code>optional .QueryState state = 3;</code> + */ + public org.apache.calcite.avatica.proto.Common.QueryState getState() { + return state_ == null ? org.apache.calcite.avatica.proto.Common.QueryState.getDefaultInstance() : state_; + } + /** + * <code>optional .QueryState state = 3;</code> + */ + public org.apache.calcite.avatica.proto.Common.QueryStateOrBuilder getStateOrBuilder() { + return getState(); + } + + public static final int OFFSET_FIELD_NUMBER = 4; + private long offset_; + /** + * <code>optional uint64 offset = 4;</code> + */ + public long getOffset() { + return offset_; + } + + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getConnectionIdBytes().isEmpty()) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, connectionId_); + } + if (statementId_ != 0) { + output.writeUInt32(2, statementId_); + } + if (state_ != null) { + output.writeMessage(3, getState()); + } + if (offset_ != 0L) { + output.writeUInt64(4, offset_); + } + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getConnectionIdBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, connectionId_); + } + if (statementId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, statementId_); + } + if (state_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getState()); + } + if (offset_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(4, offset_); + } + memoizedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.apache.calcite.avatica.proto.Requests.SyncResultsRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code SyncResultsRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:SyncResultsRequest) + org.apache.calcite.avatica.proto.Requests.SyncResultsRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.apache.calcite.avatica.proto.Requests.internal_static_SyncResultsRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.apache.calcite.avatica.proto.Requests.internal_static_SyncResultsRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.calcite.avatica.proto.Requests.SyncResultsRequest.class, org.apache.calcite.avatica.proto.Requests.SyncResultsRequest.Builder.class); + } + + // Construct using org.apache.calcite.avatica.proto.Requests.SyncResultsRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + public Builder clear() { + super.clear(); + connectionId_ = ""; + + statementId_ = 0; + + if (stateBuilder_ == null) { + state_ = null; + } else { + state_ = null; + stateBuilder_ = null; + } + offset_ = 0L; + + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.apache.calcite.avatica.proto.Requests.internal_static_SyncResultsRequest_descriptor; + } + + public org.apache.calcite.avatica.proto.Requests.SyncResultsRequest getDefaultInstanceForType() { + return org.apache.calcite.avatica.proto.Requests.SyncResultsRequest.getDefaultInstance(); + } + + public org.apache.calcite.avatica.proto.Requests.SyncResultsRequest build() { + org.apache.calcite.avatica.proto.Requests.SyncResultsRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.apache.calcite.avatica.proto.Requests.SyncResultsRequest buildPartial() { + org.apache.calcite.avatica.proto.Requests.SyncResultsRequest result = new org.apache.calcite.avatica.proto.Requests.SyncResultsRequest(this); + result.connectionId_ = connectionId_; + result.statementId_ = statementId_; + if (stateBuilder_ == null) { + result.state_ = state_; + } else { + result.state_ = stateBuilder_.build(); + } + result.offset_ = offset_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.apache.calcite.avatica.proto.Requests.SyncResultsRequest) { + return mergeFrom((org.apache.calcite.avatica.proto.Requests.SyncResultsRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.apache.calcite.avatica.proto.Requests.SyncResultsRequest other) { + if (other == org.apache.calcite.avatica.proto.Requests.SyncResultsRequest.getDefaultInstance()) return this; + if (!other.getConnectionId().isEmpty()) { + connectionId_ = other.connectionId_; + onChanged(); + } + if (other.getStatementId() != 0) { + setStatementId(other.getStatementId()); + } + if (other.hasState()) { + mergeState(other.getState()); + } + if (other.getOffset() != 0L) { + setOffset(other.getOffset()); + } + onChanged(); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.apache.calcite.avatica.proto.Requests.SyncResultsRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.apache.calcite.avatica.proto.Requests.SyncResultsRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object connectionId_ = ""; + /** + * <code>optional string connection_id = 1;</code> + */ + public java.lang.String getConnectionId() { + java.lang.Object ref = connectionId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + connectionId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * <code>optional string connection_id = 1;</code> + */ + public com.google.protobuf.ByteString + getConnectionIdBytes() { + java.lang.Object ref = connectionId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + connectionId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * <code>optional string connection_id = 1;</code> + */ + public Builder setConnectionId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + connectionId_ = value; + onChanged(); + return this; + } + /** + * <code>optional string connection_id = 1;</code> + */ + public Builder clearConnectionId() { + + connectionId_ = getDefaultInstance().getConnectionId(); + onChanged(); + return this; + } + /** + * <code>optional string connection_id = 1;</code> + */ + public Builder setConnectionIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + connectionId_ = value; + onChanged(); + return this; + } + + private int statementId_ ; + /** + * <code>optional uint32 statement_id = 2;</code> + */ + public int getStatementId() { + return statementId_; + } + /** + * <code>optional uint32 statement_id = 2;</code> + */ + public Builder setStatementId(int value) { + + statementId_ = value; + onChanged(); + return this; + } + /** + * <code>optional uint32 statement_id = 2;</code> + */ + public Builder clearStatementId() { + + statementId_ = 0; + onChanged(); + return this; + } + + private org.apache.calcite.avatica.proto.Common.QueryState state_ = null; + private com.google.protobuf.SingleFieldBuilder< + org.apache.calcite.avatica.proto.Common.QueryState, org.apache.calcite.avatica.proto.Common.QueryState.Builder, org.apache.calcite.avatica.proto.Common.QueryStateOrBuilder> stateBuilder_; + /** + * <code>optional .QueryState state = 3;</code> + */ + public boolean hasState() { + return stateBuilder_ != null || state_ != null; + } + /** + * <code>optional .QueryState state = 3;</code> + */ + public org.apache.calcite.avatica.proto.Common.QueryState getState() { + if (stateBuilder_ == null) { + return state_ == null ? org.apache.calcite.avatica.proto.Common.QueryState.getDefaultInstance() : state_; + } else { + return stateBuilder_.getMessage(); + } + } + /** + * <code>optional .QueryState state = 3;</code> + */ + public Builder setState(org.apache.calcite.avatica.proto.Common.QueryState value) { + if (stateBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + state_ = value; + onChanged(); + } else { + stateBuilder_.setMessage(value); + } + + return this; + } + /** + * <code>optional .QueryState state = 3;</code> + */ + public Builder setState( + org.apache.calcite.avatica.proto.Common.QueryState.Builder builderForValue) { + if (stateBuilder_ == null) { + state_ = builderForValue.build(); + onChanged(); + } else { + stateBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * <code>optional .QueryState state = 3;</code> + */ + public Builder mergeState(org.apache.calcite.avatica.proto.Common.QueryState value) { + if (stateBuilder_ == null) { + if (state_ != null) { + state_ = + org.apache.calcite.avatica.proto.Common.QueryState.newBuilder(state_).mergeFrom(value).buildPartial(); + } else { + state_ = value; + } + onChanged(); + } else { + stateBuilder_.mergeFrom(value); + } + + return this; + } + /** + * <code>optional .QueryState state = 3;</code> + */ + public Builder clearState() { + if (stateBuilder_ == null) { + state_ = null; + onChanged(); + } else { + state_ = null; + stateBuilder_ = null; + } + + return this; + } + /** + * <code>optional .QueryState state = 3;</code> + */ + public org.apache.calcite.avatica.proto.Common.QueryState.Builder getStateBuilder() { + + onChanged(); + return getStateFieldBuilder().getBuilder(); + } + /** + * <code>optional .QueryState state = 3;</code> + */ + public org.apache.calcite.avatica.proto.Common.QueryStateOrBuilder getStateOrBuilder() { + if (stateBuilder_ != null) { + return stateBuilder_.getMessageOrBuilder(); + } else { + return state_ == null ? + org.apache.calcite.avatica.proto.Common.QueryState.getDefaultInstance() : state_; + } + } + /** + * <code>optional .QueryState state = 3;</code> + */ + private com.google.protobuf.SingleFieldBuilder< + org.apache.calcite.avatica.proto.Common.QueryState, org.apache.calcite.avatica.proto.Common.QueryState.Builder, org.apache.calcite.avatica.proto.Common.QueryStateOrBuilder> + getStateFieldBuilder() { + if (stateBuilder_ == null) { + stateBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.apache.calcite.avatica.proto.Common.QueryState, org.apache.calcite.avatica.proto.Common.QueryState.Builder, org.apache.calcite.avatica.proto.Common.QueryStateOrBuilder>( + getState(), + getParentForChildren(), + isClean()); + state_ = null; + } + return stateBuilder_; + } + + private long offset_ ; + /** + * <code>optional uint64 offset = 4;</code> + */ + public long getOffset() { + return offset_; + } + /** + * <code>optional uint64 offset = 4;</code> + */ + public Builder setOffset(long value) { + + offset_ = value; + onChanged(); + return this; + } + /** + * <code>optional uint64 offset = 4;</code> + */ + public Builder clearOffset() { + + offset_ = 0L; + onChanged(); + return this; + } + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + + // @@protoc_insertion_point(builder_scope:SyncResultsRequest) + } + + // @@protoc_insertion_point(class_scope:SyncResultsRequest) + private static final org.apache.calcite.avatica.proto.Requests.SyncResultsRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.apache.calcite.avatica.proto.Requests.SyncResultsRequest(); + } + + public static org.apache.calcite.avatica.proto.Requests.SyncResultsRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser<SyncResultsRequest> + PARSER = new com.google.protobuf.AbstractParser<SyncResultsRequest>() { + public SyncResultsRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + try { + return new SyncResultsRequest(input, extensionRegistry); + } catch (RuntimeException e) { + if (e.getCause() instanceof + com.google.protobuf.InvalidProtocolBufferException) { + throw (com.google.protobuf.InvalidProtocolBufferException) + e.getCause(); + } + throw e; + } + } + }; + + public static com.google.protobuf.Parser<SyncResultsRequest> parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser<SyncResultsRequest> getParserForType() { + return PARSER; + } + + public org.apache.calcite.avatica.proto.Requests.SyncResultsRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + private static com.google.protobuf.Descriptors.Descriptor internal_static_CatalogsRequest_descriptor; private static @@ -10454,6 +11206,11 @@ package org.apache.calcite.avatica.proto; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_ExecuteRequest_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_SyncResultsRequest_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_SyncResultsRequest_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -10498,8 +11255,11 @@ package org.apache.calcite.avatica.proto; "ExecuteRequest\022)\n\017statementHandle\030\001 \001(\0132" + "\020.StatementHandle\022%\n\020parameter_values\030\002 " + "\003(\0132\013.TypedValue\022\025\n\rmax_row_count\030\003 \001(\004\022" + - "\034\n\024has_parameter_values\030\004 \001(\010B\"\n org.apa" + - "che.calcite.avatica.protob\006proto3" + "\034\n\024has_parameter_values\030\004 \001(\010\"m\n\022SyncRes" + + "ultsRequest\022\025\n\rconnection_id\030\001 \001(\t\022\024\n\014st" + + "atement_id\030\002 \001(\r\022\032\n\005state\030\003 \001(\0132\013.QueryS" + + "tate\022\016\n\006offset\030\004 \001(\004B\"\n org.apache.calci" + + "te.avatica.protob\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -10616,6 +11376,12 @@ package org.apache.calcite.avatica.proto; com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_ExecuteRequest_descriptor, new java.lang.String[] { "StatementHandle", "ParameterValues", "MaxRowCount", "HasParameterValues", }); + internal_static_SyncResultsRequest_descriptor = + getDescriptor().getMessageTypes().get(16); + internal_static_SyncResultsRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_SyncResultsRequest_descriptor, + new java.lang.String[] { "ConnectionId", "StatementId", "State", "Offset", }); org.apache.calcite.avatica.proto.Common.getDescriptor(); }
http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/avatica/src/main/java/org/apache/calcite/avatica/proto/Responses.java ---------------------------------------------------------------------- diff --git a/avatica/src/main/java/org/apache/calcite/avatica/proto/Responses.java b/avatica/src/main/java/org/apache/calcite/avatica/proto/Responses.java index 82cc88e..9392326 100644 --- a/avatica/src/main/java/org/apache/calcite/avatica/proto/Responses.java +++ b/avatica/src/main/java/org/apache/calcite/avatica/proto/Responses.java @@ -1075,6 +1075,15 @@ package org.apache.calcite.avatica.proto; */ org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder getResultsOrBuilder( int index); + + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + boolean getMissingStatement(); } /** * Protobuf type {@code ExecuteResponse} @@ -1093,6 +1102,7 @@ package org.apache.calcite.avatica.proto; } private ExecuteResponse() { results_ = java.util.Collections.emptyList(); + missingStatement_ = false; } @java.lang.Override @@ -1127,6 +1137,11 @@ package org.apache.calcite.avatica.proto; results_.add(input.readMessage(org.apache.calcite.avatica.proto.Responses.ResultSetResponse.parser(), extensionRegistry)); break; } + case 16: { + + missingStatement_ = input.readBool(); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -1154,6 +1169,7 @@ package org.apache.calcite.avatica.proto; org.apache.calcite.avatica.proto.Responses.ExecuteResponse.class, org.apache.calcite.avatica.proto.Responses.ExecuteResponse.Builder.class); } + private int bitField0_; public static final int RESULTS_FIELD_NUMBER = 1; private java.util.List<org.apache.calcite.avatica.proto.Responses.ResultSetResponse> results_; /** @@ -1189,6 +1205,19 @@ package org.apache.calcite.avatica.proto; return results_.get(index); } + public static final int MISSING_STATEMENT_FIELD_NUMBER = 2; + private boolean missingStatement_; + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + public boolean getMissingStatement() { + return missingStatement_; + } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; @@ -1204,6 +1233,9 @@ package org.apache.calcite.avatica.proto; for (int i = 0; i < results_.size(); i++) { output.writeMessage(1, results_.get(i)); } + if (missingStatement_ != false) { + output.writeBool(2, missingStatement_); + } } public int getSerializedSize() { @@ -1215,6 +1247,10 @@ package org.apache.calcite.avatica.proto; size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, results_.get(i)); } + if (missingStatement_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, missingStatement_); + } memoizedSize = size; return size; } @@ -1337,6 +1373,8 @@ package org.apache.calcite.avatica.proto; } else { resultsBuilder_.clear(); } + missingStatement_ = false; + return this; } @@ -1360,6 +1398,7 @@ package org.apache.calcite.avatica.proto; public org.apache.calcite.avatica.proto.Responses.ExecuteResponse buildPartial() { org.apache.calcite.avatica.proto.Responses.ExecuteResponse result = new org.apache.calcite.avatica.proto.Responses.ExecuteResponse(this); int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; if (resultsBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001)) { results_ = java.util.Collections.unmodifiableList(results_); @@ -1369,6 +1408,8 @@ package org.apache.calcite.avatica.proto; } else { result.results_ = resultsBuilder_.build(); } + result.missingStatement_ = missingStatement_; + result.bitField0_ = to_bitField0_; onBuilt(); return result; } @@ -1410,6 +1451,9 @@ package org.apache.calcite.avatica.proto; } } } + if (other.getMissingStatement() != false) { + setMissingStatement(other.getMissingStatement()); + } onChanged(); return this; } @@ -1676,6 +1720,44 @@ package org.apache.calcite.avatica.proto; } return resultsBuilder_; } + + private boolean missingStatement_ ; + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + public boolean getMissingStatement() { + return missingStatement_; + } + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + public Builder setMissingStatement(boolean value) { + + missingStatement_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + public Builder clearMissingStatement() { + + missingStatement_ = false; + onChanged(); + return this; + } public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return this; @@ -2259,6 +2341,24 @@ package org.apache.calcite.avatica.proto; * <code>optional .Frame frame = 1;</code> */ org.apache.calcite.avatica.proto.Common.FrameOrBuilder getFrameOrBuilder(); + + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + boolean getMissingStatement(); + + /** + * <code>optional bool missing_results = 3;</code> + * + * <pre> + * Did the request fail because of a cached-statement w/o ResultSet + * </pre> + */ + boolean getMissingResults(); } /** * Protobuf type {@code FetchResponse} @@ -2276,6 +2376,8 @@ package org.apache.calcite.avatica.proto; super(builder); } private FetchResponse() { + missingStatement_ = false; + missingResults_ = false; } @java.lang.Override @@ -2315,6 +2417,16 @@ package org.apache.calcite.avatica.proto; break; } + case 16: { + + missingStatement_ = input.readBool(); + break; + } + case 24: { + + missingResults_ = input.readBool(); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -2360,6 +2472,32 @@ package org.apache.calcite.avatica.proto; return getFrame(); } + public static final int MISSING_STATEMENT_FIELD_NUMBER = 2; + private boolean missingStatement_; + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + public boolean getMissingStatement() { + return missingStatement_; + } + + public static final int MISSING_RESULTS_FIELD_NUMBER = 3; + private boolean missingResults_; + /** + * <code>optional bool missing_results = 3;</code> + * + * <pre> + * Did the request fail because of a cached-statement w/o ResultSet + * </pre> + */ + public boolean getMissingResults() { + return missingResults_; + } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; @@ -2375,6 +2513,12 @@ package org.apache.calcite.avatica.proto; if (frame_ != null) { output.writeMessage(1, getFrame()); } + if (missingStatement_ != false) { + output.writeBool(2, missingStatement_); + } + if (missingResults_ != false) { + output.writeBool(3, missingResults_); + } } public int getSerializedSize() { @@ -2386,6 +2530,14 @@ package org.apache.calcite.avatica.proto; size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, getFrame()); } + if (missingStatement_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, missingStatement_); + } + if (missingResults_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, missingResults_); + } memoizedSize = size; return size; } @@ -2507,6 +2659,10 @@ package org.apache.calcite.avatica.proto; frame_ = null; frameBuilder_ = null; } + missingStatement_ = false; + + missingResults_ = false; + return this; } @@ -2534,6 +2690,8 @@ package org.apache.calcite.avatica.proto; } else { result.frame_ = frameBuilder_.build(); } + result.missingStatement_ = missingStatement_; + result.missingResults_ = missingResults_; onBuilt(); return result; } @@ -2552,6 +2710,12 @@ package org.apache.calcite.avatica.proto; if (other.hasFrame()) { mergeFrame(other.getFrame()); } + if (other.getMissingStatement() != false) { + setMissingStatement(other.getMissingStatement()); + } + if (other.getMissingResults() != false) { + setMissingResults(other.getMissingResults()); + } onChanged(); return this; } @@ -2694,6 +2858,82 @@ package org.apache.calcite.avatica.proto; } return frameBuilder_; } + + private boolean missingStatement_ ; + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + public boolean getMissingStatement() { + return missingStatement_; + } + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + public Builder setMissingStatement(boolean value) { + + missingStatement_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool missing_statement = 2;</code> + * + * <pre> + * Did the request fail because of no-cached statement + * </pre> + */ + public Builder clearMissingStatement() { + + missingStatement_ = false; + onChanged(); + return this; + } + + private boolean missingResults_ ; + /** + * <code>optional bool missing_results = 3;</code> + * + * <pre> + * Did the request fail because of a cached-statement w/o ResultSet + * </pre> + */ + public boolean getMissingResults() { + return missingResults_; + } + /** + * <code>optional bool missing_results = 3;</code> + * + * <pre> + * Did the request fail because of a cached-statement w/o ResultSet + * </pre> + */ + public Builder setMissingResults(boolean value) { + + missingResults_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool missing_results = 3;</code> + * + * <pre> + * Did the request fail because of a cached-statement w/o ResultSet + * </pre> + */ + public Builder clearMissingResults() { + + missingResults_ = false; + onChanged(); + return this; + } public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return this; @@ -7204,6 +7444,480 @@ package org.apache.calcite.avatica.proto; } + public interface SyncResultsResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:SyncResultsResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * <code>optional bool missing_statement = 1;</code> + * + * <pre> + * Server doesn't have the statement with the ID from the request + * </pre> + */ + boolean getMissingStatement(); + + /** + * <code>optional bool more_results = 2;</code> + * + * <pre> + * Should the client fetch() to get more results + * </pre> + */ + boolean getMoreResults(); + } + /** + * Protobuf type {@code SyncResultsResponse} + */ + public static final class SyncResultsResponse extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:SyncResultsResponse) + SyncResultsResponseOrBuilder { + // Use SyncResultsResponse.newBuilder() to construct. + private SyncResultsResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) { + super(builder); + } + private SyncResultsResponse() { + missingStatement_ = false; + moreResults_ = false; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); + } + private SyncResultsResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) { + this(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!input.skipField(tag)) { + done = true; + } + break; + } + case 8: { + + missingStatement_ = input.readBool(); + break; + } + case 16: { + + moreResults_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw new RuntimeException(e.setUnfinishedMessage(this)); + } catch (java.io.IOException e) { + throw new RuntimeException( + new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this)); + } finally { + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.apache.calcite.avatica.proto.Responses.internal_static_SyncResultsResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.apache.calcite.avatica.proto.Responses.internal_static_SyncResultsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.calcite.avatica.proto.Responses.SyncResultsResponse.class, org.apache.calcite.avatica.proto.Responses.SyncResultsResponse.Builder.class); + } + + public static final int MISSING_STATEMENT_FIELD_NUMBER = 1; + private boolean missingStatement_; + /** + * <code>optional bool missing_statement = 1;</code> + * + * <pre> + * Server doesn't have the statement with the ID from the request + * </pre> + */ + public boolean getMissingStatement() { + return missingStatement_; + } + + public static final int MORE_RESULTS_FIELD_NUMBER = 2; + private boolean moreResults_; + /** + * <code>optional bool more_results = 2;</code> + * + * <pre> + * Should the client fetch() to get more results + * </pre> + */ + public boolean getMoreResults() { + return moreResults_; + } + + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (missingStatement_ != false) { + output.writeBool(1, missingStatement_); + } + if (moreResults_ != false) { + output.writeBool(2, moreResults_); + } + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (missingStatement_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, missingStatement_); + } + if (moreResults_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, moreResults_); + } + memoizedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.apache.calcite.avatica.proto.Responses.SyncResultsResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code SyncResultsResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder<Builder> implements + // @@protoc_insertion_point(builder_implements:SyncResultsResponse) + org.apache.calcite.avatica.proto.Responses.SyncResultsResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.apache.calcite.avatica.proto.Responses.internal_static_SyncResultsResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.apache.calcite.avatica.proto.Responses.internal_static_SyncResultsResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.apache.calcite.avatica.proto.Responses.SyncResultsResponse.class, org.apache.calcite.avatica.proto.Responses.SyncResultsResponse.Builder.class); + } + + // Construct using org.apache.calcite.avatica.proto.Responses.SyncResultsResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + public Builder clear() { + super.clear(); + missingStatement_ = false; + + moreResults_ = false; + + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.apache.calcite.avatica.proto.Responses.internal_static_SyncResultsResponse_descriptor; + } + + public org.apache.calcite.avatica.proto.Responses.SyncResultsResponse getDefaultInstanceForType() { + return org.apache.calcite.avatica.proto.Responses.SyncResultsResponse.getDefaultInstance(); + } + + public org.apache.calcite.avatica.proto.Responses.SyncResultsResponse build() { + org.apache.calcite.avatica.proto.Responses.SyncResultsResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.apache.calcite.avatica.proto.Responses.SyncResultsResponse buildPartial() { + org.apache.calcite.avatica.proto.Responses.SyncResultsResponse result = new org.apache.calcite.avatica.proto.Responses.SyncResultsResponse(this); + result.missingStatement_ = missingStatement_; + result.moreResults_ = moreResults_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.apache.calcite.avatica.proto.Responses.SyncResultsResponse) { + return mergeFrom((org.apache.calcite.avatica.proto.Responses.SyncResultsResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.apache.calcite.avatica.proto.Responses.SyncResultsResponse other) { + if (other == org.apache.calcite.avatica.proto.Responses.SyncResultsResponse.getDefaultInstance()) return this; + if (other.getMissingStatement() != false) { + setMissingStatement(other.getMissingStatement()); + } + if (other.getMoreResults() != false) { + setMoreResults(other.getMoreResults()); + } + onChanged(); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.apache.calcite.avatica.proto.Responses.SyncResultsResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.apache.calcite.avatica.proto.Responses.SyncResultsResponse) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private boolean missingStatement_ ; + /** + * <code>optional bool missing_statement = 1;</code> + * + * <pre> + * Server doesn't have the statement with the ID from the request + * </pre> + */ + public boolean getMissingStatement() { + return missingStatement_; + } + /** + * <code>optional bool missing_statement = 1;</code> + * + * <pre> + * Server doesn't have the statement with the ID from the request + * </pre> + */ + public Builder setMissingStatement(boolean value) { + + missingStatement_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool missing_statement = 1;</code> + * + * <pre> + * Server doesn't have the statement with the ID from the request + * </pre> + */ + public Builder clearMissingStatement() { + + missingStatement_ = false; + onChanged(); + return this; + } + + private boolean moreResults_ ; + /** + * <code>optional bool more_results = 2;</code> + * + * <pre> + * Should the client fetch() to get more results + * </pre> + */ + public boolean getMoreResults() { + return moreResults_; + } + /** + * <code>optional bool more_results = 2;</code> + * + * <pre> + * Should the client fetch() to get more results + * </pre> + */ + public Builder setMoreResults(boolean value) { + + moreResults_ = value; + onChanged(); + return this; + } + /** + * <code>optional bool more_results = 2;</code> + * + * <pre> + * Should the client fetch() to get more results + * </pre> + */ + public Builder clearMoreResults() { + + moreResults_ = false; + onChanged(); + return this; + } + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return this; + } + + + // @@protoc_insertion_point(builder_scope:SyncResultsResponse) + } + + // @@protoc_insertion_point(class_scope:SyncResultsResponse) + private static final org.apache.calcite.avatica.proto.Responses.SyncResultsResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.apache.calcite.avatica.proto.Responses.SyncResultsResponse(); + } + + public static org.apache.calcite.avatica.proto.Responses.SyncResultsResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser<SyncResultsResponse> + PARSER = new com.google.protobuf.AbstractParser<SyncResultsResponse>() { + public SyncResultsResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + try { + return new SyncResultsResponse(input, extensionRegistry); + } catch (RuntimeException e) { + if (e.getCause() instanceof + com.google.protobuf.InvalidProtocolBufferException) { + throw (com.google.protobuf.InvalidProtocolBufferException) + e.getCause(); + } + throw e; + } + } + }; + + public static com.google.protobuf.Parser<SyncResultsResponse> parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser<SyncResultsResponse> getParserForType() { + return PARSER; + } + + public org.apache.calcite.avatica.proto.Responses.SyncResultsResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + private static com.google.protobuf.Descriptors.Descriptor internal_static_ResultSetResponse_descriptor; private static @@ -7264,6 +7978,11 @@ package org.apache.calcite.avatica.proto; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_ErrorResponse_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_SyncResultsResponse_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_SyncResultsResponse_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -7278,24 +7997,28 @@ package org.apache.calcite.avatica.proto; "statement_id\030\002 \001(\r\022\025\n\rown_statement\030\003 \001(" + "\010\022\035\n\tsignature\030\004 \001(\0132\n.Signature\022\033\n\013firs" + "t_frame\030\005 \001(\0132\006.Frame\022\024\n\014update_count\030\006 " + - "\001(\004\"6\n\017ExecuteResponse\022#\n\007results\030\001 \003(\0132" + - "\022.ResultSetResponse\"6\n\017PrepareResponse\022#" + - "\n\tstatement\030\001 \001(\0132\020.StatementHandle\"&\n\rF" + - "etchResponse\022\025\n\005frame\030\001 \001(\0132\006.Frame\"F\n\027C" + - "reateStatementResponse\022\025\n\rconnection_id\030", - "\001 \001(\t\022\024\n\014statement_id\030\002 \001(\r\"\030\n\026CloseStat" + - "ementResponse\"\030\n\026OpenConnectionResponse\"" + - "\031\n\027CloseConnectionResponse\"C\n\026Connection" + - "SyncResponse\022)\n\nconn_props\030\001 \001(\0132\025.Conne" + - "ctionProperties\"U\n\027DatabasePropertyEleme" + - "nt\022\036\n\003key\030\001 \001(\0132\021.DatabaseProperty\022\032\n\005va" + - "lue\030\002 \001(\0132\013.TypedValue\"C\n\030DatabaseProper" + - "tyResponse\022\'\n\005props\030\001 \003(\0132\030.DatabaseProp" + - "ertyElement\"~\n\rErrorResponse\022\022\n\nexceptio" + - "ns\030\001 \003(\t\022\025\n\rerror_message\030\002 \001(\t\022\033\n\010sever", - "ity\030\003 \001(\0162\t.Severity\022\022\n\nerror_code\030\004 \001(\r" + - "\022\021\n\tsql_state\030\005 \001(\tB\"\n org.apache.calcit" + - "e.avatica.protob\006proto3" + "\001(\004\"Q\n\017ExecuteResponse\022#\n\007results\030\001 \003(\0132" + + "\022.ResultSetResponse\022\031\n\021missing_statement" + + "\030\002 \001(\010\"6\n\017PrepareResponse\022#\n\tstatement\030\001" + + " \001(\0132\020.StatementHandle\"Z\n\rFetchResponse\022" + + "\025\n\005frame\030\001 \001(\0132\006.Frame\022\031\n\021missing_statem", + "ent\030\002 \001(\010\022\027\n\017missing_results\030\003 \001(\010\"F\n\027Cr" + + "eateStatementResponse\022\025\n\rconnection_id\030\001" + + " \001(\t\022\024\n\014statement_id\030\002 \001(\r\"\030\n\026CloseState" + + "mentResponse\"\030\n\026OpenConnectionResponse\"\031" + + "\n\027CloseConnectionResponse\"C\n\026ConnectionS" + + "yncResponse\022)\n\nconn_props\030\001 \001(\0132\025.Connec" + + "tionProperties\"U\n\027DatabasePropertyElemen" + + "t\022\036\n\003key\030\001 \001(\0132\021.DatabaseProperty\022\032\n\005val" + + "ue\030\002 \001(\0132\013.TypedValue\"C\n\030DatabasePropert" + + "yResponse\022\'\n\005props\030\001 \003(\0132\030.DatabasePrope", + "rtyElement\"~\n\rErrorResponse\022\022\n\nexception" + + "s\030\001 \003(\t\022\025\n\rerror_message\030\002 \001(\t\022\033\n\010severi" + + "ty\030\003 \001(\0162\t.Severity\022\022\n\nerror_code\030\004 \001(\r\022" + + "\021\n\tsql_state\030\005 \001(\t\"F\n\023SyncResultsRespons" + + "e\022\031\n\021missing_statement\030\001 \001(\010\022\024\n\014more_res" + + "ults\030\002 \001(\010B\"\n org.apache.calcite.avatica" + + ".protob\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -7321,7 +8044,7 @@ package org.apache.calcite.avatica.proto; internal_static_ExecuteResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_ExecuteResponse_descriptor, - new java.lang.String[] { "Results", }); + new java.lang.String[] { "Results", "MissingStatement", }); internal_static_PrepareResponse_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_PrepareResponse_fieldAccessorTable = new @@ -7333,7 +8056,7 @@ package org.apache.calcite.avatica.proto; internal_static_FetchResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_FetchResponse_descriptor, - new java.lang.String[] { "Frame", }); + new java.lang.String[] { "Frame", "MissingStatement", "MissingResults", }); internal_static_CreateStatementResponse_descriptor = getDescriptor().getMessageTypes().get(4); internal_static_CreateStatementResponse_fieldAccessorTable = new @@ -7382,6 +8105,12 @@ package org.apache.calcite.avatica.proto; com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_ErrorResponse_descriptor, new java.lang.String[] { "Exceptions", "ErrorMessage", "Severity", "ErrorCode", "SqlState", }); + internal_static_SyncResultsResponse_descriptor = + getDescriptor().getMessageTypes().get(12); + internal_static_SyncResultsResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_SyncResultsResponse_descriptor, + new java.lang.String[] { "MissingStatement", "MoreResults", }); org.apache.calcite.avatica.proto.Common.getDescriptor(); } http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractHandler.java ---------------------------------------------------------------------- diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractHandler.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractHandler.java index 9d3bf66..503790f 100644 --- a/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractHandler.java +++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/AbstractHandler.java @@ -17,6 +17,7 @@ package org.apache.calcite.avatica.remote; import org.apache.calcite.avatica.AvaticaSeverity; +import org.apache.calcite.avatica.NoSuchConnectionException; import org.apache.calcite.avatica.remote.Service.ErrorResponse; import org.apache.calcite.avatica.remote.Service.Request; import org.apache.calcite.avatica.remote.Service.Response; @@ -68,6 +69,10 @@ public abstract class AbstractHandler<T> implements Handler<T> { sqlState = rte.getSqlState(); severity = rte.getSeverity(); errorMsg = rte.getErrorMessage(); + } else if (e instanceof NoSuchConnectionException) { + errorCode = ErrorResponse.MISSING_CONNECTION_ERROR_CODE; + severity = AvaticaSeverity.ERROR; + errorMsg = e.getMessage(); } else { // Try to construct a meaningful error message when the server impl doesn't provide one. errorMsg = getCausalChain(e); http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/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 93ad3ef..f15e0e7 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 @@ -130,6 +130,9 @@ public abstract class AbstractService implements Service { } ExecuteResponse finagle(ExecuteResponse r) { + if (r.missingStatement) { + return r; + } final List<ResultSetResponse> results = new ArrayList<>(); int changeCount = 0; for (ResultSetResponse result : r.results) { @@ -142,7 +145,7 @@ public abstract class AbstractService implements Service { if (changeCount == 0) { return r; } - return new ExecuteResponse(results); + return new ExecuteResponse(results, r.missingStatement); } } http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/avatica/src/main/java/org/apache/calcite/avatica/remote/AvaticaHttpClient.java ---------------------------------------------------------------------- diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/AvaticaHttpClient.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/AvaticaHttpClient.java new file mode 100644 index 0000000..eac1b74 --- /dev/null +++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/AvaticaHttpClient.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.calcite.avatica.remote; + +/** + * An interface which defines how requests are sent to the Avatica server. + */ +public interface AvaticaHttpClient { + + /** + * Sends a serialized request to the Avatica server. + * + * @param request The serialized request. + * @return The serialized response. + */ + byte[] send(byte[] request); + +} + +// End AvaticaHttpClient.java http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/avatica/src/main/java/org/apache/calcite/avatica/remote/AvaticaHttpClientImpl.java ---------------------------------------------------------------------- diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/AvaticaHttpClientImpl.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/AvaticaHttpClientImpl.java new file mode 100644 index 0000000..c100eec --- /dev/null +++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/AvaticaHttpClientImpl.java @@ -0,0 +1,73 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.calcite.avatica.remote; + +import org.apache.calcite.avatica.AvaticaUtils; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +/** + * A common class to invoke HTTP requests against the Avatica server agnostic of the data being + * sent and received across the wire. + */ +public class AvaticaHttpClientImpl implements AvaticaHttpClient { + protected final URL url; + + public AvaticaHttpClientImpl(URL url) { + this.url = url; + } + + public byte[] send(byte[] request) { + // TODO back-off policy? + while (true) { + try { + final HttpURLConnection connection = openConnection(); + connection.setRequestMethod("POST"); + connection.setDoInput(true); + connection.setDoOutput(true); + try (DataOutputStream wr = new DataOutputStream(connection.getOutputStream())) { + wr.write(request); + wr.flush(); + wr.close(); + } + final int responseCode = connection.getResponseCode(); + final InputStream inputStream; + if (responseCode == HttpURLConnection.HTTP_UNAVAILABLE) { + // Could be sitting behind a load-balancer, try again. + continue; + } else if (responseCode != HttpURLConnection.HTTP_OK) { + inputStream = connection.getErrorStream(); + } else { + inputStream = connection.getInputStream(); + } + return AvaticaUtils.readFullyToBytes(inputStream); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + HttpURLConnection openConnection() throws IOException { + return (HttpURLConnection) url.openConnection(); + } +} + +// End AvaticaHttpClientImpl.java http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/avatica/src/main/java/org/apache/calcite/avatica/remote/Driver.java ---------------------------------------------------------------------- diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/Driver.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/Driver.java index 0ab90b1..707a163 100644 --- a/avatica/src/main/java/org/apache/calcite/avatica/remote/Driver.java +++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/Driver.java @@ -31,9 +31,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Properties; /** @@ -85,27 +83,28 @@ public class Driver extends UnregisteredDriver { return new RemoteMeta(connection, service); } - private Service createService(AvaticaConnection connection, ConnectionConfig config) { + /** + * Creates a {@link Service} with the given {@link AvaticaConnection} and configuration. + * + * @param connection The {@link AvaticaConnection} to use. + * @param config Configuration properties + * @return A Service implementation. + */ + Service createService(AvaticaConnection connection, ConnectionConfig config) { final Service.Factory metaFactory = config.factory(); final Service service; if (metaFactory != null) { service = metaFactory.create(connection); } else if (config.url() != null) { - final URL url; - try { - url = new URL(config.url()); - } catch (MalformedURLException e) { - throw new RuntimeException(e); - } - - Serialization serializationType = getSerialization(config); + final AvaticaHttpClient httpClient = getHttpClient(connection, config); + final Serialization serializationType = getSerialization(config); switch (serializationType) { case JSON: - service = new RemoteService(url); + service = new RemoteService(httpClient); break; case PROTOBUF: - service = new RemoteProtobufService(url, new ProtobufTranslationImpl()); + service = new RemoteProtobufService(httpClient, new ProtobufTranslationImpl()); break; default: throw new IllegalArgumentException("Unhandled serialization type: " + serializationType); @@ -116,6 +115,24 @@ public class Driver extends UnregisteredDriver { return service; } + /** + * Creates the HTTP client that communicates with the Avatica server. + * + * @param connection The {@link AvaticaConnection}. + * @param config The configuration. + * @return An {@link AvaticaHttpClient} implementation. + */ + AvaticaHttpClient getHttpClient(AvaticaConnection connection, ConnectionConfig config) { + URL url; + try { + url = new URL(config.url()); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + + return new AvaticaHttpClientImpl(url); + } + @Override public Connection connect(String url, Properties info) throws SQLException { AvaticaConnection conn = (AvaticaConnection) super.connect(url, info); @@ -128,28 +145,14 @@ public class Driver extends UnregisteredDriver { ConnectionConfig config = conn.config(); Service service = createService(conn, config); - Map<String, String> infoAsString = new HashMap<>(); - for (Map.Entry<Object, Object> entry : info.entrySet()) { - // Determine if this is a property we want to forward to the server - boolean localProperty = false; - for (BuiltInConnectionProperty prop : BuiltInConnectionProperty.values()) { - if (prop.camelName().equals(entry.getKey())) { - localProperty = true; - break; - } - } - - if (!localProperty) { - infoAsString.put(entry.getKey().toString(), entry.getValue().toString()); - } - } - - service.apply(new Service.OpenConnectionRequest(conn.id, infoAsString)); + service.apply( + new Service.OpenConnectionRequest(conn.id, + Service.OpenConnectionRequest.serializeProperties(info))); return conn; } - private Serialization getSerialization(ConnectionConfig config) { + Serialization getSerialization(ConnectionConfig config) { final String serializationStr = config.serialization(); Serialization serializationType = Serialization.JSON; if (null != serializationStr) { http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/avatica/src/main/java/org/apache/calcite/avatica/remote/Handler.java ---------------------------------------------------------------------- diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/Handler.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/Handler.java index f0e8a93..f2cfeb6 100644 --- a/avatica/src/main/java/org/apache/calcite/avatica/remote/Handler.java +++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/Handler.java @@ -46,6 +46,10 @@ public interface Handler<T> { public int getStatusCode() { return statusCode; } + + @Override public String toString() { + return "Response: " + response + ", Status:" + statusCode; + } } HandlerResponse<T> apply(T request); http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/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 a223069..99cf79b 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 @@ -198,6 +198,14 @@ public abstract class JsonService extends AbstractService { throw handle(e); } } + + public SyncResultsResponse apply(SyncResultsRequest request) { + try { + return decode(apply(encode(request)), SyncResultsResponse.class); + } catch (IOException e) { + throw handle(e); + } + } } // End JsonService.java http://git-wip-us.apache.org/repos/asf/calcite/blob/97df1acb/avatica/src/main/java/org/apache/calcite/avatica/remote/LocalService.java ---------------------------------------------------------------------- diff --git a/avatica/src/main/java/org/apache/calcite/avatica/remote/LocalService.java b/avatica/src/main/java/org/apache/calcite/avatica/remote/LocalService.java index 1a5a554..ff75af5 100644 --- a/avatica/src/main/java/org/apache/calcite/avatica/remote/LocalService.java +++ b/avatica/src/main/java/org/apache/calcite/avatica/remote/LocalService.java @@ -18,6 +18,8 @@ package org.apache.calcite.avatica.remote; import org.apache.calcite.avatica.Meta; import org.apache.calcite.avatica.MetaImpl; +import org.apache.calcite.avatica.MissingResultsException; +import org.apache.calcite.avatica.NoSuchStatementException; import java.util.ArrayList; import java.util.Collections; @@ -103,7 +105,7 @@ public class LocalService implements Service { final Meta.StatementHandle h = new Meta.StatementHandle( resultSet.connectionId, resultSet.statementId, null); final List<TypedValue> parameterValues = Collections.emptyList(); - final Iterable<Object> iterable = meta.createIterable(h, + final Iterable<Object> iterable = meta.createIterable(h, null, resultSet.signature, parameterValues, resultSet.firstFrame); final List<List<Object>> list = new ArrayList<>(); return MetaImpl.collect(resultSet.signature.cursorFactory, iterable, list); @@ -173,49 +175,65 @@ public class LocalService implements Service { public ExecuteResponse apply(PrepareAndExecuteRequest request) { final Meta.StatementHandle sh = new Meta.StatementHandle(request.connectionId, request.statementId, null); - final Meta.ExecuteResult executeResult = - meta.prepareAndExecute(sh, request.sql, request.maxRowCount, - new Meta.PrepareCallback() { - @Override public Object getMonitor() { - return LocalService.class; - } - - @Override public void clear() { - } - - @Override public void assign(Meta.Signature signature, - Meta.Frame firstFrame, long updateCount) { - } - - @Override public void execute() { - } - }); - final List<ResultSetResponse> results = new ArrayList<>(); - for (Meta.MetaResultSet metaResultSet : executeResult.resultSets) { - results.add(toResponse(metaResultSet)); + try { + final Meta.ExecuteResult executeResult = + meta.prepareAndExecute(sh, request.sql, request.maxRowCount, + new Meta.PrepareCallback() { + @Override public Object getMonitor() { + return LocalService.class; + } + + @Override public void clear() { + } + + @Override public void assign(Meta.Signature signature, + Meta.Frame firstFrame, long updateCount) { + } + + @Override public void execute() { + } + }); + final List<ResultSetResponse> results = new ArrayList<>(); + for (Meta.MetaResultSet metaResultSet : executeResult.resultSets) { + results.add(toResponse(metaResultSet)); + } + return new ExecuteResponse(results, false); + } catch (NoSuchStatementException e) { + // The Statement doesn't exist anymore, bubble up this information + return new ExecuteResponse(null, true); } - return new ExecuteResponse(results); } public FetchResponse apply(FetchRequest request) { final Meta.StatementHandle h = new Meta.StatementHandle( request.connectionId, request.statementId, null); - final Meta.Frame frame = - meta.fetch(h, - request.offset, - request.fetchMaxRowCount); - return new FetchResponse(frame); + try { + final Meta.Frame frame = + meta.fetch(h, + request.offset, + request.fetchMaxRowCount); + return new FetchResponse(frame, false, false); + } catch (NullPointerException | NoSuchStatementException e) { + // The Statement doesn't exist anymore, bubble up this information + return new FetchResponse(null, true, true); + } catch (MissingResultsException e) { + return new FetchResponse(null, false, true); + } } public ExecuteResponse apply(ExecuteRequest request) { - final Meta.ExecuteResult executeResult = meta.execute(request.statementHandle, - request.parameterValues, request.maxRowCount); + try { + final Meta.ExecuteResult executeResult = meta.execute(request.statementHandle, + request.parameterValues, request.maxRowCount); - final List<ResultSetResponse> results = new ArrayList<>(); - for (Meta.MetaResultSet metaResultSet : executeResult.resultSets) { - results.add(toResponse(metaResultSet)); + final List<ResultSetResponse> results = new ArrayList<>(); + for (Meta.MetaResultSet metaResultSet : executeResult.resultSets) { + results.add(toResponse(metaResultSet)); + } + return new ExecuteResponse(results, false); + } catch (NoSuchStatementException e) { + return new ExecuteResponse(null, true); } - return new ExecuteResponse(results); } public CreateStatementResponse apply(CreateStatementRequest request) { @@ -259,6 +277,21 @@ public class LocalService implements Service { new Meta.ConnectionHandle(request.connectionId); return new DatabasePropertyResponse(meta.getDatabaseProperties(ch)); } + + public SyncResultsResponse apply(SyncResultsRequest request) { + final Meta.StatementHandle h = new Meta.StatementHandle( + request.connectionId, request.statementId, null); + SyncResultsResponse response; + try { + // Set success on the cached statement + response = new SyncResultsResponse(meta.syncResults(h, request.state, request.offset), false); + } catch (NoSuchStatementException e) { + // Tried to sync results on a statement which wasn't cached + response = new SyncResultsResponse(false, true); + } + + return response; + } } // End LocalService.java
