You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2015/10/23 04:38:52 UTC

[03/11] incubator-calcite git commit: [CALCITE-912] Add Avatica OpenConnectionRequest (Bruno Dumon)

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a63639b1/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 bdcb140..00b8623 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
@@ -27,6 +27,16 @@ package org.apache.calcite.avatica.proto;
   public interface CatalogsRequestOrBuilder extends
       // @@protoc_insertion_point(interface_extends:CatalogsRequest)
       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();
   }
   /**
    * Protobuf type {@code CatalogsRequest}
@@ -44,6 +54,7 @@ package org.apache.calcite.avatica.proto;
       super(builder);
     }
     private CatalogsRequest() {
+      connectionId_ = "";
     }
 
     @java.lang.Override
@@ -56,6 +67,7 @@ package org.apache.calcite.avatica.proto;
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -70,6 +82,12 @@ package org.apache.calcite.avatica.proto;
               }
               break;
             }
+            case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+
+              connectionId_ = bs;
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -108,6 +126,42 @@ package org.apache.calcite.avatica.proto;
       return PARSER;
     }
 
+    public static final int CONNECTION_ID_FIELD_NUMBER = 1;
+    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) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          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;
+      }
+    }
+
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
@@ -121,6 +175,9 @@ package org.apache.calcite.avatica.proto;
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
+      if (!getConnectionIdBytes().isEmpty()) {
+        output.writeBytes(1, getConnectionIdBytes());
+      }
     }
 
     private int memoizedSerializedSize = -1;
@@ -129,6 +186,10 @@ package org.apache.calcite.avatica.proto;
       if (size != -1) return size;
 
       size = 0;
+      if (!getConnectionIdBytes().isEmpty()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getConnectionIdBytes());
+      }
       memoizedSerializedSize = size;
       return size;
     }
@@ -239,6 +300,8 @@ package org.apache.calcite.avatica.proto;
       }
       public Builder clear() {
         super.clear();
+        connectionId_ = "";
+
         return this;
       }
 
@@ -261,6 +324,7 @@ package org.apache.calcite.avatica.proto;
 
       public org.apache.calcite.avatica.proto.Requests.CatalogsRequest buildPartial() {
         org.apache.calcite.avatica.proto.Requests.CatalogsRequest result = new org.apache.calcite.avatica.proto.Requests.CatalogsRequest(this);
+        result.connectionId_ = connectionId_;
         onBuilt();
         return result;
       }
@@ -276,6 +340,10 @@ package org.apache.calcite.avatica.proto;
 
       public Builder mergeFrom(org.apache.calcite.avatica.proto.Requests.CatalogsRequest other) {
         if (other == org.apache.calcite.avatica.proto.Requests.CatalogsRequest.getDefaultInstance()) return this;
+        if (!other.getConnectionId().isEmpty()) {
+          connectionId_ = other.connectionId_;
+          onChanged();
+        }
         onChanged();
         return this;
       }
@@ -301,6 +369,76 @@ package org.apache.calcite.avatica.proto;
         }
         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();
+          if (bs.isValidUtf8()) {
+            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();
+  }
+  
+        connectionId_ = value;
+        onChanged();
+        return this;
+      }
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
         return this;
@@ -333,6 +471,16 @@ package org.apache.calcite.avatica.proto;
   public interface DatabasePropertyRequestOrBuilder extends
       // @@protoc_insertion_point(interface_extends:DatabasePropertyRequest)
       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();
   }
   /**
    * Protobuf type {@code DatabasePropertyRequest}
@@ -350,6 +498,7 @@ package org.apache.calcite.avatica.proto;
       super(builder);
     }
     private DatabasePropertyRequest() {
+      connectionId_ = "";
     }
 
     @java.lang.Override
@@ -362,6 +511,7 @@ package org.apache.calcite.avatica.proto;
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -376,6 +526,12 @@ package org.apache.calcite.avatica.proto;
               }
               break;
             }
+            case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+
+              connectionId_ = bs;
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -414,6 +570,42 @@ package org.apache.calcite.avatica.proto;
       return PARSER;
     }
 
+    public static final int CONNECTION_ID_FIELD_NUMBER = 1;
+    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) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          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;
+      }
+    }
+
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
@@ -427,6 +619,9 @@ package org.apache.calcite.avatica.proto;
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
+      if (!getConnectionIdBytes().isEmpty()) {
+        output.writeBytes(1, getConnectionIdBytes());
+      }
     }
 
     private int memoizedSerializedSize = -1;
@@ -435,6 +630,10 @@ package org.apache.calcite.avatica.proto;
       if (size != -1) return size;
 
       size = 0;
+      if (!getConnectionIdBytes().isEmpty()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getConnectionIdBytes());
+      }
       memoizedSerializedSize = size;
       return size;
     }
@@ -545,6 +744,8 @@ package org.apache.calcite.avatica.proto;
       }
       public Builder clear() {
         super.clear();
+        connectionId_ = "";
+
         return this;
       }
 
@@ -567,6 +768,7 @@ package org.apache.calcite.avatica.proto;
 
       public org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest buildPartial() {
         org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest result = new org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest(this);
+        result.connectionId_ = connectionId_;
         onBuilt();
         return result;
       }
@@ -582,6 +784,10 @@ package org.apache.calcite.avatica.proto;
 
       public Builder mergeFrom(org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest other) {
         if (other == org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest.getDefaultInstance()) return this;
+        if (!other.getConnectionId().isEmpty()) {
+          connectionId_ = other.connectionId_;
+          onChanged();
+        }
         onChanged();
         return this;
       }
@@ -607,41 +813,111 @@ package org.apache.calcite.avatica.proto;
         }
         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;
+      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();
+          if (bs.isValidUtf8()) {
+            connectionId_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
       }
-
-
-      // @@protoc_insertion_point(builder_scope:DatabasePropertyRequest)
-    }
-
-    // @@protoc_insertion_point(class_scope:DatabasePropertyRequest)
-    private static final org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest defaultInstance;static {
-      defaultInstance = new org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest();
-    }
-
-    public static org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest getDefaultInstance() {
-      return defaultInstance;
-    }
-
-    public org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-
-  }
-
-  public interface SchemasRequestOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:SchemasRequest)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>optional string catalog = 1;</code>
+      /**
+       * <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();
+  }
+  
+        connectionId_ = value;
+        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:DatabasePropertyRequest)
+    }
+
+    // @@protoc_insertion_point(class_scope:DatabasePropertyRequest)
+    private static final org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest defaultInstance;static {
+      defaultInstance = new org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest();
+    }
+
+    public static org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public org.apache.calcite.avatica.proto.Requests.DatabasePropertyRequest getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+  }
+
+  public interface SchemasRequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:SchemasRequest)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional string catalog = 1;</code>
      */
     java.lang.String getCatalog();
     /**
@@ -659,6 +935,16 @@ package org.apache.calcite.avatica.proto;
      */
     com.google.protobuf.ByteString
         getSchemaPatternBytes();
+
+    /**
+     * <code>optional string connection_id = 3;</code>
+     */
+    java.lang.String getConnectionId();
+    /**
+     * <code>optional string connection_id = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getConnectionIdBytes();
   }
   /**
    * Protobuf type {@code SchemasRequest}
@@ -678,6 +964,7 @@ package org.apache.calcite.avatica.proto;
     private SchemasRequest() {
       catalog_ = "";
       schemaPattern_ = "";
+      connectionId_ = "";
     }
 
     @java.lang.Override
@@ -717,6 +1004,12 @@ package org.apache.calcite.avatica.proto;
               schemaPattern_ = bs;
               break;
             }
+            case 26: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+
+              connectionId_ = bs;
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -827,6 +1120,42 @@ package org.apache.calcite.avatica.proto;
       }
     }
 
+    public static final int CONNECTION_ID_FIELD_NUMBER = 3;
+    private java.lang.Object connectionId_;
+    /**
+     * <code>optional string connection_id = 3;</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();
+        if (bs.isValidUtf8()) {
+          connectionId_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string connection_id = 3;</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;
+      }
+    }
+
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
@@ -846,6 +1175,9 @@ package org.apache.calcite.avatica.proto;
       if (!getSchemaPatternBytes().isEmpty()) {
         output.writeBytes(2, getSchemaPatternBytes());
       }
+      if (!getConnectionIdBytes().isEmpty()) {
+        output.writeBytes(3, getConnectionIdBytes());
+      }
     }
 
     private int memoizedSerializedSize = -1;
@@ -862,6 +1194,10 @@ package org.apache.calcite.avatica.proto;
         size += com.google.protobuf.CodedOutputStream
           .computeBytesSize(2, getSchemaPatternBytes());
       }
+      if (!getConnectionIdBytes().isEmpty()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getConnectionIdBytes());
+      }
       memoizedSerializedSize = size;
       return size;
     }
@@ -976,6 +1312,8 @@ package org.apache.calcite.avatica.proto;
 
         schemaPattern_ = "";
 
+        connectionId_ = "";
+
         return this;
       }
 
@@ -1000,6 +1338,7 @@ package org.apache.calcite.avatica.proto;
         org.apache.calcite.avatica.proto.Requests.SchemasRequest result = new org.apache.calcite.avatica.proto.Requests.SchemasRequest(this);
         result.catalog_ = catalog_;
         result.schemaPattern_ = schemaPattern_;
+        result.connectionId_ = connectionId_;
         onBuilt();
         return result;
       }
@@ -1023,6 +1362,10 @@ package org.apache.calcite.avatica.proto;
           schemaPattern_ = other.schemaPattern_;
           onChanged();
         }
+        if (!other.getConnectionId().isEmpty()) {
+          connectionId_ = other.connectionId_;
+          onChanged();
+        }
         onChanged();
         return this;
       }
@@ -1188,6 +1531,76 @@ package org.apache.calcite.avatica.proto;
         onChanged();
         return this;
       }
+
+      private java.lang.Object connectionId_ = "";
+      /**
+       * <code>optional string connection_id = 3;</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();
+          if (bs.isValidUtf8()) {
+            connectionId_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string connection_id = 3;</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 = 3;</code>
+       */
+      public Builder setConnectionId(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        connectionId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string connection_id = 3;</code>
+       */
+      public Builder clearConnectionId() {
+        
+        connectionId_ = getDefaultInstance().getConnectionId();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string connection_id = 3;</code>
+       */
+      public Builder setConnectionIdBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        connectionId_ = value;
+        onChanged();
+        return this;
+      }
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
         return this;
@@ -1278,6 +1691,16 @@ package org.apache.calcite.avatica.proto;
      * </pre>
      */
     boolean getHasTypeList();
+
+    /**
+     * <code>optional string connection_id = 7;</code>
+     */
+    java.lang.String getConnectionId();
+    /**
+     * <code>optional string connection_id = 7;</code>
+     */
+    com.google.protobuf.ByteString
+        getConnectionIdBytes();
   }
   /**
    * Protobuf type {@code TablesRequest}
@@ -1301,6 +1724,7 @@ package org.apache.calcite.avatica.proto;
       tableNamePattern_ = "";
       typeList_ = com.google.protobuf.LazyStringArrayList.EMPTY;
       hasTypeList_ = false;
+      connectionId_ = "";
     }
 
     @java.lang.Override
@@ -1360,6 +1784,12 @@ package org.apache.calcite.avatica.proto;
               hasTypeList_ = input.readBool();
               break;
             }
+            case 58: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+
+              connectionId_ = bs;
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -1552,23 +1982,59 @@ package org.apache.calcite.avatica.proto;
       return hasTypeList_;
     }
 
-    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 {
-      getSerializedSize();
-      if (!getCatalogBytes().isEmpty()) {
-        output.writeBytes(1, getCatalogBytes());
+    public static final int CONNECTION_ID_FIELD_NUMBER = 7;
+    private java.lang.Object connectionId_;
+    /**
+     * <code>optional string connection_id = 7;</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();
+        if (bs.isValidUtf8()) {
+          connectionId_ = s;
+        }
+        return s;
       }
-      if (!getSchemaPatternBytes().isEmpty()) {
+    }
+    /**
+     * <code>optional string connection_id = 7;</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;
+      }
+    }
+
+    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 {
+      getSerializedSize();
+      if (!getCatalogBytes().isEmpty()) {
+        output.writeBytes(1, getCatalogBytes());
+      }
+      if (!getSchemaPatternBytes().isEmpty()) {
         output.writeBytes(2, getSchemaPatternBytes());
       }
       if (!getTableNamePatternBytes().isEmpty()) {
@@ -1580,6 +2046,9 @@ package org.apache.calcite.avatica.proto;
       if (hasTypeList_ != false) {
         output.writeBool(6, hasTypeList_);
       }
+      if (!getConnectionIdBytes().isEmpty()) {
+        output.writeBytes(7, getConnectionIdBytes());
+      }
     }
 
     private int memoizedSerializedSize = -1;
@@ -1613,6 +2082,10 @@ package org.apache.calcite.avatica.proto;
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(6, hasTypeList_);
       }
+      if (!getConnectionIdBytes().isEmpty()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(7, getConnectionIdBytes());
+      }
       memoizedSerializedSize = size;
       return size;
     }
@@ -1734,6 +2207,8 @@ package org.apache.calcite.avatica.proto;
         bitField0_ = (bitField0_ & ~0x00000008);
         hasTypeList_ = false;
 
+        connectionId_ = "";
+
         return this;
       }
 
@@ -1767,6 +2242,7 @@ package org.apache.calcite.avatica.proto;
         }
         result.typeList_ = typeList_;
         result.hasTypeList_ = hasTypeList_;
+        result.connectionId_ = connectionId_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
@@ -1808,6 +2284,10 @@ package org.apache.calcite.avatica.proto;
         if (other.getHasTypeList() != false) {
           setHasTypeList(other.getHasTypeList());
         }
+        if (!other.getConnectionId().isEmpty()) {
+          connectionId_ = other.connectionId_;
+          onChanged();
+        }
         onChanged();
         return this;
       }
@@ -2175,6 +2655,76 @@ package org.apache.calcite.avatica.proto;
         onChanged();
         return this;
       }
+
+      private java.lang.Object connectionId_ = "";
+      /**
+       * <code>optional string connection_id = 7;</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();
+          if (bs.isValidUtf8()) {
+            connectionId_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string connection_id = 7;</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 = 7;</code>
+       */
+      public Builder setConnectionId(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        connectionId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string connection_id = 7;</code>
+       */
+      public Builder clearConnectionId() {
+        
+        connectionId_ = getDefaultInstance().getConnectionId();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string connection_id = 7;</code>
+       */
+      public Builder setConnectionIdBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        connectionId_ = value;
+        onChanged();
+        return this;
+      }
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
         return this;
@@ -2207,6 +2757,16 @@ package org.apache.calcite.avatica.proto;
   public interface TableTypesRequestOrBuilder extends
       // @@protoc_insertion_point(interface_extends:TableTypesRequest)
       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();
   }
   /**
    * Protobuf type {@code TableTypesRequest}
@@ -2224,6 +2784,7 @@ package org.apache.calcite.avatica.proto;
       super(builder);
     }
     private TableTypesRequest() {
+      connectionId_ = "";
     }
 
     @java.lang.Override
@@ -2236,6 +2797,7 @@ package org.apache.calcite.avatica.proto;
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -2250,6 +2812,12 @@ package org.apache.calcite.avatica.proto;
               }
               break;
             }
+            case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+
+              connectionId_ = bs;
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -2288,6 +2856,42 @@ package org.apache.calcite.avatica.proto;
       return PARSER;
     }
 
+    public static final int CONNECTION_ID_FIELD_NUMBER = 1;
+    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) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          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;
+      }
+    }
+
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
@@ -2301,6 +2905,9 @@ package org.apache.calcite.avatica.proto;
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
+      if (!getConnectionIdBytes().isEmpty()) {
+        output.writeBytes(1, getConnectionIdBytes());
+      }
     }
 
     private int memoizedSerializedSize = -1;
@@ -2309,6 +2916,10 @@ package org.apache.calcite.avatica.proto;
       if (size != -1) return size;
 
       size = 0;
+      if (!getConnectionIdBytes().isEmpty()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getConnectionIdBytes());
+      }
       memoizedSerializedSize = size;
       return size;
     }
@@ -2419,6 +3030,8 @@ package org.apache.calcite.avatica.proto;
       }
       public Builder clear() {
         super.clear();
+        connectionId_ = "";
+
         return this;
       }
 
@@ -2441,6 +3054,7 @@ package org.apache.calcite.avatica.proto;
 
       public org.apache.calcite.avatica.proto.Requests.TableTypesRequest buildPartial() {
         org.apache.calcite.avatica.proto.Requests.TableTypesRequest result = new org.apache.calcite.avatica.proto.Requests.TableTypesRequest(this);
+        result.connectionId_ = connectionId_;
         onBuilt();
         return result;
       }
@@ -2456,6 +3070,10 @@ package org.apache.calcite.avatica.proto;
 
       public Builder mergeFrom(org.apache.calcite.avatica.proto.Requests.TableTypesRequest other) {
         if (other == org.apache.calcite.avatica.proto.Requests.TableTypesRequest.getDefaultInstance()) return this;
+        if (!other.getConnectionId().isEmpty()) {
+          connectionId_ = other.connectionId_;
+          onChanged();
+        }
         onChanged();
         return this;
       }
@@ -2481,6 +3099,76 @@ package org.apache.calcite.avatica.proto;
         }
         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();
+          if (bs.isValidUtf8()) {
+            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();
+  }
+  
+        connectionId_ = value;
+        onChanged();
+        return this;
+      }
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
         return this;
@@ -2553,13 +3241,23 @@ package org.apache.calcite.avatica.proto;
      */
     com.google.protobuf.ByteString
         getColumnNamePatternBytes();
-  }
-  /**
-   * Protobuf type {@code ColumnsRequest}
-   *
-   * <pre>
-   * Request for Meta#getColumns(String, org.apache.calcite.avatica.Meta.Pat,
-   *   org.apache.calcite.avatica.Meta.Pat, org.apache.calcite.avatica.Meta.Pat).
+
+    /**
+     * <code>optional string connection_id = 5;</code>
+     */
+    java.lang.String getConnectionId();
+    /**
+     * <code>optional string connection_id = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getConnectionIdBytes();
+  }
+  /**
+   * Protobuf type {@code ColumnsRequest}
+   *
+   * <pre>
+   * Request for Meta#getColumns(String, org.apache.calcite.avatica.Meta.Pat,
+   *   org.apache.calcite.avatica.Meta.Pat, org.apache.calcite.avatica.Meta.Pat).
    * </pre>
    */
   public  static final class ColumnsRequest extends
@@ -2575,6 +3273,7 @@ package org.apache.calcite.avatica.proto;
       schemaPattern_ = "";
       tableNamePattern_ = "";
       columnNamePattern_ = "";
+      connectionId_ = "";
     }
 
     @java.lang.Override
@@ -2626,6 +3325,12 @@ package org.apache.calcite.avatica.proto;
               columnNamePattern_ = bs;
               break;
             }
+            case 42: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+
+              connectionId_ = bs;
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -2808,6 +3513,42 @@ package org.apache.calcite.avatica.proto;
       }
     }
 
+    public static final int CONNECTION_ID_FIELD_NUMBER = 5;
+    private java.lang.Object connectionId_;
+    /**
+     * <code>optional string connection_id = 5;</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();
+        if (bs.isValidUtf8()) {
+          connectionId_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string connection_id = 5;</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;
+      }
+    }
+
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
@@ -2833,6 +3574,9 @@ package org.apache.calcite.avatica.proto;
       if (!getColumnNamePatternBytes().isEmpty()) {
         output.writeBytes(4, getColumnNamePatternBytes());
       }
+      if (!getConnectionIdBytes().isEmpty()) {
+        output.writeBytes(5, getConnectionIdBytes());
+      }
     }
 
     private int memoizedSerializedSize = -1;
@@ -2857,6 +3601,10 @@ package org.apache.calcite.avatica.proto;
         size += com.google.protobuf.CodedOutputStream
           .computeBytesSize(4, getColumnNamePatternBytes());
       }
+      if (!getConnectionIdBytes().isEmpty()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(5, getConnectionIdBytes());
+      }
       memoizedSerializedSize = size;
       return size;
     }
@@ -2976,6 +3724,8 @@ package org.apache.calcite.avatica.proto;
 
         columnNamePattern_ = "";
 
+        connectionId_ = "";
+
         return this;
       }
 
@@ -3002,6 +3752,7 @@ package org.apache.calcite.avatica.proto;
         result.schemaPattern_ = schemaPattern_;
         result.tableNamePattern_ = tableNamePattern_;
         result.columnNamePattern_ = columnNamePattern_;
+        result.connectionId_ = connectionId_;
         onBuilt();
         return result;
       }
@@ -3033,6 +3784,10 @@ package org.apache.calcite.avatica.proto;
           columnNamePattern_ = other.columnNamePattern_;
           onChanged();
         }
+        if (!other.getConnectionId().isEmpty()) {
+          connectionId_ = other.connectionId_;
+          onChanged();
+        }
         onChanged();
         return this;
       }
@@ -3338,6 +4093,76 @@ package org.apache.calcite.avatica.proto;
         onChanged();
         return this;
       }
+
+      private java.lang.Object connectionId_ = "";
+      /**
+       * <code>optional string connection_id = 5;</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();
+          if (bs.isValidUtf8()) {
+            connectionId_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string connection_id = 5;</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 = 5;</code>
+       */
+      public Builder setConnectionId(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        connectionId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string connection_id = 5;</code>
+       */
+      public Builder clearConnectionId() {
+        
+        connectionId_ = getDefaultInstance().getConnectionId();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string connection_id = 5;</code>
+       */
+      public Builder setConnectionIdBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        connectionId_ = value;
+        onChanged();
+        return this;
+      }
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
         return this;
@@ -3370,6 +4195,16 @@ package org.apache.calcite.avatica.proto;
   public interface TypeInfoRequestOrBuilder extends
       // @@protoc_insertion_point(interface_extends:TypeInfoRequest)
       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();
   }
   /**
    * Protobuf type {@code TypeInfoRequest}
@@ -3387,6 +4222,7 @@ package org.apache.calcite.avatica.proto;
       super(builder);
     }
     private TypeInfoRequest() {
+      connectionId_ = "";
     }
 
     @java.lang.Override
@@ -3399,6 +4235,7 @@ package org.apache.calcite.avatica.proto;
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -3413,6 +4250,12 @@ package org.apache.calcite.avatica.proto;
               }
               break;
             }
+            case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+
+              connectionId_ = bs;
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -3451,6 +4294,42 @@ package org.apache.calcite.avatica.proto;
       return PARSER;
     }
 
+    public static final int CONNECTION_ID_FIELD_NUMBER = 1;
+    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) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          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;
+      }
+    }
+
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
@@ -3464,6 +4343,9 @@ package org.apache.calcite.avatica.proto;
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
+      if (!getConnectionIdBytes().isEmpty()) {
+        output.writeBytes(1, getConnectionIdBytes());
+      }
     }
 
     private int memoizedSerializedSize = -1;
@@ -3472,6 +4354,10 @@ package org.apache.calcite.avatica.proto;
       if (size != -1) return size;
 
       size = 0;
+      if (!getConnectionIdBytes().isEmpty()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getConnectionIdBytes());
+      }
       memoizedSerializedSize = size;
       return size;
     }
@@ -3582,6 +4468,8 @@ package org.apache.calcite.avatica.proto;
       }
       public Builder clear() {
         super.clear();
+        connectionId_ = "";
+
         return this;
       }
 
@@ -3604,6 +4492,7 @@ package org.apache.calcite.avatica.proto;
 
       public org.apache.calcite.avatica.proto.Requests.TypeInfoRequest buildPartial() {
         org.apache.calcite.avatica.proto.Requests.TypeInfoRequest result = new org.apache.calcite.avatica.proto.Requests.TypeInfoRequest(this);
+        result.connectionId_ = connectionId_;
         onBuilt();
         return result;
       }
@@ -3619,6 +4508,10 @@ package org.apache.calcite.avatica.proto;
 
       public Builder mergeFrom(org.apache.calcite.avatica.proto.Requests.TypeInfoRequest other) {
         if (other == org.apache.calcite.avatica.proto.Requests.TypeInfoRequest.getDefaultInstance()) return this;
+        if (!other.getConnectionId().isEmpty()) {
+          connectionId_ = other.connectionId_;
+          onChanged();
+        }
         onChanged();
         return this;
       }
@@ -3644,21 +4537,91 @@ package org.apache.calcite.avatica.proto;
         }
         return this;
       }
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return this;
-      }
 
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
+      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();
+          if (bs.isValidUtf8()) {
+            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;
       }
-
-
-      // @@protoc_insertion_point(builder_scope:TypeInfoRequest)
-    }
-
-    // @@protoc_insertion_point(class_scope:TypeInfoRequest)
+      /**
+       * <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();
+  }
+  
+        connectionId_ = value;
+        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:TypeInfoRequest)
+    }
+
+    // @@protoc_insertion_point(class_scope:TypeInfoRequest)
     private static final org.apache.calcite.avatica.proto.Requests.TypeInfoRequest defaultInstance;static {
       defaultInstance = new org.apache.calcite.avatica.proto.Requests.TypeInfoRequest();
     }
@@ -5751,7 +6714,462 @@ package org.apache.calcite.avatica.proto;
     };
 
     @java.lang.Override
-    public com.google.protobuf.Parser<CreateStatementRequest> getParserForType() {
+    public com.google.protobuf.Parser<CreateStatementRequest> getParserForType() {
+      return PARSER;
+    }
+
+    public static final int CONNECTION_ID_FIELD_NUMBER = 1;
+    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) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          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;
+      }
+    }
+
+    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 {
+      getSerializedSize();
+      if (!getConnectionIdBytes().isEmpty()) {
+        output.writeBytes(1, getConnectionIdBytes());
+      }
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (!getConnectionIdBytes().isEmpty()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getConnectionIdBytes());
+      }
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest 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.CreateStatementRequest parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest 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.CreateStatementRequest parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest 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.CreateStatementRequest parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest 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.CreateStatementRequest parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return new Builder(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.calcite.avatica.proto.Requests.CreateStatementRequest prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code CreateStatementRequest}
+     *
+     * <pre>
+     * Request for Meta#createStatement(Meta.ConnectionHandle)
+     * </pre>
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:CreateStatementRequest)
+        org.apache.calcite.avatica.proto.Requests.CreateStatementRequestOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.calcite.avatica.proto.Requests.internal_static_CreateStatementRequest_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.calcite.avatica.proto.Requests.internal_static_CreateStatementRequest_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.class, org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.Builder.class);
+      }
+
+      // Construct using org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.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_ = "";
+
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.calcite.avatica.proto.Requests.internal_static_CreateStatementRequest_descriptor;
+      }
+
+      public org.apache.calcite.avatica.proto.Requests.CreateStatementRequest getDefaultInstanceForType() {
+        return org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.getDefaultInstance();
+      }
+
+      public org.apache.calcite.avatica.proto.Requests.CreateStatementRequest build() {
+        org.apache.calcite.avatica.proto.Requests.CreateStatementRequest result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.calcite.avatica.proto.Requests.CreateStatementRequest buildPartial() {
+        org.apache.calcite.avatica.proto.Requests.CreateStatementRequest result = new org.apache.calcite.avatica.proto.Requests.CreateStatementRequest(this);
+        result.connectionId_ = connectionId_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.calcite.avatica.proto.Requests.CreateStatementRequest) {
+          return mergeFrom((org.apache.calcite.avatica.proto.Requests.CreateStatementRequest)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.calcite.avatica.proto.Requests.CreateStatementRequest other) {
+        if (other == org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.getDefaultInstance()) return this;
+        if (!other.getConnectionId().isEmpty()) {
+          connectionId_ = other.connectionId_;
+          onChanged();
+        }
+        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.CreateStatementRequest parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.calcite.avatica.proto.Requests.CreateStatementRequest) 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();
+          if (bs.isValidUtf8()) {
+            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();
+  }
+  
+        connectionId_ = value;
+        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:CreateStatementRequest)
+    }
+
+    // @@protoc_insertion_point(class_scope:CreateStatementRequest)
+    private static final org.apache.calcite.avatica.proto.Requests.CreateStatementRequest defaultInstance;static {
+      defaultInstance = new org.apache.calcite.avatica.proto.Requests.CreateStatementRequest();
+    }
+
+    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public org.apache.calcite.avatica.proto.Requests.CreateStatementRequest getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+  }
+
+  public interface CloseStatementRequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:CloseStatementRequest)
+      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();
+  }
+  /**
+   * Protobuf type {@code CloseStatementRequest}
+   *
+   * <pre>
+   * Request for Meta#closeStatement(Meta.StatementHandle)
+   * </pre>
+   */
+  public  static final class CloseStatementRequest extends
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:CloseStatementRequest)
+      CloseStatementRequestOrBuilder {
+    // Use CloseStatementRequest.newBuilder() to construct.
+    private CloseStatementRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+      super(builder);
+    }
+    private CloseStatementRequest() {
+      connectionId_ = "";
+      statementId_ = 0;
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+    }
+    private CloseStatementRequest(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      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: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+
+              connectionId_ = bs;
+              break;
+            }
+            case 16: {
+
+              statementId_ = input.readUInt32();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw 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_CloseStatementRequest_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.calcite.avatica.proto.Requests.internal_static_CloseStatementRequest_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.calcite.avatica.proto.Requests.CloseStatementRequest.class, org.apache.calcite.avatica.proto.Requests.CloseStatementRequest.Builder.class);
+    }
+
+    public static final com.google.protobuf.Parser<CloseStatementRequest> PARSER =
+        new com.google.protobuf.AbstractParser<CloseStatementRequest>() {
+      public CloseStatementRequest parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new CloseStatementRequest(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<CloseStatementRequest> getParserForType() {
       return PARSER;
     }
 
@@ -5791,6 +7209,15 @@ package org.apache.calcite.avatica.proto;
       }
     }
 
+    public static final int STATEMENT_ID_FIELD_NUMBER = 2;
+    private int statementId_;
+    /**
+     * <code>optional uint32 statement_id = 2;</code>
+     */
+    public int getStatementId() {
+      return statementId_;
+    }
+
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
@@ -5807,6 +7234,9 @@ package org.apache.calcite.avatica.proto;
       if (!getConnectionIdBytes().isEmpty()) {
         output.writeBytes(1, getConnectionIdBytes());
       }
+      if (statementId_ != 0) {
+        output.writeUInt32(2, statementId_);
+      }
     }
 
     private int memoizedSerializedSize = -1;
@@ -5819,58 +7249,62 @@ package org.apache.calcite.avatica.proto;
         size += com.google.protobuf.CodedOutputStream
           .computeBytesSize(1, getConnectionIdBytes());
       }
+      if (statementId_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(2, statementId_);
+      }
       memoizedSerializedSize = size;
       return size;
     }
 
     private static final long serialVersionUID = 0L;
-    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest parseFrom(
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest parseFrom(
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest 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.CreateStatementRequest parseFrom(byte[] data)
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest parseFrom(
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest 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.CreateStatementRequest parseFrom(java.io.InputStream input)
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest parseFrom(
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest 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.CreateStatementRequest parseDelimitedFrom(java.io.InputStream input)
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input);
     }
-    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest parseDelimitedFrom(
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest 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.CreateStatementRequest parseFrom(
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest parseFrom(
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -5879,7 +7313,7 @@ package org.apache.calcite.avatica.proto;
 
     public static Builder newBuilder() { return new Builder(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(org.apache.calcite.avatica.proto.Requests.CreateStatementRequest prototype) {
+    public static Builder newBuilder(org.apache.calcite.avatica.proto.Requests.CloseStatementRequest prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
@@ -5891,29 +7325,29 @@ package org.apache.calcite.avatica.proto;
       return builder;
     }
     /**
-     * Protobuf type {@code CreateStatementRequest}
+     * Protobuf type {@code CloseStatementRequest}
      *
      * <pre>
-     * Request for Meta#createStatement(Meta.ConnectionHandle)
+     * Request for Meta#closeStatement(Meta.StatementHandle)
      * </pre>
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:CreateStatementRequest)
-        org.apache.calcite.avatica.proto.Requests.CreateStatementRequestOrBuilder {
+        // @@protoc_insertion_point(builder_implements:CloseStatementRequest)
+        org.apache.calcite.avatica.proto.Requests.CloseStatementRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return org.apache.calcite.avatica.proto.Requests.internal_static_CreateStatementRequest_descriptor;
+        return org.apache.calcite.avatica.proto.Requests.internal_static_CloseStatementRequest_descriptor;
       }
 
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.calcite.avatica.proto.Requests.internal_static_CreateStatementRequest_fieldAccessorTable
+        return org.apache.calcite.avatica.proto.Requests.internal_static_CloseStatementRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.class, org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.Builder.class);
+                org.apache.calcite.avatica.proto.Requests.CloseStatementRequest.class, org.apache.calcite.avatica.proto.Requests.CloseStatementRequest.Builder.class);
       }
 
-      // Construct using org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.newBuilder()
+      // Construct using org.apache.calcite.avatica.proto.Requests.CloseStatementRequest.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -5931,48 +7365,54 @@ package org.apache.calcite.avatica.proto;
         super.clear();
         connectionId_ = "";
 
+        statementId_ = 0;
+
         return this;
       }
 
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.calcite.avatica.proto.Requests.internal_static_CreateStatementRequest_descriptor;
+        return org.apache.calcite.avatica.proto.Requests.internal_static_CloseStatementRequest_descriptor;
       }
 
-      public org.apache.calcite.avatica.proto.Requests.CreateStatementRequest getDefaultInstanceForType() {
-        return org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.getDefaultInstance();
+      public org.apache.calcite.avatica.proto.Requests.CloseStatementRequest getDefaultInstanceForType() {
+        return org.apache.calcite.avatica.proto.Requests.CloseStatementRequest.getDefaultInstance();
       }
 
-      public org.apache.calcite.avatica.proto.Requests.CreateStatementRequest build() {
-        org.apache.calcite.avatica.proto.Requests.CreateStatementRequest result = buildPartial();
+      public org.apache.calcite.avatica.proto.Requests.CloseStatementRequest build() {
+        org.apache.calcite.avatica.proto.Requests.CloseStatementRequest result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
         return result;
       }
 
-      public org.apache.calcite.avatica.proto.Requests.CreateStatementRequest buildPartial() {
-        org.apache.calcite.avatica.proto.Requests.CreateStatementRequest result = new org.apache.calcite.avatica.proto.Requests.CreateStatementRequest(this);
+      public org.apache.calcite.avatica.proto.Requests.CloseStatementRequest buildPartial() {
+        org.apache.calcite.avatica.proto.Requests.CloseStatementRequest result = new org.apache.calcite.avatica.proto.Requests.CloseStatementRequest(this);
         result.connectionId_ = connectionId_;
+        result.statementId_ = statementId_;
         onBuilt();
         return result;
       }
 
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.apache.calcite.avatica.proto.Requests.CreateStatementRequest) {
-          return mergeFrom((org.apache.calcite.avatica.proto.Requests.CreateStatementRequest)other);
+        if (other instanceof org.apache.calcite.avatica.proto.Requests.CloseStatementRequest) {
+          return mergeFrom((org.apache.calcite.avatica.proto.Requests.CloseStatementRequest)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(org.apache.calcite.avatica.proto.Requests.CreateStatementRequest other) {
-        if (other == org.apache.calcite.avatica.proto.Requests.CreateStatementRequest.getDefaultInstance()) return this;
+      public Builder mergeFrom(org.apache.calcite.avatica.proto.Requests.CloseStatementRequest other) {
+        if (other == org.apache.calcite.avatica.proto.Requests.CloseStatementRequest.getDefaultInstance()) return this;
         if (!other.getConnectionId().isEmpty()) {
           connectionId_ = other.connectionId_;
           onChanged();
         }
+        if (other.getStatementId() != 0) {
+          setStatementId(other.getStatementId());
+        }
         onChanged();
         return this;
       }
@@ -5985,11 +7425,11 @@ package org.apache.calcite.avatica.proto;
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        org.apache.calcite.avatica.proto.Requests.CreateStatementRequest parsedMessage = null;
+        org.apache.calcite.avatica.proto.Requests.CloseStatementRequest parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.apache.calcite.avatica.proto.Requests.CreateStatementRequest) e.getUnfinishedMessage();
+          parsedMessage = (org.apache.calcite.avatica.proto.Requests.CloseStatementRequest) e.getUnfinishedMessage();
           throw e;
         } finally {
           if (parsedMessage != null) {
@@ -6068,6 +7508,32 @@ package org.apache.calcite.avatica.proto;
         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;
+      }
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
         return this;
@@ -6079,26 +7545,26 @@ package org.apache.calcite.avatica.proto;
       }
 
 
-      // @@protoc_insertion_point(builder_scope:CreateStatementRequest)
+      // @@protoc_insertion_point(builder_scope:CloseStatementRequest)
     }
 
-    // @@protoc_insertion_point(class_scope:CreateStatementRequest)
-    private static final org.apache.calcite.avatica.proto.Requests.CreateStatementRequest defaultInstance;static {
-      defaultInstance = new org.apache.calcite.avatica.proto.Requests.CreateStatementRequest();
+    // @@protoc_insertion_point(class_scope:CloseStatementRequest)
+    private static final org.apache.calcite.avatica.proto.Requests.CloseStatementRequest defaultInstance;static {
+      defaultInstance = new org.apache.calcite.avatica.proto.Requests.CloseStatementRequest();
     }
 
-    public static org.apache.calcite.avatica.proto.Requests.CreateStatementRequest getDefaultInstance() {
+    public static org.apache.calcite.avatica.proto.Requests.CloseStatementRequest getDefaultInstance() {
       return defaultInstance;
     }
 
-    public org.apache.calcite.avatica.proto.Requests.CreateStatementRequest getDefaultInstanceForType() {
+    public org.apache.calcite.avatica.proto.Requests.CloseStatementRequest getDefaultInstanceForType() {
       return defaultInstance;
     }
 
   }
 
-  public interface CloseStatementRequestOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:CloseStatementRequest)
+  public interface OpenConnectionRequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:OpenConnectionRequest)
       com.google.protobuf.MessageOrBuilder {
 
     /**
@@ -6112,28 +7578,28 @@ package org.apache.calcite.avatica.proto;
         getConnectionIdBytes();
 
     /**
-     * <code>optional uint32 statement_id = 2;</code>
+     * <code>map&lt;string, string&gt; info = 2;</code>
      */
-    int getStatementId();
+    java.util.Map<java.lang.String, java.lang.String>
+    getInfo();
   }
   /**
-   * Protobuf type {@code CloseStatementRequest}
+   * Protobuf type {@code OpenConnectionRequest}
    *
    * <pre>
-   * Request for Meta#closeStatement(Meta.StatementHandle)
+   * Request for Meta#openConnection(Meta.ConnectionHandle, Map&lt;String, String&gt;)
    * </pre>
    */
-  public  static final class CloseStatementRequest extends
+  public  static final class OpenConnectionRequest extends
       com.google.protobuf.GeneratedMessage implements
-      // @@protoc_insertion_point(message_implements:CloseStatementRequest)
-      CloseStatementRequestOrBuilder {
-    // Use CloseStatementRequest.newBuilder() to construct.
-    private CloseStatementRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
+      // @@protoc_insertion_point(message_implements:OpenConnectionRequest)
+      OpenConnectionRequestOrBuilder {
+    // Use OpenConnectionRequest.newBuilder() to construct.
+    private OpenConnectionRequest(com.google.protobuf.GeneratedMessage.Builder builder) {
       super(builder);
     }
-    private CloseStatementRequest() {
+    private OpenConnectionRequest() {
       connectionId_ = "";
-      statementId_ = 0;
     }
 
     @java.lang.Override
@@ -6141,7 +7607,7 @@ package org.apache.calcite.avatica.proto;
     getUnknownFields() {
       return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
-    private CloseStatementRequest(
+    private OpenConnectionRequest(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -6167,9 +7633,16 @@ package org.apache.calcite.avatica.proto;
               connectionId_ = bs;
               break;
             }
-            case 16: {
-
-              statementId_ = input.readUInt32();
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                info_ = com.google.protobuf.MapField.newMapField(
+                    infoDefaultEntry);
+                mutable_bitField0_ |= 0x00000002;
+              }
+              com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
+              info = input.readMessage(
+                  infoDefaultEntry.getParserForType(), extensionRegistry);
+              info_.getMutableMap().put(info.getKey(), info.getValue());
               break;
             }
           }
@@ -6185,31 +7658,43 @@ package org.apache.calcite.avatica.proto;
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.calcite.avatica.proto.Requests.internal_static_CloseStatementRequest_descriptor;
+      return org.apache.calcite.avatica.proto.Requests.internal_static_OpenConnectionRequest_descriptor;
     }
 
+    @SuppressWarnings({"rawtypes"})
+    protected com.google.protobuf.MapField internalGetMapField(
+        int number) {
+      switch (number) {
+        case 2:
+          return info_;
+        default:
+          throw new RuntimeException(
+              "Invalid map field number: " + number);
+      }
+    }
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.calcite.avatica.proto.Requests.internal_static_CloseStatementRequest_fieldAccessorTable
+      return org.apache.calcite.avatica.proto.Requests.internal_static_OpenConnectionRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.calcite.avatica.proto.Requests.CloseStatementRequest.class, org.apache.calcite.avatica.proto.Requests.CloseStatementRequest.Builder.class);
+              org.apache.calcite.avatica.proto.Requests.OpenConnectionRequest.class, org.apache.calcite.avatica.proto.Requests.OpenConnectionRequest.Builder.class);
     }
 
-    public static final com.google.protobuf.Parser<CloseStatementRequest> PARSER =
-        new com.google.protobuf.AbstractParser<CloseStatementRequest>() {
-      public CloseStatementRequest parsePartialFrom(
+    public static final com.google.protobuf.Parser<OpenConnectionRequest> PARSER =
+        new com.google.protobuf.AbstractParser<OpenConnectionRequest>() {
+      public OpenConnectionRequest parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new CloseStatementRequest(input, extensionRegistry);
+        return new OpenConnectionRequest(input, extensionRegistry);
       }
     };
 
     @java.lang.Override
-    public com.google.protobuf.Parser<CloseStatementRequest> getParserForType() {
+    public c

<TRUNCATED>