drill-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j..@apache.org
Subject [13/27] drill git commit: DRILL-5301: Server metadata API
Date Thu, 02 Mar 2017 20:59:40 GMT
http://git-wip-us.apache.org/repos/asf/drill/blob/d2e0f415/protocol/src/main/java/org/apache/drill/exec/proto/UserProtos.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/UserProtos.java b/protocol/src/main/java/org/apache/drill/exec/proto/UserProtos.java
index daa3903..aa12f96 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/UserProtos.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/UserProtos.java
@@ -123,17 +123,25 @@ public final class UserProtos {
      */
     CREATE_PREPARED_STATEMENT(12, 22),
     /**
+     * <code>GET_SERVER_META = 8;</code>
+     *
+     * <pre>
+     * user is sending a request to receive server metadata
+     * </pre>
+     */
+    GET_SERVER_META(13, 8),
+    /**
      * <code>QUERY_DATA = 6;</code>
      *
      * <pre>
      * bit to user
      * </pre>
      */
-    QUERY_DATA(13, 6),
+    QUERY_DATA(14, 6),
     /**
      * <code>QUERY_HANDLE = 7;</code>
      */
-    QUERY_HANDLE(14, 7),
+    QUERY_HANDLE(15, 7),
     /**
      * <code>QUERY_PLAN_FRAGMENTS = 13;</code>
      *
@@ -141,7 +149,7 @@ public final class UserProtos {
      * return plan fragments
      * </pre>
      */
-    QUERY_PLAN_FRAGMENTS(15, 13),
+    QUERY_PLAN_FRAGMENTS(16, 13),
     /**
      * <code>CATALOGS = 18;</code>
      *
@@ -149,7 +157,7 @@ public final class UserProtos {
      * return catalogs metadata in response to GET_CATALOGS
      * </pre>
      */
-    CATALOGS(16, 18),
+    CATALOGS(17, 18),
     /**
      * <code>SCHEMAS = 19;</code>
      *
@@ -157,7 +165,7 @@ public final class UserProtos {
      * return schema metadata in response to GET_SCHEMAS
      * </pre>
      */
-    SCHEMAS(17, 19),
+    SCHEMAS(18, 19),
     /**
      * <code>TABLES = 20;</code>
      *
@@ -165,7 +173,7 @@ public final class UserProtos {
      * return table metadata in response to GET_TABLES
      * </pre>
      */
-    TABLES(18, 20),
+    TABLES(19, 20),
     /**
      * <code>COLUMNS = 21;</code>
      *
@@ -173,7 +181,7 @@ public final class UserProtos {
      * return column metadata in response to GET_COLUMNS
      * </pre>
      */
-    COLUMNS(19, 21),
+    COLUMNS(20, 21),
     /**
      * <code>PREPARED_STATEMENT = 23;</code>
      *
@@ -181,15 +189,15 @@ public final class UserProtos {
      * return preparated statement in response to CREATE_PREPARED_STATEMENT
      * </pre>
      */
-    PREPARED_STATEMENT(20, 23),
-    /**
-     * <code>REQ_META_FUNCTIONS = 8;</code>
-     */
-    REQ_META_FUNCTIONS(21, 8),
+    PREPARED_STATEMENT(21, 23),
     /**
-     * <code>RESP_FUNCTION_LIST = 9;</code>
+     * <code>SERVER_META = 9;</code>
+     *
+     * <pre>
+     * return server infos in respose to GET_SERVER_META
+     * </pre>
      */
-    RESP_FUNCTION_LIST(22, 9),
+    SERVER_META(22, 9),
     /**
      * <code>QUERY_RESULT = 10;</code>
      *
@@ -297,6 +305,14 @@ public final class UserProtos {
      */
     public static final int CREATE_PREPARED_STATEMENT_VALUE = 22;
     /**
+     * <code>GET_SERVER_META = 8;</code>
+     *
+     * <pre>
+     * user is sending a request to receive server metadata
+     * </pre>
+     */
+    public static final int GET_SERVER_META_VALUE = 8;
+    /**
      * <code>QUERY_DATA = 6;</code>
      *
      * <pre>
@@ -357,13 +373,13 @@ public final class UserProtos {
      */
     public static final int PREPARED_STATEMENT_VALUE = 23;
     /**
-     * <code>REQ_META_FUNCTIONS = 8;</code>
-     */
-    public static final int REQ_META_FUNCTIONS_VALUE = 8;
-    /**
-     * <code>RESP_FUNCTION_LIST = 9;</code>
+     * <code>SERVER_META = 9;</code>
+     *
+     * <pre>
+     * return server infos in respose to GET_SERVER_META
+     * </pre>
      */
-    public static final int RESP_FUNCTION_LIST_VALUE = 9;
+    public static final int SERVER_META_VALUE = 9;
     /**
      * <code>QUERY_RESULT = 10;</code>
      *
@@ -399,6 +415,7 @@ public final class UserProtos {
         case 16: return GET_TABLES;
         case 17: return GET_COLUMNS;
         case 22: return CREATE_PREPARED_STATEMENT;
+        case 8: return GET_SERVER_META;
         case 6: return QUERY_DATA;
         case 7: return QUERY_HANDLE;
         case 13: return QUERY_PLAN_FRAGMENTS;
@@ -407,8 +424,7 @@ public final class UserProtos {
         case 20: return TABLES;
         case 21: return COLUMNS;
         case 23: return PREPARED_STATEMENT;
-        case 8: return REQ_META_FUNCTIONS;
-        case 9: return RESP_FUNCTION_LIST;
+        case 9: return SERVER_META;
         case 10: return QUERY_RESULT;
         case 24: return SASL_MESSAGE;
         default: return null;
@@ -1131,1853 +1147,1758 @@ public final class UserProtos {
     // @@protoc_insertion_point(enum_scope:exec.user.ColumnUpdatability)
   }
 
-  public interface PropertyOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // required string key = 1;
-    /**
-     * <code>required string key = 1;</code>
-     */
-    boolean hasKey();
+  /**
+   * Protobuf enum {@code exec.user.CollateSupport}
+   */
+  public enum CollateSupport
+      implements com.google.protobuf.ProtocolMessageEnum {
     /**
-     * <code>required string key = 1;</code>
+     * <code>CS_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
      */
-    java.lang.String getKey();
+    CS_UNKNOWN(0, 0),
     /**
-     * <code>required string key = 1;</code>
+     * <code>CS_GROUP_BY = 1;</code>
+     *
+     * <pre>
+     * COLLATE clause can be added after each grouping column
+     * </pre>
      */
-    com.google.protobuf.ByteString
-        getKeyBytes();
+    CS_GROUP_BY(1, 1),
+    ;
 
-    // required string value = 2;
-    /**
-     * <code>required string value = 2;</code>
-     */
-    boolean hasValue();
     /**
-     * <code>required string value = 2;</code>
+     * <code>CS_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
      */
-    java.lang.String getValue();
+    public static final int CS_UNKNOWN_VALUE = 0;
     /**
-     * <code>required string value = 2;</code>
+     * <code>CS_GROUP_BY = 1;</code>
+     *
+     * <pre>
+     * COLLATE clause can be added after each grouping column
+     * </pre>
      */
-    com.google.protobuf.ByteString
-        getValueBytes();
-  }
-  /**
-   * Protobuf type {@code exec.user.Property}
-   */
-  public static final class Property extends
-      com.google.protobuf.GeneratedMessage
-      implements PropertyOrBuilder {
-    // Use Property.newBuilder() to construct.
-    private Property(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private Property(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+    public static final int CS_GROUP_BY_VALUE = 1;
 
-    private static final Property defaultInstance;
-    public static Property getDefaultInstance() {
-      return defaultInstance;
-    }
 
-    public Property getDefaultInstanceForType() {
-      return defaultInstance;
+    public final int getNumber() { return value; }
+
+    public static CollateSupport valueOf(int value) {
+      switch (value) {
+        case 0: return CS_UNKNOWN;
+        case 1: return CS_GROUP_BY;
+        default: return null;
+      }
     }
 
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
+    public static com.google.protobuf.Internal.EnumLiteMap<CollateSupport>
+        internalGetValueMap() {
+      return internalValueMap;
     }
-    private Property(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              bitField0_ |= 0x00000001;
-              key_ = input.readBytes();
-              break;
-            }
-            case 18: {
-              bitField0_ |= 0x00000002;
-              value_ = input.readBytes();
-              break;
+    private static com.google.protobuf.Internal.EnumLiteMap<CollateSupport>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<CollateSupport>() {
+            public CollateSupport findValueByNumber(int number) {
+              return CollateSupport.valueOf(number);
             }
-          }
-        }
-      } 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 {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
     }
-    public static final com.google.protobuf.Descriptors.Descriptor
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
         getDescriptor() {
-      return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_Property_descriptor;
+      return org.apache.drill.exec.proto.UserProtos.getDescriptor().getEnumTypes().get(7);
     }
 
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_Property_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.apache.drill.exec.proto.UserProtos.Property.class, org.apache.drill.exec.proto.UserProtos.Property.Builder.class);
-    }
+    private static final CollateSupport[] VALUES = values();
 
-    public static com.google.protobuf.Parser<Property> PARSER =
-        new com.google.protobuf.AbstractParser<Property>() {
-      public Property parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Property(input, extensionRegistry);
+    public static CollateSupport valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
       }
-    };
+      return VALUES[desc.getIndex()];
+    }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Property> getParserForType() {
-      return PARSER;
+    private final int index;
+    private final int value;
+
+    private CollateSupport(int index, int value) {
+      this.index = index;
+      this.value = value;
     }
 
-    private int bitField0_;
-    // required string key = 1;
-    public static final int KEY_FIELD_NUMBER = 1;
-    private java.lang.Object key_;
+    // @@protoc_insertion_point(enum_scope:exec.user.CollateSupport)
+  }
+
+  /**
+   * Protobuf enum {@code exec.user.CorrelationNamesSupport}
+   */
+  public enum CorrelationNamesSupport
+      implements com.google.protobuf.ProtocolMessageEnum {
     /**
-     * <code>required string key = 1;</code>
+     * <code>CN_NONE = 1;</code>
+     *
+     * <pre>
+     * Correlation names are not supported
+     * </pre>
      */
-    public boolean hasKey() {
-      return ((bitField0_ & 0x00000001) == 0x00000001);
-    }
+    CN_NONE(0, 1),
     /**
-     * <code>required string key = 1;</code>
+     * <code>CN_DIFFERENT_NAMES = 2;</code>
+     *
+     * <pre>
+     * Correlation names are supported, but names have to
+     * </pre>
      */
-    public java.lang.String getKey() {
-      java.lang.Object ref = key_;
-      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()) {
-          key_ = s;
-        }
-        return s;
-      }
-    }
+    CN_DIFFERENT_NAMES(1, 2),
     /**
-     * <code>required string key = 1;</code>
+     * <code>CN_ANY = 3;</code>
+     *
+     * <pre>
+     * be different from the tables they represent
+     * </pre>
      */
-    public com.google.protobuf.ByteString
-        getKeyBytes() {
-      java.lang.Object ref = key_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        key_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+    CN_ANY(2, 3),
+    ;
 
-    // required string value = 2;
-    public static final int VALUE_FIELD_NUMBER = 2;
-    private java.lang.Object value_;
     /**
-     * <code>required string value = 2;</code>
+     * <code>CN_NONE = 1;</code>
+     *
+     * <pre>
+     * Correlation names are not supported
+     * </pre>
      */
-    public boolean hasValue() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
+    public static final int CN_NONE_VALUE = 1;
     /**
-     * <code>required string value = 2;</code>
+     * <code>CN_DIFFERENT_NAMES = 2;</code>
+     *
+     * <pre>
+     * Correlation names are supported, but names have to
+     * </pre>
      */
-    public java.lang.String getValue() {
-      java.lang.Object ref = value_;
-      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()) {
-          value_ = s;
-        }
-        return s;
-      }
-    }
+    public static final int CN_DIFFERENT_NAMES_VALUE = 2;
     /**
-     * <code>required string value = 2;</code>
+     * <code>CN_ANY = 3;</code>
+     *
+     * <pre>
+     * be different from the tables they represent
+     * </pre>
      */
-    public com.google.protobuf.ByteString
-        getValueBytes() {
-      java.lang.Object ref = value_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        value_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
+    public static final int CN_ANY_VALUE = 3;
+
+
+    public final int getNumber() { return value; }
+
+    public static CorrelationNamesSupport valueOf(int value) {
+      switch (value) {
+        case 1: return CN_NONE;
+        case 2: return CN_DIFFERENT_NAMES;
+        case 3: return CN_ANY;
+        default: return null;
       }
     }
 
-    private void initFields() {
-      key_ = "";
-      value_ = "";
+    public static com.google.protobuf.Internal.EnumLiteMap<CorrelationNamesSupport>
+        internalGetValueMap() {
+      return internalValueMap;
     }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+    private static com.google.protobuf.Internal.EnumLiteMap<CorrelationNamesSupport>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<CorrelationNamesSupport>() {
+            public CorrelationNamesSupport findValueByNumber(int number) {
+              return CorrelationNamesSupport.valueOf(number);
+            }
+          };
 
-      if (!hasKey()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasValue()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      memoizedIsInitialized = 1;
-      return true;
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
     }
-
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getValueBytes());
-      }
-      getUnknownFields().writeTo(output);
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.drill.exec.proto.UserProtos.getDescriptor().getEnumTypes().get(8);
     }
 
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
+    private static final CorrelationNamesSupport[] VALUES = values();
 
-      size = 0;
-      if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getKeyBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getValueBytes());
+    public static CorrelationNamesSupport valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
       }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
-      return size;
+      return VALUES[desc.getIndex()];
     }
 
-    private static final long serialVersionUID = 0L;
-    @java.lang.Override
-    protected java.lang.Object writeReplace()
-        throws java.io.ObjectStreamException {
-      return super.writeReplace();
-    }
+    private final int index;
+    private final int value;
 
-    public static org.apache.drill.exec.proto.UserProtos.Property parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.Property 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.drill.exec.proto.UserProtos.Property parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.Property parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.Property parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.Property parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.Property parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.Property parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.Property parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.Property parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+    private CorrelationNamesSupport(int index, int value) {
+      this.index = index;
+      this.value = value;
     }
 
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(org.apache.drill.exec.proto.UserProtos.Property prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    public Builder toBuilder() { return newBuilder(this); }
+    // @@protoc_insertion_point(enum_scope:exec.user.CorrelationNamesSupport)
+  }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
+  /**
+   * Protobuf enum {@code exec.user.DateTimeLiteralsSupport}
+   */
+  public enum DateTimeLiteralsSupport
+      implements com.google.protobuf.ProtocolMessageEnum {
     /**
-     * Protobuf type {@code exec.user.Property}
+     * <code>DL_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_Property_descriptor;
-      }
+    DL_UNKNOWN(0, 0),
+    /**
+     * <code>DL_DATE = 1;</code>
+     *
+     * <pre>
+     * DATE literal is supported
+     * </pre>
+     */
+    DL_DATE(1, 1),
+    /**
+     * <code>DL_TIME = 2;</code>
+     *
+     * <pre>
+     * TIME literal is supported
+     * </pre>
+     */
+    DL_TIME(2, 2),
+    /**
+     * <code>DL_TIMESTAMP = 3;</code>
+     *
+     * <pre>
+     * TIMESTAMP literal is supported
+     * </pre>
+     */
+    DL_TIMESTAMP(3, 3),
+    /**
+     * <code>DL_INTERVAL_YEAR = 4;</code>
+     *
+     * <pre>
+     * INTERVAL YEAR literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_YEAR(4, 4),
+    /**
+     * <code>DL_INTERVAL_MONTH = 5;</code>
+     *
+     * <pre>
+     * INTERVAL MONTH literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_MONTH(5, 5),
+    /**
+     * <code>DL_INTERVAL_DAY = 6;</code>
+     *
+     * <pre>
+     * INTERVAL DAY literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_DAY(6, 6),
+    /**
+     * <code>DL_INTERVAL_HOUR = 7;</code>
+     *
+     * <pre>
+     * INTERVAL HOUR literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_HOUR(7, 7),
+    /**
+     * <code>DL_INTERVAL_MINUTE = 8;</code>
+     *
+     * <pre>
+     * INTERVAL MINUTE literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_MINUTE(8, 8),
+    /**
+     * <code>DL_INTERVAL_SECOND = 9;</code>
+     *
+     * <pre>
+     * INTERVAL SECOND literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_SECOND(9, 9),
+    /**
+     * <code>DL_INTERVAL_YEAR_TO_MONTH = 10;</code>
+     *
+     * <pre>
+     * INTERVAL YEAR TO MONTH literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_YEAR_TO_MONTH(10, 10),
+    /**
+     * <code>DL_INTERVAL_DAY_TO_HOUR = 11;</code>
+     *
+     * <pre>
+     * INTERVAL DAY TO HOUR literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_DAY_TO_HOUR(11, 11),
+    /**
+     * <code>DL_INTERVAL_DAY_TO_MINUTE = 12;</code>
+     *
+     * <pre>
+     * INTERVAL DAY TO MINUTE literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_DAY_TO_MINUTE(12, 12),
+    /**
+     * <code>DL_INTERVAL_DAY_TO_SECOND = 13;</code>
+     *
+     * <pre>
+     * INTERVAL DAY TO SECOND literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_DAY_TO_SECOND(13, 13),
+    /**
+     * <code>DL_INTERVAL_HOUR_TO_MINUTE = 14;</code>
+     *
+     * <pre>
+     * INTERVAL HOUR TO MINUTE literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_HOUR_TO_MINUTE(14, 14),
+    /**
+     * <code>DL_INTERVAL_HOUR_TO_SECOND = 15;</code>
+     *
+     * <pre>
+     * INTERVAL HOUR TO SECOND literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_HOUR_TO_SECOND(15, 15),
+    /**
+     * <code>DL_INTERVAL_MINUTE_TO_SECOND = 16;</code>
+     *
+     * <pre>
+     * INTERVAL MINUTE TO SECOND literal is supported
+     * </pre>
+     */
+    DL_INTERVAL_MINUTE_TO_SECOND(16, 16),
+    ;
 
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_Property_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.apache.drill.exec.proto.UserProtos.Property.class, org.apache.drill.exec.proto.UserProtos.Property.Builder.class);
-      }
+    /**
+     * <code>DL_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
+     */
+    public static final int DL_UNKNOWN_VALUE = 0;
+    /**
+     * <code>DL_DATE = 1;</code>
+     *
+     * <pre>
+     * DATE literal is supported
+     * </pre>
+     */
+    public static final int DL_DATE_VALUE = 1;
+    /**
+     * <code>DL_TIME = 2;</code>
+     *
+     * <pre>
+     * TIME literal is supported
+     * </pre>
+     */
+    public static final int DL_TIME_VALUE = 2;
+    /**
+     * <code>DL_TIMESTAMP = 3;</code>
+     *
+     * <pre>
+     * TIMESTAMP literal is supported
+     * </pre>
+     */
+    public static final int DL_TIMESTAMP_VALUE = 3;
+    /**
+     * <code>DL_INTERVAL_YEAR = 4;</code>
+     *
+     * <pre>
+     * INTERVAL YEAR literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_YEAR_VALUE = 4;
+    /**
+     * <code>DL_INTERVAL_MONTH = 5;</code>
+     *
+     * <pre>
+     * INTERVAL MONTH literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_MONTH_VALUE = 5;
+    /**
+     * <code>DL_INTERVAL_DAY = 6;</code>
+     *
+     * <pre>
+     * INTERVAL DAY literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_DAY_VALUE = 6;
+    /**
+     * <code>DL_INTERVAL_HOUR = 7;</code>
+     *
+     * <pre>
+     * INTERVAL HOUR literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_HOUR_VALUE = 7;
+    /**
+     * <code>DL_INTERVAL_MINUTE = 8;</code>
+     *
+     * <pre>
+     * INTERVAL MINUTE literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_MINUTE_VALUE = 8;
+    /**
+     * <code>DL_INTERVAL_SECOND = 9;</code>
+     *
+     * <pre>
+     * INTERVAL SECOND literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_SECOND_VALUE = 9;
+    /**
+     * <code>DL_INTERVAL_YEAR_TO_MONTH = 10;</code>
+     *
+     * <pre>
+     * INTERVAL YEAR TO MONTH literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_YEAR_TO_MONTH_VALUE = 10;
+    /**
+     * <code>DL_INTERVAL_DAY_TO_HOUR = 11;</code>
+     *
+     * <pre>
+     * INTERVAL DAY TO HOUR literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_DAY_TO_HOUR_VALUE = 11;
+    /**
+     * <code>DL_INTERVAL_DAY_TO_MINUTE = 12;</code>
+     *
+     * <pre>
+     * INTERVAL DAY TO MINUTE literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_DAY_TO_MINUTE_VALUE = 12;
+    /**
+     * <code>DL_INTERVAL_DAY_TO_SECOND = 13;</code>
+     *
+     * <pre>
+     * INTERVAL DAY TO SECOND literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_DAY_TO_SECOND_VALUE = 13;
+    /**
+     * <code>DL_INTERVAL_HOUR_TO_MINUTE = 14;</code>
+     *
+     * <pre>
+     * INTERVAL HOUR TO MINUTE literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_HOUR_TO_MINUTE_VALUE = 14;
+    /**
+     * <code>DL_INTERVAL_HOUR_TO_SECOND = 15;</code>
+     *
+     * <pre>
+     * INTERVAL HOUR TO SECOND literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_HOUR_TO_SECOND_VALUE = 15;
+    /**
+     * <code>DL_INTERVAL_MINUTE_TO_SECOND = 16;</code>
+     *
+     * <pre>
+     * INTERVAL MINUTE TO SECOND literal is supported
+     * </pre>
+     */
+    public static final int DL_INTERVAL_MINUTE_TO_SECOND_VALUE = 16;
 
-      // Construct using org.apache.drill.exec.proto.UserProtos.Property.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
 
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
+    public final int getNumber() { return value; }
 
-      public Builder clear() {
-        super.clear();
-        key_ = "";
-        bitField0_ = (bitField0_ & ~0x00000001);
-        value_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        return this;
+    public static DateTimeLiteralsSupport valueOf(int value) {
+      switch (value) {
+        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;
       }
+    }
 
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
-      }
+    public static com.google.protobuf.Internal.EnumLiteMap<DateTimeLiteralsSupport>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<DateTimeLiteralsSupport>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<DateTimeLiteralsSupport>() {
+            public DateTimeLiteralsSupport findValueByNumber(int number) {
+              return DateTimeLiteralsSupport.valueOf(number);
+            }
+          };
 
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_Property_descriptor;
-      }
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.drill.exec.proto.UserProtos.getDescriptor().getEnumTypes().get(9);
+    }
 
-      public org.apache.drill.exec.proto.UserProtos.Property getDefaultInstanceForType() {
-        return org.apache.drill.exec.proto.UserProtos.Property.getDefaultInstance();
-      }
+    private static final DateTimeLiteralsSupport[] VALUES = values();
 
-      public org.apache.drill.exec.proto.UserProtos.Property build() {
-        org.apache.drill.exec.proto.UserProtos.Property result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
+    public static DateTimeLiteralsSupport valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
       }
+      return VALUES[desc.getIndex()];
+    }
 
-      public org.apache.drill.exec.proto.UserProtos.Property buildPartial() {
-        org.apache.drill.exec.proto.UserProtos.Property result = new org.apache.drill.exec.proto.UserProtos.Property(this);
-        int from_bitField0_ = bitField0_;
-        int to_bitField0_ = 0;
-        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
-          to_bitField0_ |= 0x00000001;
-        }
-        result.key_ = key_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.value_ = value_;
-        result.bitField0_ = to_bitField0_;
-        onBuilt();
-        return result;
-      }
+    private final int index;
+    private final int value;
 
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.apache.drill.exec.proto.UserProtos.Property) {
-          return mergeFrom((org.apache.drill.exec.proto.UserProtos.Property)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
+    private DateTimeLiteralsSupport(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
 
-      public Builder mergeFrom(org.apache.drill.exec.proto.UserProtos.Property other) {
-        if (other == org.apache.drill.exec.proto.UserProtos.Property.getDefaultInstance()) return this;
-        if (other.hasKey()) {
-          bitField0_ |= 0x00000001;
-          key_ = other.key_;
-          onChanged();
-        }
-        if (other.hasValue()) {
-          bitField0_ |= 0x00000002;
-          value_ = other.value_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
+    // @@protoc_insertion_point(enum_scope:exec.user.DateTimeLiteralsSupport)
+  }
 
-      public final boolean isInitialized() {
-        if (!hasKey()) {
-          
-          return false;
-        }
-        if (!hasValue()) {
-          
-          return false;
-        }
-        return true;
-      }
+  /**
+   * Protobuf enum {@code exec.user.GroupBySupport}
+   */
+  public enum GroupBySupport
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>GB_NONE = 1;</code>
+     *
+     * <pre>
+     * Group by is not supported
+     * </pre>
+     */
+    GB_NONE(0, 1),
+    /**
+     * <code>GB_SELECT_ONLY = 2;</code>
+     *
+     * <pre>
+     * Group by supported with non aggregated columns in select
+     * </pre>
+     */
+    GB_SELECT_ONLY(1, 2),
+    /**
+     * <code>GB_BEYOND_SELECT = 3;</code>
+     *
+     * <pre>
+     * Group by supported with columns absent from the select list
+     *if all the non-aggregated colums from the select list are also added 
+     * </pre>
+     */
+    GB_BEYOND_SELECT(2, 3),
+    /**
+     * <code>GB_UNRELATED = 4;</code>
+     *
+     * <pre>
+     * Group by supported with columns absent from the select list
+     * </pre>
+     */
+    GB_UNRELATED(3, 4),
+    ;
 
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        org.apache.drill.exec.proto.UserProtos.Property parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.apache.drill.exec.proto.UserProtos.Property) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
+    /**
+     * <code>GB_NONE = 1;</code>
+     *
+     * <pre>
+     * Group by is not supported
+     * </pre>
+     */
+    public static final int GB_NONE_VALUE = 1;
+    /**
+     * <code>GB_SELECT_ONLY = 2;</code>
+     *
+     * <pre>
+     * Group by supported with non aggregated columns in select
+     * </pre>
+     */
+    public static final int GB_SELECT_ONLY_VALUE = 2;
+    /**
+     * <code>GB_BEYOND_SELECT = 3;</code>
+     *
+     * <pre>
+     * Group by supported with columns absent from the select list
+     *if all the non-aggregated colums from the select list are also added 
+     * </pre>
+     */
+    public static final int GB_BEYOND_SELECT_VALUE = 3;
+    /**
+     * <code>GB_UNRELATED = 4;</code>
+     *
+     * <pre>
+     * Group by supported with columns absent from the select list
+     * </pre>
+     */
+    public static final int GB_UNRELATED_VALUE = 4;
 
-      // required string key = 1;
-      private java.lang.Object key_ = "";
-      /**
-       * <code>required string key = 1;</code>
-       */
-      public boolean hasKey() {
-        return ((bitField0_ & 0x00000001) == 0x00000001);
-      }
-      /**
-       * <code>required string key = 1;</code>
-       */
-      public java.lang.String getKey() {
-        java.lang.Object ref = key_;
-        if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          key_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>required string key = 1;</code>
-       */
-      public com.google.protobuf.ByteString
-          getKeyBytes() {
-        java.lang.Object ref = key_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          key_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>required string key = 1;</code>
-       */
-      public Builder setKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        key_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string key = 1;</code>
-       */
-      public Builder clearKey() {
-        bitField0_ = (bitField0_ & ~0x00000001);
-        key_ = getDefaultInstance().getKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string key = 1;</code>
-       */
-      public Builder setKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        key_ = value;
-        onChanged();
-        return this;
-      }
 
-      // required string value = 2;
-      private java.lang.Object value_ = "";
-      /**
-       * <code>required string value = 2;</code>
-       */
-      public boolean hasValue() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>required string value = 2;</code>
-       */
-      public java.lang.String getValue() {
-        java.lang.Object ref = value_;
-        if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          value_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>required string value = 2;</code>
-       */
-      public com.google.protobuf.ByteString
-          getValueBytes() {
-        java.lang.Object ref = value_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          value_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>required string value = 2;</code>
-       */
-      public Builder setValue(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        value_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string value = 2;</code>
-       */
-      public Builder clearValue() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        value_ = getDefaultInstance().getValue();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string value = 2;</code>
-       */
-      public Builder setValueBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        value_ = value;
-        onChanged();
-        return this;
+    public final int getNumber() { return value; }
+
+    public static GroupBySupport valueOf(int value) {
+      switch (value) {
+        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;
       }
+    }
 
-      // @@protoc_insertion_point(builder_scope:exec.user.Property)
+    public static com.google.protobuf.Internal.EnumLiteMap<GroupBySupport>
+        internalGetValueMap() {
+      return internalValueMap;
     }
+    private static com.google.protobuf.Internal.EnumLiteMap<GroupBySupport>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<GroupBySupport>() {
+            public GroupBySupport findValueByNumber(int number) {
+              return GroupBySupport.valueOf(number);
+            }
+          };
 
-    static {
-      defaultInstance = new Property(true);
-      defaultInstance.initFields();
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.drill.exec.proto.UserProtos.getDescriptor().getEnumTypes().get(10);
     }
 
-    // @@protoc_insertion_point(class_scope:exec.user.Property)
-  }
+    private static final GroupBySupport[] VALUES = values();
 
-  public interface UserPropertiesOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
+    public static GroupBySupport valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
 
-    // repeated .exec.user.Property properties = 1;
+    private final int index;
+    private final int value;
+
+    private GroupBySupport(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:exec.user.GroupBySupport)
+  }
+
+  /**
+   * Protobuf enum {@code exec.user.IdentifierCasing}
+   */
+  public enum IdentifierCasing
+      implements com.google.protobuf.ProtocolMessageEnum {
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>IC_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
      */
-    java.util.List<org.apache.drill.exec.proto.UserProtos.Property> 
-        getPropertiesList();
+    IC_UNKNOWN(0, 0),
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>IC_STORES_LOWER = 1;</code>
+     *
+     * <pre>
+     * Mixed case identifier is treated as case insensitive
+     *and stored in lower case 
+     * </pre>
      */
-    org.apache.drill.exec.proto.UserProtos.Property getProperties(int index);
+    IC_STORES_LOWER(1, 1),
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>IC_STORES_MIXED = 2;</code>
+     *
+     * <pre>
+     * Mixed case identifier is treated as case insensitive
+     *and stored in mixed case 
+     * </pre>
      */
-    int getPropertiesCount();
+    IC_STORES_MIXED(2, 2),
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>IC_STORES_UPPER = 3;</code>
+     *
+     * <pre>
+     * Mixed case identifier is treated as case insensitive
+     *and stored in upper case 
+     * </pre>
      */
-    java.util.List<? extends org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder> 
-        getPropertiesOrBuilderList();
+    IC_STORES_UPPER(3, 3),
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>IC_SUPPORTS_MIXED = 4;</code>
+     *
+     * <pre>
+     * Mixed case identifier is treated as case sensitive
+     *and stored in mixed case 
+     * </pre>
      */
-    org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder getPropertiesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code exec.user.UserProperties}
-   */
-  public static final class UserProperties extends
-      com.google.protobuf.GeneratedMessage
-      implements UserPropertiesOrBuilder {
-    // Use UserProperties.newBuilder() to construct.
-    private UserProperties(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
-      super(builder);
-      this.unknownFields = builder.getUnknownFields();
-    }
-    private UserProperties(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
-
-    private static final UserProperties defaultInstance;
-    public static UserProperties getDefaultInstance() {
-      return defaultInstance;
-    }
+    IC_SUPPORTS_MIXED(4, 4),
+    ;
 
-    public UserProperties getDefaultInstanceForType() {
-      return defaultInstance;
-    }
+    /**
+     * <code>IC_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
+     */
+    public static final int IC_UNKNOWN_VALUE = 0;
+    /**
+     * <code>IC_STORES_LOWER = 1;</code>
+     *
+     * <pre>
+     * Mixed case identifier is treated as case insensitive
+     *and stored in lower case 
+     * </pre>
+     */
+    public static final int IC_STORES_LOWER_VALUE = 1;
+    /**
+     * <code>IC_STORES_MIXED = 2;</code>
+     *
+     * <pre>
+     * Mixed case identifier is treated as case insensitive
+     *and stored in mixed case 
+     * </pre>
+     */
+    public static final int IC_STORES_MIXED_VALUE = 2;
+    /**
+     * <code>IC_STORES_UPPER = 3;</code>
+     *
+     * <pre>
+     * Mixed case identifier is treated as case insensitive
+     *and stored in upper case 
+     * </pre>
+     */
+    public static final int IC_STORES_UPPER_VALUE = 3;
+    /**
+     * <code>IC_SUPPORTS_MIXED = 4;</code>
+     *
+     * <pre>
+     * Mixed case identifier is treated as case sensitive
+     *and stored in mixed case 
+     * </pre>
+     */
+    public static final int IC_SUPPORTS_MIXED_VALUE = 4;
 
-    private final com.google.protobuf.UnknownFieldSet unknownFields;
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-        getUnknownFields() {
-      return this.unknownFields;
+
+    public final int getNumber() { return value; }
+
+    public static IdentifierCasing valueOf(int value) {
+      switch (value) {
+        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;
+      }
     }
-    private UserProperties(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      initFields();
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-                properties_ = new java.util.ArrayList<org.apache.drill.exec.proto.UserProtos.Property>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              properties_.add(input.readMessage(org.apache.drill.exec.proto.UserProtos.Property.PARSER, extensionRegistry));
-              break;
+
+    public static com.google.protobuf.Internal.EnumLiteMap<IdentifierCasing>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<IdentifierCasing>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<IdentifierCasing>() {
+            public IdentifierCasing findValueByNumber(int number) {
+              return IdentifierCasing.valueOf(number);
             }
-          }
-        }
-      } 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 {
-        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
-          properties_ = java.util.Collections.unmodifiableList(properties_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
     }
-    public static final com.google.protobuf.Descriptors.Descriptor
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
         getDescriptor() {
-      return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_UserProperties_descriptor;
+      return org.apache.drill.exec.proto.UserProtos.getDescriptor().getEnumTypes().get(11);
     }
 
-    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_UserProperties_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.apache.drill.exec.proto.UserProtos.UserProperties.class, org.apache.drill.exec.proto.UserProtos.UserProperties.Builder.class);
-    }
+    private static final IdentifierCasing[] VALUES = values();
 
-    public static com.google.protobuf.Parser<UserProperties> PARSER =
-        new com.google.protobuf.AbstractParser<UserProperties>() {
-      public UserProperties parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new UserProperties(input, extensionRegistry);
+    public static IdentifierCasing valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
       }
-    };
+      return VALUES[desc.getIndex()];
+    }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<UserProperties> getParserForType() {
-      return PARSER;
+    private final int index;
+    private final int value;
+
+    private IdentifierCasing(int index, int value) {
+      this.index = index;
+      this.value = value;
     }
 
-    // repeated .exec.user.Property properties = 1;
-    public static final int PROPERTIES_FIELD_NUMBER = 1;
-    private java.util.List<org.apache.drill.exec.proto.UserProtos.Property> properties_;
+    // @@protoc_insertion_point(enum_scope:exec.user.IdentifierCasing)
+  }
+
+  /**
+   * Protobuf enum {@code exec.user.NullCollation}
+   */
+  public enum NullCollation
+      implements com.google.protobuf.ProtocolMessageEnum {
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>NC_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
      */
-    public java.util.List<org.apache.drill.exec.proto.UserProtos.Property> getPropertiesList() {
-      return properties_;
-    }
+    NC_UNKNOWN(0, 0),
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>NC_AT_START = 1;</code>
+     *
+     * <pre>
+     * NULL values are sorted at the start regardless of the order
+     * </pre>
      */
-    public java.util.List<? extends org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder> 
-        getPropertiesOrBuilderList() {
-      return properties_;
-    }
+    NC_AT_START(1, 1),
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>NC_AT_END = 2;</code>
+     *
+     * <pre>
+     * NULL values are sorted at the end regardless of the order
+     * </pre>
      */
-    public int getPropertiesCount() {
-      return properties_.size();
-    }
+    NC_AT_END(2, 2),
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>NC_HIGH = 3;</code>
+     *
+     * <pre>
+     * NULL is the highest value
+     * </pre>
      */
-    public org.apache.drill.exec.proto.UserProtos.Property getProperties(int index) {
-      return properties_.get(index);
-    }
+    NC_HIGH(3, 3),
     /**
-     * <code>repeated .exec.user.Property properties = 1;</code>
+     * <code>NC_LOW = 4;</code>
+     *
+     * <pre>
+     * NULL is the lowest value
+     * </pre>
      */
-    public org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder getPropertiesOrBuilder(
-        int index) {
-      return properties_.get(index);
-    }
-
-    private void initFields() {
-      properties_ = java.util.Collections.emptyList();
-    }
-    private byte memoizedIsInitialized = -1;
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
+    NC_LOW(4, 4),
+    ;
 
-      for (int i = 0; i < getPropertiesCount(); i++) {
-        if (!getProperties(i).isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    /**
+     * <code>NC_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
+     */
+    public static final int NC_UNKNOWN_VALUE = 0;
+    /**
+     * <code>NC_AT_START = 1;</code>
+     *
+     * <pre>
+     * NULL values are sorted at the start regardless of the order
+     * </pre>
+     */
+    public static final int NC_AT_START_VALUE = 1;
+    /**
+     * <code>NC_AT_END = 2;</code>
+     *
+     * <pre>
+     * NULL values are sorted at the end regardless of the order
+     * </pre>
+     */
+    public static final int NC_AT_END_VALUE = 2;
+    /**
+     * <code>NC_HIGH = 3;</code>
+     *
+     * <pre>
+     * NULL is the highest value
+     * </pre>
+     */
+    public static final int NC_HIGH_VALUE = 3;
+    /**
+     * <code>NC_LOW = 4;</code>
+     *
+     * <pre>
+     * NULL is the lowest value
+     * </pre>
+     */
+    public static final int NC_LOW_VALUE = 4;
 
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      for (int i = 0; i < properties_.size(); i++) {
-        output.writeMessage(1, properties_.get(i));
-      }
-      getUnknownFields().writeTo(output);
-    }
 
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
+    public final int getNumber() { return value; }
 
-      size = 0;
-      for (int i = 0; i < properties_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, properties_.get(i));
+    public static NullCollation valueOf(int value) {
+      switch (value) {
+        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;
       }
-      size += getUnknownFields().getSerializedSize();
-      memoizedSerializedSize = size;
-      return size;
     }
 
-    private static final long serialVersionUID = 0L;
-    @java.lang.Override
-    protected java.lang.Object writeReplace()
-        throws java.io.ObjectStreamException {
-      return super.writeReplace();
+    public static com.google.protobuf.Internal.EnumLiteMap<NullCollation>
+        internalGetValueMap() {
+      return internalValueMap;
     }
+    private static com.google.protobuf.Internal.EnumLiteMap<NullCollation>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<NullCollation>() {
+            public NullCollation findValueByNumber(int number) {
+              return NullCollation.valueOf(number);
+            }
+          };
 
-    public static org.apache.drill.exec.proto.UserProtos.UserProperties parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.UserProperties 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.drill.exec.proto.UserProtos.UserProperties parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.UserProperties parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.UserProperties parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.UserProperties parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.UserProperties parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input);
-    }
-    public static org.apache.drill.exec.proto.UserProtos.UserProperties parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
     }
-    public static org.apache.drill.exec.proto.UserProtos.UserProperties parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input);
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
     }
-    public static org.apache.drill.exec.proto.UserProtos.UserProperties parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return PARSER.parseFrom(input, extensionRegistry);
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.drill.exec.proto.UserProtos.getDescriptor().getEnumTypes().get(12);
     }
 
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(org.apache.drill.exec.proto.UserProtos.UserProperties prototype) {
-      return newBuilder().mergeFrom(prototype);
+    private static final NullCollation[] VALUES = values();
+
+    public static NullCollation valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
     }
-    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;
+    private final int index;
+    private final int value;
+
+    private NullCollation(int index, int value) {
+      this.index = index;
+      this.value = value;
     }
+
+    // @@protoc_insertion_point(enum_scope:exec.user.NullCollation)
+  }
+
+  /**
+   * Protobuf enum {@code exec.user.OrderBySupport}
+   */
+  public enum OrderBySupport
+      implements com.google.protobuf.ProtocolMessageEnum {
     /**
-     * Protobuf type {@code exec.user.UserProperties}
+     * <code>OB_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements org.apache.drill.exec.proto.UserProtos.UserPropertiesOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_UserProperties_descriptor;
-      }
-
-      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_UserProperties_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                org.apache.drill.exec.proto.UserProtos.UserProperties.class, org.apache.drill.exec.proto.UserProtos.UserProperties.Builder.class);
-      }
+    OB_UNKNOWN(0, 0),
+    /**
+     * <code>OB_UNRELATED = 1;</code>
+     *
+     * <pre>
+     * ORDER BY supported with columns not in SELECT list
+     * </pre>
+     */
+    OB_UNRELATED(1, 1),
+    /**
+     * <code>OB_EXPRESSION = 2;</code>
+     *
+     * <pre>
+     * ORDER BY with expressions is supported
+     * </pre>
+     */
+    OB_EXPRESSION(2, 2),
+    ;
 
-      // Construct using org.apache.drill.exec.proto.UserProtos.UserProperties.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
+    /**
+     * <code>OB_UNKNOWN = 0;</code>
+     *
+     * <pre>
+     * Unknown support (for forward compatibility)
+     * </pre>
+     */
+    public static final int OB_UNKNOWN_VALUE = 0;
+    /**
+     * <code>OB_UNRELATED = 1;</code>
+     *
+     * <pre>
+     * ORDER BY supported with columns not in SELECT list
+     * </pre>
+     */
+    public static final int OB_UNRELATED_VALUE = 1;
+    /**
+     * <code>OB_EXPRESSION = 2;</code>
+     *
+     * <pre>
+     * ORDER BY with expressions is supported
+     * </pre>
+     */
+    public static final int OB_EXPRESSION_VALUE = 2;
 
-      private Builder(
-          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
-          getPropertiesFieldBuilder();
-        }
-      }
-      private static Builder create() {
-        return new Builder();
-      }
 
-      public Builder clear() {
-        super.clear();
-        if (propertiesBuilder_ == null) {
-          properties_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          propertiesBuilder_.clear();
-        }
-        return this;
-      }
+    public final int getNumber() { return value; }
 
-      public Builder clone() {
-        return create().mergeFrom(buildPartial());
+    public static OrderBySupport valueOf(int value) {
+      switch (value) {
+        case 0: return OB_UNKNOWN;
+        case 1: return OB_UNRELATED;
+        case 2: return OB_EXPRESSION;
+        default: return null;
       }
+    }
 
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return org.apache.drill.exec.proto.UserProtos.internal_static_exec_user_UserProperties_descriptor;
-      }
+    public static com.google.protobuf.Internal.EnumLiteMap<OrderBySupport>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<OrderBySupport>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<OrderBySupport>() {
+            public OrderBySupport findValueByNumber(int number) {
+              return OrderBySupport.valueOf(number);
+            }
+          };
 
-      public org.apache.drill.exec.proto.UserProtos.UserProperties getDefaultInstanceForType() {
-        return org.apache.drill.exec.proto.UserProtos.UserProperties.getDefaultInstance();
-      }
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.drill.exec.proto.UserProtos.getDescriptor().getEnumTypes().get(13);
+    }
 
-      public org.apache.drill.exec.proto.UserProtos.UserProperties build() {
-        org.apache.drill.exec.proto.UserProtos.UserProperties result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
+    private static final OrderBySupport[] VALUES = values();
 
-      public org.apache.drill.exec.proto.UserProtos.UserProperties buildPartial() {
-        org.apache.drill.exec.proto.UserProtos.UserProperties result = new org.apache.drill.exec.proto.UserProtos.UserProperties(this);
-        int from_bitField0_ = bitField0_;
-        if (propertiesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) == 0x00000001)) {
-            properties_ = java.util.Collections.unmodifiableList(properties_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.properties_ = properties_;
-        } else {
-          result.properties_ = propertiesBuilder_.build();
-        }
-        onBuilt();
-        return result;
+    public static OrderBySupport valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
       }
+      return VALUES[desc.getIndex()];
+    }
 
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.apache.drill.exec.proto.UserProtos.UserProperties) {
-          return mergeFrom((org.apache.drill.exec.proto.UserProtos.UserProperties)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
+    private final int index;
+    private final int value;
 
-      public Builder mergeFrom(org.apache.drill.exec.proto.UserProtos.UserProperties other) {
-        if (other == org.apache.drill.exec.proto.UserProtos.UserProperties.getDefaultInstance()) return this;
-        if (propertiesBuilder_ == null) {
-          if (!other.properties_.isEmpty()) {
-            if (properties_.isEmpty()) {
-              properties_ = other.properties_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensurePropertiesIsMutable();
-              properties_.addAll(other.properties_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.properties_.isEmpty()) {
-            if (propertiesBuilder_.isEmpty()) {
-              propertiesBuilder_.dispose();
-              propertiesBuilder_ = null;
-              properties_ = other.properties_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              propertiesBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getPropertiesFieldBuilder() : null;
-            } else {
-              propertiesBuilder_.addAllMessages(other.properties_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.getUnknownFields());
-        return this;
-      }
+    private OrderBySupport(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
 
-      public final boolean isInitialized() {
-        for (int i = 0; i < getPropertiesCount(); i++) {
-          if (!getProperties(i).isInitialized()) {
-            
-            return false;
-          }
-        }
-        return true;
-      }
+    // @@protoc_insertion_point(enum_scope:exec.user.OrderBySupport)
+  }
 
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        org.apache.drill.exec.proto.UserProtos.UserProperties parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.apache.drill.exec.proto.UserProtos.UserProperties) e.getUnfinishedMessage();
-          throw e;
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      // repeated .exec.user.Property properties = 1;
-      private java.util.List<org.apache.drill.exec.proto.UserProtos.Property> properties_ =
-        java.util.Collections.emptyList();
-      private void ensurePropertiesIsMutable() {
-        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
-          properties_ = new java.util.ArrayList<org.apache.drill.exec.proto.UserProtos.Property>(properties_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.apache.drill.exec.proto.UserProtos.Property, org.apache.drill.exec.proto.UserProtos.Property.Builder, org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder> propertiesBuilder_;
-
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public java.util.List<org.apache.drill.exec.proto.UserProtos.Property> getPropertiesList() {
-        if (propertiesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(properties_);
-        } else {
-          return propertiesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public int getPropertiesCount() {
-        if (propertiesBuilder_ == null) {
-          return properties_.size();
-        } else {
-          return propertiesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public org.apache.drill.exec.proto.UserProtos.Property getProperties(int index) {
-        if (propertiesBuilder_ == null) {
-          return properties_.get(index);
-        } else {
-          return propertiesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public Builder setProperties(
-          int index, org.apache.drill.exec.proto.UserProtos.Property value) {
-        if (propertiesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensurePropertiesIsMutable();
-          properties_.set(index, value);
-          onChanged();
-        } else {
-          propertiesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public Builder setProperties(
-          int index, org.apache.drill.exec.proto.UserProtos.Property.Builder builderForValue) {
-        if (propertiesBuilder_ == null) {
-          ensurePropertiesIsMutable();
-          properties_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          propertiesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public Builder addProperties(org.apache.drill.exec.proto.UserProtos.Property value) {
-        if (propertiesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensurePropertiesIsMutable();
-          properties_.add(value);
-          onChanged();
-        } else {
-          propertiesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public Builder addProperties(
-          int index, org.apache.drill.exec.proto.UserProtos.Property value) {
-        if (propertiesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensurePropertiesIsMutable();
-          properties_.add(index, value);
-          onChanged();
-        } else {
-          propertiesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public Builder addProperties(
-          org.apache.drill.exec.proto.UserProtos.Property.Builder builderForValue) {
-        if (propertiesBuilder_ == null) {
-          ensurePropertiesIsMutable();
-          properties_.add(builderForValue.build());
-          onChanged();
-        } else {
-          propertiesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public Builder addProperties(
-          int index, org.apache.drill.exec.proto.UserProtos.Property.Builder builderForValue) {
-        if (propertiesBuilder_ == null) {
-          ensurePropertiesIsMutable();
-          properties_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          propertiesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public Builder addAllProperties(
-          java.lang.Iterable<? extends org.apache.drill.exec.proto.UserProtos.Property> values) {
-        if (propertiesBuilder_ == null) {
-          ensurePropertiesIsMutable();
-          super.addAll(values, properties_);
-          onChanged();
-        } else {
-          propertiesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public Builder clearProperties() {
-        if (propertiesBuilder_ == null) {
-          properties_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          propertiesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public Builder removeProperties(int index) {
-        if (propertiesBuilder_ == null) {
-          ensurePropertiesIsMutable();
-          properties_.remove(index);
-          onChanged();
-        } else {
-          propertiesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public org.apache.drill.exec.proto.UserProtos.Property.Builder getPropertiesBuilder(
-          int index) {
-        return getPropertiesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder getPropertiesOrBuilder(
-          int index) {
-        if (propertiesBuilder_ == null) {
-          return properties_.get(index);  } else {
-          return propertiesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public java.util.List<? extends org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder> 
-           getPropertiesOrBuilderList() {
-        if (propertiesBuilder_ != null) {
-          return propertiesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(properties_);
-        }
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public org.apache.drill.exec.proto.UserProtos.Property.Builder addPropertiesBuilder() {
-        return getPropertiesFieldBuilder().addBuilder(
-            org.apache.drill.exec.proto.UserProtos.Property.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public org.apache.drill.exec.proto.UserProtos.Property.Builder addPropertiesBuilder(
-          int index) {
-        return getPropertiesFieldBuilder().addBuilder(
-            index, org.apache.drill.exec.proto.UserProtos.Property.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .exec.user.Property properties = 1;</code>
-       */
-      public java.util.List<org.apache.drill.exec.proto.UserProtos.Property.Builder> 
-           getPropertiesBuilderList() {
-        return getPropertiesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.apache.drill.exec.proto.UserProtos.Property, org.apache.drill.exec.proto.UserProtos.Property.Builder, org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder> 
-          getPropertiesFieldBuilder() {
-        if (propertiesBuilder_ == null) {
-          propertiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              org.apache.drill.exec.proto.UserProtos.Property, org.apache.drill.exec.proto.UserProtos.Property.Builder, org.apache.drill.exec.proto.UserProtos.PropertyOrBuilder>(
-                  properties_,
-                  ((bitField0_ & 0x00000001) == 0x00000001),
-                  getParentForChildren(),
-                  isClean());
-          properties_ = null;
-        }
-        return propertiesBuilder_;
-      }
-
-      // @@protoc_insertion_point(builder_scope:exec.user.UserProperties)
-    }
-
-    static {
-      defaultInstance = new UserProperties(true);
-      defaultInstance.initFields();
-    }
-
-    // @@protoc_insertion_point(class_scope:exec.user.UserProperties)
-  }
-
-  public interface RpcEndpointInfosOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-
-    // optional string name = 1;
+  /**
+   * Protobuf enum {@code exec.user.OuterJoinSupport}
+   */
+  public enum OuterJoinSupport
+      implements com.google.protobuf.ProtocolMessageEnum {
     /**
-     * <code>optional string name = 1;</code>
+     * <code>OJ_UNKNOWN = 0;</code>
      *
      * <pre>
-     * example: Apache Drill Server, Apache Drill C++ client
+     * Unknown support (for forward compatibility)
      * </pre>
      */
-    boolean hasName();
+    OJ_UNKNOWN(0, 0),
     /**
-     * <code>optional string name = 1;</code>
+     * <code>OJ_LEFT = 1;</code>
      *
      * <pre>
-     * example: Apache Drill Server, Apache Drill C++ client
+     * Left outer join is supported
      * </pre>
      */
-    java.lang.String getName();
+    OJ_LEFT(1, 1),
     /**
-     * <code>optional string name = 1;</code>
+     * <code>OJ_RIGHT = 2;</code>
      *
      * <pre>
-     * example: Apache Drill Server, Apache Drill C++ client
+     * Right outer join is supported
      * </pre>
      */
-    com.google.protobuf.ByteString
-        getNameBytes();
-
-    // optional string version = 2;
+    OJ_RIGHT(2, 2),
     /**
-     * <code>optional string version = 2;</code>
+     * <code>OJ_FULL = 3;</code>
      *
      * <pre>
-     * example: 1.9.0
+     * Full outer join is supported
      * </pre>
      */
-    boolean hasVersion();
+    OJ_FULL(3, 3),
     /**
-     * <code>optional string version = 2;</code>
+     * <code>OJ_NESTED = 4;</code>
      *
      * <pre>
-     * example: 1.9.0
+     * Nested outer join is supported
      * </pre>
      */
-    java.lang.String getVersion();
+    OJ_NESTED(4, 4),
     /**
-     * <code>optional string version = 2;</code>
+     * <code>OJ_NOT_ORDERED = 5;</code>
      *
      * <pre>
-     * example: 1.9.0
+     * Column names in the ON clause don't have to share the same order
+     *as their respective table names in the OUTER JOIN clase 
      * </pre>
      */
-    com.google.protobuf.ByteString
-        getVersionBytes();
-
-    // optional uint32 majorVersion = 3;
+    OJ_NOT_ORDERED(5, 5),
     /**
-     * <code>optional uint32 majorVersion = 3;</code>
+     * <code>OJ_INNER = 6;</code>
      *
      * <pre>
-     * example: 1
+     * Inner table can also be used in an inner join
      * </pre>
      */
-    boolean hasMajorVersion();
+    OJ_INNER(6, 6),
     /**
-     * <code>optional uint32 majorVersion = 3;</code>
+     * <code>OJ_ALL_COMPARISON_OPS = 7;</code>
      *
      * <pre>
-     * example: 1
+     * Any comparison operator is supported in the ON clause
      * </pre>
      */
-    int getMajorVersion();
+    OJ_ALL_COMPARISON_OPS(7, 7),
+    ;
 
-    // optional uint32 minorVersion = 4;
     /**
-     * <code>optional uint32 minorVersion = 4;</code>
+     * <code>OJ_UNKNOWN = 0;</code>
      *
      * <pre>
-     * example: 9
+     * Unknown support (for forward compatibility)
      * </pre>
      */
-    boolean hasMinorVersion();
+    public static final int OJ_UNKNOWN_VALUE = 0;
     /**
-     * <code>optional uint32 minorVersion = 4;</code>
+     * <code>OJ_LEFT = 1;</code>
      *
      * <pre>
-     * example: 9
+     * Left outer join is supported
      * </pre>
      */
-    int getMinorVersion();
-
-    // optional uint32 patchVersion = 5;
+    public static final int OJ_LEFT_VALUE = 1;
     /**
-     * <code>optional uint32 patchVersion = 5;</code>
+     * <code>OJ_RIGHT = 2;</code>
      *
      * <pre>
-     * example: 0
+     * Right outer join is supported
      * </pre>
      */
-    boolean hasPatchVersion();
+    public static final int OJ_RIGHT_VALUE = 2;
     /**
-     * <code>optional uint32 patchVersion = 5;</code>
+     * <code>OJ_FULL = 3;</code>
      *
      * <pre>
-     * example: 0
+     * Full outer join is supported
      * </pre>
      */
-    int getPatchVersion();
-
-    // optional string application = 6;
+    public static final int OJ_FULL_VALUE = 3;
     /**
-     * <code>optional string application = 6;</code>
+     * <code>OJ_NESTED = 4;</code>
      *
      * <pre>
-     * example: Tableau 9.3
+     * Nested outer join is supported
      * </pre>
      */
-    boolean hasApplication();
+    public static final int OJ_NESTED_VALUE = 4;
     /**
-     * <code>optional string application = 6;</code>
+     * <code>OJ_NOT_ORDERED = 5;</code>
      *
      * <pre>
-     * example: Tableau 9.3
+     * Column names in the ON clause don't have to share the same order
+     *as their respective table names in the OUTER JOIN clase 
      * </pre>
      */
-    java.lang.String getApplication();
+    public static final int OJ_NOT_ORDERED_VALUE = 5;
     /**
-     * <code>optional string application = 6;</code>
+     * <code>OJ_INNER = 6;</code>
      *
      * <pre>
-     * example: Tableau 9.3
+     * Inner table can also be used in an inner join
      * </pre>
      */
-    com.google.protobuf.ByteString
-        getApplicationBytes();
+    public static final int OJ_INNER_VALUE = 6;
+    /**
+     * <code>OJ_ALL_COMPARISON_OPS = 7;</code>
+     *
+     * <pre>
+     * Any comparison operator is supported in the ON clause
+     * </pre>
+     */
+    public static final int OJ_ALL_COMPARISON_OPS_VALUE = 7;
 
-    // optional uint32 buildNumber = 7;
+
+    public final int getNumber() { return value; }
+
+    public static OuterJoinSupport valueOf(int value) {
+      switch (value) {
+        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;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<OuterJoinSupport>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<OuterJoinSupport>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<OuterJoinSupport>() {
+            public OuterJoinSupport findValueByNumber(int number) {
+              return OuterJoinSupport.valueOf(number);
+           

<TRUNCATED>

Mime
View raw message