You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by su...@apache.org on 2017/02/25 07:18:22 UTC

[29/29] drill git commit: DRILL-4280: CORE (C++ protocol)

DRILL-4280: CORE (C++ protocol)


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/f9f99e08
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/f9f99e08
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/f9f99e08

Branch: refs/heads/master
Commit: f9f99e08084c0016f5a3edc74b7b86b304436284
Parents: bb99264
Author: Sudheesh Katkam <su...@apache.org>
Authored: Mon Jan 30 18:55:16 2017 -0800
Committer: Sudheesh Katkam <su...@apache.org>
Committed: Fri Feb 24 20:01:18 2017 -0800

----------------------------------------------------------------------
 .../native/client/src/protobuf/BitControl.pb.cc | 201 ++++--
 .../native/client/src/protobuf/BitControl.pb.h  | 155 ++++-
 .../native/client/src/protobuf/BitData.pb.cc    |  77 ++-
 contrib/native/client/src/protobuf/BitData.pb.h |  68 +-
 .../client/src/protobuf/Coordination.pb.cc      |  85 ++-
 .../client/src/protobuf/Coordination.pb.h       |  87 ++-
 contrib/native/client/src/protobuf/User.pb.cc   | 196 ++++--
 contrib/native/client/src/protobuf/User.pb.h    | 133 +++-
 .../client/src/protobuf/UserBitShared.pb.cc     | 626 +++++++++++++++++--
 .../client/src/protobuf/UserBitShared.pb.h      | 480 +++++++++++++-
 10 files changed, 1916 insertions(+), 192 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/f9f99e08/contrib/native/client/src/protobuf/BitControl.pb.cc
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/BitControl.pb.cc b/contrib/native/client/src/protobuf/BitControl.pb.cc
index 7317a99..53e53ea 100644
--- a/contrib/native/client/src/protobuf/BitControl.pb.cc
+++ b/contrib/native/client/src/protobuf/BitControl.pb.cc
@@ -64,10 +64,11 @@ void protobuf_AssignDesc_BitControl_2eproto() {
       "BitControl.proto");
   GOOGLE_CHECK(file != NULL);
   BitControlHandshake_descriptor_ = file->message_type(0);
-  static const int BitControlHandshake_offsets_[3] = {
+  static const int BitControlHandshake_offsets_[4] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitControlHandshake, rpc_version_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitControlHandshake, channel_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitControlHandshake, endpoint_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitControlHandshake, authenticationmechanisms_),
   };
   BitControlHandshake_reflection_ =
     new ::google::protobuf::internal::GeneratedMessageReflection(
@@ -190,10 +191,11 @@ void protobuf_AssignDesc_BitControl_2eproto() {
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(Collector));
   QueryContextInformation_descriptor_ = file->message_type(7);
-  static const int QueryContextInformation_offsets_[3] = {
+  static const int QueryContextInformation_offsets_[4] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(QueryContextInformation, query_start_time_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(QueryContextInformation, time_zone_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(QueryContextInformation, default_schema_name_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(QueryContextInformation, session_id_),
   };
   QueryContextInformation_reflection_ =
     new ::google::protobuf::internal::GeneratedMessageReflection(
@@ -311,53 +313,54 @@ void protobuf_AddDesc_BitControl_2eproto() {
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
     "\n\020BitControl.proto\022\020exec.bit.control\032\025Ex"
     "ecutionProtos.proto\032\022Coordination.proto\032"
-    "\023UserBitShared.proto\"\213\001\n\023BitControlHands"
+    "\023UserBitShared.proto\"\255\001\n\023BitControlHands"
     "hake\022\023\n\013rpc_version\030\001 \001(\005\0225\n\007channel\030\002 \001"
     "(\0162\027.exec.shared.RpcChannel:\013BIT_CONTROL"
     "\022(\n\010endpoint\030\003 \001(\0132\026.exec.DrillbitEndpoi"
-    "nt\"F\n\tBitStatus\0229\n\017fragment_status\030\001 \003(\013"
-    "2 .exec.bit.control.FragmentStatus\"n\n\016Fr"
-    "agmentStatus\0222\n\007profile\030\001 \001(\0132!.exec.sha"
-    "red.MinorFragmentProfile\022(\n\006handle\030\002 \001(\013"
-    "2\030.exec.bit.FragmentHandle\"G\n\023Initialize"
-    "Fragments\0220\n\010fragment\030\001 \003(\0132\036.exec.bit.c"
-    "ontrol.PlanFragment\".\n\rCustomMessage\022\014\n\004"
-    "type\030\001 \001(\005\022\017\n\007message\030\002 \001(\014\"\374\003\n\014PlanFrag"
-    "ment\022(\n\006handle\030\001 \001(\0132\030.exec.bit.Fragment"
-    "Handle\022\024\n\014network_cost\030\004 \001(\002\022\020\n\010cpu_cost"
-    "\030\005 \001(\002\022\021\n\tdisk_cost\030\006 \001(\002\022\023\n\013memory_cost"
-    "\030\007 \001(\002\022\025\n\rfragment_json\030\010 \001(\t\022\025\n\rleaf_fr"
-    "agment\030\t \001(\010\022*\n\nassignment\030\n \001(\0132\026.exec."
-    "DrillbitEndpoint\022\'\n\007foreman\030\013 \001(\0132\026.exec"
-    ".DrillbitEndpoint\022\035\n\013mem_initial\030\014 \001(\003:\010"
-    "20000000\022\033\n\007mem_max\030\r \001(\003:\n2000000000\0221\n"
-    "\013credentials\030\016 \001(\0132\034.exec.shared.UserCre"
-    "dentials\022\024\n\014options_json\030\017 \001(\t\022:\n\007contex"
-    "t\030\020 \001(\0132).exec.bit.control.QueryContextI"
-    "nformation\022.\n\tcollector\030\021 \003(\0132\033.exec.bit"
-    ".control.Collector\"\210\001\n\tCollector\022\"\n\032oppo"
-    "site_major_fragment_id\030\001 \001(\005\022#\n\027incoming"
-    "_minor_fragment\030\002 \003(\005B\002\020\001\022\035\n\025supports_ou"
-    "t_of_order\030\003 \001(\010\022\023\n\013is_spooling\030\004 \001(\010\"c\n"
-    "\027QueryContextInformation\022\030\n\020query_start_"
-    "time\030\001 \001(\003\022\021\n\ttime_zone\030\002 \001(\005\022\033\n\023default"
-    "_schema_name\030\003 \001(\t\"f\n\017WorkQueueStatus\022(\n"
-    "\010endpoint\030\001 \001(\0132\026.exec.DrillbitEndpoint\022"
-    "\024\n\014queue_length\030\002 \001(\005\022\023\n\013report_time\030\003 \001"
-    "(\003\"h\n\020FinishedReceiver\022*\n\010receiver\030\001 \001(\013"
-    "2\030.exec.bit.FragmentHandle\022(\n\006sender\030\002 \001"
-    "(\0132\030.exec.bit.FragmentHandle*\364\002\n\007RpcType"
-    "\022\r\n\tHANDSHAKE\020\000\022\007\n\003ACK\020\001\022\013\n\007GOODBYE\020\002\022\034\n"
-    "\030REQ_INITIALIZE_FRAGMENTS\020\003\022\027\n\023REQ_CANCE"
-    "L_FRAGMENT\020\006\022\031\n\025REQ_RECEIVER_FINISHED\020\007\022"
-    "\027\n\023REQ_FRAGMENT_STATUS\020\010\022\022\n\016REQ_BIT_STAT"
-    "US\020\t\022\024\n\020REQ_QUERY_STATUS\020\n\022\024\n\020REQ_QUERY_"
-    "CANCEL\020\017\022\030\n\024REQ_UNPAUSE_FRAGMENT\020\020\022\016\n\nRE"
-    "Q_CUSTOM\020\021\022\030\n\024RESP_FRAGMENT_HANDLE\020\013\022\030\n\024"
-    "RESP_FRAGMENT_STATUS\020\014\022\023\n\017RESP_BIT_STATU"
-    "S\020\r\022\025\n\021RESP_QUERY_STATUS\020\016\022\017\n\013RESP_CUSTO"
-    "M\020\022B+\n\033org.apache.drill.exec.protoB\nBitC"
-    "ontrolH\001", 1928);
+    "nt\022 \n\030authenticationMechanisms\030\004 \003(\t\"F\n\t"
+    "BitStatus\0229\n\017fragment_status\030\001 \003(\0132 .exe"
+    "c.bit.control.FragmentStatus\"n\n\016Fragment"
+    "Status\0222\n\007profile\030\001 \001(\0132!.exec.shared.Mi"
+    "norFragmentProfile\022(\n\006handle\030\002 \001(\0132\030.exe"
+    "c.bit.FragmentHandle\"G\n\023InitializeFragme"
+    "nts\0220\n\010fragment\030\001 \003(\0132\036.exec.bit.control"
+    ".PlanFragment\".\n\rCustomMessage\022\014\n\004type\030\001"
+    " \001(\005\022\017\n\007message\030\002 \001(\014\"\374\003\n\014PlanFragment\022("
+    "\n\006handle\030\001 \001(\0132\030.exec.bit.FragmentHandle"
+    "\022\024\n\014network_cost\030\004 \001(\002\022\020\n\010cpu_cost\030\005 \001(\002"
+    "\022\021\n\tdisk_cost\030\006 \001(\002\022\023\n\013memory_cost\030\007 \001(\002"
+    "\022\025\n\rfragment_json\030\010 \001(\t\022\025\n\rleaf_fragment"
+    "\030\t \001(\010\022*\n\nassignment\030\n \001(\0132\026.exec.Drillb"
+    "itEndpoint\022\'\n\007foreman\030\013 \001(\0132\026.exec.Drill"
+    "bitEndpoint\022\035\n\013mem_initial\030\014 \001(\003:\010200000"
+    "00\022\033\n\007mem_max\030\r \001(\003:\n2000000000\0221\n\013crede"
+    "ntials\030\016 \001(\0132\034.exec.shared.UserCredentia"
+    "ls\022\024\n\014options_json\030\017 \001(\t\022:\n\007context\030\020 \001("
+    "\0132).exec.bit.control.QueryContextInforma"
+    "tion\022.\n\tcollector\030\021 \003(\0132\033.exec.bit.contr"
+    "ol.Collector\"\210\001\n\tCollector\022\"\n\032opposite_m"
+    "ajor_fragment_id\030\001 \001(\005\022#\n\027incoming_minor"
+    "_fragment\030\002 \003(\005B\002\020\001\022\035\n\025supports_out_of_o"
+    "rder\030\003 \001(\010\022\023\n\013is_spooling\030\004 \001(\010\"w\n\027Query"
+    "ContextInformation\022\030\n\020query_start_time\030\001"
+    " \001(\003\022\021\n\ttime_zone\030\002 \001(\005\022\033\n\023default_schem"
+    "a_name\030\003 \001(\t\022\022\n\nsession_id\030\004 \001(\t\"f\n\017Work"
+    "QueueStatus\022(\n\010endpoint\030\001 \001(\0132\026.exec.Dri"
+    "llbitEndpoint\022\024\n\014queue_length\030\002 \001(\005\022\023\n\013r"
+    "eport_time\030\003 \001(\003\"h\n\020FinishedReceiver\022*\n\010"
+    "receiver\030\001 \001(\0132\030.exec.bit.FragmentHandle"
+    "\022(\n\006sender\030\002 \001(\0132\030.exec.bit.FragmentHand"
+    "le*\206\003\n\007RpcType\022\r\n\tHANDSHAKE\020\000\022\007\n\003ACK\020\001\022\013"
+    "\n\007GOODBYE\020\002\022\034\n\030REQ_INITIALIZE_FRAGMENTS\020"
+    "\003\022\027\n\023REQ_CANCEL_FRAGMENT\020\006\022\031\n\025REQ_RECEIV"
+    "ER_FINISHED\020\007\022\027\n\023REQ_FRAGMENT_STATUS\020\010\022\022"
+    "\n\016REQ_BIT_STATUS\020\t\022\024\n\020REQ_QUERY_STATUS\020\n"
+    "\022\024\n\020REQ_QUERY_CANCEL\020\017\022\030\n\024REQ_UNPAUSE_FR"
+    "AGMENT\020\020\022\016\n\nREQ_CUSTOM\020\021\022\030\n\024RESP_FRAGMEN"
+    "T_HANDLE\020\013\022\030\n\024RESP_FRAGMENT_STATUS\020\014\022\023\n\017"
+    "RESP_BIT_STATUS\020\r\022\025\n\021RESP_QUERY_STATUS\020\016"
+    "\022\017\n\013RESP_CUSTOM\020\022\022\020\n\014SASL_MESSAGE\020\023B+\n\033o"
+    "rg.apache.drill.exec.protoB\nBitControlH\001", 2000);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "BitControl.proto", &protobuf_RegisterTypes);
   BitControlHandshake::default_instance_ = new BitControlHandshake();
@@ -412,6 +415,7 @@ bool RpcType_IsValid(int value) {
     case 16:
     case 17:
     case 18:
+    case 19:
       return true;
     default:
       return false;
@@ -425,6 +429,7 @@ bool RpcType_IsValid(int value) {
 const int BitControlHandshake::kRpcVersionFieldNumber;
 const int BitControlHandshake::kChannelFieldNumber;
 const int BitControlHandshake::kEndpointFieldNumber;
+const int BitControlHandshake::kAuthenticationMechanismsFieldNumber;
 #endif  // !_MSC_VER
 
 BitControlHandshake::BitControlHandshake()
@@ -489,6 +494,7 @@ void BitControlHandshake::Clear() {
       if (endpoint_ != NULL) endpoint_->::exec::DrillbitEndpoint::Clear();
     }
   }
+  authenticationmechanisms_.Clear();
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   mutable_unknown_fields()->Clear();
 }
@@ -545,6 +551,25 @@ bool BitControlHandshake::MergePartialFromCodedStream(
         } else {
           goto handle_uninterpreted;
         }
+        if (input->ExpectTag(34)) goto parse_authenticationMechanisms;
+        break;
+      }
+
+      // repeated string authenticationMechanisms = 4;
+      case 4: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_authenticationMechanisms:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_authenticationmechanisms()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+            this->authenticationmechanisms(this->authenticationmechanisms_size() - 1).data(),
+            this->authenticationmechanisms(this->authenticationmechanisms_size() - 1).length(),
+            ::google::protobuf::internal::WireFormat::PARSE);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(34)) goto parse_authenticationMechanisms;
         if (input->ExpectAtEnd()) return true;
         break;
       }
@@ -584,6 +609,15 @@ void BitControlHandshake::SerializeWithCachedSizes(
       3, this->endpoint(), output);
   }
 
+  // repeated string authenticationMechanisms = 4;
+  for (int i = 0; i < this->authenticationmechanisms_size(); i++) {
+  ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+    this->authenticationmechanisms(i).data(), this->authenticationmechanisms(i).length(),
+    ::google::protobuf::internal::WireFormat::SERIALIZE);
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->authenticationmechanisms(i), output);
+  }
+
   if (!unknown_fields().empty()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         unknown_fields(), output);
@@ -610,6 +644,15 @@ void BitControlHandshake::SerializeWithCachedSizes(
         3, this->endpoint(), target);
   }
 
+  // repeated string authenticationMechanisms = 4;
+  for (int i = 0; i < this->authenticationmechanisms_size(); i++) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->authenticationmechanisms(i).data(), this->authenticationmechanisms(i).length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(4, this->authenticationmechanisms(i), target);
+  }
+
   if (!unknown_fields().empty()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         unknown_fields(), target);
@@ -642,6 +685,13 @@ int BitControlHandshake::ByteSize() const {
     }
 
   }
+  // repeated string authenticationMechanisms = 4;
+  total_size += 1 * this->authenticationmechanisms_size();
+  for (int i = 0; i < this->authenticationmechanisms_size(); i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->authenticationmechanisms(i));
+  }
+
   if (!unknown_fields().empty()) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
@@ -667,6 +717,7 @@ void BitControlHandshake::MergeFrom(const ::google::protobuf::Message& from) {
 
 void BitControlHandshake::MergeFrom(const BitControlHandshake& from) {
   GOOGLE_CHECK_NE(&from, this);
+  authenticationmechanisms_.MergeFrom(from.authenticationmechanisms_);
   if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
     if (from.has_rpc_version()) {
       set_rpc_version(from.rpc_version());
@@ -703,6 +754,7 @@ void BitControlHandshake::Swap(BitControlHandshake* other) {
     std::swap(rpc_version_, other->rpc_version_);
     std::swap(channel_, other->channel_);
     std::swap(endpoint_, other->endpoint_);
+    authenticationmechanisms_.Swap(&other->authenticationmechanisms_);
     std::swap(_has_bits_[0], other->_has_bits_[0]);
     _unknown_fields_.Swap(&other->_unknown_fields_);
     std::swap(_cached_size_, other->_cached_size_);
@@ -2817,6 +2869,7 @@ void Collector::Swap(Collector* other) {
 const int QueryContextInformation::kQueryStartTimeFieldNumber;
 const int QueryContextInformation::kTimeZoneFieldNumber;
 const int QueryContextInformation::kDefaultSchemaNameFieldNumber;
+const int QueryContextInformation::kSessionIdFieldNumber;
 #endif  // !_MSC_VER
 
 QueryContextInformation::QueryContextInformation()
@@ -2838,6 +2891,7 @@ void QueryContextInformation::SharedCtor() {
   query_start_time_ = GOOGLE_LONGLONG(0);
   time_zone_ = 0;
   default_schema_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+  session_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -2849,6 +2903,9 @@ void QueryContextInformation::SharedDtor() {
   if (default_schema_name_ != &::google::protobuf::internal::kEmptyString) {
     delete default_schema_name_;
   }
+  if (session_id_ != &::google::protobuf::internal::kEmptyString) {
+    delete session_id_;
+  }
   if (this != default_instance_) {
   }
 }
@@ -2883,6 +2940,11 @@ void QueryContextInformation::Clear() {
         default_schema_name_->clear();
       }
     }
+    if (has_session_id()) {
+      if (session_id_ != &::google::protobuf::internal::kEmptyString) {
+        session_id_->clear();
+      }
+    }
   }
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   mutable_unknown_fields()->Clear();
@@ -2938,6 +3000,23 @@ bool QueryContextInformation::MergePartialFromCodedStream(
         } else {
           goto handle_uninterpreted;
         }
+        if (input->ExpectTag(34)) goto parse_session_id;
+        break;
+      }
+
+      // optional string session_id = 4;
+      case 4: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_session_id:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_session_id()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+            this->session_id().data(), this->session_id().length(),
+            ::google::protobuf::internal::WireFormat::PARSE);
+        } else {
+          goto handle_uninterpreted;
+        }
         if (input->ExpectAtEnd()) return true;
         break;
       }
@@ -2979,6 +3058,15 @@ void QueryContextInformation::SerializeWithCachedSizes(
       3, this->default_schema_name(), output);
   }
 
+  // optional string session_id = 4;
+  if (has_session_id()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->session_id().data(), this->session_id().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      4, this->session_id(), output);
+  }
+
   if (!unknown_fields().empty()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         unknown_fields(), output);
@@ -3007,6 +3095,16 @@ void QueryContextInformation::SerializeWithCachedSizes(
         3, this->default_schema_name(), target);
   }
 
+  // optional string session_id = 4;
+  if (has_session_id()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->session_id().data(), this->session_id().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->session_id(), target);
+  }
+
   if (!unknown_fields().empty()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         unknown_fields(), target);
@@ -3039,6 +3137,13 @@ int QueryContextInformation::ByteSize() const {
           this->default_schema_name());
     }
 
+    // optional string session_id = 4;
+    if (has_session_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::StringSize(
+          this->session_id());
+    }
+
   }
   if (!unknown_fields().empty()) {
     total_size +=
@@ -3075,6 +3180,9 @@ void QueryContextInformation::MergeFrom(const QueryContextInformation& from) {
     if (from.has_default_schema_name()) {
       set_default_schema_name(from.default_schema_name());
     }
+    if (from.has_session_id()) {
+      set_session_id(from.session_id());
+    }
   }
   mutable_unknown_fields()->MergeFrom(from.unknown_fields());
 }
@@ -3101,6 +3209,7 @@ void QueryContextInformation::Swap(QueryContextInformation* other) {
     std::swap(query_start_time_, other->query_start_time_);
     std::swap(time_zone_, other->time_zone_);
     std::swap(default_schema_name_, other->default_schema_name_);
+    std::swap(session_id_, other->session_id_);
     std::swap(_has_bits_[0], other->_has_bits_[0]);
     _unknown_fields_.Swap(&other->_unknown_fields_);
     std::swap(_cached_size_, other->_cached_size_);

http://git-wip-us.apache.org/repos/asf/drill/blob/f9f99e08/contrib/native/client/src/protobuf/BitControl.pb.h
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/BitControl.pb.h b/contrib/native/client/src/protobuf/BitControl.pb.h
index 683772a..400c901 100644
--- a/contrib/native/client/src/protobuf/BitControl.pb.h
+++ b/contrib/native/client/src/protobuf/BitControl.pb.h
@@ -67,11 +67,12 @@ enum RpcType {
   RESP_FRAGMENT_STATUS = 12,
   RESP_BIT_STATUS = 13,
   RESP_QUERY_STATUS = 14,
-  RESP_CUSTOM = 18
+  RESP_CUSTOM = 18,
+  SASL_MESSAGE = 19
 };
 bool RpcType_IsValid(int value);
 const RpcType RpcType_MIN = HANDSHAKE;
-const RpcType RpcType_MAX = RESP_CUSTOM;
+const RpcType RpcType_MAX = SASL_MESSAGE;
 const int RpcType_ARRAYSIZE = RpcType_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* RpcType_descriptor();
@@ -163,6 +164,22 @@ class BitControlHandshake : public ::google::protobuf::Message {
   inline ::exec::DrillbitEndpoint* release_endpoint();
   inline void set_allocated_endpoint(::exec::DrillbitEndpoint* endpoint);
 
+  // repeated string authenticationMechanisms = 4;
+  inline int authenticationmechanisms_size() const;
+  inline void clear_authenticationmechanisms();
+  static const int kAuthenticationMechanismsFieldNumber = 4;
+  inline const ::std::string& authenticationmechanisms(int index) const;
+  inline ::std::string* mutable_authenticationmechanisms(int index);
+  inline void set_authenticationmechanisms(int index, const ::std::string& value);
+  inline void set_authenticationmechanisms(int index, const char* value);
+  inline void set_authenticationmechanisms(int index, const char* value, size_t size);
+  inline ::std::string* add_authenticationmechanisms();
+  inline void add_authenticationmechanisms(const ::std::string& value);
+  inline void add_authenticationmechanisms(const char* value);
+  inline void add_authenticationmechanisms(const char* value, size_t size);
+  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& authenticationmechanisms() const;
+  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_authenticationmechanisms();
+
   // @@protoc_insertion_point(class_scope:exec.bit.control.BitControlHandshake)
  private:
   inline void set_has_rpc_version();
@@ -177,9 +194,10 @@ class BitControlHandshake : public ::google::protobuf::Message {
   ::google::protobuf::int32 rpc_version_;
   int channel_;
   ::exec::DrillbitEndpoint* endpoint_;
+  ::google::protobuf::RepeatedPtrField< ::std::string> authenticationmechanisms_;
 
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
+  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
 
   friend void  protobuf_AddDesc_BitControl_2eproto();
   friend void protobuf_AssignDesc_BitControl_2eproto();
@@ -994,6 +1012,18 @@ class QueryContextInformation : public ::google::protobuf::Message {
   inline ::std::string* release_default_schema_name();
   inline void set_allocated_default_schema_name(::std::string* default_schema_name);
 
+  // optional string session_id = 4;
+  inline bool has_session_id() const;
+  inline void clear_session_id();
+  static const int kSessionIdFieldNumber = 4;
+  inline const ::std::string& session_id() const;
+  inline void set_session_id(const ::std::string& value);
+  inline void set_session_id(const char* value);
+  inline void set_session_id(const char* value, size_t size);
+  inline ::std::string* mutable_session_id();
+  inline ::std::string* release_session_id();
+  inline void set_allocated_session_id(::std::string* session_id);
+
   // @@protoc_insertion_point(class_scope:exec.bit.control.QueryContextInformation)
  private:
   inline void set_has_query_start_time();
@@ -1002,15 +1032,18 @@ class QueryContextInformation : public ::google::protobuf::Message {
   inline void clear_has_time_zone();
   inline void set_has_default_schema_name();
   inline void clear_has_default_schema_name();
+  inline void set_has_session_id();
+  inline void clear_has_session_id();
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
   ::google::protobuf::int64 query_start_time_;
   ::std::string* default_schema_name_;
+  ::std::string* session_id_;
   ::google::protobuf::int32 time_zone_;
 
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
+  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
 
   friend void  protobuf_AddDesc_BitControl_2eproto();
   friend void protobuf_AssignDesc_BitControl_2eproto();
@@ -1309,6 +1342,50 @@ inline void BitControlHandshake::set_allocated_endpoint(::exec::DrillbitEndpoint
   }
 }
 
+// repeated string authenticationMechanisms = 4;
+inline int BitControlHandshake::authenticationmechanisms_size() const {
+  return authenticationmechanisms_.size();
+}
+inline void BitControlHandshake::clear_authenticationmechanisms() {
+  authenticationmechanisms_.Clear();
+}
+inline const ::std::string& BitControlHandshake::authenticationmechanisms(int index) const {
+  return authenticationmechanisms_.Get(index);
+}
+inline ::std::string* BitControlHandshake::mutable_authenticationmechanisms(int index) {
+  return authenticationmechanisms_.Mutable(index);
+}
+inline void BitControlHandshake::set_authenticationmechanisms(int index, const ::std::string& value) {
+  authenticationmechanisms_.Mutable(index)->assign(value);
+}
+inline void BitControlHandshake::set_authenticationmechanisms(int index, const char* value) {
+  authenticationmechanisms_.Mutable(index)->assign(value);
+}
+inline void BitControlHandshake::set_authenticationmechanisms(int index, const char* value, size_t size) {
+  authenticationmechanisms_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* BitControlHandshake::add_authenticationmechanisms() {
+  return authenticationmechanisms_.Add();
+}
+inline void BitControlHandshake::add_authenticationmechanisms(const ::std::string& value) {
+  authenticationmechanisms_.Add()->assign(value);
+}
+inline void BitControlHandshake::add_authenticationmechanisms(const char* value) {
+  authenticationmechanisms_.Add()->assign(value);
+}
+inline void BitControlHandshake::add_authenticationmechanisms(const char* value, size_t size) {
+  authenticationmechanisms_.Add()->assign(reinterpret_cast<const char*>(value), size);
+}
+inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
+BitControlHandshake::authenticationmechanisms() const {
+  return authenticationmechanisms_;
+}
+inline ::google::protobuf::RepeatedPtrField< ::std::string>*
+BitControlHandshake::mutable_authenticationmechanisms() {
+  return &authenticationmechanisms_;
+}
+
 // -------------------------------------------------------------------
 
 // BitStatus
@@ -2269,6 +2346,76 @@ inline void QueryContextInformation::set_allocated_default_schema_name(::std::st
   }
 }
 
+// optional string session_id = 4;
+inline bool QueryContextInformation::has_session_id() const {
+  return (_has_bits_[0] & 0x00000008u) != 0;
+}
+inline void QueryContextInformation::set_has_session_id() {
+  _has_bits_[0] |= 0x00000008u;
+}
+inline void QueryContextInformation::clear_has_session_id() {
+  _has_bits_[0] &= ~0x00000008u;
+}
+inline void QueryContextInformation::clear_session_id() {
+  if (session_id_ != &::google::protobuf::internal::kEmptyString) {
+    session_id_->clear();
+  }
+  clear_has_session_id();
+}
+inline const ::std::string& QueryContextInformation::session_id() const {
+  return *session_id_;
+}
+inline void QueryContextInformation::set_session_id(const ::std::string& value) {
+  set_has_session_id();
+  if (session_id_ == &::google::protobuf::internal::kEmptyString) {
+    session_id_ = new ::std::string;
+  }
+  session_id_->assign(value);
+}
+inline void QueryContextInformation::set_session_id(const char* value) {
+  set_has_session_id();
+  if (session_id_ == &::google::protobuf::internal::kEmptyString) {
+    session_id_ = new ::std::string;
+  }
+  session_id_->assign(value);
+}
+inline void QueryContextInformation::set_session_id(const char* value, size_t size) {
+  set_has_session_id();
+  if (session_id_ == &::google::protobuf::internal::kEmptyString) {
+    session_id_ = new ::std::string;
+  }
+  session_id_->assign(reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* QueryContextInformation::mutable_session_id() {
+  set_has_session_id();
+  if (session_id_ == &::google::protobuf::internal::kEmptyString) {
+    session_id_ = new ::std::string;
+  }
+  return session_id_;
+}
+inline ::std::string* QueryContextInformation::release_session_id() {
+  clear_has_session_id();
+  if (session_id_ == &::google::protobuf::internal::kEmptyString) {
+    return NULL;
+  } else {
+    ::std::string* temp = session_id_;
+    session_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    return temp;
+  }
+}
+inline void QueryContextInformation::set_allocated_session_id(::std::string* session_id) {
+  if (session_id_ != &::google::protobuf::internal::kEmptyString) {
+    delete session_id_;
+  }
+  if (session_id) {
+    set_has_session_id();
+    session_id_ = session_id;
+  } else {
+    clear_has_session_id();
+    session_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+  }
+}
+
 // -------------------------------------------------------------------
 
 // WorkQueueStatus

http://git-wip-us.apache.org/repos/asf/drill/blob/f9f99e08/contrib/native/client/src/protobuf/BitData.pb.cc
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/BitData.pb.cc b/contrib/native/client/src/protobuf/BitData.pb.cc
index a6d1264..6f6e9db 100644
--- a/contrib/native/client/src/protobuf/BitData.pb.cc
+++ b/contrib/native/client/src/protobuf/BitData.pb.cc
@@ -59,8 +59,9 @@ void protobuf_AssignDesc_BitData_2eproto() {
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(BitClientHandshake));
   BitServerHandshake_descriptor_ = file->message_type(1);
-  static const int BitServerHandshake_offsets_[1] = {
+  static const int BitServerHandshake_offsets_[2] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitServerHandshake, rpc_version_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitServerHandshake, authenticationmechanisms_),
   };
   BitServerHandshake_reflection_ =
     new ::google::protobuf::internal::GeneratedMessageReflection(
@@ -140,18 +141,19 @@ void protobuf_AddDesc_BitData_2eproto() {
     "nProtos.proto\032\022Coordination.proto\032\023UserB"
     "itShared.proto\"]\n\022BitClientHandshake\022\023\n\013"
     "rpc_version\030\001 \001(\005\0222\n\007channel\030\002 \001(\0162\027.exe"
-    "c.shared.RpcChannel:\010BIT_DATA\")\n\022BitServ"
-    "erHandshake\022\023\n\013rpc_version\030\001 \001(\005\"\214\002\n\023Fra"
-    "gmentRecordBatch\022&\n\010query_id\030\001 \001(\0132\024.exe"
-    "c.shared.QueryId\022#\n\033receiving_major_frag"
-    "ment_id\030\002 \001(\005\022#\n\033receiving_minor_fragmen"
-    "t_id\030\003 \003(\005\022!\n\031sending_major_fragment_id\030"
-    "\004 \001(\005\022!\n\031sending_minor_fragment_id\030\005 \001(\005"
-    "\022(\n\003def\030\006 \001(\0132\033.exec.shared.RecordBatchD"
-    "ef\022\023\n\013isLastBatch\030\007 \001(\010*D\n\007RpcType\022\r\n\tHA"
-    "NDSHAKE\020\000\022\007\n\003ACK\020\001\022\013\n\007GOODBYE\020\002\022\024\n\020REQ_R"
-    "ECORD_BATCH\020\003B(\n\033org.apache.drill.exec.p"
-    "rotoB\007BitDataH\001", 615);
+    "c.shared.RpcChannel:\010BIT_DATA\"K\n\022BitServ"
+    "erHandshake\022\023\n\013rpc_version\030\001 \001(\005\022 \n\030auth"
+    "enticationMechanisms\030\002 \003(\t\"\214\002\n\023FragmentR"
+    "ecordBatch\022&\n\010query_id\030\001 \001(\0132\024.exec.shar"
+    "ed.QueryId\022#\n\033receiving_major_fragment_i"
+    "d\030\002 \001(\005\022#\n\033receiving_minor_fragment_id\030\003"
+    " \003(\005\022!\n\031sending_major_fragment_id\030\004 \001(\005\022"
+    "!\n\031sending_minor_fragment_id\030\005 \001(\005\022(\n\003de"
+    "f\030\006 \001(\0132\033.exec.shared.RecordBatchDef\022\023\n\013"
+    "isLastBatch\030\007 \001(\010*V\n\007RpcType\022\r\n\tHANDSHAK"
+    "E\020\000\022\007\n\003ACK\020\001\022\013\n\007GOODBYE\020\002\022\024\n\020REQ_RECORD_"
+    "BATCH\020\003\022\020\n\014SASL_MESSAGE\020\004B(\n\033org.apache."
+    "drill.exec.protoB\007BitDataH\001", 667);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "BitData.proto", &protobuf_RegisterTypes);
   BitClientHandshake::default_instance_ = new BitClientHandshake();
@@ -179,6 +181,7 @@ bool RpcType_IsValid(int value) {
     case 1:
     case 2:
     case 3:
+    case 4:
       return true;
     default:
       return false;
@@ -444,6 +447,7 @@ void BitClientHandshake::Swap(BitClientHandshake* other) {
 
 #ifndef _MSC_VER
 const int BitServerHandshake::kRpcVersionFieldNumber;
+const int BitServerHandshake::kAuthenticationMechanismsFieldNumber;
 #endif  // !_MSC_VER
 
 BitServerHandshake::BitServerHandshake()
@@ -500,6 +504,7 @@ void BitServerHandshake::Clear() {
   if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
     rpc_version_ = 0;
   }
+  authenticationmechanisms_.Clear();
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   mutable_unknown_fields()->Clear();
 }
@@ -521,6 +526,25 @@ bool BitServerHandshake::MergePartialFromCodedStream(
         } else {
           goto handle_uninterpreted;
         }
+        if (input->ExpectTag(18)) goto parse_authenticationMechanisms;
+        break;
+      }
+
+      // repeated string authenticationMechanisms = 2;
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_authenticationMechanisms:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_authenticationmechanisms()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+            this->authenticationmechanisms(this->authenticationmechanisms_size() - 1).data(),
+            this->authenticationmechanisms(this->authenticationmechanisms_size() - 1).length(),
+            ::google::protobuf::internal::WireFormat::PARSE);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(18)) goto parse_authenticationMechanisms;
         if (input->ExpectAtEnd()) return true;
         break;
       }
@@ -548,6 +572,15 @@ void BitServerHandshake::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->rpc_version(), output);
   }
 
+  // repeated string authenticationMechanisms = 2;
+  for (int i = 0; i < this->authenticationmechanisms_size(); i++) {
+  ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+    this->authenticationmechanisms(i).data(), this->authenticationmechanisms(i).length(),
+    ::google::protobuf::internal::WireFormat::SERIALIZE);
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      2, this->authenticationmechanisms(i), output);
+  }
+
   if (!unknown_fields().empty()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         unknown_fields(), output);
@@ -561,6 +594,15 @@ void BitServerHandshake::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->rpc_version(), target);
   }
 
+  // repeated string authenticationMechanisms = 2;
+  for (int i = 0; i < this->authenticationmechanisms_size(); i++) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->authenticationmechanisms(i).data(), this->authenticationmechanisms(i).length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(2, this->authenticationmechanisms(i), target);
+  }
+
   if (!unknown_fields().empty()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         unknown_fields(), target);
@@ -580,6 +622,13 @@ int BitServerHandshake::ByteSize() const {
     }
 
   }
+  // repeated string authenticationMechanisms = 2;
+  total_size += 1 * this->authenticationmechanisms_size();
+  for (int i = 0; i < this->authenticationmechanisms_size(); i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->authenticationmechanisms(i));
+  }
+
   if (!unknown_fields().empty()) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
@@ -605,6 +654,7 @@ void BitServerHandshake::MergeFrom(const ::google::protobuf::Message& from) {
 
 void BitServerHandshake::MergeFrom(const BitServerHandshake& from) {
   GOOGLE_CHECK_NE(&from, this);
+  authenticationmechanisms_.MergeFrom(from.authenticationmechanisms_);
   if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
     if (from.has_rpc_version()) {
       set_rpc_version(from.rpc_version());
@@ -633,6 +683,7 @@ bool BitServerHandshake::IsInitialized() const {
 void BitServerHandshake::Swap(BitServerHandshake* other) {
   if (other != this) {
     std::swap(rpc_version_, other->rpc_version_);
+    authenticationmechanisms_.Swap(&other->authenticationmechanisms_);
     std::swap(_has_bits_[0], other->_has_bits_[0]);
     _unknown_fields_.Swap(&other->_unknown_fields_);
     std::swap(_cached_size_, other->_cached_size_);

http://git-wip-us.apache.org/repos/asf/drill/blob/f9f99e08/contrib/native/client/src/protobuf/BitData.pb.h
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/BitData.pb.h b/contrib/native/client/src/protobuf/BitData.pb.h
index c743612..fa490c9 100644
--- a/contrib/native/client/src/protobuf/BitData.pb.h
+++ b/contrib/native/client/src/protobuf/BitData.pb.h
@@ -47,11 +47,12 @@ enum RpcType {
   HANDSHAKE = 0,
   ACK = 1,
   GOODBYE = 2,
-  REQ_RECORD_BATCH = 3
+  REQ_RECORD_BATCH = 3,
+  SASL_MESSAGE = 4
 };
 bool RpcType_IsValid(int value);
 const RpcType RpcType_MIN = HANDSHAKE;
-const RpcType RpcType_MAX = REQ_RECORD_BATCH;
+const RpcType RpcType_MAX = SASL_MESSAGE;
 const int RpcType_ARRAYSIZE = RpcType_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* RpcType_descriptor();
@@ -219,6 +220,22 @@ class BitServerHandshake : public ::google::protobuf::Message {
   inline ::google::protobuf::int32 rpc_version() const;
   inline void set_rpc_version(::google::protobuf::int32 value);
 
+  // repeated string authenticationMechanisms = 2;
+  inline int authenticationmechanisms_size() const;
+  inline void clear_authenticationmechanisms();
+  static const int kAuthenticationMechanismsFieldNumber = 2;
+  inline const ::std::string& authenticationmechanisms(int index) const;
+  inline ::std::string* mutable_authenticationmechanisms(int index);
+  inline void set_authenticationmechanisms(int index, const ::std::string& value);
+  inline void set_authenticationmechanisms(int index, const char* value);
+  inline void set_authenticationmechanisms(int index, const char* value, size_t size);
+  inline ::std::string* add_authenticationmechanisms();
+  inline void add_authenticationmechanisms(const ::std::string& value);
+  inline void add_authenticationmechanisms(const char* value);
+  inline void add_authenticationmechanisms(const char* value, size_t size);
+  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& authenticationmechanisms() const;
+  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_authenticationmechanisms();
+
   // @@protoc_insertion_point(class_scope:exec.bit.data.BitServerHandshake)
  private:
   inline void set_has_rpc_version();
@@ -226,10 +243,11 @@ class BitServerHandshake : public ::google::protobuf::Message {
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
+  ::google::protobuf::RepeatedPtrField< ::std::string> authenticationmechanisms_;
   ::google::protobuf::int32 rpc_version_;
 
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
+  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
 
   friend void  protobuf_AddDesc_BitData_2eproto();
   friend void protobuf_AssignDesc_BitData_2eproto();
@@ -465,6 +483,50 @@ inline void BitServerHandshake::set_rpc_version(::google::protobuf::int32 value)
   rpc_version_ = value;
 }
 
+// repeated string authenticationMechanisms = 2;
+inline int BitServerHandshake::authenticationmechanisms_size() const {
+  return authenticationmechanisms_.size();
+}
+inline void BitServerHandshake::clear_authenticationmechanisms() {
+  authenticationmechanisms_.Clear();
+}
+inline const ::std::string& BitServerHandshake::authenticationmechanisms(int index) const {
+  return authenticationmechanisms_.Get(index);
+}
+inline ::std::string* BitServerHandshake::mutable_authenticationmechanisms(int index) {
+  return authenticationmechanisms_.Mutable(index);
+}
+inline void BitServerHandshake::set_authenticationmechanisms(int index, const ::std::string& value) {
+  authenticationmechanisms_.Mutable(index)->assign(value);
+}
+inline void BitServerHandshake::set_authenticationmechanisms(int index, const char* value) {
+  authenticationmechanisms_.Mutable(index)->assign(value);
+}
+inline void BitServerHandshake::set_authenticationmechanisms(int index, const char* value, size_t size) {
+  authenticationmechanisms_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* BitServerHandshake::add_authenticationmechanisms() {
+  return authenticationmechanisms_.Add();
+}
+inline void BitServerHandshake::add_authenticationmechanisms(const ::std::string& value) {
+  authenticationmechanisms_.Add()->assign(value);
+}
+inline void BitServerHandshake::add_authenticationmechanisms(const char* value) {
+  authenticationmechanisms_.Add()->assign(value);
+}
+inline void BitServerHandshake::add_authenticationmechanisms(const char* value, size_t size) {
+  authenticationmechanisms_.Add()->assign(reinterpret_cast<const char*>(value), size);
+}
+inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
+BitServerHandshake::authenticationmechanisms() const {
+  return authenticationmechanisms_;
+}
+inline ::google::protobuf::RepeatedPtrField< ::std::string>*
+BitServerHandshake::mutable_authenticationmechanisms() {
+  return &authenticationmechanisms_;
+}
+
 // -------------------------------------------------------------------
 
 // FragmentRecordBatch

http://git-wip-us.apache.org/repos/asf/drill/blob/f9f99e08/contrib/native/client/src/protobuf/Coordination.pb.cc
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/Coordination.pb.cc b/contrib/native/client/src/protobuf/Coordination.pb.cc
index dd6b02f..923481b 100644
--- a/contrib/native/client/src/protobuf/Coordination.pb.cc
+++ b/contrib/native/client/src/protobuf/Coordination.pb.cc
@@ -40,12 +40,13 @@ void protobuf_AssignDesc_Coordination_2eproto() {
       "Coordination.proto");
   GOOGLE_CHECK(file != NULL);
   DrillbitEndpoint_descriptor_ = file->message_type(0);
-  static const int DrillbitEndpoint_offsets_[5] = {
+  static const int DrillbitEndpoint_offsets_[6] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, address_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, user_port_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, control_port_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, data_port_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, roles_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, version_),
   };
   DrillbitEndpoint_reflection_ =
     new ::google::protobuf::internal::GeneratedMessageReflection(
@@ -132,18 +133,19 @@ void protobuf_AddDesc_Coordination_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-    "\n\022Coordination.proto\022\004exec\"{\n\020DrillbitEn"
-    "dpoint\022\017\n\007address\030\001 \001(\t\022\021\n\tuser_port\030\002 \001"
-    "(\005\022\024\n\014control_port\030\003 \001(\005\022\021\n\tdata_port\030\004 "
-    "\001(\005\022\032\n\005roles\030\005 \001(\0132\013.exec.Roles\"i\n\024Drill"
-    "ServiceInstance\022\n\n\002id\030\001 \001(\t\022\033\n\023registrat"
-    "ionTimeUTC\030\002 \001(\003\022(\n\010endpoint\030\003 \001(\0132\026.exe"
-    "c.DrillbitEndpoint\"\227\001\n\005Roles\022\027\n\tsql_quer"
-    "y\030\001 \001(\010:\004true\022\032\n\014logical_plan\030\002 \001(\010:\004tru"
-    "e\022\033\n\rphysical_plan\030\003 \001(\010:\004true\022\033\n\rjava_e"
-    "xecutor\030\004 \001(\010:\004true\022\037\n\021distributed_cache"
-    "\030\005 \001(\010:\004trueB3\n\033org.apache.drill.exec.pr"
-    "otoB\022CoordinationProtosH\001", 465);
+    "\n\022Coordination.proto\022\004exec\"\214\001\n\020DrillbitE"
+    "ndpoint\022\017\n\007address\030\001 \001(\t\022\021\n\tuser_port\030\002 "
+    "\001(\005\022\024\n\014control_port\030\003 \001(\005\022\021\n\tdata_port\030\004"
+    " \001(\005\022\032\n\005roles\030\005 \001(\0132\013.exec.Roles\022\017\n\007vers"
+    "ion\030\006 \001(\t\"i\n\024DrillServiceInstance\022\n\n\002id\030"
+    "\001 \001(\t\022\033\n\023registrationTimeUTC\030\002 \001(\003\022(\n\010en"
+    "dpoint\030\003 \001(\0132\026.exec.DrillbitEndpoint\"\227\001\n"
+    "\005Roles\022\027\n\tsql_query\030\001 \001(\010:\004true\022\032\n\014logic"
+    "al_plan\030\002 \001(\010:\004true\022\033\n\rphysical_plan\030\003 \001"
+    "(\010:\004true\022\033\n\rjava_executor\030\004 \001(\010:\004true\022\037\n"
+    "\021distributed_cache\030\005 \001(\010:\004trueB3\n\033org.ap"
+    "ache.drill.exec.protoB\022CoordinationProto"
+    "sH\001", 483);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "Coordination.proto", &protobuf_RegisterTypes);
   DrillbitEndpoint::default_instance_ = new DrillbitEndpoint();
@@ -170,6 +172,7 @@ const int DrillbitEndpoint::kUserPortFieldNumber;
 const int DrillbitEndpoint::kControlPortFieldNumber;
 const int DrillbitEndpoint::kDataPortFieldNumber;
 const int DrillbitEndpoint::kRolesFieldNumber;
+const int DrillbitEndpoint::kVersionFieldNumber;
 #endif  // !_MSC_VER
 
 DrillbitEndpoint::DrillbitEndpoint()
@@ -194,6 +197,7 @@ void DrillbitEndpoint::SharedCtor() {
   control_port_ = 0;
   data_port_ = 0;
   roles_ = NULL;
+  version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -205,6 +209,9 @@ void DrillbitEndpoint::SharedDtor() {
   if (address_ != &::google::protobuf::internal::kEmptyString) {
     delete address_;
   }
+  if (version_ != &::google::protobuf::internal::kEmptyString) {
+    delete version_;
+  }
   if (this != default_instance_) {
     delete roles_;
   }
@@ -244,6 +251,11 @@ void DrillbitEndpoint::Clear() {
     if (has_roles()) {
       if (roles_ != NULL) roles_->::exec::Roles::Clear();
     }
+    if (has_version()) {
+      if (version_ != &::google::protobuf::internal::kEmptyString) {
+        version_->clear();
+      }
+    }
   }
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   mutable_unknown_fields()->Clear();
@@ -329,6 +341,23 @@ bool DrillbitEndpoint::MergePartialFromCodedStream(
         } else {
           goto handle_uninterpreted;
         }
+        if (input->ExpectTag(50)) goto parse_version;
+        break;
+      }
+
+      // optional string version = 6;
+      case 6: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_version:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_version()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+            this->version().data(), this->version().length(),
+            ::google::protobuf::internal::WireFormat::PARSE);
+        } else {
+          goto handle_uninterpreted;
+        }
         if (input->ExpectAtEnd()) return true;
         break;
       }
@@ -381,6 +410,15 @@ void DrillbitEndpoint::SerializeWithCachedSizes(
       5, this->roles(), output);
   }
 
+  // optional string version = 6;
+  if (has_version()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->version().data(), this->version().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      6, this->version(), output);
+  }
+
   if (!unknown_fields().empty()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         unknown_fields(), output);
@@ -421,6 +459,16 @@ void DrillbitEndpoint::SerializeWithCachedSizes(
         5, this->roles(), target);
   }
 
+  // optional string version = 6;
+  if (has_version()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->version().data(), this->version().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        6, this->version(), target);
+  }
+
   if (!unknown_fields().empty()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         unknown_fields(), target);
@@ -467,6 +515,13 @@ int DrillbitEndpoint::ByteSize() const {
           this->roles());
     }
 
+    // optional string version = 6;
+    if (has_version()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::StringSize(
+          this->version());
+    }
+
   }
   if (!unknown_fields().empty()) {
     total_size +=
@@ -509,6 +564,9 @@ void DrillbitEndpoint::MergeFrom(const DrillbitEndpoint& from) {
     if (from.has_roles()) {
       mutable_roles()->::exec::Roles::MergeFrom(from.roles());
     }
+    if (from.has_version()) {
+      set_version(from.version());
+    }
   }
   mutable_unknown_fields()->MergeFrom(from.unknown_fields());
 }
@@ -537,6 +595,7 @@ void DrillbitEndpoint::Swap(DrillbitEndpoint* other) {
     std::swap(control_port_, other->control_port_);
     std::swap(data_port_, other->data_port_);
     std::swap(roles_, other->roles_);
+    std::swap(version_, other->version_);
     std::swap(_has_bits_[0], other->_has_bits_[0]);
     _unknown_fields_.Swap(&other->_unknown_fields_);
     std::swap(_cached_size_, other->_cached_size_);

http://git-wip-us.apache.org/repos/asf/drill/blob/f9f99e08/contrib/native/client/src/protobuf/Coordination.pb.h
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/Coordination.pb.h b/contrib/native/client/src/protobuf/Coordination.pb.h
index bea819a..14d6d28 100644
--- a/contrib/native/client/src/protobuf/Coordination.pb.h
+++ b/contrib/native/client/src/protobuf/Coordination.pb.h
@@ -135,6 +135,18 @@ class DrillbitEndpoint : public ::google::protobuf::Message {
   inline ::exec::Roles* release_roles();
   inline void set_allocated_roles(::exec::Roles* roles);
 
+  // optional string version = 6;
+  inline bool has_version() const;
+  inline void clear_version();
+  static const int kVersionFieldNumber = 6;
+  inline const ::std::string& version() const;
+  inline void set_version(const ::std::string& value);
+  inline void set_version(const char* value);
+  inline void set_version(const char* value, size_t size);
+  inline ::std::string* mutable_version();
+  inline ::std::string* release_version();
+  inline void set_allocated_version(::std::string* version);
+
   // @@protoc_insertion_point(class_scope:exec.DrillbitEndpoint)
  private:
   inline void set_has_address();
@@ -147,6 +159,8 @@ class DrillbitEndpoint : public ::google::protobuf::Message {
   inline void clear_has_data_port();
   inline void set_has_roles();
   inline void clear_has_roles();
+  inline void set_has_version();
+  inline void clear_has_version();
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
@@ -154,10 +168,11 @@ class DrillbitEndpoint : public ::google::protobuf::Message {
   ::google::protobuf::int32 user_port_;
   ::google::protobuf::int32 control_port_;
   ::exec::Roles* roles_;
+  ::std::string* version_;
   ::google::protobuf::int32 data_port_;
 
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
+  ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32];
 
   friend void  protobuf_AddDesc_Coordination_2eproto();
   friend void protobuf_AssignDesc_Coordination_2eproto();
@@ -578,6 +593,76 @@ inline void DrillbitEndpoint::set_allocated_roles(::exec::Roles* roles) {
   }
 }
 
+// optional string version = 6;
+inline bool DrillbitEndpoint::has_version() const {
+  return (_has_bits_[0] & 0x00000020u) != 0;
+}
+inline void DrillbitEndpoint::set_has_version() {
+  _has_bits_[0] |= 0x00000020u;
+}
+inline void DrillbitEndpoint::clear_has_version() {
+  _has_bits_[0] &= ~0x00000020u;
+}
+inline void DrillbitEndpoint::clear_version() {
+  if (version_ != &::google::protobuf::internal::kEmptyString) {
+    version_->clear();
+  }
+  clear_has_version();
+}
+inline const ::std::string& DrillbitEndpoint::version() const {
+  return *version_;
+}
+inline void DrillbitEndpoint::set_version(const ::std::string& value) {
+  set_has_version();
+  if (version_ == &::google::protobuf::internal::kEmptyString) {
+    version_ = new ::std::string;
+  }
+  version_->assign(value);
+}
+inline void DrillbitEndpoint::set_version(const char* value) {
+  set_has_version();
+  if (version_ == &::google::protobuf::internal::kEmptyString) {
+    version_ = new ::std::string;
+  }
+  version_->assign(value);
+}
+inline void DrillbitEndpoint::set_version(const char* value, size_t size) {
+  set_has_version();
+  if (version_ == &::google::protobuf::internal::kEmptyString) {
+    version_ = new ::std::string;
+  }
+  version_->assign(reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* DrillbitEndpoint::mutable_version() {
+  set_has_version();
+  if (version_ == &::google::protobuf::internal::kEmptyString) {
+    version_ = new ::std::string;
+  }
+  return version_;
+}
+inline ::std::string* DrillbitEndpoint::release_version() {
+  clear_has_version();
+  if (version_ == &::google::protobuf::internal::kEmptyString) {
+    return NULL;
+  } else {
+    ::std::string* temp = version_;
+    version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    return temp;
+  }
+}
+inline void DrillbitEndpoint::set_allocated_version(::std::string* version) {
+  if (version_ != &::google::protobuf::internal::kEmptyString) {
+    delete version_;
+  }
+  if (version) {
+    set_has_version();
+    version_ = version;
+  } else {
+    clear_has_version();
+    version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+  }
+}
+
 // -------------------------------------------------------------------
 
 // DrillServiceInstance

http://git-wip-us.apache.org/repos/asf/drill/blob/f9f99e08/contrib/native/client/src/protobuf/User.pb.cc
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/User.pb.cc b/contrib/native/client/src/protobuf/User.pb.cc
index 4b0bf10..a292b38 100644
--- a/contrib/native/client/src/protobuf/User.pb.cc
+++ b/contrib/native/client/src/protobuf/User.pb.cc
@@ -103,6 +103,7 @@ const ::google::protobuf::Descriptor* RunQuery_descriptor_ = NULL;
 const ::google::protobuf::internal::GeneratedMessageReflection*
   RunQuery_reflection_ = NULL;
 const ::google::protobuf::EnumDescriptor* RpcType_descriptor_ = NULL;
+const ::google::protobuf::EnumDescriptor* SaslSupport_descriptor_ = NULL;
 const ::google::protobuf::EnumDescriptor* QueryResultsMode_descriptor_ = NULL;
 const ::google::protobuf::EnumDescriptor* HandshakeStatus_descriptor_ = NULL;
 const ::google::protobuf::EnumDescriptor* RequestStatus_descriptor_ = NULL;
@@ -170,7 +171,7 @@ void protobuf_AssignDesc_User_2eproto() {
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(RpcEndpointInfos));
   UserToBitHandshake_descriptor_ = file->message_type(3);
-  static const int UserToBitHandshake_offsets_[8] = {
+  static const int UserToBitHandshake_offsets_[9] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserToBitHandshake, channel_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserToBitHandshake, support_listening_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserToBitHandshake, rpc_version_),
@@ -179,6 +180,7 @@ void protobuf_AssignDesc_User_2eproto() {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserToBitHandshake, support_complex_types_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserToBitHandshake, support_timeout_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserToBitHandshake, client_infos_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserToBitHandshake, sasl_support_),
   };
   UserToBitHandshake_reflection_ =
     new ::google::protobuf::internal::GeneratedMessageReflection(
@@ -243,12 +245,13 @@ void protobuf_AssignDesc_User_2eproto() {
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(QueryPlanFragments));
   BitToUserHandshake_descriptor_ = file->message_type(7);
-  static const int BitToUserHandshake_offsets_[5] = {
+  static const int BitToUserHandshake_offsets_[6] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitToUserHandshake, rpc_version_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitToUserHandshake, status_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitToUserHandshake, errorid_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitToUserHandshake, errormessage_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitToUserHandshake, server_infos_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(BitToUserHandshake, authenticationmechanisms_),
   };
   BitToUserHandshake_reflection_ =
     new ::google::protobuf::internal::GeneratedMessageReflection(
@@ -613,11 +616,12 @@ void protobuf_AssignDesc_User_2eproto() {
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(RunQuery));
   RpcType_descriptor_ = file->enum_type(0);
-  QueryResultsMode_descriptor_ = file->enum_type(1);
-  HandshakeStatus_descriptor_ = file->enum_type(2);
-  RequestStatus_descriptor_ = file->enum_type(3);
-  ColumnSearchability_descriptor_ = file->enum_type(4);
-  ColumnUpdatability_descriptor_ = file->enum_type(5);
+  SaslSupport_descriptor_ = file->enum_type(1);
+  QueryResultsMode_descriptor_ = file->enum_type(2);
+  HandshakeStatus_descriptor_ = file->enum_type(3);
+  RequestStatus_descriptor_ = file->enum_type(4);
+  ColumnSearchability_descriptor_ = file->enum_type(5);
+  ColumnUpdatability_descriptor_ = file->enum_type(6);
 }
 
 namespace {
@@ -765,7 +769,7 @@ void protobuf_AddDesc_User_2eproto() {
     "ec.user.Property\"\210\001\n\020RpcEndpointInfos\022\014\n"
     "\004name\030\001 \001(\t\022\017\n\007version\030\002 \001(\t\022\024\n\014majorVer"
     "sion\030\003 \001(\r\022\024\n\014minorVersion\030\004 \001(\r\022\024\n\014patc"
-    "hVersion\030\005 \001(\r\022\023\n\013application\030\006 \001(\t\"\317\002\n\022"
+    "hVersion\030\005 \001(\r\022\023\n\013application\030\006 \001(\t\"\375\002\n\022"
     "UserToBitHandshake\022.\n\007channel\030\001 \001(\0162\027.ex"
     "ec.shared.RpcChannel:\004USER\022\031\n\021support_li"
     "stening\030\002 \001(\010\022\023\n\013rpc_version\030\003 \001(\005\0221\n\013cr"
@@ -774,21 +778,23 @@ void protobuf_AddDesc_User_2eproto() {
     "erProperties\022$\n\025support_complex_types\030\006 "
     "\001(\010:\005false\022\036\n\017support_timeout\030\007 \001(\010:\005fal"
     "se\0221\n\014client_infos\030\010 \001(\0132\033.exec.user.Rpc"
-    "EndpointInfos\"S\n\016RequestResults\022&\n\010query"
-    "_id\030\001 \001(\0132\024.exec.shared.QueryId\022\031\n\021maxim"
-    "um_responses\030\002 \001(\005\"g\n\025GetQueryPlanFragme"
-    "nts\022\r\n\005query\030\001 \002(\t\022$\n\004type\030\002 \001(\0162\026.exec."
-    "shared.QueryType\022\031\n\nsplit_plan\030\003 \001(\010:\005fa"
-    "lse\"\316\001\n\022QueryPlanFragments\0223\n\006status\030\001 \002"
-    "(\0162#.exec.shared.QueryResult.QueryState\022"
-    "&\n\010query_id\030\002 \001(\0132\024.exec.shared.QueryId\022"
-    "1\n\tfragments\030\003 \003(\0132\036.exec.bit.control.Pl"
-    "anFragment\022(\n\005error\030\004 \001(\0132\031.exec.shared."
-    "DrillPBError\"\257\001\n\022BitToUserHandshake\022\023\n\013r"
-    "pc_version\030\002 \001(\005\022*\n\006status\030\003 \001(\0162\032.exec."
-    "user.HandshakeStatus\022\017\n\007errorId\030\004 \001(\t\022\024\n"
-    "\014errorMessage\030\005 \001(\t\0221\n\014server_infos\030\006 \001("
-    "\0132\033.exec.user.RpcEndpointInfos\"-\n\nLikeFi"
+    "EndpointInfos\022,\n\014sasl_support\030\t \001(\0162\026.ex"
+    "ec.user.SaslSupport\"S\n\016RequestResults\022&\n"
+    "\010query_id\030\001 \001(\0132\024.exec.shared.QueryId\022\031\n"
+    "\021maximum_responses\030\002 \001(\005\"g\n\025GetQueryPlan"
+    "Fragments\022\r\n\005query\030\001 \002(\t\022$\n\004type\030\002 \001(\0162\026"
+    ".exec.shared.QueryType\022\031\n\nsplit_plan\030\003 \001"
+    "(\010:\005false\"\316\001\n\022QueryPlanFragments\0223\n\006stat"
+    "us\030\001 \002(\0162#.exec.shared.QueryResult.Query"
+    "State\022&\n\010query_id\030\002 \001(\0132\024.exec.shared.Qu"
+    "eryId\0221\n\tfragments\030\003 \003(\0132\036.exec.bit.cont"
+    "rol.PlanFragment\022(\n\005error\030\004 \001(\0132\031.exec.s"
+    "hared.DrillPBError\"\321\001\n\022BitToUserHandshak"
+    "e\022\023\n\013rpc_version\030\002 \001(\005\022*\n\006status\030\003 \001(\0162\032"
+    ".exec.user.HandshakeStatus\022\017\n\007errorId\030\004 "
+    "\001(\t\022\024\n\014errorMessage\030\005 \001(\t\0221\n\014server_info"
+    "s\030\006 \001(\0132\033.exec.user.RpcEndpointInfos\022 \n\030"
+    "authenticationMechanisms\030\007 \003(\t\"-\n\nLikeFi"
     "lter\022\017\n\007pattern\030\001 \001(\t\022\016\n\006escape\030\002 \001(\t\"D\n"
     "\016GetCatalogsReq\0222\n\023catalog_name_filter\030\001"
     " \001(\0132\025.exec.user.LikeFilter\"M\n\017CatalogMe"
@@ -865,7 +871,7 @@ void protobuf_AddDesc_User_2eproto() {
     "\014\n\004plan\030\003 \001(\t\0221\n\tfragments\030\004 \003(\0132\036.exec."
     "bit.control.PlanFragment\022E\n\031prepared_sta"
     "tement_handle\030\005 \001(\0132\".exec.user.Prepared"
-    "StatementHandle*\310\003\n\007RpcType\022\r\n\tHANDSHAKE"
+    "StatementHandle*\332\003\n\007RpcType\022\r\n\tHANDSHAKE"
     "\020\000\022\007\n\003ACK\020\001\022\013\n\007GOODBYE\020\002\022\r\n\tRUN_QUERY\020\003\022"
     "\020\n\014CANCEL_QUERY\020\004\022\023\n\017REQUEST_RESULTS\020\005\022\027"
     "\n\023RESUME_PAUSED_QUERY\020\013\022\034\n\030GET_QUERY_PLA"
@@ -876,18 +882,20 @@ void protobuf_AddDesc_User_2eproto() {
     "_FRAGMENTS\020\r\022\014\n\010CATALOGS\020\022\022\013\n\007SCHEMAS\020\023\022"
     "\n\n\006TABLES\020\024\022\013\n\007COLUMNS\020\025\022\026\n\022PREPARED_STA"
     "TEMENT\020\027\022\026\n\022REQ_META_FUNCTIONS\020\010\022\026\n\022RESP"
-    "_FUNCTION_LIST\020\t\022\020\n\014QUERY_RESULT\020\n*#\n\020Qu"
-    "eryResultsMode\022\017\n\013STREAM_FULL\020\001*^\n\017Hands"
-    "hakeStatus\022\013\n\007SUCCESS\020\001\022\030\n\024RPC_VERSION_M"
-    "ISMATCH\020\002\022\017\n\013AUTH_FAILED\020\003\022\023\n\017UNKNOWN_FA"
-    "ILURE\020\004*D\n\rRequestStatus\022\022\n\016UNKNOWN_STAT"
-    "US\020\000\022\006\n\002OK\020\001\022\n\n\006FAILED\020\002\022\013\n\007TIMEOUT\020\003*Y\n"
-    "\023ColumnSearchability\022\031\n\025UNKNOWN_SEARCHAB"
-    "ILITY\020\000\022\010\n\004NONE\020\001\022\010\n\004CHAR\020\002\022\n\n\006NUMBER\020\003\022"
-    "\007\n\003ALL\020\004*K\n\022ColumnUpdatability\022\030\n\024UNKNOW"
-    "N_UPDATABILITY\020\000\022\r\n\tREAD_ONLY\020\001\022\014\n\010WRITA"
-    "BLE\020\002B+\n\033org.apache.drill.exec.protoB\nUs"
-    "erProtosH\001", 5210);
+    "_FUNCTION_LIST\020\t\022\020\n\014QUERY_RESULT\020\n\022\020\n\014SA"
+    "SL_MESSAGE\020\030*6\n\013SaslSupport\022\030\n\024UNKNOWN_S"
+    "ASL_SUPPORT\020\000\022\r\n\tSASL_AUTH\020\001*#\n\020QueryRes"
+    "ultsMode\022\017\n\013STREAM_FULL\020\001*q\n\017HandshakeSt"
+    "atus\022\013\n\007SUCCESS\020\001\022\030\n\024RPC_VERSION_MISMATC"
+    "H\020\002\022\017\n\013AUTH_FAILED\020\003\022\023\n\017UNKNOWN_FAILURE\020"
+    "\004\022\021\n\rAUTH_REQUIRED\020\005*D\n\rRequestStatus\022\022\n"
+    "\016UNKNOWN_STATUS\020\000\022\006\n\002OK\020\001\022\n\n\006FAILED\020\002\022\013\n"
+    "\007TIMEOUT\020\003*Y\n\023ColumnSearchability\022\031\n\025UNK"
+    "NOWN_SEARCHABILITY\020\000\022\010\n\004NONE\020\001\022\010\n\004CHAR\020\002"
+    "\022\n\n\006NUMBER\020\003\022\007\n\003ALL\020\004*K\n\022ColumnUpdatabil"
+    "ity\022\030\n\024UNKNOWN_UPDATABILITY\020\000\022\r\n\tREAD_ON"
+    "LY\020\001\022\014\n\010WRITABLE\020\002B+\n\033org.apache.drill.e"
+    "xec.protoB\nUserProtosH\001", 5383);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "User.proto", &protobuf_RegisterTypes);
   Property::default_instance_ = new Property();
@@ -983,6 +991,21 @@ bool RpcType_IsValid(int value) {
     case 21:
     case 22:
     case 23:
+    case 24:
+      return true;
+    default:
+      return false;
+  }
+}
+
+const ::google::protobuf::EnumDescriptor* SaslSupport_descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return SaslSupport_descriptor_;
+}
+bool SaslSupport_IsValid(int value) {
+  switch(value) {
+    case 0:
+    case 1:
       return true;
     default:
       return false;
@@ -1012,6 +1035,7 @@ bool HandshakeStatus_IsValid(int value) {
     case 2:
     case 3:
     case 4:
+    case 5:
       return true;
     default:
       return false;
@@ -2026,6 +2050,7 @@ const int UserToBitHandshake::kPropertiesFieldNumber;
 const int UserToBitHandshake::kSupportComplexTypesFieldNumber;
 const int UserToBitHandshake::kSupportTimeoutFieldNumber;
 const int UserToBitHandshake::kClientInfosFieldNumber;
+const int UserToBitHandshake::kSaslSupportFieldNumber;
 #endif  // !_MSC_VER
 
 UserToBitHandshake::UserToBitHandshake()
@@ -2055,6 +2080,7 @@ void UserToBitHandshake::SharedCtor() {
   support_complex_types_ = false;
   support_timeout_ = false;
   client_infos_ = NULL;
+  sasl_support_ = 0;
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -2108,6 +2134,9 @@ void UserToBitHandshake::Clear() {
       if (client_infos_ != NULL) client_infos_->::exec::user::RpcEndpointInfos::Clear();
     }
   }
+  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
+    sasl_support_ = 0;
+  }
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   mutable_unknown_fields()->Clear();
 }
@@ -2240,6 +2269,27 @@ bool UserToBitHandshake::MergePartialFromCodedStream(
         } else {
           goto handle_uninterpreted;
         }
+        if (input->ExpectTag(72)) goto parse_sasl_support;
+        break;
+      }
+
+      // optional .exec.user.SaslSupport sasl_support = 9;
+      case 9: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_sasl_support:
+          int value;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          if (::exec::user::SaslSupport_IsValid(value)) {
+            set_sasl_support(static_cast< ::exec::user::SaslSupport >(value));
+          } else {
+            mutable_unknown_fields()->AddVarint(9, value);
+          }
+        } else {
+          goto handle_uninterpreted;
+        }
         if (input->ExpectAtEnd()) return true;
         break;
       }
@@ -2306,6 +2356,12 @@ void UserToBitHandshake::SerializeWithCachedSizes(
       8, this->client_infos(), output);
   }
 
+  // optional .exec.user.SaslSupport sasl_support = 9;
+  if (has_sasl_support()) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      9, this->sasl_support(), output);
+  }
+
   if (!unknown_fields().empty()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         unknown_fields(), output);
@@ -2361,6 +2417,12 @@ void UserToBitHandshake::SerializeWithCachedSizes(
         8, this->client_infos(), target);
   }
 
+  // optional .exec.user.SaslSupport sasl_support = 9;
+  if (has_sasl_support()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      9, this->sasl_support(), target);
+  }
+
   if (!unknown_fields().empty()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         unknown_fields(), target);
@@ -2422,6 +2484,14 @@ int UserToBitHandshake::ByteSize() const {
     }
 
   }
+  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
+    // optional .exec.user.SaslSupport sasl_support = 9;
+    if (has_sasl_support()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::EnumSize(this->sasl_support());
+    }
+
+  }
   if (!unknown_fields().empty()) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
@@ -2473,6 +2543,11 @@ void UserToBitHandshake::MergeFrom(const UserToBitHandshake& from) {
       mutable_client_infos()->::exec::user::RpcEndpointInfos::MergeFrom(from.client_infos());
     }
   }
+  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
+    if (from.has_sasl_support()) {
+      set_sasl_support(from.sasl_support());
+    }
+  }
   mutable_unknown_fields()->MergeFrom(from.unknown_fields());
 }
 
@@ -2506,6 +2581,7 @@ void UserToBitHandshake::Swap(UserToBitHandshake* other) {
     std::swap(support_complex_types_, other->support_complex_types_);
     std::swap(support_timeout_, other->support_timeout_);
     std::swap(client_infos_, other->client_infos_);
+    std::swap(sasl_support_, other->sasl_support_);
     std::swap(_has_bits_[0], other->_has_bits_[0]);
     _unknown_fields_.Swap(&other->_unknown_fields_);
     std::swap(_cached_size_, other->_cached_size_);
@@ -3437,6 +3513,7 @@ const int BitToUserHandshake::kStatusFieldNumber;
 const int BitToUserHandshake::kErrorIdFieldNumber;
 const int BitToUserHandshake::kErrorMessageFieldNumber;
 const int BitToUserHandshake::kServerInfosFieldNumber;
+const int BitToUserHandshake::kAuthenticationMechanismsFieldNumber;
 #endif  // !_MSC_VER
 
 BitToUserHandshake::BitToUserHandshake()
@@ -3519,6 +3596,7 @@ void BitToUserHandshake::Clear() {
       if (server_infos_ != NULL) server_infos_->::exec::user::RpcEndpointInfos::Clear();
     }
   }
+  authenticationmechanisms_.Clear();
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   mutable_unknown_fields()->Clear();
 }
@@ -3609,6 +3687,25 @@ bool BitToUserHandshake::MergePartialFromCodedStream(
         } else {
           goto handle_uninterpreted;
         }
+        if (input->ExpectTag(58)) goto parse_authenticationMechanisms;
+        break;
+      }
+
+      // repeated string authenticationMechanisms = 7;
+      case 7: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_authenticationMechanisms:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_authenticationmechanisms()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+            this->authenticationmechanisms(this->authenticationmechanisms_size() - 1).data(),
+            this->authenticationmechanisms(this->authenticationmechanisms_size() - 1).length(),
+            ::google::protobuf::internal::WireFormat::PARSE);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(58)) goto parse_authenticationMechanisms;
         if (input->ExpectAtEnd()) return true;
         break;
       }
@@ -3666,6 +3763,15 @@ void BitToUserHandshake::SerializeWithCachedSizes(
       6, this->server_infos(), output);
   }
 
+  // repeated string authenticationMechanisms = 7;
+  for (int i = 0; i < this->authenticationmechanisms_size(); i++) {
+  ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+    this->authenticationmechanisms(i).data(), this->authenticationmechanisms(i).length(),
+    ::google::protobuf::internal::WireFormat::SERIALIZE);
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      7, this->authenticationmechanisms(i), output);
+  }
+
   if (!unknown_fields().empty()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         unknown_fields(), output);
@@ -3712,6 +3818,15 @@ void BitToUserHandshake::SerializeWithCachedSizes(
         6, this->server_infos(), target);
   }
 
+  // repeated string authenticationMechanisms = 7;
+  for (int i = 0; i < this->authenticationmechanisms_size(); i++) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->authenticationmechanisms(i).data(), this->authenticationmechanisms(i).length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(7, this->authenticationmechanisms(i), target);
+  }
+
   if (!unknown_fields().empty()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         unknown_fields(), target);
@@ -3758,6 +3873,13 @@ int BitToUserHandshake::ByteSize() const {
     }
 
   }
+  // repeated string authenticationMechanisms = 7;
+  total_size += 1 * this->authenticationmechanisms_size();
+  for (int i = 0; i < this->authenticationmechanisms_size(); i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->authenticationmechanisms(i));
+  }
+
   if (!unknown_fields().empty()) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
@@ -3783,6 +3905,7 @@ void BitToUserHandshake::MergeFrom(const ::google::protobuf::Message& from) {
 
 void BitToUserHandshake::MergeFrom(const BitToUserHandshake& from) {
   GOOGLE_CHECK_NE(&from, this);
+  authenticationmechanisms_.MergeFrom(from.authenticationmechanisms_);
   if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
     if (from.has_rpc_version()) {
       set_rpc_version(from.rpc_version());
@@ -3827,6 +3950,7 @@ void BitToUserHandshake::Swap(BitToUserHandshake* other) {
     std::swap(errorid_, other->errorid_);
     std::swap(errormessage_, other->errormessage_);
     std::swap(server_infos_, other->server_infos_);
+    authenticationmechanisms_.Swap(&other->authenticationmechanisms_);
     std::swap(_has_bits_[0], other->_has_bits_[0]);
     _unknown_fields_.Swap(&other->_unknown_fields_);
     std::swap(_cached_size_, other->_cached_size_);

http://git-wip-us.apache.org/repos/asf/drill/blob/f9f99e08/contrib/native/client/src/protobuf/User.pb.h
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/User.pb.h b/contrib/native/client/src/protobuf/User.pb.h
index 162c6e0..bd050ee 100644
--- a/contrib/native/client/src/protobuf/User.pb.h
+++ b/contrib/native/client/src/protobuf/User.pb.h
@@ -92,11 +92,12 @@ enum RpcType {
   PREPARED_STATEMENT = 23,
   REQ_META_FUNCTIONS = 8,
   RESP_FUNCTION_LIST = 9,
-  QUERY_RESULT = 10
+  QUERY_RESULT = 10,
+  SASL_MESSAGE = 24
 };
 bool RpcType_IsValid(int value);
 const RpcType RpcType_MIN = HANDSHAKE;
-const RpcType RpcType_MAX = PREPARED_STATEMENT;
+const RpcType RpcType_MAX = SASL_MESSAGE;
 const int RpcType_ARRAYSIZE = RpcType_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* RpcType_descriptor();
@@ -109,6 +110,25 @@ inline bool RpcType_Parse(
   return ::google::protobuf::internal::ParseNamedEnum<RpcType>(
     RpcType_descriptor(), name, value);
 }
+enum SaslSupport {
+  UNKNOWN_SASL_SUPPORT = 0,
+  SASL_AUTH = 1
+};
+bool SaslSupport_IsValid(int value);
+const SaslSupport SaslSupport_MIN = UNKNOWN_SASL_SUPPORT;
+const SaslSupport SaslSupport_MAX = SASL_AUTH;
+const int SaslSupport_ARRAYSIZE = SaslSupport_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* SaslSupport_descriptor();
+inline const ::std::string& SaslSupport_Name(SaslSupport value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    SaslSupport_descriptor(), value);
+}
+inline bool SaslSupport_Parse(
+    const ::std::string& name, SaslSupport* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<SaslSupport>(
+    SaslSupport_descriptor(), name, value);
+}
 enum QueryResultsMode {
   STREAM_FULL = 1
 };
@@ -131,11 +151,12 @@ enum HandshakeStatus {
   SUCCESS = 1,
   RPC_VERSION_MISMATCH = 2,
   AUTH_FAILED = 3,
-  UNKNOWN_FAILURE = 4
+  UNKNOWN_FAILURE = 4,
+  AUTH_REQUIRED = 5
 };
 bool HandshakeStatus_IsValid(int value);
 const HandshakeStatus HandshakeStatus_MIN = SUCCESS;
-const HandshakeStatus HandshakeStatus_MAX = UNKNOWN_FAILURE;
+const HandshakeStatus HandshakeStatus_MAX = AUTH_REQUIRED;
 const int HandshakeStatus_ARRAYSIZE = HandshakeStatus_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* HandshakeStatus_descriptor();
@@ -663,6 +684,13 @@ class UserToBitHandshake : public ::google::protobuf::Message {
   inline ::exec::user::RpcEndpointInfos* release_client_infos();
   inline void set_allocated_client_infos(::exec::user::RpcEndpointInfos* client_infos);
 
+  // optional .exec.user.SaslSupport sasl_support = 9;
+  inline bool has_sasl_support() const;
+  inline void clear_sasl_support();
+  static const int kSaslSupportFieldNumber = 9;
+  inline ::exec::user::SaslSupport sasl_support() const;
+  inline void set_sasl_support(::exec::user::SaslSupport value);
+
   // @@protoc_insertion_point(class_scope:exec.user.UserToBitHandshake)
  private:
   inline void set_has_channel();
@@ -681,6 +709,8 @@ class UserToBitHandshake : public ::google::protobuf::Message {
   inline void clear_has_support_timeout();
   inline void set_has_client_infos();
   inline void clear_has_client_infos();
+  inline void set_has_sasl_support();
+  inline void clear_has_sasl_support();
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
@@ -688,13 +718,14 @@ class UserToBitHandshake : public ::google::protobuf::Message {
   ::google::protobuf::int32 rpc_version_;
   ::exec::shared::UserCredentials* credentials_;
   ::exec::user::UserProperties* properties_;
-  ::exec::user::RpcEndpointInfos* client_infos_;
   bool support_listening_;
   bool support_complex_types_;
   bool support_timeout_;
+  int sasl_support_;
+  ::exec::user::RpcEndpointInfos* client_infos_;
 
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32];
+  ::google::protobuf::uint32 _has_bits_[(9 + 31) / 32];
 
   friend void  protobuf_AddDesc_User_2eproto();
   friend void protobuf_AssignDesc_User_2eproto();
@@ -1126,6 +1157,22 @@ class BitToUserHandshake : public ::google::protobuf::Message {
   inline ::exec::user::RpcEndpointInfos* release_server_infos();
   inline void set_allocated_server_infos(::exec::user::RpcEndpointInfos* server_infos);
 
+  // repeated string authenticationMechanisms = 7;
+  inline int authenticationmechanisms_size() const;
+  inline void clear_authenticationmechanisms();
+  static const int kAuthenticationMechanismsFieldNumber = 7;
+  inline const ::std::string& authenticationmechanisms(int index) const;
+  inline ::std::string* mutable_authenticationmechanisms(int index);
+  inline void set_authenticationmechanisms(int index, const ::std::string& value);
+  inline void set_authenticationmechanisms(int index, const char* value);
+  inline void set_authenticationmechanisms(int index, const char* value, size_t size);
+  inline ::std::string* add_authenticationmechanisms();
+  inline void add_authenticationmechanisms(const ::std::string& value);
+  inline void add_authenticationmechanisms(const char* value);
+  inline void add_authenticationmechanisms(const char* value, size_t size);
+  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& authenticationmechanisms() const;
+  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_authenticationmechanisms();
+
   // @@protoc_insertion_point(class_scope:exec.user.BitToUserHandshake)
  private:
   inline void set_has_rpc_version();
@@ -1146,9 +1193,10 @@ class BitToUserHandshake : public ::google::protobuf::Message {
   ::std::string* errorid_;
   ::std::string* errormessage_;
   ::exec::user::RpcEndpointInfos* server_infos_;
+  ::google::protobuf::RepeatedPtrField< ::std::string> authenticationmechanisms_;
 
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
+  ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32];
 
   friend void  protobuf_AddDesc_User_2eproto();
   friend void protobuf_AssignDesc_User_2eproto();
@@ -4276,6 +4324,29 @@ inline void UserToBitHandshake::set_allocated_client_infos(::exec::user::RpcEndp
   }
 }
 
+// optional .exec.user.SaslSupport sasl_support = 9;
+inline bool UserToBitHandshake::has_sasl_support() const {
+  return (_has_bits_[0] & 0x00000100u) != 0;
+}
+inline void UserToBitHandshake::set_has_sasl_support() {
+  _has_bits_[0] |= 0x00000100u;
+}
+inline void UserToBitHandshake::clear_has_sasl_support() {
+  _has_bits_[0] &= ~0x00000100u;
+}
+inline void UserToBitHandshake::clear_sasl_support() {
+  sasl_support_ = 0;
+  clear_has_sasl_support();
+}
+inline ::exec::user::SaslSupport UserToBitHandshake::sasl_support() const {
+  return static_cast< ::exec::user::SaslSupport >(sasl_support_);
+}
+inline void UserToBitHandshake::set_sasl_support(::exec::user::SaslSupport value) {
+  assert(::exec::user::SaslSupport_IsValid(value));
+  set_has_sasl_support();
+  sasl_support_ = value;
+}
+
 // -------------------------------------------------------------------
 
 // RequestResults
@@ -4814,6 +4885,50 @@ inline void BitToUserHandshake::set_allocated_server_infos(::exec::user::RpcEndp
   }
 }
 
+// repeated string authenticationMechanisms = 7;
+inline int BitToUserHandshake::authenticationmechanisms_size() const {
+  return authenticationmechanisms_.size();
+}
+inline void BitToUserHandshake::clear_authenticationmechanisms() {
+  authenticationmechanisms_.Clear();
+}
+inline const ::std::string& BitToUserHandshake::authenticationmechanisms(int index) const {
+  return authenticationmechanisms_.Get(index);
+}
+inline ::std::string* BitToUserHandshake::mutable_authenticationmechanisms(int index) {
+  return authenticationmechanisms_.Mutable(index);
+}
+inline void BitToUserHandshake::set_authenticationmechanisms(int index, const ::std::string& value) {
+  authenticationmechanisms_.Mutable(index)->assign(value);
+}
+inline void BitToUserHandshake::set_authenticationmechanisms(int index, const char* value) {
+  authenticationmechanisms_.Mutable(index)->assign(value);
+}
+inline void BitToUserHandshake::set_authenticationmechanisms(int index, const char* value, size_t size) {
+  authenticationmechanisms_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* BitToUserHandshake::add_authenticationmechanisms() {
+  return authenticationmechanisms_.Add();
+}
+inline void BitToUserHandshake::add_authenticationmechanisms(const ::std::string& value) {
+  authenticationmechanisms_.Add()->assign(value);
+}
+inline void BitToUserHandshake::add_authenticationmechanisms(const char* value) {
+  authenticationmechanisms_.Add()->assign(value);
+}
+inline void BitToUserHandshake::add_authenticationmechanisms(const char* value, size_t size) {
+  authenticationmechanisms_.Add()->assign(reinterpret_cast<const char*>(value), size);
+}
+inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
+BitToUserHandshake::authenticationmechanisms() const {
+  return authenticationmechanisms_;
+}
+inline ::google::protobuf::RepeatedPtrField< ::std::string>*
+BitToUserHandshake::mutable_authenticationmechanisms() {
+  return &authenticationmechanisms_;
+}
+
 // -------------------------------------------------------------------
 
 // LikeFilter
@@ -8600,6 +8715,10 @@ inline const EnumDescriptor* GetEnumDescriptor< ::exec::user::RpcType>() {
   return ::exec::user::RpcType_descriptor();
 }
 template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::exec::user::SaslSupport>() {
+  return ::exec::user::SaslSupport_descriptor();
+}
+template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::exec::user::QueryResultsMode>() {
   return ::exec::user::QueryResultsMode_descriptor();
 }