http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/core/src/main/java/org/apache/calcite/avatica/proto/Responses.java
----------------------------------------------------------------------
diff --git 
a/avatica/core/src/main/java/org/apache/calcite/avatica/proto/Responses.java 
b/avatica/core/src/main/java/org/apache/calcite/avatica/proto/Responses.java
new file mode 100644
index 0000000..cd3d0cf
--- /dev/null
+++ b/avatica/core/src/main/java/org/apache/calcite/avatica/proto/Responses.java
@@ -0,0 +1,11853 @@
+/*
+ * 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.
+ */
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: responses.proto
+
+package org.apache.calcite.avatica.proto;
+
+@SuppressWarnings({"unused", "rawtypes"}) public final class Responses {
+  private Responses() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public interface ResultSetResponseOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ResultSetResponse)
+      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 bool own_statement = 3;</code>
+     */
+    boolean getOwnStatement();
+
+    /**
+     * <code>optional .Signature signature = 4;</code>
+     */
+    boolean hasSignature();
+    /**
+     * <code>optional .Signature signature = 4;</code>
+     */
+    org.apache.calcite.avatica.proto.Common.Signature getSignature();
+    /**
+     * <code>optional .Signature signature = 4;</code>
+     */
+    org.apache.calcite.avatica.proto.Common.SignatureOrBuilder 
getSignatureOrBuilder();
+
+    /**
+     * <code>optional .Frame first_frame = 5;</code>
+     */
+    boolean hasFirstFrame();
+    /**
+     * <code>optional .Frame first_frame = 5;</code>
+     */
+    org.apache.calcite.avatica.proto.Common.Frame getFirstFrame();
+    /**
+     * <code>optional .Frame first_frame = 5;</code>
+     */
+    org.apache.calcite.avatica.proto.Common.FrameOrBuilder 
getFirstFrameOrBuilder();
+
+    /**
+     * <code>optional uint64 update_count = 6;</code>
+     *
+     * <pre>
+     * -1 for normal result sets, else this response contains a dummy result 
set
+     * </pre>
+     */
+    long getUpdateCount();
+
+    /**
+     * <code>optional .RpcMetadata metadata = 7;</code>
+     *
+     * <pre>
+     * with no signature nor other data.
+     * </pre>
+     */
+    boolean hasMetadata();
+    /**
+     * <code>optional .RpcMetadata metadata = 7;</code>
+     *
+     * <pre>
+     * with no signature nor other data.
+     * </pre>
+     */
+    org.apache.calcite.avatica.proto.Responses.RpcMetadata getMetadata();
+    /**
+     * <code>optional .RpcMetadata metadata = 7;</code>
+     *
+     * <pre>
+     * with no signature nor other data.
+     * </pre>
+     */
+    org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder 
getMetadataOrBuilder();
+  }
+  /**
+   * Protobuf type {@code ResultSetResponse}
+   *
+   * <pre>
+   * Response that contains a result set.
+   * </pre>
+   */
+  public  static final class ResultSetResponse extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:ResultSetResponse)
+      ResultSetResponseOrBuilder {
+    // Use ResultSetResponse.newBuilder() to construct.
+    private ResultSetResponse(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
+      super(builder);
+    }
+    private ResultSetResponse() {
+      connectionId_ = "";
+      statementId_ = 0;
+      ownStatement_ = false;
+      updateCount_ = 0L;
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+    }
+    private ResultSetResponse(
+        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 24: {
+
+              ownStatement_ = input.readBool();
+              break;
+            }
+            case 34: {
+              org.apache.calcite.avatica.proto.Common.Signature.Builder 
subBuilder = null;
+              if (signature_ != null) {
+                subBuilder = signature_.toBuilder();
+              }
+              signature_ = 
input.readMessage(org.apache.calcite.avatica.proto.Common.Signature.parser(), 
extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(signature_);
+                signature_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 42: {
+              org.apache.calcite.avatica.proto.Common.Frame.Builder subBuilder 
= null;
+              if (firstFrame_ != null) {
+                subBuilder = firstFrame_.toBuilder();
+              }
+              firstFrame_ = 
input.readMessage(org.apache.calcite.avatica.proto.Common.Frame.parser(), 
extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(firstFrame_);
+                firstFrame_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 48: {
+
+              updateCount_ = input.readUInt64();
+              break;
+            }
+            case 58: {
+              org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder 
subBuilder = null;
+              if (metadata_ != null) {
+                subBuilder = metadata_.toBuilder();
+              }
+              metadata_ = 
input.readMessage(org.apache.calcite.avatica.proto.Responses.RpcMetadata.parser(),
 extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(metadata_);
+                metadata_ = subBuilder.buildPartial();
+              }
+
+              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_ResultSetResponse_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.apache.calcite.avatica.proto.Responses.internal_static_ResultSetResponse_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.class, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.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 OWN_STATEMENT_FIELD_NUMBER = 3;
+    private boolean ownStatement_;
+    /**
+     * <code>optional bool own_statement = 3;</code>
+     */
+    public boolean getOwnStatement() {
+      return ownStatement_;
+    }
+
+    public static final int SIGNATURE_FIELD_NUMBER = 4;
+    private org.apache.calcite.avatica.proto.Common.Signature signature_;
+    /**
+     * <code>optional .Signature signature = 4;</code>
+     */
+    public boolean hasSignature() {
+      return signature_ != null;
+    }
+    /**
+     * <code>optional .Signature signature = 4;</code>
+     */
+    public org.apache.calcite.avatica.proto.Common.Signature getSignature() {
+      return signature_ == null ? 
org.apache.calcite.avatica.proto.Common.Signature.getDefaultInstance() : 
signature_;
+    }
+    /**
+     * <code>optional .Signature signature = 4;</code>
+     */
+    public org.apache.calcite.avatica.proto.Common.SignatureOrBuilder 
getSignatureOrBuilder() {
+      return getSignature();
+    }
+
+    public static final int FIRST_FRAME_FIELD_NUMBER = 5;
+    private org.apache.calcite.avatica.proto.Common.Frame firstFrame_;
+    /**
+     * <code>optional .Frame first_frame = 5;</code>
+     */
+    public boolean hasFirstFrame() {
+      return firstFrame_ != null;
+    }
+    /**
+     * <code>optional .Frame first_frame = 5;</code>
+     */
+    public org.apache.calcite.avatica.proto.Common.Frame getFirstFrame() {
+      return firstFrame_ == null ? 
org.apache.calcite.avatica.proto.Common.Frame.getDefaultInstance() : 
firstFrame_;
+    }
+    /**
+     * <code>optional .Frame first_frame = 5;</code>
+     */
+    public org.apache.calcite.avatica.proto.Common.FrameOrBuilder 
getFirstFrameOrBuilder() {
+      return getFirstFrame();
+    }
+
+    public static final int UPDATE_COUNT_FIELD_NUMBER = 6;
+    private long updateCount_;
+    /**
+     * <code>optional uint64 update_count = 6;</code>
+     *
+     * <pre>
+     * -1 for normal result sets, else this response contains a dummy result 
set
+     * </pre>
+     */
+    public long getUpdateCount() {
+      return updateCount_;
+    }
+
+    public static final int METADATA_FIELD_NUMBER = 7;
+    private org.apache.calcite.avatica.proto.Responses.RpcMetadata metadata_;
+    /**
+     * <code>optional .RpcMetadata metadata = 7;</code>
+     *
+     * <pre>
+     * with no signature nor other data.
+     * </pre>
+     */
+    public boolean hasMetadata() {
+      return metadata_ != null;
+    }
+    /**
+     * <code>optional .RpcMetadata metadata = 7;</code>
+     *
+     * <pre>
+     * with no signature nor other data.
+     * </pre>
+     */
+    public org.apache.calcite.avatica.proto.Responses.RpcMetadata 
getMetadata() {
+      return metadata_ == null ? 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.getDefaultInstance() : 
metadata_;
+    }
+    /**
+     * <code>optional .RpcMetadata metadata = 7;</code>
+     *
+     * <pre>
+     * with no signature nor other data.
+     * </pre>
+     */
+    public org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder 
getMetadataOrBuilder() {
+      return getMetadata();
+    }
+
+    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 (ownStatement_ != false) {
+        output.writeBool(3, ownStatement_);
+      }
+      if (signature_ != null) {
+        output.writeMessage(4, getSignature());
+      }
+      if (firstFrame_ != null) {
+        output.writeMessage(5, getFirstFrame());
+      }
+      if (updateCount_ != 0L) {
+        output.writeUInt64(6, updateCount_);
+      }
+      if (metadata_ != null) {
+        output.writeMessage(7, getMetadata());
+      }
+    }
+
+    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 (ownStatement_ != false) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(3, ownStatement_);
+      }
+      if (signature_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, getSignature());
+      }
+      if (firstFrame_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(5, getFirstFrame());
+      }
+      if (updateCount_ != 0L) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(6, updateCount_);
+      }
+      if (metadata_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(7, getMetadata());
+      }
+      memoizedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    public static org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
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.ResultSetResponse 
parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
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.ResultSetResponse 
parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
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.ResultSetResponse 
parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
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.ResultSetResponse 
parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
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.ResultSetResponse 
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 ResultSetResponse}
+     *
+     * <pre>
+     * Response that contains a result set.
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ResultSetResponse)
+        org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return 
org.apache.calcite.avatica.proto.Responses.internal_static_ResultSetResponse_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return 
org.apache.calcite.avatica.proto.Responses.internal_static_ResultSetResponse_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.class, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder.class);
+      }
+
+      // Construct using 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.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;
+
+        ownStatement_ = false;
+
+        if (signatureBuilder_ == null) {
+          signature_ = null;
+        } else {
+          signature_ = null;
+          signatureBuilder_ = null;
+        }
+        if (firstFrameBuilder_ == null) {
+          firstFrame_ = null;
+        } else {
+          firstFrame_ = null;
+          firstFrameBuilder_ = null;
+        }
+        updateCount_ = 0L;
+
+        if (metadataBuilder_ == null) {
+          metadata_ = null;
+        } else {
+          metadata_ = null;
+          metadataBuilder_ = null;
+        }
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return 
org.apache.calcite.avatica.proto.Responses.internal_static_ResultSetResponse_descriptor;
+      }
+
+      public org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
getDefaultInstanceForType() {
+        return 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.getDefaultInstance();
+      }
+
+      public org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
build() {
+        org.apache.calcite.avatica.proto.Responses.ResultSetResponse result = 
buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
buildPartial() {
+        org.apache.calcite.avatica.proto.Responses.ResultSetResponse result = 
new org.apache.calcite.avatica.proto.Responses.ResultSetResponse(this);
+        result.connectionId_ = connectionId_;
+        result.statementId_ = statementId_;
+        result.ownStatement_ = ownStatement_;
+        if (signatureBuilder_ == null) {
+          result.signature_ = signature_;
+        } else {
+          result.signature_ = signatureBuilder_.build();
+        }
+        if (firstFrameBuilder_ == null) {
+          result.firstFrame_ = firstFrame_;
+        } else {
+          result.firstFrame_ = firstFrameBuilder_.build();
+        }
+        result.updateCount_ = updateCount_;
+        if (metadataBuilder_ == null) {
+          result.metadata_ = metadata_;
+        } else {
+          result.metadata_ = metadataBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse) {
+          return 
mergeFrom((org.apache.calcite.avatica.proto.Responses.ResultSetResponse)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder 
mergeFrom(org.apache.calcite.avatica.proto.Responses.ResultSetResponse other) {
+        if (other == 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.getDefaultInstance())
 return this;
+        if (!other.getConnectionId().isEmpty()) {
+          connectionId_ = other.connectionId_;
+          onChanged();
+        }
+        if (other.getStatementId() != 0) {
+          setStatementId(other.getStatementId());
+        }
+        if (other.getOwnStatement() != false) {
+          setOwnStatement(other.getOwnStatement());
+        }
+        if (other.hasSignature()) {
+          mergeSignature(other.getSignature());
+        }
+        if (other.hasFirstFrame()) {
+          mergeFirstFrame(other.getFirstFrame());
+        }
+        if (other.getUpdateCount() != 0L) {
+          setUpdateCount(other.getUpdateCount());
+        }
+        if (other.hasMetadata()) {
+          mergeMetadata(other.getMetadata());
+        }
+        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.ResultSetResponse 
parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = 
(org.apache.calcite.avatica.proto.Responses.ResultSetResponse) 
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 boolean ownStatement_ ;
+      /**
+       * <code>optional bool own_statement = 3;</code>
+       */
+      public boolean getOwnStatement() {
+        return ownStatement_;
+      }
+      /**
+       * <code>optional bool own_statement = 3;</code>
+       */
+      public Builder setOwnStatement(boolean value) {
+        
+        ownStatement_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool own_statement = 3;</code>
+       */
+      public Builder clearOwnStatement() {
+        
+        ownStatement_ = false;
+        onChanged();
+        return this;
+      }
+
+      private org.apache.calcite.avatica.proto.Common.Signature signature_ = 
null;
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.calcite.avatica.proto.Common.Signature, 
org.apache.calcite.avatica.proto.Common.Signature.Builder, 
org.apache.calcite.avatica.proto.Common.SignatureOrBuilder> signatureBuilder_;
+      /**
+       * <code>optional .Signature signature = 4;</code>
+       */
+      public boolean hasSignature() {
+        return signatureBuilder_ != null || signature_ != null;
+      }
+      /**
+       * <code>optional .Signature signature = 4;</code>
+       */
+      public org.apache.calcite.avatica.proto.Common.Signature getSignature() {
+        if (signatureBuilder_ == null) {
+          return signature_ == null ? 
org.apache.calcite.avatica.proto.Common.Signature.getDefaultInstance() : 
signature_;
+        } else {
+          return signatureBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .Signature signature = 4;</code>
+       */
+      public Builder 
setSignature(org.apache.calcite.avatica.proto.Common.Signature value) {
+        if (signatureBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          signature_ = value;
+          onChanged();
+        } else {
+          signatureBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .Signature signature = 4;</code>
+       */
+      public Builder setSignature(
+          org.apache.calcite.avatica.proto.Common.Signature.Builder 
builderForValue) {
+        if (signatureBuilder_ == null) {
+          signature_ = builderForValue.build();
+          onChanged();
+        } else {
+          signatureBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .Signature signature = 4;</code>
+       */
+      public Builder 
mergeSignature(org.apache.calcite.avatica.proto.Common.Signature value) {
+        if (signatureBuilder_ == null) {
+          if (signature_ != null) {
+            signature_ =
+              
org.apache.calcite.avatica.proto.Common.Signature.newBuilder(signature_).mergeFrom(value).buildPartial();
+          } else {
+            signature_ = value;
+          }
+          onChanged();
+        } else {
+          signatureBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .Signature signature = 4;</code>
+       */
+      public Builder clearSignature() {
+        if (signatureBuilder_ == null) {
+          signature_ = null;
+          onChanged();
+        } else {
+          signature_ = null;
+          signatureBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .Signature signature = 4;</code>
+       */
+      public org.apache.calcite.avatica.proto.Common.Signature.Builder 
getSignatureBuilder() {
+        
+        onChanged();
+        return getSignatureFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .Signature signature = 4;</code>
+       */
+      public org.apache.calcite.avatica.proto.Common.SignatureOrBuilder 
getSignatureOrBuilder() {
+        if (signatureBuilder_ != null) {
+          return signatureBuilder_.getMessageOrBuilder();
+        } else {
+          return signature_ == null ?
+              
org.apache.calcite.avatica.proto.Common.Signature.getDefaultInstance() : 
signature_;
+        }
+      }
+      /**
+       * <code>optional .Signature signature = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.calcite.avatica.proto.Common.Signature, 
org.apache.calcite.avatica.proto.Common.Signature.Builder, 
org.apache.calcite.avatica.proto.Common.SignatureOrBuilder> 
+          getSignatureFieldBuilder() {
+        if (signatureBuilder_ == null) {
+          signatureBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.calcite.avatica.proto.Common.Signature, 
org.apache.calcite.avatica.proto.Common.Signature.Builder, 
org.apache.calcite.avatica.proto.Common.SignatureOrBuilder>(
+                  getSignature(),
+                  getParentForChildren(),
+                  isClean());
+          signature_ = null;
+        }
+        return signatureBuilder_;
+      }
+
+      private org.apache.calcite.avatica.proto.Common.Frame firstFrame_ = null;
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.calcite.avatica.proto.Common.Frame, 
org.apache.calcite.avatica.proto.Common.Frame.Builder, 
org.apache.calcite.avatica.proto.Common.FrameOrBuilder> firstFrameBuilder_;
+      /**
+       * <code>optional .Frame first_frame = 5;</code>
+       */
+      public boolean hasFirstFrame() {
+        return firstFrameBuilder_ != null || firstFrame_ != null;
+      }
+      /**
+       * <code>optional .Frame first_frame = 5;</code>
+       */
+      public org.apache.calcite.avatica.proto.Common.Frame getFirstFrame() {
+        if (firstFrameBuilder_ == null) {
+          return firstFrame_ == null ? 
org.apache.calcite.avatica.proto.Common.Frame.getDefaultInstance() : 
firstFrame_;
+        } else {
+          return firstFrameBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .Frame first_frame = 5;</code>
+       */
+      public Builder 
setFirstFrame(org.apache.calcite.avatica.proto.Common.Frame value) {
+        if (firstFrameBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          firstFrame_ = value;
+          onChanged();
+        } else {
+          firstFrameBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .Frame first_frame = 5;</code>
+       */
+      public Builder setFirstFrame(
+          org.apache.calcite.avatica.proto.Common.Frame.Builder 
builderForValue) {
+        if (firstFrameBuilder_ == null) {
+          firstFrame_ = builderForValue.build();
+          onChanged();
+        } else {
+          firstFrameBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .Frame first_frame = 5;</code>
+       */
+      public Builder 
mergeFirstFrame(org.apache.calcite.avatica.proto.Common.Frame value) {
+        if (firstFrameBuilder_ == null) {
+          if (firstFrame_ != null) {
+            firstFrame_ =
+              
org.apache.calcite.avatica.proto.Common.Frame.newBuilder(firstFrame_).mergeFrom(value).buildPartial();
+          } else {
+            firstFrame_ = value;
+          }
+          onChanged();
+        } else {
+          firstFrameBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .Frame first_frame = 5;</code>
+       */
+      public Builder clearFirstFrame() {
+        if (firstFrameBuilder_ == null) {
+          firstFrame_ = null;
+          onChanged();
+        } else {
+          firstFrame_ = null;
+          firstFrameBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .Frame first_frame = 5;</code>
+       */
+      public org.apache.calcite.avatica.proto.Common.Frame.Builder 
getFirstFrameBuilder() {
+        
+        onChanged();
+        return getFirstFrameFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .Frame first_frame = 5;</code>
+       */
+      public org.apache.calcite.avatica.proto.Common.FrameOrBuilder 
getFirstFrameOrBuilder() {
+        if (firstFrameBuilder_ != null) {
+          return firstFrameBuilder_.getMessageOrBuilder();
+        } else {
+          return firstFrame_ == null ?
+              
org.apache.calcite.avatica.proto.Common.Frame.getDefaultInstance() : 
firstFrame_;
+        }
+      }
+      /**
+       * <code>optional .Frame first_frame = 5;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.calcite.avatica.proto.Common.Frame, 
org.apache.calcite.avatica.proto.Common.Frame.Builder, 
org.apache.calcite.avatica.proto.Common.FrameOrBuilder> 
+          getFirstFrameFieldBuilder() {
+        if (firstFrameBuilder_ == null) {
+          firstFrameBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.calcite.avatica.proto.Common.Frame, 
org.apache.calcite.avatica.proto.Common.Frame.Builder, 
org.apache.calcite.avatica.proto.Common.FrameOrBuilder>(
+                  getFirstFrame(),
+                  getParentForChildren(),
+                  isClean());
+          firstFrame_ = null;
+        }
+        return firstFrameBuilder_;
+      }
+
+      private long updateCount_ ;
+      /**
+       * <code>optional uint64 update_count = 6;</code>
+       *
+       * <pre>
+       * -1 for normal result sets, else this response contains a dummy result 
set
+       * </pre>
+       */
+      public long getUpdateCount() {
+        return updateCount_;
+      }
+      /**
+       * <code>optional uint64 update_count = 6;</code>
+       *
+       * <pre>
+       * -1 for normal result sets, else this response contains a dummy result 
set
+       * </pre>
+       */
+      public Builder setUpdateCount(long value) {
+        
+        updateCount_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint64 update_count = 6;</code>
+       *
+       * <pre>
+       * -1 for normal result sets, else this response contains a dummy result 
set
+       * </pre>
+       */
+      public Builder clearUpdateCount() {
+        
+        updateCount_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private org.apache.calcite.avatica.proto.Responses.RpcMetadata metadata_ 
= null;
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.calcite.avatica.proto.Responses.RpcMetadata, 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder, 
org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder> 
metadataBuilder_;
+      /**
+       * <code>optional .RpcMetadata metadata = 7;</code>
+       *
+       * <pre>
+       * with no signature nor other data.
+       * </pre>
+       */
+      public boolean hasMetadata() {
+        return metadataBuilder_ != null || metadata_ != null;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 7;</code>
+       *
+       * <pre>
+       * with no signature nor other data.
+       * </pre>
+       */
+      public org.apache.calcite.avatica.proto.Responses.RpcMetadata 
getMetadata() {
+        if (metadataBuilder_ == null) {
+          return metadata_ == null ? 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.getDefaultInstance() : 
metadata_;
+        } else {
+          return metadataBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 7;</code>
+       *
+       * <pre>
+       * with no signature nor other data.
+       * </pre>
+       */
+      public Builder 
setMetadata(org.apache.calcite.avatica.proto.Responses.RpcMetadata value) {
+        if (metadataBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          metadata_ = value;
+          onChanged();
+        } else {
+          metadataBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 7;</code>
+       *
+       * <pre>
+       * with no signature nor other data.
+       * </pre>
+       */
+      public Builder setMetadata(
+          org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder 
builderForValue) {
+        if (metadataBuilder_ == null) {
+          metadata_ = builderForValue.build();
+          onChanged();
+        } else {
+          metadataBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 7;</code>
+       *
+       * <pre>
+       * with no signature nor other data.
+       * </pre>
+       */
+      public Builder 
mergeMetadata(org.apache.calcite.avatica.proto.Responses.RpcMetadata value) {
+        if (metadataBuilder_ == null) {
+          if (metadata_ != null) {
+            metadata_ =
+              
org.apache.calcite.avatica.proto.Responses.RpcMetadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
+          } else {
+            metadata_ = value;
+          }
+          onChanged();
+        } else {
+          metadataBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 7;</code>
+       *
+       * <pre>
+       * with no signature nor other data.
+       * </pre>
+       */
+      public Builder clearMetadata() {
+        if (metadataBuilder_ == null) {
+          metadata_ = null;
+          onChanged();
+        } else {
+          metadata_ = null;
+          metadataBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 7;</code>
+       *
+       * <pre>
+       * with no signature nor other data.
+       * </pre>
+       */
+      public org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder 
getMetadataBuilder() {
+        
+        onChanged();
+        return getMetadataFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 7;</code>
+       *
+       * <pre>
+       * with no signature nor other data.
+       * </pre>
+       */
+      public org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder 
getMetadataOrBuilder() {
+        if (metadataBuilder_ != null) {
+          return metadataBuilder_.getMessageOrBuilder();
+        } else {
+          return metadata_ == null ?
+              
org.apache.calcite.avatica.proto.Responses.RpcMetadata.getDefaultInstance() : 
metadata_;
+        }
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 7;</code>
+       *
+       * <pre>
+       * with no signature nor other data.
+       * </pre>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.calcite.avatica.proto.Responses.RpcMetadata, 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder, 
org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder> 
+          getMetadataFieldBuilder() {
+        if (metadataBuilder_ == null) {
+          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.calcite.avatica.proto.Responses.RpcMetadata, 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder, 
org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder>(
+                  getMetadata(),
+                  getParentForChildren(),
+                  isClean());
+          metadata_ = null;
+        }
+        return metadataBuilder_;
+      }
+      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:ResultSetResponse)
+    }
+
+    // @@protoc_insertion_point(class_scope:ResultSetResponse)
+    private static final 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse();
+    }
+
+    public static org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<ResultSetResponse>
+        PARSER = new com.google.protobuf.AbstractParser<ResultSetResponse>() {
+      public ResultSetResponse parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        try {
+          return new ResultSetResponse(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<ResultSetResponse> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ResultSetResponse> getParserForType() {
+      return PARSER;
+    }
+
+    public org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface ExecuteResponseOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ExecuteResponse)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    
java.util.List<org.apache.calcite.avatica.proto.Responses.ResultSetResponse> 
+        getResultsList();
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
getResults(int index);
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    int getResultsCount();
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    java.util.List<? extends 
org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder> 
+        getResultsOrBuilderList();
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    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();
+
+    /**
+     * <code>optional .RpcMetadata metadata = 3;</code>
+     */
+    boolean hasMetadata();
+    /**
+     * <code>optional .RpcMetadata metadata = 3;</code>
+     */
+    org.apache.calcite.avatica.proto.Responses.RpcMetadata getMetadata();
+    /**
+     * <code>optional .RpcMetadata metadata = 3;</code>
+     */
+    org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder 
getMetadataOrBuilder();
+  }
+  /**
+   * Protobuf type {@code ExecuteResponse}
+   *
+   * <pre>
+   * Response to PrepareAndExecuteRequest
+   * </pre>
+   */
+  public  static final class ExecuteResponse extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:ExecuteResponse)
+      ExecuteResponseOrBuilder {
+    // Use ExecuteResponse.newBuilder() to construct.
+    private ExecuteResponse(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
+      super(builder);
+    }
+    private ExecuteResponse() {
+      results_ = java.util.Collections.emptyList();
+      missingStatement_ = false;
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+    }
+    private ExecuteResponse(
+        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: {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                results_ = new 
java.util.ArrayList<org.apache.calcite.avatica.proto.Responses.ResultSetResponse>();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              
results_.add(input.readMessage(org.apache.calcite.avatica.proto.Responses.ResultSetResponse.parser(),
 extensionRegistry));
+              break;
+            }
+            case 16: {
+
+              missingStatement_ = input.readBool();
+              break;
+            }
+            case 26: {
+              org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder 
subBuilder = null;
+              if (metadata_ != null) {
+                subBuilder = metadata_.toBuilder();
+              }
+              metadata_ = 
input.readMessage(org.apache.calcite.avatica.proto.Responses.RpcMetadata.parser(),
 extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(metadata_);
+                metadata_ = subBuilder.buildPartial();
+              }
+
+              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 {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+          results_ = java.util.Collections.unmodifiableList(results_);
+        }
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return 
org.apache.calcite.avatica.proto.Responses.internal_static_ExecuteResponse_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.apache.calcite.avatica.proto.Responses.internal_static_ExecuteResponse_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              
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_;
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    public 
java.util.List<org.apache.calcite.avatica.proto.Responses.ResultSetResponse> 
getResultsList() {
+      return results_;
+    }
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    public java.util.List<? extends 
org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder> 
+        getResultsOrBuilderList() {
+      return results_;
+    }
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    public int getResultsCount() {
+      return results_.size();
+    }
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    public org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
getResults(int index) {
+      return results_.get(index);
+    }
+    /**
+     * <code>repeated .ResultSetResponse results = 1;</code>
+     */
+    public 
org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder 
getResultsOrBuilder(
+        int index) {
+      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_;
+    }
+
+    public static final int METADATA_FIELD_NUMBER = 3;
+    private org.apache.calcite.avatica.proto.Responses.RpcMetadata metadata_;
+    /**
+     * <code>optional .RpcMetadata metadata = 3;</code>
+     */
+    public boolean hasMetadata() {
+      return metadata_ != null;
+    }
+    /**
+     * <code>optional .RpcMetadata metadata = 3;</code>
+     */
+    public org.apache.calcite.avatica.proto.Responses.RpcMetadata 
getMetadata() {
+      return metadata_ == null ? 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.getDefaultInstance() : 
metadata_;
+    }
+    /**
+     * <code>optional .RpcMetadata metadata = 3;</code>
+     */
+    public org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder 
getMetadataOrBuilder() {
+      return getMetadata();
+    }
+
+    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 {
+      for (int i = 0; i < results_.size(); i++) {
+        output.writeMessage(1, results_.get(i));
+      }
+      if (missingStatement_ != false) {
+        output.writeBool(2, missingStatement_);
+      }
+      if (metadata_ != null) {
+        output.writeMessage(3, getMetadata());
+      }
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < results_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, results_.get(i));
+      }
+      if (missingStatement_ != false) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(2, missingStatement_);
+      }
+      if (metadata_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, getMetadata());
+      }
+      memoizedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    public static org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
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.ExecuteResponse 
parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
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.ExecuteResponse 
parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
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.ExecuteResponse 
parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
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.ExecuteResponse 
parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
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.ExecuteResponse 
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 ExecuteResponse}
+     *
+     * <pre>
+     * Response to PrepareAndExecuteRequest
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ExecuteResponse)
+        org.apache.calcite.avatica.proto.Responses.ExecuteResponseOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return 
org.apache.calcite.avatica.proto.Responses.internal_static_ExecuteResponse_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return 
org.apache.calcite.avatica.proto.Responses.internal_static_ExecuteResponse_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                
org.apache.calcite.avatica.proto.Responses.ExecuteResponse.class, 
org.apache.calcite.avatica.proto.Responses.ExecuteResponse.Builder.class);
+      }
+
+      // Construct using 
org.apache.calcite.avatica.proto.Responses.ExecuteResponse.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+          getResultsFieldBuilder();
+        }
+      }
+      public Builder clear() {
+        super.clear();
+        if (resultsBuilder_ == null) {
+          results_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          resultsBuilder_.clear();
+        }
+        missingStatement_ = false;
+
+        if (metadataBuilder_ == null) {
+          metadata_ = null;
+        } else {
+          metadata_ = null;
+          metadataBuilder_ = null;
+        }
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return 
org.apache.calcite.avatica.proto.Responses.internal_static_ExecuteResponse_descriptor;
+      }
+
+      public org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
getDefaultInstanceForType() {
+        return 
org.apache.calcite.avatica.proto.Responses.ExecuteResponse.getDefaultInstance();
+      }
+
+      public org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
build() {
+        org.apache.calcite.avatica.proto.Responses.ExecuteResponse result = 
buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      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_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.results_ = results_;
+        } else {
+          result.results_ = resultsBuilder_.build();
+        }
+        result.missingStatement_ = missingStatement_;
+        if (metadataBuilder_ == null) {
+          result.metadata_ = metadata_;
+        } else {
+          result.metadata_ = metadataBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof 
org.apache.calcite.avatica.proto.Responses.ExecuteResponse) {
+          return 
mergeFrom((org.apache.calcite.avatica.proto.Responses.ExecuteResponse)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder 
mergeFrom(org.apache.calcite.avatica.proto.Responses.ExecuteResponse other) {
+        if (other == 
org.apache.calcite.avatica.proto.Responses.ExecuteResponse.getDefaultInstance())
 return this;
+        if (resultsBuilder_ == null) {
+          if (!other.results_.isEmpty()) {
+            if (results_.isEmpty()) {
+              results_ = other.results_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureResultsIsMutable();
+              results_.addAll(other.results_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.results_.isEmpty()) {
+            if (resultsBuilder_.isEmpty()) {
+              resultsBuilder_.dispose();
+              resultsBuilder_ = null;
+              results_ = other.results_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              resultsBuilder_ = 
+                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+                   getResultsFieldBuilder() : null;
+            } else {
+              resultsBuilder_.addAllMessages(other.results_);
+            }
+          }
+        }
+        if (other.getMissingStatement() != false) {
+          setMissingStatement(other.getMissingStatement());
+        }
+        if (other.hasMetadata()) {
+          mergeMetadata(other.getMetadata());
+        }
+        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.ExecuteResponse 
parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = 
(org.apache.calcite.avatica.proto.Responses.ExecuteResponse) 
e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private 
java.util.List<org.apache.calcite.avatica.proto.Responses.ResultSetResponse> 
results_ =
+        java.util.Collections.emptyList();
+      private void ensureResultsIsMutable() {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+          results_ = new 
java.util.ArrayList<org.apache.calcite.avatica.proto.Responses.ResultSetResponse>(results_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.calcite.avatica.proto.Responses.ResultSetResponse, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder> 
resultsBuilder_;
+
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public 
java.util.List<org.apache.calcite.avatica.proto.Responses.ResultSetResponse> 
getResultsList() {
+        if (resultsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(results_);
+        } else {
+          return resultsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public int getResultsCount() {
+        if (resultsBuilder_ == null) {
+          return results_.size();
+        } else {
+          return resultsBuilder_.getCount();
+        }
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public org.apache.calcite.avatica.proto.Responses.ResultSetResponse 
getResults(int index) {
+        if (resultsBuilder_ == null) {
+          return results_.get(index);
+        } else {
+          return resultsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public Builder setResults(
+          int index, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse value) {
+        if (resultsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResultsIsMutable();
+          results_.set(index, value);
+          onChanged();
+        } else {
+          resultsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public Builder setResults(
+          int index, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder 
builderForValue) {
+        if (resultsBuilder_ == null) {
+          ensureResultsIsMutable();
+          results_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          resultsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public Builder 
addResults(org.apache.calcite.avatica.proto.Responses.ResultSetResponse value) {
+        if (resultsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResultsIsMutable();
+          results_.add(value);
+          onChanged();
+        } else {
+          resultsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public Builder addResults(
+          int index, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse value) {
+        if (resultsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureResultsIsMutable();
+          results_.add(index, value);
+          onChanged();
+        } else {
+          resultsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public Builder addResults(
+          org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder 
builderForValue) {
+        if (resultsBuilder_ == null) {
+          ensureResultsIsMutable();
+          results_.add(builderForValue.build());
+          onChanged();
+        } else {
+          resultsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public Builder addResults(
+          int index, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder 
builderForValue) {
+        if (resultsBuilder_ == null) {
+          ensureResultsIsMutable();
+          results_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          resultsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public Builder addAllResults(
+          java.lang.Iterable<? extends 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse> values) {
+        if (resultsBuilder_ == null) {
+          ensureResultsIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, results_);
+          onChanged();
+        } else {
+          resultsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public Builder clearResults() {
+        if (resultsBuilder_ == null) {
+          results_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          resultsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public Builder removeResults(int index) {
+        if (resultsBuilder_ == null) {
+          ensureResultsIsMutable();
+          results_.remove(index);
+          onChanged();
+        } else {
+          resultsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder 
getResultsBuilder(
+          int index) {
+        return getResultsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public 
org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder 
getResultsOrBuilder(
+          int index) {
+        if (resultsBuilder_ == null) {
+          return results_.get(index);  } else {
+          return resultsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public java.util.List<? extends 
org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder> 
+           getResultsOrBuilderList() {
+        if (resultsBuilder_ != null) {
+          return resultsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(results_);
+        }
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder 
addResultsBuilder() {
+        return getResultsFieldBuilder().addBuilder(
+            
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder 
addResultsBuilder(
+          int index) {
+        return getResultsFieldBuilder().addBuilder(
+            index, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .ResultSetResponse results = 1;</code>
+       */
+      public 
java.util.List<org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder>
 
+           getResultsBuilderList() {
+        return getResultsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilder<
+          org.apache.calcite.avatica.proto.Responses.ResultSetResponse, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder> 
+          getResultsFieldBuilder() {
+        if (resultsBuilder_ == null) {
+          resultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+              org.apache.calcite.avatica.proto.Responses.ResultSetResponse, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponse.Builder, 
org.apache.calcite.avatica.proto.Responses.ResultSetResponseOrBuilder>(
+                  results_,
+                  ((bitField0_ & 0x00000001) == 0x00000001),
+                  getParentForChildren(),
+                  isClean());
+          results_ = null;
+        }
+        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;
+      }
+
+      private org.apache.calcite.avatica.proto.Responses.RpcMetadata metadata_ 
= null;
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.calcite.avatica.proto.Responses.RpcMetadata, 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder, 
org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder> 
metadataBuilder_;
+      /**
+       * <code>optional .RpcMetadata metadata = 3;</code>
+       */
+      public boolean hasMetadata() {
+        return metadataBuilder_ != null || metadata_ != null;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 3;</code>
+       */
+      public org.apache.calcite.avatica.proto.Responses.RpcMetadata 
getMetadata() {
+        if (metadataBuilder_ == null) {
+          return metadata_ == null ? 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.getDefaultInstance() : 
metadata_;
+        } else {
+          return metadataBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 3;</code>
+       */
+      public Builder 
setMetadata(org.apache.calcite.avatica.proto.Responses.RpcMetadata value) {
+        if (metadataBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          metadata_ = value;
+          onChanged();
+        } else {
+          metadataBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 3;</code>
+       */
+      public Builder setMetadata(
+          org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder 
builderForValue) {
+        if (metadataBuilder_ == null) {
+          metadata_ = builderForValue.build();
+          onChanged();
+        } else {
+          metadataBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 3;</code>
+       */
+      public Builder 
mergeMetadata(org.apache.calcite.avatica.proto.Responses.RpcMetadata value) {
+        if (metadataBuilder_ == null) {
+          if (metadata_ != null) {
+            metadata_ =
+              
org.apache.calcite.avatica.proto.Responses.RpcMetadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
+          } else {
+            metadata_ = value;
+          }
+          onChanged();
+        } else {
+          metadataBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 3;</code>
+       */
+      public Builder clearMetadata() {
+        if (metadataBuilder_ == null) {
+          metadata_ = null;
+          onChanged();
+        } else {
+          metadata_ = null;
+          metadataBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 3;</code>
+       */
+      public org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder 
getMetadataBuilder() {
+        
+        onChanged();
+        return getMetadataFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 3;</code>
+       */
+      public org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder 
getMetadataOrBuilder() {
+        if (metadataBuilder_ != null) {
+          return metadataBuilder_.getMessageOrBuilder();
+        } else {
+          return metadata_ == null ?
+              
org.apache.calcite.avatica.proto.Responses.RpcMetadata.getDefaultInstance() : 
metadata_;
+        }
+      }
+      /**
+       * <code>optional .RpcMetadata metadata = 3;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilder<
+          org.apache.calcite.avatica.proto.Responses.RpcMetadata, 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder, 
org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder> 
+          getMetadataFieldBuilder() {
+        if (metadataBuilder_ == null) {
+          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
+              org.apache.calcite.avatica.proto.Responses.RpcMetadata, 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder, 
org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder>(
+                  getMetadata(),
+                  getParentForChildren(),
+                  isClean());
+          metadata_ = null;
+        }
+        return metadataBuilder_;
+      }
+      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:ExecuteResponse)
+    }
+
+    // @@protoc_insertion_point(class_scope:ExecuteResponse)
+    private static final 
org.apache.calcite.avatica.proto.Responses.ExecuteResponse DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new 
org.apache.calcite.avatica.proto.Responses.ExecuteResponse();
+    }
+
+    public static org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<ExecuteResponse>
+        PARSER = new com.google.protobuf.AbstractParser<ExecuteResponse>() {
+      public ExecuteResponse parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        try {
+          return new ExecuteResponse(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<ExecuteResponse> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ExecuteResponse> getParserForType() {
+      return PARSER;
+    }
+
+    public org.apache.calcite.avatica.proto.Responses.ExecuteResponse 
getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface PrepareResponseOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:PrepareResponse)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional .StatementHandle statement = 1;</code>
+     */
+    boolean hasStatement();
+    /**
+     * <code>optional .StatementHandle statement = 1;</code>
+     */
+    org.apache.calcite.avatica.proto.Common.StatementHandle getStatement();
+    /**
+     * <code>optional .StatementHandle statement = 1;</code>
+     */
+    org.apache.calcite.avatica.proto.Common.StatementHandleOrBuilder 
getStatementOrBuilder();
+
+    /**
+     * <code>optional .RpcMetadata metadata = 2;</code>
+     */
+    boolean hasMetadata();
+    /**
+     * <code>optional .RpcMetadata metadata = 2;</code>
+     */
+    org.apache.calcite.avatica.proto.Responses.RpcMetadata getMetadata();
+    /**
+     * <code>optional .RpcMetadata metadata = 2;</code>
+     */
+    org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder 
getMetadataOrBuilder();
+  }
+  /**
+   * Protobuf type {@code PrepareResponse}
+   *
+   * <pre>
+   * Response to PrepareRequest
+   * </pre>
+   */
+  public  static final class PrepareResponse extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:PrepareResponse)
+      PrepareResponseOrBuilder {
+    // Use PrepareResponse.newBuilder() to construct.
+    private PrepareResponse(com.google.protobuf.GeneratedMessage.Builder<?> 
builder) {
+      super(builder);
+    }
+    private PrepareResponse() {
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+    }
+    private PrepareResponse(
+        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: {
+              org.apache.calcite.avatica.proto.Common.StatementHandle.Builder 
subBuilder = null;
+              if (statement_ != null) {
+                subBuilder = statement_.toBuilder();
+              }
+              statement_ = 
input.readMessage(org.apache.calcite.avatica.proto.Common.StatementHandle.parser(),
 extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(statement_);
+                statement_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
+              org.apache.calcite.avatica.proto.Responses.RpcMetadata.Builder 
subBuilder = null;
+              if (metadata_ != null) {
+                subBuilder = metadata_.toBuilder();
+              }
+              metadata_ = 
input.readMessage(org.apache.calcite.avatica.proto.Responses.RpcMetadata.parser(),
 extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(metadata_);
+                metadata_ = subBuilder.buildPartial();
+              }
+
+              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_PrepareResponse_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return 
org.apache.calcite.avatica.proto.Responses.internal_static_PrepareResponse_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              
org.apache.calcite.avatica.proto.Responses.PrepareResponse.class, 
org.apache.calcite.avatica.proto.Responses.PrepareResponse.Builder.class);
+    }
+
+    public static final int STATEMENT_FIELD_NUMBER = 1;
+    private org.apache.calcite.avatica.proto.Common.StatementHandle statement_;
+    /**
+     * <code>optional .StatementHandle statement = 1;</code>
+     */
+    public boolean hasStatement() {
+      return statement_ != null;
+    }
+    /**
+     * <code>optional .StatementHandle statement = 1;</code>
+     */
+    public org.apache.calcite.avatica.proto.Common.StatementHandle 
getStatement() {
+      return statement_ == null ? 
org.apache.calcite.avatica.proto.Common.StatementHandle.getDefaultInstance() : 
statement_;
+    }
+    /**
+     * <code>optional .StatementHandle statement = 1;</code>
+     */
+    public org.apache.calcite.avatica.proto.Common.StatementHandleOrBuilder 
getStatementOrBuilder() {
+      return getStatement();
+    }
+
+    public static final int METADATA_FIELD_NUMBER = 2;
+    private org.apache.calcite.avatica.proto.Responses.RpcMetadata metadata_;
+    /**
+     * <code>optional .RpcMetadata metadata = 2;</code>
+     */
+    public boolean hasMetadata() {
+      return metadata_ != null;
+    }
+    /**
+     * <code>optional .RpcMetadata metadata = 2;</code>
+     */
+    public org.apache.calcite.avatica.proto.Responses.RpcMetadata 
getMetadata() {
+      return metadata_ == null ? 
org.apache.calcite.avatica.proto.Responses.RpcMetadata.getDefaultInstance() : 
metadata_;
+    }
+    /**
+     * <code>optional .RpcMetadata metadata = 2;</code>
+     */
+    public org.apache.calcite.avatica.proto.Responses.RpcMetadataOrBuilder 
getMetadataOrBuilder() {
+      return getMetadata();
+    }
+
+    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 (statement_ != null) {
+        output.writeMessage(1, getStatement());
+      }
+      if (metadata_ != null) {
+        output.writeMessage(2, getMetadata());
+      }
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (statement_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getStatement());
+      }
+      if (metadata_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, getMetadata());
+      }
+      memoizedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    public static org.apache.calcite.avatica.proto.Responses.PrepareResponse 
parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.calcite.avatica.proto.Responses.PrepareResponse 
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.

<TRUNCATED>

Reply via email to