You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by jn...@apache.org on 2017/03/02 20:59:39 UTC

[12/27] drill git commit: DRILL-5301: Server metadata API

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/CollateSupport.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/CollateSupport.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/CollateSupport.java
new file mode 100644
index 0000000..599bf86
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/CollateSupport.java
@@ -0,0 +1,49 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum CollateSupport implements com.dyuproject.protostuff.EnumLite<CollateSupport>
+{
+    CS_UNKNOWN(0),
+    CS_GROUP_BY(1);
+    
+    public final int number;
+    
+    private CollateSupport (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static CollateSupport valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 0: return CS_UNKNOWN;
+            case 1: return CS_GROUP_BY;
+            default: return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/ConvertSupport.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/ConvertSupport.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/ConvertSupport.java
new file mode 100644
index 0000000..1c2396c
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/ConvertSupport.java
@@ -0,0 +1,199 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import com.dyuproject.protostuff.GraphIOUtil;
+import com.dyuproject.protostuff.Input;
+import com.dyuproject.protostuff.Message;
+import com.dyuproject.protostuff.Output;
+import com.dyuproject.protostuff.Schema;
+import com.dyuproject.protostuff.UninitializedMessageException;
+
+public final class ConvertSupport implements Externalizable, Message<ConvertSupport>, Schema<ConvertSupport>
+{
+
+    public static Schema<ConvertSupport> getSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    public static ConvertSupport getDefaultInstance()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    static final ConvertSupport DEFAULT_INSTANCE = new ConvertSupport();
+
+    
+    private org.apache.drill.common.types.MinorType from;
+    private org.apache.drill.common.types.MinorType to;
+
+    public ConvertSupport()
+    {
+        
+    }
+
+    public ConvertSupport(
+        org.apache.drill.common.types.MinorType from,
+        org.apache.drill.common.types.MinorType to
+    )
+    {
+        this.from = from;
+        this.to = to;
+    }
+
+    // getters and setters
+
+    // from
+
+    public org.apache.drill.common.types.MinorType getFrom()
+    {
+        return from;
+    }
+
+    public ConvertSupport setFrom(org.apache.drill.common.types.MinorType from)
+    {
+        this.from = from;
+        return this;
+    }
+
+    // to
+
+    public org.apache.drill.common.types.MinorType getTo()
+    {
+        return to;
+    }
+
+    public ConvertSupport setTo(org.apache.drill.common.types.MinorType to)
+    {
+        this.to = to;
+        return this;
+    }
+
+    // java serialization
+
+    public void readExternal(ObjectInput in) throws IOException
+    {
+        GraphIOUtil.mergeDelimitedFrom(in, this, this);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException
+    {
+        GraphIOUtil.writeDelimitedTo(out, this, this);
+    }
+
+    // message method
+
+    public Schema<ConvertSupport> cachedSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    // schema methods
+
+    public ConvertSupport newMessage()
+    {
+        return new ConvertSupport();
+    }
+
+    public Class<ConvertSupport> typeClass()
+    {
+        return ConvertSupport.class;
+    }
+
+    public String messageName()
+    {
+        return ConvertSupport.class.getSimpleName();
+    }
+
+    public String messageFullName()
+    {
+        return ConvertSupport.class.getName();
+    }
+
+    public boolean isInitialized(ConvertSupport message)
+    {
+        return 
+            message.from != null 
+            && message.to != null;
+    }
+
+    public void mergeFrom(Input input, ConvertSupport message) throws IOException
+    {
+        for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this))
+        {
+            switch(number)
+            {
+                case 0:
+                    return;
+                case 1:
+                    message.from = org.apache.drill.common.types.MinorType.valueOf(input.readEnum());
+                    break;
+                case 2:
+                    message.to = org.apache.drill.common.types.MinorType.valueOf(input.readEnum());
+                    break;
+                default:
+                    input.handleUnknownField(number, this);
+            }   
+        }
+    }
+
+
+    public void writeTo(Output output, ConvertSupport message) throws IOException
+    {
+        if(message.from == null)
+            throw new UninitializedMessageException(message);
+        output.writeEnum(1, message.from.number, false);
+
+        if(message.to == null)
+            throw new UninitializedMessageException(message);
+        output.writeEnum(2, message.to.number, false);
+    }
+
+    public String getFieldName(int number)
+    {
+        switch(number)
+        {
+            case 1: return "from";
+            case 2: return "to";
+            default: return null;
+        }
+    }
+
+    public int getFieldNumber(String name)
+    {
+        final Integer number = __fieldMap.get(name);
+        return number == null ? 0 : number.intValue();
+    }
+
+    private static final java.util.HashMap<String,Integer> __fieldMap = new java.util.HashMap<String,Integer>();
+    static
+    {
+        __fieldMap.put("from", 1);
+        __fieldMap.put("to", 2);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/CorrelationNamesSupport.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/CorrelationNamesSupport.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/CorrelationNamesSupport.java
new file mode 100644
index 0000000..faf46c1
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/CorrelationNamesSupport.java
@@ -0,0 +1,51 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum CorrelationNamesSupport implements com.dyuproject.protostuff.EnumLite<CorrelationNamesSupport>
+{
+    CN_NONE(1),
+    CN_DIFFERENT_NAMES(2),
+    CN_ANY(3);
+    
+    public final int number;
+    
+    private CorrelationNamesSupport (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static CorrelationNamesSupport valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 1: return CN_NONE;
+            case 2: return CN_DIFFERENT_NAMES;
+            case 3: return CN_ANY;
+            default: return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/DateTimeLiteralsSupport.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/DateTimeLiteralsSupport.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/DateTimeLiteralsSupport.java
new file mode 100644
index 0000000..a2330ed
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/DateTimeLiteralsSupport.java
@@ -0,0 +1,79 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum DateTimeLiteralsSupport implements com.dyuproject.protostuff.EnumLite<DateTimeLiteralsSupport>
+{
+    DL_UNKNOWN(0),
+    DL_DATE(1),
+    DL_TIME(2),
+    DL_TIMESTAMP(3),
+    DL_INTERVAL_YEAR(4),
+    DL_INTERVAL_MONTH(5),
+    DL_INTERVAL_DAY(6),
+    DL_INTERVAL_HOUR(7),
+    DL_INTERVAL_MINUTE(8),
+    DL_INTERVAL_SECOND(9),
+    DL_INTERVAL_YEAR_TO_MONTH(10),
+    DL_INTERVAL_DAY_TO_HOUR(11),
+    DL_INTERVAL_DAY_TO_MINUTE(12),
+    DL_INTERVAL_DAY_TO_SECOND(13),
+    DL_INTERVAL_HOUR_TO_MINUTE(14),
+    DL_INTERVAL_HOUR_TO_SECOND(15),
+    DL_INTERVAL_MINUTE_TO_SECOND(16);
+    
+    public final int number;
+    
+    private DateTimeLiteralsSupport (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static DateTimeLiteralsSupport valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 0: return DL_UNKNOWN;
+            case 1: return DL_DATE;
+            case 2: return DL_TIME;
+            case 3: return DL_TIMESTAMP;
+            case 4: return DL_INTERVAL_YEAR;
+            case 5: return DL_INTERVAL_MONTH;
+            case 6: return DL_INTERVAL_DAY;
+            case 7: return DL_INTERVAL_HOUR;
+            case 8: return DL_INTERVAL_MINUTE;
+            case 9: return DL_INTERVAL_SECOND;
+            case 10: return DL_INTERVAL_YEAR_TO_MONTH;
+            case 11: return DL_INTERVAL_DAY_TO_HOUR;
+            case 12: return DL_INTERVAL_DAY_TO_MINUTE;
+            case 13: return DL_INTERVAL_DAY_TO_SECOND;
+            case 14: return DL_INTERVAL_HOUR_TO_MINUTE;
+            case 15: return DL_INTERVAL_HOUR_TO_SECOND;
+            case 16: return DL_INTERVAL_MINUTE_TO_SECOND;
+            default: return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/GetServerMetaResp.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/GetServerMetaResp.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/GetServerMetaResp.java
new file mode 100644
index 0000000..32c84db
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/GetServerMetaResp.java
@@ -0,0 +1,211 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import com.dyuproject.protostuff.GraphIOUtil;
+import com.dyuproject.protostuff.Input;
+import com.dyuproject.protostuff.Message;
+import com.dyuproject.protostuff.Output;
+import com.dyuproject.protostuff.Schema;
+
+public final class GetServerMetaResp implements Externalizable, Message<GetServerMetaResp>, Schema<GetServerMetaResp>
+{
+
+    public static Schema<GetServerMetaResp> getSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    public static GetServerMetaResp getDefaultInstance()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    static final GetServerMetaResp DEFAULT_INSTANCE = new GetServerMetaResp();
+
+    
+    private RequestStatus status;
+    private ServerMeta serverMeta;
+    private DrillPBError error;
+
+    public GetServerMetaResp()
+    {
+        
+    }
+
+    // getters and setters
+
+    // status
+
+    public RequestStatus getStatus()
+    {
+        return status == null ? RequestStatus.UNKNOWN_STATUS : status;
+    }
+
+    public GetServerMetaResp setStatus(RequestStatus status)
+    {
+        this.status = status;
+        return this;
+    }
+
+    // serverMeta
+
+    public ServerMeta getServerMeta()
+    {
+        return serverMeta;
+    }
+
+    public GetServerMetaResp setServerMeta(ServerMeta serverMeta)
+    {
+        this.serverMeta = serverMeta;
+        return this;
+    }
+
+    // error
+
+    public DrillPBError getError()
+    {
+        return error;
+    }
+
+    public GetServerMetaResp setError(DrillPBError error)
+    {
+        this.error = error;
+        return this;
+    }
+
+    // java serialization
+
+    public void readExternal(ObjectInput in) throws IOException
+    {
+        GraphIOUtil.mergeDelimitedFrom(in, this, this);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException
+    {
+        GraphIOUtil.writeDelimitedTo(out, this, this);
+    }
+
+    // message method
+
+    public Schema<GetServerMetaResp> cachedSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    // schema methods
+
+    public GetServerMetaResp newMessage()
+    {
+        return new GetServerMetaResp();
+    }
+
+    public Class<GetServerMetaResp> typeClass()
+    {
+        return GetServerMetaResp.class;
+    }
+
+    public String messageName()
+    {
+        return GetServerMetaResp.class.getSimpleName();
+    }
+
+    public String messageFullName()
+    {
+        return GetServerMetaResp.class.getName();
+    }
+
+    public boolean isInitialized(GetServerMetaResp message)
+    {
+        return true;
+    }
+
+    public void mergeFrom(Input input, GetServerMetaResp message) throws IOException
+    {
+        for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this))
+        {
+            switch(number)
+            {
+                case 0:
+                    return;
+                case 1:
+                    message.status = RequestStatus.valueOf(input.readEnum());
+                    break;
+                case 2:
+                    message.serverMeta = input.mergeObject(message.serverMeta, ServerMeta.getSchema());
+                    break;
+
+                case 3:
+                    message.error = input.mergeObject(message.error, DrillPBError.getSchema());
+                    break;
+
+                default:
+                    input.handleUnknownField(number, this);
+            }   
+        }
+    }
+
+
+    public void writeTo(Output output, GetServerMetaResp message) throws IOException
+    {
+        if(message.status != null)
+             output.writeEnum(1, message.status.number, false);
+
+        if(message.serverMeta != null)
+             output.writeObject(2, message.serverMeta, ServerMeta.getSchema(), false);
+
+
+        if(message.error != null)
+             output.writeObject(3, message.error, DrillPBError.getSchema(), false);
+
+    }
+
+    public String getFieldName(int number)
+    {
+        switch(number)
+        {
+            case 1: return "status";
+            case 2: return "serverMeta";
+            case 3: return "error";
+            default: return null;
+        }
+    }
+
+    public int getFieldNumber(String name)
+    {
+        final Integer number = __fieldMap.get(name);
+        return number == null ? 0 : number.intValue();
+    }
+
+    private static final java.util.HashMap<String,Integer> __fieldMap = new java.util.HashMap<String,Integer>();
+    static
+    {
+        __fieldMap.put("status", 1);
+        __fieldMap.put("serverMeta", 2);
+        __fieldMap.put("error", 3);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/GroupBySupport.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/GroupBySupport.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/GroupBySupport.java
new file mode 100644
index 0000000..3b4b79e
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/GroupBySupport.java
@@ -0,0 +1,53 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum GroupBySupport implements com.dyuproject.protostuff.EnumLite<GroupBySupport>
+{
+    GB_NONE(1),
+    GB_SELECT_ONLY(2),
+    GB_BEYOND_SELECT(3),
+    GB_UNRELATED(4);
+    
+    public final int number;
+    
+    private GroupBySupport (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static GroupBySupport valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 1: return GB_NONE;
+            case 2: return GB_SELECT_ONLY;
+            case 3: return GB_BEYOND_SELECT;
+            case 4: return GB_UNRELATED;
+            default: return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/IdentifierCasing.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/IdentifierCasing.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/IdentifierCasing.java
new file mode 100644
index 0000000..d991cd6
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/IdentifierCasing.java
@@ -0,0 +1,55 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum IdentifierCasing implements com.dyuproject.protostuff.EnumLite<IdentifierCasing>
+{
+    IC_UNKNOWN(0),
+    IC_STORES_LOWER(1),
+    IC_STORES_MIXED(2),
+    IC_STORES_UPPER(3),
+    IC_SUPPORTS_MIXED(4);
+    
+    public final int number;
+    
+    private IdentifierCasing (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static IdentifierCasing valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 0: return IC_UNKNOWN;
+            case 1: return IC_STORES_LOWER;
+            case 2: return IC_STORES_MIXED;
+            case 3: return IC_STORES_UPPER;
+            case 4: return IC_SUPPORTS_MIXED;
+            default: return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/NullCollation.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/NullCollation.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/NullCollation.java
new file mode 100644
index 0000000..62a164a
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/NullCollation.java
@@ -0,0 +1,55 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum NullCollation implements com.dyuproject.protostuff.EnumLite<NullCollation>
+{
+    NC_UNKNOWN(0),
+    NC_AT_START(1),
+    NC_AT_END(2),
+    NC_HIGH(3),
+    NC_LOW(4);
+    
+    public final int number;
+    
+    private NullCollation (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static NullCollation valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 0: return NC_UNKNOWN;
+            case 1: return NC_AT_START;
+            case 2: return NC_AT_END;
+            case 3: return NC_HIGH;
+            case 4: return NC_LOW;
+            default: return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/OrderBySupport.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/OrderBySupport.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/OrderBySupport.java
new file mode 100644
index 0000000..5174d8c
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/OrderBySupport.java
@@ -0,0 +1,51 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum OrderBySupport implements com.dyuproject.protostuff.EnumLite<OrderBySupport>
+{
+    OB_UNKNOWN(0),
+    OB_UNRELATED(1),
+    OB_EXPRESSION(2);
+    
+    public final int number;
+    
+    private OrderBySupport (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static OrderBySupport valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 0: return OB_UNKNOWN;
+            case 1: return OB_UNRELATED;
+            case 2: return OB_EXPRESSION;
+            default: return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/OuterJoinSupport.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/OuterJoinSupport.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/OuterJoinSupport.java
new file mode 100644
index 0000000..3620416
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/OuterJoinSupport.java
@@ -0,0 +1,61 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum OuterJoinSupport implements com.dyuproject.protostuff.EnumLite<OuterJoinSupport>
+{
+    OJ_UNKNOWN(0),
+    OJ_LEFT(1),
+    OJ_RIGHT(2),
+    OJ_FULL(3),
+    OJ_NESTED(4),
+    OJ_NOT_ORDERED(5),
+    OJ_INNER(6),
+    OJ_ALL_COMPARISON_OPS(7);
+    
+    public final int number;
+    
+    private OuterJoinSupport (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static OuterJoinSupport valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 0: return OJ_UNKNOWN;
+            case 1: return OJ_LEFT;
+            case 2: return OJ_RIGHT;
+            case 3: return OJ_FULL;
+            case 4: return OJ_NESTED;
+            case 5: return OJ_NOT_ORDERED;
+            case 6: return OJ_INNER;
+            case 7: return OJ_ALL_COMPARISON_OPS;
+            default: return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java
index ae74bcd..8357088 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/RpcType.java
@@ -35,6 +35,7 @@ public enum RpcType implements com.dyuproject.protostuff.EnumLite<RpcType>
     GET_TABLES(16),
     GET_COLUMNS(17),
     CREATE_PREPARED_STATEMENT(22),
+    GET_SERVER_META(8),
     QUERY_DATA(6),
     QUERY_HANDLE(7),
     QUERY_PLAN_FRAGMENTS(13),
@@ -43,8 +44,7 @@ public enum RpcType implements com.dyuproject.protostuff.EnumLite<RpcType>
     TABLES(20),
     COLUMNS(21),
     PREPARED_STATEMENT(23),
-    REQ_META_FUNCTIONS(8),
-    RESP_FUNCTION_LIST(9),
+    SERVER_META(9),
     QUERY_RESULT(10),
     SASL_MESSAGE(24);
     
@@ -72,8 +72,8 @@ public enum RpcType implements com.dyuproject.protostuff.EnumLite<RpcType>
             case 5: return REQUEST_RESULTS;
             case 6: return QUERY_DATA;
             case 7: return QUERY_HANDLE;
-            case 8: return REQ_META_FUNCTIONS;
-            case 9: return RESP_FUNCTION_LIST;
+            case 8: return GET_SERVER_META;
+            case 9: return SERVER_META;
             case 10: return QUERY_RESULT;
             case 11: return RESUME_PAUSED_QUERY;
             case 12: return GET_QUERY_PLAN_FRAGMENTS;

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/ServerMeta.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/ServerMeta.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/ServerMeta.java
new file mode 100644
index 0000000..0a7f020
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/ServerMeta.java
@@ -0,0 +1,1319 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.dyuproject.protostuff.GraphIOUtil;
+import com.dyuproject.protostuff.Input;
+import com.dyuproject.protostuff.Message;
+import com.dyuproject.protostuff.Output;
+import com.dyuproject.protostuff.Schema;
+
+public final class ServerMeta implements Externalizable, Message<ServerMeta>, Schema<ServerMeta>
+{
+
+    public static Schema<ServerMeta> getSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    public static ServerMeta getDefaultInstance()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    static final ServerMeta DEFAULT_INSTANCE = new ServerMeta();
+
+    
+    private Boolean allTablesSelectable;
+    private Boolean blobIncludedInMaxRowSize;
+    private Boolean catalogAtStart;
+    private String catalogSeparator;
+    private String catalogTerm;
+    private List<CollateSupport> collateSupport;
+    private Boolean columnAliasingSupported;
+    private List<ConvertSupport> convertSupport;
+    private CorrelationNamesSupport correlationNamesSupport;
+    private List<String> dateTimeFunctions;
+    private List<DateTimeLiteralsSupport> dateTimeLiteralsSupport;
+    private GroupBySupport groupBySupport;
+    private IdentifierCasing identifierCasing;
+    private String identifierQuoteString;
+    private Boolean likeEscapeClauseSupported;
+    private int maxBinaryLiteralLength;
+    private int maxCatalogNameLength;
+    private int maxCharLiteralLength;
+    private int maxColumnNameLength;
+    private int maxColumnsInGroupBy;
+    private int maxColumnsInOrderBy;
+    private int maxColumnsInSelect;
+    private int maxCursorNameLength;
+    private int maxLogicalLobSize;
+    private int maxRowSize;
+    private int maxSchemaNameLength;
+    private int maxStatementLength;
+    private int maxStatements;
+    private int maxTableNameLength;
+    private int maxTablesInSelect;
+    private int maxUserNameLength;
+    private NullCollation nullCollation;
+    private Boolean nullPlusNonNullEqualsNull;
+    private List<String> numericFunctions;
+    private List<OrderBySupport> orderBySupport;
+    private List<OuterJoinSupport> outerJoinSupport;
+    private IdentifierCasing quotedIdentifierCasing;
+    private Boolean readOnly;
+    private String schemaTerm;
+    private String searchEscapeString;
+    private Boolean selectForUpdateSupported;
+    private String specialCharacters;
+    private List<String> sqlKeywords;
+    private List<String> stringFunctions;
+    private List<SubQuerySupport> subquerySupport;
+    private List<String> systemFunctions;
+    private String tableTerm;
+    private Boolean transactionSupported;
+    private List<UnionSupport> unionSupport;
+
+    public ServerMeta()
+    {
+        
+    }
+
+    // getters and setters
+
+    // allTablesSelectable
+
+    public Boolean getAllTablesSelectable()
+    {
+        return allTablesSelectable;
+    }
+
+    public ServerMeta setAllTablesSelectable(Boolean allTablesSelectable)
+    {
+        this.allTablesSelectable = allTablesSelectable;
+        return this;
+    }
+
+    // blobIncludedInMaxRowSize
+
+    public Boolean getBlobIncludedInMaxRowSize()
+    {
+        return blobIncludedInMaxRowSize;
+    }
+
+    public ServerMeta setBlobIncludedInMaxRowSize(Boolean blobIncludedInMaxRowSize)
+    {
+        this.blobIncludedInMaxRowSize = blobIncludedInMaxRowSize;
+        return this;
+    }
+
+    // catalogAtStart
+
+    public Boolean getCatalogAtStart()
+    {
+        return catalogAtStart;
+    }
+
+    public ServerMeta setCatalogAtStart(Boolean catalogAtStart)
+    {
+        this.catalogAtStart = catalogAtStart;
+        return this;
+    }
+
+    // catalogSeparator
+
+    public String getCatalogSeparator()
+    {
+        return catalogSeparator;
+    }
+
+    public ServerMeta setCatalogSeparator(String catalogSeparator)
+    {
+        this.catalogSeparator = catalogSeparator;
+        return this;
+    }
+
+    // catalogTerm
+
+    public String getCatalogTerm()
+    {
+        return catalogTerm;
+    }
+
+    public ServerMeta setCatalogTerm(String catalogTerm)
+    {
+        this.catalogTerm = catalogTerm;
+        return this;
+    }
+
+    // collateSupport
+
+    public List<CollateSupport> getCollateSupportList()
+    {
+        return collateSupport;
+    }
+
+    public ServerMeta setCollateSupportList(List<CollateSupport> collateSupport)
+    {
+        this.collateSupport = collateSupport;
+        return this;
+    }
+
+    // columnAliasingSupported
+
+    public Boolean getColumnAliasingSupported()
+    {
+        return columnAliasingSupported;
+    }
+
+    public ServerMeta setColumnAliasingSupported(Boolean columnAliasingSupported)
+    {
+        this.columnAliasingSupported = columnAliasingSupported;
+        return this;
+    }
+
+    // convertSupport
+
+    public List<ConvertSupport> getConvertSupportList()
+    {
+        return convertSupport;
+    }
+
+    public ServerMeta setConvertSupportList(List<ConvertSupport> convertSupport)
+    {
+        this.convertSupport = convertSupport;
+        return this;
+    }
+
+    // correlationNamesSupport
+
+    public CorrelationNamesSupport getCorrelationNamesSupport()
+    {
+        return correlationNamesSupport == null ? CorrelationNamesSupport.CN_NONE : correlationNamesSupport;
+    }
+
+    public ServerMeta setCorrelationNamesSupport(CorrelationNamesSupport correlationNamesSupport)
+    {
+        this.correlationNamesSupport = correlationNamesSupport;
+        return this;
+    }
+
+    // dateTimeFunctions
+
+    public List<String> getDateTimeFunctionsList()
+    {
+        return dateTimeFunctions;
+    }
+
+    public ServerMeta setDateTimeFunctionsList(List<String> dateTimeFunctions)
+    {
+        this.dateTimeFunctions = dateTimeFunctions;
+        return this;
+    }
+
+    // dateTimeLiteralsSupport
+
+    public List<DateTimeLiteralsSupport> getDateTimeLiteralsSupportList()
+    {
+        return dateTimeLiteralsSupport;
+    }
+
+    public ServerMeta setDateTimeLiteralsSupportList(List<DateTimeLiteralsSupport> dateTimeLiteralsSupport)
+    {
+        this.dateTimeLiteralsSupport = dateTimeLiteralsSupport;
+        return this;
+    }
+
+    // groupBySupport
+
+    public GroupBySupport getGroupBySupport()
+    {
+        return groupBySupport == null ? GroupBySupport.GB_NONE : groupBySupport;
+    }
+
+    public ServerMeta setGroupBySupport(GroupBySupport groupBySupport)
+    {
+        this.groupBySupport = groupBySupport;
+        return this;
+    }
+
+    // identifierCasing
+
+    public IdentifierCasing getIdentifierCasing()
+    {
+        return identifierCasing == null ? IdentifierCasing.IC_UNKNOWN : identifierCasing;
+    }
+
+    public ServerMeta setIdentifierCasing(IdentifierCasing identifierCasing)
+    {
+        this.identifierCasing = identifierCasing;
+        return this;
+    }
+
+    // identifierQuoteString
+
+    public String getIdentifierQuoteString()
+    {
+        return identifierQuoteString;
+    }
+
+    public ServerMeta setIdentifierQuoteString(String identifierQuoteString)
+    {
+        this.identifierQuoteString = identifierQuoteString;
+        return this;
+    }
+
+    // likeEscapeClauseSupported
+
+    public Boolean getLikeEscapeClauseSupported()
+    {
+        return likeEscapeClauseSupported;
+    }
+
+    public ServerMeta setLikeEscapeClauseSupported(Boolean likeEscapeClauseSupported)
+    {
+        this.likeEscapeClauseSupported = likeEscapeClauseSupported;
+        return this;
+    }
+
+    // maxBinaryLiteralLength
+
+    public int getMaxBinaryLiteralLength()
+    {
+        return maxBinaryLiteralLength;
+    }
+
+    public ServerMeta setMaxBinaryLiteralLength(int maxBinaryLiteralLength)
+    {
+        this.maxBinaryLiteralLength = maxBinaryLiteralLength;
+        return this;
+    }
+
+    // maxCatalogNameLength
+
+    public int getMaxCatalogNameLength()
+    {
+        return maxCatalogNameLength;
+    }
+
+    public ServerMeta setMaxCatalogNameLength(int maxCatalogNameLength)
+    {
+        this.maxCatalogNameLength = maxCatalogNameLength;
+        return this;
+    }
+
+    // maxCharLiteralLength
+
+    public int getMaxCharLiteralLength()
+    {
+        return maxCharLiteralLength;
+    }
+
+    public ServerMeta setMaxCharLiteralLength(int maxCharLiteralLength)
+    {
+        this.maxCharLiteralLength = maxCharLiteralLength;
+        return this;
+    }
+
+    // maxColumnNameLength
+
+    public int getMaxColumnNameLength()
+    {
+        return maxColumnNameLength;
+    }
+
+    public ServerMeta setMaxColumnNameLength(int maxColumnNameLength)
+    {
+        this.maxColumnNameLength = maxColumnNameLength;
+        return this;
+    }
+
+    // maxColumnsInGroupBy
+
+    public int getMaxColumnsInGroupBy()
+    {
+        return maxColumnsInGroupBy;
+    }
+
+    public ServerMeta setMaxColumnsInGroupBy(int maxColumnsInGroupBy)
+    {
+        this.maxColumnsInGroupBy = maxColumnsInGroupBy;
+        return this;
+    }
+
+    // maxColumnsInOrderBy
+
+    public int getMaxColumnsInOrderBy()
+    {
+        return maxColumnsInOrderBy;
+    }
+
+    public ServerMeta setMaxColumnsInOrderBy(int maxColumnsInOrderBy)
+    {
+        this.maxColumnsInOrderBy = maxColumnsInOrderBy;
+        return this;
+    }
+
+    // maxColumnsInSelect
+
+    public int getMaxColumnsInSelect()
+    {
+        return maxColumnsInSelect;
+    }
+
+    public ServerMeta setMaxColumnsInSelect(int maxColumnsInSelect)
+    {
+        this.maxColumnsInSelect = maxColumnsInSelect;
+        return this;
+    }
+
+    // maxCursorNameLength
+
+    public int getMaxCursorNameLength()
+    {
+        return maxCursorNameLength;
+    }
+
+    public ServerMeta setMaxCursorNameLength(int maxCursorNameLength)
+    {
+        this.maxCursorNameLength = maxCursorNameLength;
+        return this;
+    }
+
+    // maxLogicalLobSize
+
+    public int getMaxLogicalLobSize()
+    {
+        return maxLogicalLobSize;
+    }
+
+    public ServerMeta setMaxLogicalLobSize(int maxLogicalLobSize)
+    {
+        this.maxLogicalLobSize = maxLogicalLobSize;
+        return this;
+    }
+
+    // maxRowSize
+
+    public int getMaxRowSize()
+    {
+        return maxRowSize;
+    }
+
+    public ServerMeta setMaxRowSize(int maxRowSize)
+    {
+        this.maxRowSize = maxRowSize;
+        return this;
+    }
+
+    // maxSchemaNameLength
+
+    public int getMaxSchemaNameLength()
+    {
+        return maxSchemaNameLength;
+    }
+
+    public ServerMeta setMaxSchemaNameLength(int maxSchemaNameLength)
+    {
+        this.maxSchemaNameLength = maxSchemaNameLength;
+        return this;
+    }
+
+    // maxStatementLength
+
+    public int getMaxStatementLength()
+    {
+        return maxStatementLength;
+    }
+
+    public ServerMeta setMaxStatementLength(int maxStatementLength)
+    {
+        this.maxStatementLength = maxStatementLength;
+        return this;
+    }
+
+    // maxStatements
+
+    public int getMaxStatements()
+    {
+        return maxStatements;
+    }
+
+    public ServerMeta setMaxStatements(int maxStatements)
+    {
+        this.maxStatements = maxStatements;
+        return this;
+    }
+
+    // maxTableNameLength
+
+    public int getMaxTableNameLength()
+    {
+        return maxTableNameLength;
+    }
+
+    public ServerMeta setMaxTableNameLength(int maxTableNameLength)
+    {
+        this.maxTableNameLength = maxTableNameLength;
+        return this;
+    }
+
+    // maxTablesInSelect
+
+    public int getMaxTablesInSelect()
+    {
+        return maxTablesInSelect;
+    }
+
+    public ServerMeta setMaxTablesInSelect(int maxTablesInSelect)
+    {
+        this.maxTablesInSelect = maxTablesInSelect;
+        return this;
+    }
+
+    // maxUserNameLength
+
+    public int getMaxUserNameLength()
+    {
+        return maxUserNameLength;
+    }
+
+    public ServerMeta setMaxUserNameLength(int maxUserNameLength)
+    {
+        this.maxUserNameLength = maxUserNameLength;
+        return this;
+    }
+
+    // nullCollation
+
+    public NullCollation getNullCollation()
+    {
+        return nullCollation == null ? NullCollation.NC_UNKNOWN : nullCollation;
+    }
+
+    public ServerMeta setNullCollation(NullCollation nullCollation)
+    {
+        this.nullCollation = nullCollation;
+        return this;
+    }
+
+    // nullPlusNonNullEqualsNull
+
+    public Boolean getNullPlusNonNullEqualsNull()
+    {
+        return nullPlusNonNullEqualsNull;
+    }
+
+    public ServerMeta setNullPlusNonNullEqualsNull(Boolean nullPlusNonNullEqualsNull)
+    {
+        this.nullPlusNonNullEqualsNull = nullPlusNonNullEqualsNull;
+        return this;
+    }
+
+    // numericFunctions
+
+    public List<String> getNumericFunctionsList()
+    {
+        return numericFunctions;
+    }
+
+    public ServerMeta setNumericFunctionsList(List<String> numericFunctions)
+    {
+        this.numericFunctions = numericFunctions;
+        return this;
+    }
+
+    // orderBySupport
+
+    public List<OrderBySupport> getOrderBySupportList()
+    {
+        return orderBySupport;
+    }
+
+    public ServerMeta setOrderBySupportList(List<OrderBySupport> orderBySupport)
+    {
+        this.orderBySupport = orderBySupport;
+        return this;
+    }
+
+    // outerJoinSupport
+
+    public List<OuterJoinSupport> getOuterJoinSupportList()
+    {
+        return outerJoinSupport;
+    }
+
+    public ServerMeta setOuterJoinSupportList(List<OuterJoinSupport> outerJoinSupport)
+    {
+        this.outerJoinSupport = outerJoinSupport;
+        return this;
+    }
+
+    // quotedIdentifierCasing
+
+    public IdentifierCasing getQuotedIdentifierCasing()
+    {
+        return quotedIdentifierCasing == null ? IdentifierCasing.IC_UNKNOWN : quotedIdentifierCasing;
+    }
+
+    public ServerMeta setQuotedIdentifierCasing(IdentifierCasing quotedIdentifierCasing)
+    {
+        this.quotedIdentifierCasing = quotedIdentifierCasing;
+        return this;
+    }
+
+    // readOnly
+
+    public Boolean getReadOnly()
+    {
+        return readOnly;
+    }
+
+    public ServerMeta setReadOnly(Boolean readOnly)
+    {
+        this.readOnly = readOnly;
+        return this;
+    }
+
+    // schemaTerm
+
+    public String getSchemaTerm()
+    {
+        return schemaTerm;
+    }
+
+    public ServerMeta setSchemaTerm(String schemaTerm)
+    {
+        this.schemaTerm = schemaTerm;
+        return this;
+    }
+
+    // searchEscapeString
+
+    public String getSearchEscapeString()
+    {
+        return searchEscapeString;
+    }
+
+    public ServerMeta setSearchEscapeString(String searchEscapeString)
+    {
+        this.searchEscapeString = searchEscapeString;
+        return this;
+    }
+
+    // selectForUpdateSupported
+
+    public Boolean getSelectForUpdateSupported()
+    {
+        return selectForUpdateSupported;
+    }
+
+    public ServerMeta setSelectForUpdateSupported(Boolean selectForUpdateSupported)
+    {
+        this.selectForUpdateSupported = selectForUpdateSupported;
+        return this;
+    }
+
+    // specialCharacters
+
+    public String getSpecialCharacters()
+    {
+        return specialCharacters;
+    }
+
+    public ServerMeta setSpecialCharacters(String specialCharacters)
+    {
+        this.specialCharacters = specialCharacters;
+        return this;
+    }
+
+    // sqlKeywords
+
+    public List<String> getSqlKeywordsList()
+    {
+        return sqlKeywords;
+    }
+
+    public ServerMeta setSqlKeywordsList(List<String> sqlKeywords)
+    {
+        this.sqlKeywords = sqlKeywords;
+        return this;
+    }
+
+    // stringFunctions
+
+    public List<String> getStringFunctionsList()
+    {
+        return stringFunctions;
+    }
+
+    public ServerMeta setStringFunctionsList(List<String> stringFunctions)
+    {
+        this.stringFunctions = stringFunctions;
+        return this;
+    }
+
+    // subquerySupport
+
+    public List<SubQuerySupport> getSubquerySupportList()
+    {
+        return subquerySupport;
+    }
+
+    public ServerMeta setSubquerySupportList(List<SubQuerySupport> subquerySupport)
+    {
+        this.subquerySupport = subquerySupport;
+        return this;
+    }
+
+    // systemFunctions
+
+    public List<String> getSystemFunctionsList()
+    {
+        return systemFunctions;
+    }
+
+    public ServerMeta setSystemFunctionsList(List<String> systemFunctions)
+    {
+        this.systemFunctions = systemFunctions;
+        return this;
+    }
+
+    // tableTerm
+
+    public String getTableTerm()
+    {
+        return tableTerm;
+    }
+
+    public ServerMeta setTableTerm(String tableTerm)
+    {
+        this.tableTerm = tableTerm;
+        return this;
+    }
+
+    // transactionSupported
+
+    public Boolean getTransactionSupported()
+    {
+        return transactionSupported;
+    }
+
+    public ServerMeta setTransactionSupported(Boolean transactionSupported)
+    {
+        this.transactionSupported = transactionSupported;
+        return this;
+    }
+
+    // unionSupport
+
+    public List<UnionSupport> getUnionSupportList()
+    {
+        return unionSupport;
+    }
+
+    public ServerMeta setUnionSupportList(List<UnionSupport> unionSupport)
+    {
+        this.unionSupport = unionSupport;
+        return this;
+    }
+
+    // java serialization
+
+    public void readExternal(ObjectInput in) throws IOException
+    {
+        GraphIOUtil.mergeDelimitedFrom(in, this, this);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException
+    {
+        GraphIOUtil.writeDelimitedTo(out, this, this);
+    }
+
+    // message method
+
+    public Schema<ServerMeta> cachedSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    // schema methods
+
+    public ServerMeta newMessage()
+    {
+        return new ServerMeta();
+    }
+
+    public Class<ServerMeta> typeClass()
+    {
+        return ServerMeta.class;
+    }
+
+    public String messageName()
+    {
+        return ServerMeta.class.getSimpleName();
+    }
+
+    public String messageFullName()
+    {
+        return ServerMeta.class.getName();
+    }
+
+    public boolean isInitialized(ServerMeta message)
+    {
+        return true;
+    }
+
+    public void mergeFrom(Input input, ServerMeta message) throws IOException
+    {
+        for(int number = input.readFieldNumber(this);; number = input.readFieldNumber(this))
+        {
+            switch(number)
+            {
+                case 0:
+                    return;
+                case 1:
+                    message.allTablesSelectable = input.readBool();
+                    break;
+                case 2:
+                    message.blobIncludedInMaxRowSize = input.readBool();
+                    break;
+                case 3:
+                    message.catalogAtStart = input.readBool();
+                    break;
+                case 4:
+                    message.catalogSeparator = input.readString();
+                    break;
+                case 5:
+                    message.catalogTerm = input.readString();
+                    break;
+                case 6:
+                    if(message.collateSupport == null)
+                        message.collateSupport = new ArrayList<CollateSupport>();
+                    message.collateSupport.add(CollateSupport.valueOf(input.readEnum()));
+                    break;
+                case 7:
+                    message.columnAliasingSupported = input.readBool();
+                    break;
+                case 8:
+                    if(message.convertSupport == null)
+                        message.convertSupport = new ArrayList<ConvertSupport>();
+                    message.convertSupport.add(input.mergeObject(null, ConvertSupport.getSchema()));
+                    break;
+
+                case 9:
+                    message.correlationNamesSupport = CorrelationNamesSupport.valueOf(input.readEnum());
+                    break;
+                case 10:
+                    if(message.dateTimeFunctions == null)
+                        message.dateTimeFunctions = new ArrayList<String>();
+                    message.dateTimeFunctions.add(input.readString());
+                    break;
+                case 11:
+                    if(message.dateTimeLiteralsSupport == null)
+                        message.dateTimeLiteralsSupport = new ArrayList<DateTimeLiteralsSupport>();
+                    message.dateTimeLiteralsSupport.add(DateTimeLiteralsSupport.valueOf(input.readEnum()));
+                    break;
+                case 12:
+                    message.groupBySupport = GroupBySupport.valueOf(input.readEnum());
+                    break;
+                case 13:
+                    message.identifierCasing = IdentifierCasing.valueOf(input.readEnum());
+                    break;
+                case 14:
+                    message.identifierQuoteString = input.readString();
+                    break;
+                case 15:
+                    message.likeEscapeClauseSupported = input.readBool();
+                    break;
+                case 16:
+                    message.maxBinaryLiteralLength = input.readUInt32();
+                    break;
+                case 17:
+                    message.maxCatalogNameLength = input.readUInt32();
+                    break;
+                case 18:
+                    message.maxCharLiteralLength = input.readUInt32();
+                    break;
+                case 19:
+                    message.maxColumnNameLength = input.readUInt32();
+                    break;
+                case 20:
+                    message.maxColumnsInGroupBy = input.readUInt32();
+                    break;
+                case 21:
+                    message.maxColumnsInOrderBy = input.readUInt32();
+                    break;
+                case 22:
+                    message.maxColumnsInSelect = input.readUInt32();
+                    break;
+                case 23:
+                    message.maxCursorNameLength = input.readUInt32();
+                    break;
+                case 24:
+                    message.maxLogicalLobSize = input.readUInt32();
+                    break;
+                case 25:
+                    message.maxRowSize = input.readUInt32();
+                    break;
+                case 26:
+                    message.maxSchemaNameLength = input.readUInt32();
+                    break;
+                case 27:
+                    message.maxStatementLength = input.readUInt32();
+                    break;
+                case 28:
+                    message.maxStatements = input.readUInt32();
+                    break;
+                case 29:
+                    message.maxTableNameLength = input.readUInt32();
+                    break;
+                case 30:
+                    message.maxTablesInSelect = input.readUInt32();
+                    break;
+                case 31:
+                    message.maxUserNameLength = input.readUInt32();
+                    break;
+                case 32:
+                    message.nullCollation = NullCollation.valueOf(input.readEnum());
+                    break;
+                case 33:
+                    message.nullPlusNonNullEqualsNull = input.readBool();
+                    break;
+                case 34:
+                    if(message.numericFunctions == null)
+                        message.numericFunctions = new ArrayList<String>();
+                    message.numericFunctions.add(input.readString());
+                    break;
+                case 35:
+                    if(message.orderBySupport == null)
+                        message.orderBySupport = new ArrayList<OrderBySupport>();
+                    message.orderBySupport.add(OrderBySupport.valueOf(input.readEnum()));
+                    break;
+                case 36:
+                    if(message.outerJoinSupport == null)
+                        message.outerJoinSupport = new ArrayList<OuterJoinSupport>();
+                    message.outerJoinSupport.add(OuterJoinSupport.valueOf(input.readEnum()));
+                    break;
+                case 37:
+                    message.quotedIdentifierCasing = IdentifierCasing.valueOf(input.readEnum());
+                    break;
+                case 38:
+                    message.readOnly = input.readBool();
+                    break;
+                case 39:
+                    message.schemaTerm = input.readString();
+                    break;
+                case 40:
+                    message.searchEscapeString = input.readString();
+                    break;
+                case 41:
+                    message.selectForUpdateSupported = input.readBool();
+                    break;
+                case 42:
+                    message.specialCharacters = input.readString();
+                    break;
+                case 43:
+                    if(message.sqlKeywords == null)
+                        message.sqlKeywords = new ArrayList<String>();
+                    message.sqlKeywords.add(input.readString());
+                    break;
+                case 44:
+                    if(message.stringFunctions == null)
+                        message.stringFunctions = new ArrayList<String>();
+                    message.stringFunctions.add(input.readString());
+                    break;
+                case 45:
+                    if(message.subquerySupport == null)
+                        message.subquerySupport = new ArrayList<SubQuerySupport>();
+                    message.subquerySupport.add(SubQuerySupport.valueOf(input.readEnum()));
+                    break;
+                case 46:
+                    if(message.systemFunctions == null)
+                        message.systemFunctions = new ArrayList<String>();
+                    message.systemFunctions.add(input.readString());
+                    break;
+                case 47:
+                    message.tableTerm = input.readString();
+                    break;
+                case 48:
+                    message.transactionSupported = input.readBool();
+                    break;
+                case 49:
+                    if(message.unionSupport == null)
+                        message.unionSupport = new ArrayList<UnionSupport>();
+                    message.unionSupport.add(UnionSupport.valueOf(input.readEnum()));
+                    break;
+                default:
+                    input.handleUnknownField(number, this);
+            }   
+        }
+    }
+
+
+    public void writeTo(Output output, ServerMeta message) throws IOException
+    {
+        if(message.allTablesSelectable != null)
+            output.writeBool(1, message.allTablesSelectable, false);
+
+        if(message.blobIncludedInMaxRowSize != null)
+            output.writeBool(2, message.blobIncludedInMaxRowSize, false);
+
+        if(message.catalogAtStart != null)
+            output.writeBool(3, message.catalogAtStart, false);
+
+        if(message.catalogSeparator != null)
+            output.writeString(4, message.catalogSeparator, false);
+
+        if(message.catalogTerm != null)
+            output.writeString(5, message.catalogTerm, false);
+
+        if(message.collateSupport != null)
+        {
+            for(CollateSupport collateSupport : message.collateSupport)
+            {
+                if(collateSupport != null)
+                    output.writeEnum(6, collateSupport.number, true);
+            }
+        }
+
+        if(message.columnAliasingSupported != null)
+            output.writeBool(7, message.columnAliasingSupported, false);
+
+        if(message.convertSupport != null)
+        {
+            for(ConvertSupport convertSupport : message.convertSupport)
+            {
+                if(convertSupport != null)
+                    output.writeObject(8, convertSupport, ConvertSupport.getSchema(), true);
+            }
+        }
+
+
+        if(message.correlationNamesSupport != null)
+             output.writeEnum(9, message.correlationNamesSupport.number, false);
+
+        if(message.dateTimeFunctions != null)
+        {
+            for(String dateTimeFunctions : message.dateTimeFunctions)
+            {
+                if(dateTimeFunctions != null)
+                    output.writeString(10, dateTimeFunctions, true);
+            }
+        }
+
+        if(message.dateTimeLiteralsSupport != null)
+        {
+            for(DateTimeLiteralsSupport dateTimeLiteralsSupport : message.dateTimeLiteralsSupport)
+            {
+                if(dateTimeLiteralsSupport != null)
+                    output.writeEnum(11, dateTimeLiteralsSupport.number, true);
+            }
+        }
+
+        if(message.groupBySupport != null)
+             output.writeEnum(12, message.groupBySupport.number, false);
+
+        if(message.identifierCasing != null)
+             output.writeEnum(13, message.identifierCasing.number, false);
+
+        if(message.identifierQuoteString != null)
+            output.writeString(14, message.identifierQuoteString, false);
+
+        if(message.likeEscapeClauseSupported != null)
+            output.writeBool(15, message.likeEscapeClauseSupported, false);
+
+        if(message.maxBinaryLiteralLength != 0)
+            output.writeUInt32(16, message.maxBinaryLiteralLength, false);
+
+        if(message.maxCatalogNameLength != 0)
+            output.writeUInt32(17, message.maxCatalogNameLength, false);
+
+        if(message.maxCharLiteralLength != 0)
+            output.writeUInt32(18, message.maxCharLiteralLength, false);
+
+        if(message.maxColumnNameLength != 0)
+            output.writeUInt32(19, message.maxColumnNameLength, false);
+
+        if(message.maxColumnsInGroupBy != 0)
+            output.writeUInt32(20, message.maxColumnsInGroupBy, false);
+
+        if(message.maxColumnsInOrderBy != 0)
+            output.writeUInt32(21, message.maxColumnsInOrderBy, false);
+
+        if(message.maxColumnsInSelect != 0)
+            output.writeUInt32(22, message.maxColumnsInSelect, false);
+
+        if(message.maxCursorNameLength != 0)
+            output.writeUInt32(23, message.maxCursorNameLength, false);
+
+        if(message.maxLogicalLobSize != 0)
+            output.writeUInt32(24, message.maxLogicalLobSize, false);
+
+        if(message.maxRowSize != 0)
+            output.writeUInt32(25, message.maxRowSize, false);
+
+        if(message.maxSchemaNameLength != 0)
+            output.writeUInt32(26, message.maxSchemaNameLength, false);
+
+        if(message.maxStatementLength != 0)
+            output.writeUInt32(27, message.maxStatementLength, false);
+
+        if(message.maxStatements != 0)
+            output.writeUInt32(28, message.maxStatements, false);
+
+        if(message.maxTableNameLength != 0)
+            output.writeUInt32(29, message.maxTableNameLength, false);
+
+        if(message.maxTablesInSelect != 0)
+            output.writeUInt32(30, message.maxTablesInSelect, false);
+
+        if(message.maxUserNameLength != 0)
+            output.writeUInt32(31, message.maxUserNameLength, false);
+
+        if(message.nullCollation != null)
+             output.writeEnum(32, message.nullCollation.number, false);
+
+        if(message.nullPlusNonNullEqualsNull != null)
+            output.writeBool(33, message.nullPlusNonNullEqualsNull, false);
+
+        if(message.numericFunctions != null)
+        {
+            for(String numericFunctions : message.numericFunctions)
+            {
+                if(numericFunctions != null)
+                    output.writeString(34, numericFunctions, true);
+            }
+        }
+
+        if(message.orderBySupport != null)
+        {
+            for(OrderBySupport orderBySupport : message.orderBySupport)
+            {
+                if(orderBySupport != null)
+                    output.writeEnum(35, orderBySupport.number, true);
+            }
+        }
+
+        if(message.outerJoinSupport != null)
+        {
+            for(OuterJoinSupport outerJoinSupport : message.outerJoinSupport)
+            {
+                if(outerJoinSupport != null)
+                    output.writeEnum(36, outerJoinSupport.number, true);
+            }
+        }
+
+        if(message.quotedIdentifierCasing != null)
+             output.writeEnum(37, message.quotedIdentifierCasing.number, false);
+
+        if(message.readOnly != null)
+            output.writeBool(38, message.readOnly, false);
+
+        if(message.schemaTerm != null)
+            output.writeString(39, message.schemaTerm, false);
+
+        if(message.searchEscapeString != null)
+            output.writeString(40, message.searchEscapeString, false);
+
+        if(message.selectForUpdateSupported != null)
+            output.writeBool(41, message.selectForUpdateSupported, false);
+
+        if(message.specialCharacters != null)
+            output.writeString(42, message.specialCharacters, false);
+
+        if(message.sqlKeywords != null)
+        {
+            for(String sqlKeywords : message.sqlKeywords)
+            {
+                if(sqlKeywords != null)
+                    output.writeString(43, sqlKeywords, true);
+            }
+        }
+
+        if(message.stringFunctions != null)
+        {
+            for(String stringFunctions : message.stringFunctions)
+            {
+                if(stringFunctions != null)
+                    output.writeString(44, stringFunctions, true);
+            }
+        }
+
+        if(message.subquerySupport != null)
+        {
+            for(SubQuerySupport subquerySupport : message.subquerySupport)
+            {
+                if(subquerySupport != null)
+                    output.writeEnum(45, subquerySupport.number, true);
+            }
+        }
+
+        if(message.systemFunctions != null)
+        {
+            for(String systemFunctions : message.systemFunctions)
+            {
+                if(systemFunctions != null)
+                    output.writeString(46, systemFunctions, true);
+            }
+        }
+
+        if(message.tableTerm != null)
+            output.writeString(47, message.tableTerm, false);
+
+        if(message.transactionSupported != null)
+            output.writeBool(48, message.transactionSupported, false);
+
+        if(message.unionSupport != null)
+        {
+            for(UnionSupport unionSupport : message.unionSupport)
+            {
+                if(unionSupport != null)
+                    output.writeEnum(49, unionSupport.number, true);
+            }
+        }
+    }
+
+    public String getFieldName(int number)
+    {
+        switch(number)
+        {
+            case 1: return "allTablesSelectable";
+            case 2: return "blobIncludedInMaxRowSize";
+            case 3: return "catalogAtStart";
+            case 4: return "catalogSeparator";
+            case 5: return "catalogTerm";
+            case 6: return "collateSupport";
+            case 7: return "columnAliasingSupported";
+            case 8: return "convertSupport";
+            case 9: return "correlationNamesSupport";
+            case 10: return "dateTimeFunctions";
+            case 11: return "dateTimeLiteralsSupport";
+            case 12: return "groupBySupport";
+            case 13: return "identifierCasing";
+            case 14: return "identifierQuoteString";
+            case 15: return "likeEscapeClauseSupported";
+            case 16: return "maxBinaryLiteralLength";
+            case 17: return "maxCatalogNameLength";
+            case 18: return "maxCharLiteralLength";
+            case 19: return "maxColumnNameLength";
+            case 20: return "maxColumnsInGroupBy";
+            case 21: return "maxColumnsInOrderBy";
+            case 22: return "maxColumnsInSelect";
+            case 23: return "maxCursorNameLength";
+            case 24: return "maxLogicalLobSize";
+            case 25: return "maxRowSize";
+            case 26: return "maxSchemaNameLength";
+            case 27: return "maxStatementLength";
+            case 28: return "maxStatements";
+            case 29: return "maxTableNameLength";
+            case 30: return "maxTablesInSelect";
+            case 31: return "maxUserNameLength";
+            case 32: return "nullCollation";
+            case 33: return "nullPlusNonNullEqualsNull";
+            case 34: return "numericFunctions";
+            case 35: return "orderBySupport";
+            case 36: return "outerJoinSupport";
+            case 37: return "quotedIdentifierCasing";
+            case 38: return "readOnly";
+            case 39: return "schemaTerm";
+            case 40: return "searchEscapeString";
+            case 41: return "selectForUpdateSupported";
+            case 42: return "specialCharacters";
+            case 43: return "sqlKeywords";
+            case 44: return "stringFunctions";
+            case 45: return "subquerySupport";
+            case 46: return "systemFunctions";
+            case 47: return "tableTerm";
+            case 48: return "transactionSupported";
+            case 49: return "unionSupport";
+            default: return null;
+        }
+    }
+
+    public int getFieldNumber(String name)
+    {
+        final Integer number = __fieldMap.get(name);
+        return number == null ? 0 : number.intValue();
+    }
+
+    private static final java.util.HashMap<String,Integer> __fieldMap = new java.util.HashMap<String,Integer>();
+    static
+    {
+        __fieldMap.put("allTablesSelectable", 1);
+        __fieldMap.put("blobIncludedInMaxRowSize", 2);
+        __fieldMap.put("catalogAtStart", 3);
+        __fieldMap.put("catalogSeparator", 4);
+        __fieldMap.put("catalogTerm", 5);
+        __fieldMap.put("collateSupport", 6);
+        __fieldMap.put("columnAliasingSupported", 7);
+        __fieldMap.put("convertSupport", 8);
+        __fieldMap.put("correlationNamesSupport", 9);
+        __fieldMap.put("dateTimeFunctions", 10);
+        __fieldMap.put("dateTimeLiteralsSupport", 11);
+        __fieldMap.put("groupBySupport", 12);
+        __fieldMap.put("identifierCasing", 13);
+        __fieldMap.put("identifierQuoteString", 14);
+        __fieldMap.put("likeEscapeClauseSupported", 15);
+        __fieldMap.put("maxBinaryLiteralLength", 16);
+        __fieldMap.put("maxCatalogNameLength", 17);
+        __fieldMap.put("maxCharLiteralLength", 18);
+        __fieldMap.put("maxColumnNameLength", 19);
+        __fieldMap.put("maxColumnsInGroupBy", 20);
+        __fieldMap.put("maxColumnsInOrderBy", 21);
+        __fieldMap.put("maxColumnsInSelect", 22);
+        __fieldMap.put("maxCursorNameLength", 23);
+        __fieldMap.put("maxLogicalLobSize", 24);
+        __fieldMap.put("maxRowSize", 25);
+        __fieldMap.put("maxSchemaNameLength", 26);
+        __fieldMap.put("maxStatementLength", 27);
+        __fieldMap.put("maxStatements", 28);
+        __fieldMap.put("maxTableNameLength", 29);
+        __fieldMap.put("maxTablesInSelect", 30);
+        __fieldMap.put("maxUserNameLength", 31);
+        __fieldMap.put("nullCollation", 32);
+        __fieldMap.put("nullPlusNonNullEqualsNull", 33);
+        __fieldMap.put("numericFunctions", 34);
+        __fieldMap.put("orderBySupport", 35);
+        __fieldMap.put("outerJoinSupport", 36);
+        __fieldMap.put("quotedIdentifierCasing", 37);
+        __fieldMap.put("readOnly", 38);
+        __fieldMap.put("schemaTerm", 39);
+        __fieldMap.put("searchEscapeString", 40);
+        __fieldMap.put("selectForUpdateSupported", 41);
+        __fieldMap.put("specialCharacters", 42);
+        __fieldMap.put("sqlKeywords", 43);
+        __fieldMap.put("stringFunctions", 44);
+        __fieldMap.put("subquerySupport", 45);
+        __fieldMap.put("systemFunctions", 46);
+        __fieldMap.put("tableTerm", 47);
+        __fieldMap.put("transactionSupported", 48);
+        __fieldMap.put("unionSupport", 49);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/SubQuerySupport.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/SubQuerySupport.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/SubQuerySupport.java
new file mode 100644
index 0000000..28d6ff5
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/SubQuerySupport.java
@@ -0,0 +1,57 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum SubQuerySupport implements com.dyuproject.protostuff.EnumLite<SubQuerySupport>
+{
+    SQ_UNKNOWN(0),
+    SQ_CORRELATED(1),
+    SQ_IN_COMPARISON(2),
+    SQ_IN_EXISTS(3),
+    SQ_IN_INSERT(4),
+    SQ_IN_QUANTIFIED(5);
+    
+    public final int number;
+    
+    private SubQuerySupport (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static SubQuerySupport valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 0: return SQ_UNKNOWN;
+            case 1: return SQ_CORRELATED;
+            case 2: return SQ_IN_COMPARISON;
+            case 3: return SQ_IN_EXISTS;
+            case 4: return SQ_IN_INSERT;
+            case 5: return SQ_IN_QUANTIFIED;
+            default: return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/beans/UnionSupport.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/UnionSupport.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/UnionSupport.java
new file mode 100644
index 0000000..aaeec0d
--- /dev/null
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/UnionSupport.java
@@ -0,0 +1,51 @@
+/**
+ * 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 http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+public enum UnionSupport implements com.dyuproject.protostuff.EnumLite<UnionSupport>
+{
+    U_UNKNOWN(0),
+    U_UNION(1),
+    U_UNION_ALL(2);
+    
+    public final int number;
+    
+    private UnionSupport (int number)
+    {
+        this.number = number;
+    }
+    
+    public int getNumber()
+    {
+        return number;
+    }
+    
+    public static UnionSupport valueOf(int number)
+    {
+        switch(number) 
+        {
+            case 0: return U_UNKNOWN;
+            case 1: return U_UNION;
+            case 2: return U_UNION_ALL;
+            default: return null;
+        }
+    }
+}