Repository: drill
Updated Branches:
  refs/heads/master 1b51850f3 -> 576271d52


DRILL-4313: CPP client - Improve method to pick random drillbit from a cluster. 
Update build for protobuf changes. This closes #346


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

Branch: refs/heads/master
Commit: 576271d5268fdf88373a702818368c527cfbf7cb
Parents: 1b51850
Author: Parth Chandra <par...@apache.org>
Authored: Tue Jan 26 11:55:59 2016 -0800
Committer: Parth Chandra <par...@apache.org>
Committed: Thu Jan 28 21:08:40 2016 -0800

----------------------------------------------------------------------
 .../native/client/src/clientlib/drillClient.cpp |   1 +
 .../client/src/clientlib/drillClientImpl.cpp    |  18 +-
 .../client/src/clientlib/drillClientImpl.hpp    |   4 +-
 .../src/include/drill/protobuf/Types.pb.h       |  45 ++-
 .../native/client/src/protobuf/BitControl.pb.cc | 365 +++++++++++++++++--
 .../native/client/src/protobuf/BitControl.pb.h  | 200 +++++++++-
 .../native/client/src/protobuf/BitData.pb.cc    |  52 +--
 contrib/native/client/src/protobuf/BitData.pb.h |  34 +-
 contrib/native/client/src/protobuf/Types.pb.cc  |  96 ++++-
 .../client/src/protobuf/UserBitShared.pb.cc     | 144 ++++----
 .../client/src/protobuf/UserBitShared.pb.h      |  12 +-
 11 files changed, 744 insertions(+), 227 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/576271d5/contrib/native/client/src/clientlib/drillClient.cpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/clientlib/drillClient.cpp 
b/contrib/native/client/src/clientlib/drillClient.cpp
index e536fc3..812483d 100644
--- a/contrib/native/client/src/clientlib/drillClient.cpp
+++ b/contrib/native/client/src/clientlib/drillClient.cpp
@@ -38,6 +38,7 @@ DrillClientError* DrillClientError::getErrorObject(const 
exec::shared::DrillPBEr
 
 DrillClientInitializer::DrillClientInitializer(){
     GOOGLE_PROTOBUF_VERIFY_VERSION;
+    srand(time(NULL));
 }
 
 DrillClientInitializer::~DrillClientInitializer(){

http://git-wip-us.apache.org/repos/asf/drill/blob/576271d5/contrib/native/client/src/clientlib/drillClientImpl.cpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/clientlib/drillClientImpl.cpp 
b/contrib/native/client/src/clientlib/drillClientImpl.cpp
index 97afb88..d4e9ed9 100644
--- a/contrib/native/client/src/clientlib/drillClientImpl.cpp
+++ b/contrib/native/client/src/clientlib/drillClientImpl.cpp
@@ -49,7 +49,7 @@
 namespace Drill{
 
 static std::map<exec::shared::QueryResult_QueryState, status_t> 
QUERYSTATE_TO_STATUS_MAP = boost::assign::map_list_of
-    (exec::shared::QueryResult_QueryState_PENDING, QRY_PENDING)
+    (exec::shared::QueryResult_QueryState_STARTING, QRY_PENDING)
     (exec::shared::QueryResult_QueryState_RUNNING, QRY_RUNNING)
     (exec::shared::QueryResult_QueryState_COMPLETED, QRY_COMPLETED)
     (exec::shared::QueryResult_QueryState_CANCELED, QRY_CANCELED)
@@ -647,7 +647,7 @@ status_t 
DrillClientImpl::processQueryResult(AllocatedBufferPtr  allocatedBuffer
         
         if (qr.has_query_state() &&
                 qr.query_state() != 
exec::shared::QueryResult_QueryState_RUNNING &&
-                qr.query_state() != 
exec::shared::QueryResult_QueryState_PENDING) {
+                qr.query_state() != 
exec::shared::QueryResult_QueryState_STARTING) {
             pDrillClientQueryResult=findQueryResult(qid);
             //Queries that have been cancelled or whose resources are freed 
before completion 
             //do not have a DrillClientQueryResult object. We need not handle 
the terminal message 
@@ -1397,7 +1397,6 @@ char ZookeeperImpl::s_defaultCluster[]="drillbits1";
 
 ZookeeperImpl::ZookeeperImpl(){
     m_pDrillbits=new String_vector;
-    srand (time(NULL));
     m_bConnecting=true;
     memset(&m_id, 0, sizeof(m_id));
 }
@@ -1468,10 +1467,17 @@ int ZookeeperImpl::connectToZookeeper(const char* 
connectStr, const char* pathTo
 
     //Let's pick a random drillbit.
     if(m_pDrillbits && m_pDrillbits->count >0){
-        int r=rand()%(this->m_pDrillbits->count);
-        assert(r<this->m_pDrillbits->count);
-        char * bit=this->m_pDrillbits->data[r];
+
+        std::vector<std::string> randomDrillbits;
+        for(int i=0; i<m_pDrillbits->count; i++){
+            randomDrillbits.push_back(m_pDrillbits->data[i]);
+        }
+        //Use the same random shuffle as the Java client instead of picking a 
drillbit at random.
+        //Gives much better randomization when the size of the cluster is 
small.
+        std::random_shuffle(randomDrillbits.begin(), randomDrillbits.end());
+        const char * bit=randomDrillbits[0].c_str();
         std::string s;
+
         s=rootDir +  std::string("/") + bit;
         int buffer_len=MAX_CONNECT_STR;
         char buffer[MAX_CONNECT_STR+1];

http://git-wip-us.apache.org/repos/asf/drill/blob/576271d5/contrib/native/client/src/clientlib/drillClientImpl.hpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/clientlib/drillClientImpl.hpp 
b/contrib/native/client/src/clientlib/drillClientImpl.hpp
index ada63e1..f19a015 100644
--- a/contrib/native/client/src/clientlib/drillClientImpl.hpp
+++ b/contrib/native/client/src/clientlib/drillClientImpl.hpp
@@ -28,6 +28,7 @@
 #define BOOST_ASIO_ENABLE_CANCELIO
 #endif //WIN32_SHUTDOWN_ON_TIMEOUT
 
+#include <algorithm>
 #include <stdlib.h>
 #include <time.h>
 #include <queue>
@@ -71,7 +72,7 @@ class DrillClientQueryResult{
         m_bHasSchemaChanged(false),
         m_bHasData(false),
         m_bHasError(false),
-        m_queryState(exec::shared::QueryResult_QueryState_PENDING),
+        m_queryState(exec::shared::QueryResult_QueryState_STARTING),
         m_pError(NULL),
         m_pQueryId(NULL),
         m_pSchemaListener(NULL),
@@ -205,7 +206,6 @@ class DrillClientImpl{
             m_rbuf(NULL),
             m_wbuf(MAX_SOCK_RD_BUFSIZE)
     {
-        srand(time(NULL));
         m_coordinationId=rand()%1729+1;
     };
 

http://git-wip-us.apache.org/repos/asf/drill/blob/576271d5/contrib/native/client/src/include/drill/protobuf/Types.pb.h
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/include/drill/protobuf/Types.pb.h 
b/contrib/native/client/src/include/drill/protobuf/Types.pb.h
index b26177c..f9200ec 100644
--- a/contrib/native/client/src/include/drill/protobuf/Types.pb.h
+++ b/contrib/native/client/src/include/drill/protobuf/Types.pb.h
@@ -73,11 +73,12 @@ enum MinorType {
   INTERVALYEAR = 38,
   INTERVALDAY = 39,
   LIST = 40,
-  GENERIC_OBJECT = 41
+  GENERIC_OBJECT = 41,
+  UNION = 42
 };
 bool MinorType_IsValid(int value);
 const MinorType MinorType_MIN = LATE;
-const MinorType MinorType_MAX = GENERIC_OBJECT;
+const MinorType MinorType_MAX = UNION;
 const int MinorType_ARRAYSIZE = MinorType_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* MinorType_descriptor();
@@ -208,6 +209,16 @@ class MajorType : public ::google::protobuf::Message {
   inline ::google::protobuf::int32 timezone() const;
   inline void set_timezone(::google::protobuf::int32 value);
 
+  // repeated .common.MinorType sub_type = 7;
+  inline int sub_type_size() const;
+  inline void clear_sub_type();
+  static const int kSubTypeFieldNumber = 7;
+  inline ::common::MinorType sub_type(int index) const;
+  inline void set_sub_type(int index, ::common::MinorType value);
+  inline void add_sub_type(::common::MinorType value);
+  inline const ::google::protobuf::RepeatedField<int>& sub_type() const;
+  inline ::google::protobuf::RepeatedField<int>* mutable_sub_type();
+
   // @@protoc_insertion_point(class_scope:common.MajorType)
  private:
   inline void set_has_minor_type();
@@ -231,9 +242,10 @@ class MajorType : public ::google::protobuf::Message {
   ::google::protobuf::int32 precision_;
   ::google::protobuf::int32 scale_;
   ::google::protobuf::int32 timezone_;
+  ::google::protobuf::RepeatedField<int> sub_type_;
 
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32];
+  ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32];
 
   friend void  protobuf_AddDesc_Types_2eproto();
   friend void protobuf_AssignDesc_Types_2eproto();
@@ -383,6 +395,33 @@ inline void 
MajorType::set_timezone(::google::protobuf::int32 value) {
   timezone_ = value;
 }
 
+// repeated .common.MinorType sub_type = 7;
+inline int MajorType::sub_type_size() const {
+  return sub_type_.size();
+}
+inline void MajorType::clear_sub_type() {
+  sub_type_.Clear();
+}
+inline ::common::MinorType MajorType::sub_type(int index) const {
+  return static_cast< ::common::MinorType >(sub_type_.Get(index));
+}
+inline void MajorType::set_sub_type(int index, ::common::MinorType value) {
+  assert(::common::MinorType_IsValid(value));
+  sub_type_.Set(index, value);
+}
+inline void MajorType::add_sub_type(::common::MinorType value) {
+  assert(::common::MinorType_IsValid(value));
+  sub_type_.Add(value);
+}
+inline const ::google::protobuf::RepeatedField<int>&
+MajorType::sub_type() const {
+  return sub_type_;
+}
+inline ::google::protobuf::RepeatedField<int>*
+MajorType::mutable_sub_type() {
+  return &sub_type_;
+}
+
 
 // @@protoc_insertion_point(namespace_scope)
 

http://git-wip-us.apache.org/repos/asf/drill/blob/576271d5/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 2ad812f..7317a99 100644
--- a/contrib/native/client/src/protobuf/BitControl.pb.cc
+++ b/contrib/native/client/src/protobuf/BitControl.pb.cc
@@ -34,6 +34,9 @@ const 
::google::protobuf::internal::GeneratedMessageReflection*
 const ::google::protobuf::Descriptor* InitializeFragments_descriptor_ = NULL;
 const ::google::protobuf::internal::GeneratedMessageReflection*
   InitializeFragments_reflection_ = NULL;
+const ::google::protobuf::Descriptor* CustomMessage_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  CustomMessage_reflection_ = NULL;
 const ::google::protobuf::Descriptor* PlanFragment_descriptor_ = NULL;
 const ::google::protobuf::internal::GeneratedMessageReflection*
   PlanFragment_reflection_ = NULL;
@@ -123,7 +126,23 @@ void protobuf_AssignDesc_BitControl_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(InitializeFragments));
-  PlanFragment_descriptor_ = file->message_type(4);
+  CustomMessage_descriptor_ = file->message_type(4);
+  static const int CustomMessage_offsets_[2] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CustomMessage, type_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CustomMessage, message_),
+  };
+  CustomMessage_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      CustomMessage_descriptor_,
+      CustomMessage::default_instance_,
+      CustomMessage_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CustomMessage, 
_has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CustomMessage, 
_unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(CustomMessage));
+  PlanFragment_descriptor_ = file->message_type(5);
   static const int PlanFragment_offsets_[15] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PlanFragment, handle_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(PlanFragment, 
network_cost_),
@@ -152,7 +171,7 @@ void protobuf_AssignDesc_BitControl_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(PlanFragment));
-  Collector_descriptor_ = file->message_type(5);
+  Collector_descriptor_ = file->message_type(6);
   static const int Collector_offsets_[4] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Collector, 
opposite_major_fragment_id_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Collector, 
incoming_minor_fragment_),
@@ -170,7 +189,7 @@ void protobuf_AssignDesc_BitControl_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(Collector));
-  QueryContextInformation_descriptor_ = file->message_type(6);
+  QueryContextInformation_descriptor_ = file->message_type(7);
   static const int QueryContextInformation_offsets_[3] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(QueryContextInformation, 
query_start_time_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(QueryContextInformation, 
time_zone_),
@@ -187,7 +206,7 @@ void protobuf_AssignDesc_BitControl_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(QueryContextInformation));
-  WorkQueueStatus_descriptor_ = file->message_type(7);
+  WorkQueueStatus_descriptor_ = file->message_type(8);
   static const int WorkQueueStatus_offsets_[3] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(WorkQueueStatus, endpoint_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(WorkQueueStatus, 
queue_length_),
@@ -204,7 +223,7 @@ void protobuf_AssignDesc_BitControl_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(WorkQueueStatus));
-  FinishedReceiver_descriptor_ = file->message_type(8);
+  FinishedReceiver_descriptor_ = file->message_type(9);
   static const int FinishedReceiver_offsets_[2] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FinishedReceiver, 
receiver_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FinishedReceiver, sender_),
@@ -242,6 +261,8 @@ void protobuf_RegisterTypes(const ::std::string&) {
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
     InitializeFragments_descriptor_, &InitializeFragments::default_instance());
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    CustomMessage_descriptor_, &CustomMessage::default_instance());
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
     PlanFragment_descriptor_, &PlanFragment::default_instance());
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
     Collector_descriptor_, &Collector::default_instance());
@@ -264,6 +285,8 @@ void protobuf_ShutdownFile_BitControl_2eproto() {
   delete FragmentStatus_reflection_;
   delete InitializeFragments::default_instance_;
   delete InitializeFragments_reflection_;
+  delete CustomMessage::default_instance_;
+  delete CustomMessage_reflection_;
   delete PlanFragment::default_instance_;
   delete PlanFragment_reflection_;
   delete Collector::default_instance_;
@@ -298,47 +321,50 @@ void protobuf_AddDesc_BitControl_2eproto() {
     "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\"\374\003\n\014PlanFragment\022(\n\006"
-    "handle\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.Drillbit"
-    "Endpoint\022\'\n\007foreman\030\013 \001(\0132\026.exec.Drillbi"
-    "tEndpoint\022\035\n\013mem_initial\030\014 \001(\003:\01020000000"
-    "\022\033\n\007mem_max\030\r \001(\003:\n2000000000\0221\n\013credent"
-    "ials\030\016 \001(\0132\034.exec.shared.UserCredentials"
-    "\022\024\n\014options_json\030\017 \001(\t\022:\n\007context\030\020 
\001(\0132"
-    ").exec.bit.control.QueryContextInformati"
-    "on\022.\n\tcollector\030\021 \003(\0132\033.exec.bit.control"
-    ".Collector\"\210\001\n\tCollector\022\"\n\032opposite_maj"
-    "or_fragment_id\030\001 \001(\005\022#\n\027incoming_minor_f"
-    "ragment\030\002 \003(\005B\002\020\001\022\035\n\025supports_out_of_ord"
-    "er\030\003 \001(\010\022\023\n\013is_spooling\030\004 
\001(\010\"c\n\027QueryCo"
-    "ntextInformation\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\010endpoin"
-    "t\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\020Fi"
-    "nishedReceiver\022*\n\010receiver\030\001 \001(\0132\030.exec."
-    "bit.FragmentHandle\022(\n\006sender\030\002 \001(\0132\030.exe"
-    "c.bit.FragmentHandle*\323\002\n\007RpcType\022\r\n\tHAND"
-    
"SHAKE\020\000\022\007\n\003ACK\020\001\022\013\n\007GOODBYE\020\002\022\034\n\030REQ_INI"
-    "TIALIZE_FRAGMENTS\020\003\022\027\n\023REQ_CANCEL_FRAGME"
-    "NT\020\006\022\031\n\025REQ_RECEIVER_FINISHED\020\007\022\027\n\023REQ_F"
-    "RAGMENT_STATUS\020\010\022\022\n\016REQ_BIT_STATUS\020\t\022\024\n\020"
-    "REQ_QUERY_STATUS\020\n\022\024\n\020REQ_QUERY_CANCEL\020\017"
-    "\022\030\n\024REQ_UNPAUSE_FRAGMENT\020\020\022\030\n\024RESP_FRAGM"
-    "ENT_HANDLE\020\013\022\030\n\024RESP_FRAGMENT_STATUS\020\014\022\023"
-    "\n\017RESP_BIT_STATUS\020\r\022\025\n\021RESP_QUERY_STATUS"
-    "\020\016B+\n\033org.apache.drill.exec.protoB\nBitCo"
-    "ntrolH\001", 1847);
+    "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);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "BitControl.proto", &protobuf_RegisterTypes);
   BitControlHandshake::default_instance_ = new BitControlHandshake();
   BitStatus::default_instance_ = new BitStatus();
   FragmentStatus::default_instance_ = new FragmentStatus();
   InitializeFragments::default_instance_ = new InitializeFragments();
+  CustomMessage::default_instance_ = new CustomMessage();
   PlanFragment::default_instance_ = new PlanFragment();
   Collector::default_instance_ = new Collector();
   QueryContextInformation::default_instance_ = new QueryContextInformation();
@@ -348,6 +374,7 @@ void protobuf_AddDesc_BitControl_2eproto() {
   BitStatus::default_instance_->InitAsDefaultInstance();
   FragmentStatus::default_instance_->InitAsDefaultInstance();
   InitializeFragments::default_instance_->InitAsDefaultInstance();
+  CustomMessage::default_instance_->InitAsDefaultInstance();
   PlanFragment::default_instance_->InitAsDefaultInstance();
   Collector::default_instance_->InitAsDefaultInstance();
   QueryContextInformation::default_instance_->InitAsDefaultInstance();
@@ -383,6 +410,8 @@ bool RpcType_IsValid(int value) {
     case 14:
     case 15:
     case 16:
+    case 17:
+    case 18:
       return true;
     default:
       return false;
@@ -1356,6 +1385,262 @@ void InitializeFragments::Swap(InitializeFragments* 
other) {
 // ===================================================================
 
 #ifndef _MSC_VER
+const int CustomMessage::kTypeFieldNumber;
+const int CustomMessage::kMessageFieldNumber;
+#endif  // !_MSC_VER
+
+CustomMessage::CustomMessage()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void CustomMessage::InitAsDefaultInstance() {
+}
+
+CustomMessage::CustomMessage(const CustomMessage& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void CustomMessage::SharedCtor() {
+  _cached_size_ = 0;
+  type_ = 0;
+  message_ = const_cast< 
::std::string*>(&::google::protobuf::internal::kEmptyString);
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+CustomMessage::~CustomMessage() {
+  SharedDtor();
+}
+
+void CustomMessage::SharedDtor() {
+  if (message_ != &::google::protobuf::internal::kEmptyString) {
+    delete message_;
+  }
+  if (this != default_instance_) {
+  }
+}
+
+void CustomMessage::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* CustomMessage::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return CustomMessage_descriptor_;
+}
+
+const CustomMessage& CustomMessage::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_BitControl_2eproto();
+  return *default_instance_;
+}
+
+CustomMessage* CustomMessage::default_instance_ = NULL;
+
+CustomMessage* CustomMessage::New() const {
+  return new CustomMessage;
+}
+
+void CustomMessage::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    type_ = 0;
+    if (has_message()) {
+      if (message_ != &::google::protobuf::internal::kEmptyString) {
+        message_->clear();
+      }
+    }
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool CustomMessage::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch 
(::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // optional int32 type = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) 
==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, 
::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &type_)));
+          set_has_type();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(18)) goto parse_message;
+        break;
+      }
+
+      // optional bytes message = 2;
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) 
==
+            
::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_message:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_message()));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) 
==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void CustomMessage::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // optional int32 type = 1;
+  if (has_type()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->type(), 
output);
+  }
+
+  // optional bytes message = 2;
+  if (has_message()) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytes(
+      2, this->message(), output);
+  }
+
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* CustomMessage::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // optional int32 type = 1;
+  if (has_type()) {
+    target = 
::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, 
this->type(), target);
+  }
+
+  // optional bytes message = 2;
+  if (has_message()) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        2, this->message(), target);
+  }
+
+  if (!unknown_fields().empty()) {
+    target = 
::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int CustomMessage::ByteSize() const {
+  int total_size = 0;
+
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // optional int32 type = 1;
+    if (has_type()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->type());
+    }
+
+    // optional bytes message = 2;
+    if (has_message()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::BytesSize(
+          this->message());
+    }
+
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void CustomMessage::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const CustomMessage* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const 
CustomMessage*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void CustomMessage::MergeFrom(const CustomMessage& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from.has_type()) {
+      set_type(from.type());
+    }
+    if (from.has_message()) {
+      set_message(from.message());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void CustomMessage::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CustomMessage::CopyFrom(const CustomMessage& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CustomMessage::IsInitialized() const {
+
+  return true;
+}
+
+void CustomMessage::Swap(CustomMessage* other) {
+  if (other != this) {
+    std::swap(type_, other->type_);
+    std::swap(message_, other->message_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata CustomMessage::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = CustomMessage_descriptor_;
+  metadata.reflection = CustomMessage_reflection_;
+  return metadata;
+}
+
+
+// ===================================================================
+
+#ifndef _MSC_VER
 const int PlanFragment::kHandleFieldNumber;
 const int PlanFragment::kNetworkCostFieldNumber;
 const int PlanFragment::kCpuCostFieldNumber;

http://git-wip-us.apache.org/repos/asf/drill/blob/576271d5/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 29cd565..683772a 100644
--- a/contrib/native/client/src/protobuf/BitControl.pb.h
+++ b/contrib/native/client/src/protobuf/BitControl.pb.h
@@ -43,6 +43,7 @@ class BitControlHandshake;
 class BitStatus;
 class FragmentStatus;
 class InitializeFragments;
+class CustomMessage;
 class PlanFragment;
 class Collector;
 class QueryContextInformation;
@@ -61,14 +62,16 @@ enum RpcType {
   REQ_QUERY_STATUS = 10,
   REQ_QUERY_CANCEL = 15,
   REQ_UNPAUSE_FRAGMENT = 16,
+  REQ_CUSTOM = 17,
   RESP_FRAGMENT_HANDLE = 11,
   RESP_FRAGMENT_STATUS = 12,
   RESP_BIT_STATUS = 13,
-  RESP_QUERY_STATUS = 14
+  RESP_QUERY_STATUS = 14,
+  RESP_CUSTOM = 18
 };
 bool RpcType_IsValid(int value);
 const RpcType RpcType_MIN = HANDSHAKE;
-const RpcType RpcType_MAX = REQ_UNPAUSE_FRAGMENT;
+const RpcType RpcType_MAX = RESP_CUSTOM;
 const int RpcType_ARRAYSIZE = RpcType_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* RpcType_descriptor();
@@ -453,6 +456,103 @@ class InitializeFragments : public 
::google::protobuf::Message {
 };
 // -------------------------------------------------------------------
 
+class CustomMessage : public ::google::protobuf::Message {
+ public:
+  CustomMessage();
+  virtual ~CustomMessage();
+
+  CustomMessage(const CustomMessage& from);
+
+  inline CustomMessage& operator=(const CustomMessage& from) {
+    CopyFrom(from);
+    return *this;
+  }
+
+  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+    return _unknown_fields_;
+  }
+
+  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+    return &_unknown_fields_;
+  }
+
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const CustomMessage& default_instance();
+
+  void Swap(CustomMessage* other);
+
+  // implements Message ----------------------------------------------
+
+  CustomMessage* New() const;
+  void CopyFrom(const ::google::protobuf::Message& from);
+  void MergeFrom(const ::google::protobuf::Message& from);
+  void CopyFrom(const CustomMessage& from);
+  void MergeFrom(const CustomMessage& from);
+  void Clear();
+  bool IsInitialized() const;
+
+  int ByteSize() const;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input);
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const;
+  ::google::protobuf::uint8* 
SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
+  int GetCachedSize() const { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const;
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // optional int32 type = 1;
+  inline bool has_type() const;
+  inline void clear_type();
+  static const int kTypeFieldNumber = 1;
+  inline ::google::protobuf::int32 type() const;
+  inline void set_type(::google::protobuf::int32 value);
+
+  // optional bytes message = 2;
+  inline bool has_message() const;
+  inline void clear_message();
+  static const int kMessageFieldNumber = 2;
+  inline const ::std::string& message() const;
+  inline void set_message(const ::std::string& value);
+  inline void set_message(const char* value);
+  inline void set_message(const void* value, size_t size);
+  inline ::std::string* mutable_message();
+  inline ::std::string* release_message();
+  inline void set_allocated_message(::std::string* message);
+
+  // @@protoc_insertion_point(class_scope:exec.bit.control.CustomMessage)
+ private:
+  inline void set_has_type();
+  inline void clear_has_type();
+  inline void set_has_message();
+  inline void clear_has_message();
+
+  ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+  ::std::string* message_;
+  ::google::protobuf::int32 type_;
+
+  mutable int _cached_size_;
+  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
+
+  friend void  protobuf_AddDesc_BitControl_2eproto();
+  friend void protobuf_AssignDesc_BitControl_2eproto();
+  friend void protobuf_ShutdownFile_BitControl_2eproto();
+
+  void InitAsDefaultInstance();
+  static CustomMessage* default_instance_;
+};
+// -------------------------------------------------------------------
+
 class PlanFragment : public ::google::protobuf::Message {
  public:
   PlanFragment();
@@ -1349,6 +1449,102 @@ InitializeFragments::mutable_fragment() {
 
 // -------------------------------------------------------------------
 
+// CustomMessage
+
+// optional int32 type = 1;
+inline bool CustomMessage::has_type() const {
+  return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void CustomMessage::set_has_type() {
+  _has_bits_[0] |= 0x00000001u;
+}
+inline void CustomMessage::clear_has_type() {
+  _has_bits_[0] &= ~0x00000001u;
+}
+inline void CustomMessage::clear_type() {
+  type_ = 0;
+  clear_has_type();
+}
+inline ::google::protobuf::int32 CustomMessage::type() const {
+  return type_;
+}
+inline void CustomMessage::set_type(::google::protobuf::int32 value) {
+  set_has_type();
+  type_ = value;
+}
+
+// optional bytes message = 2;
+inline bool CustomMessage::has_message() const {
+  return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void CustomMessage::set_has_message() {
+  _has_bits_[0] |= 0x00000002u;
+}
+inline void CustomMessage::clear_has_message() {
+  _has_bits_[0] &= ~0x00000002u;
+}
+inline void CustomMessage::clear_message() {
+  if (message_ != &::google::protobuf::internal::kEmptyString) {
+    message_->clear();
+  }
+  clear_has_message();
+}
+inline const ::std::string& CustomMessage::message() const {
+  return *message_;
+}
+inline void CustomMessage::set_message(const ::std::string& value) {
+  set_has_message();
+  if (message_ == &::google::protobuf::internal::kEmptyString) {
+    message_ = new ::std::string;
+  }
+  message_->assign(value);
+}
+inline void CustomMessage::set_message(const char* value) {
+  set_has_message();
+  if (message_ == &::google::protobuf::internal::kEmptyString) {
+    message_ = new ::std::string;
+  }
+  message_->assign(value);
+}
+inline void CustomMessage::set_message(const void* value, size_t size) {
+  set_has_message();
+  if (message_ == &::google::protobuf::internal::kEmptyString) {
+    message_ = new ::std::string;
+  }
+  message_->assign(reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* CustomMessage::mutable_message() {
+  set_has_message();
+  if (message_ == &::google::protobuf::internal::kEmptyString) {
+    message_ = new ::std::string;
+  }
+  return message_;
+}
+inline ::std::string* CustomMessage::release_message() {
+  clear_has_message();
+  if (message_ == &::google::protobuf::internal::kEmptyString) {
+    return NULL;
+  } else {
+    ::std::string* temp = message_;
+    message_ = const_cast< 
::std::string*>(&::google::protobuf::internal::kEmptyString);
+    return temp;
+  }
+}
+inline void CustomMessage::set_allocated_message(::std::string* message) {
+  if (message_ != &::google::protobuf::internal::kEmptyString) {
+    delete message_;
+  }
+  if (message) {
+    set_has_message();
+    message_ = message;
+  } else {
+    clear_has_message();
+    message_ = const_cast< 
::std::string*>(&::google::protobuf::internal::kEmptyString);
+  }
+}
+
+// -------------------------------------------------------------------
+
 // PlanFragment
 
 // optional .exec.bit.FragmentHandle handle = 1;

http://git-wip-us.apache.org/repos/asf/drill/blob/576271d5/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 57bceff..a6d1264 100644
--- a/contrib/native/client/src/protobuf/BitData.pb.cc
+++ b/contrib/native/client/src/protobuf/BitData.pb.cc
@@ -74,7 +74,7 @@ void protobuf_AssignDesc_BitData_2eproto() {
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(BitServerHandshake));
   FragmentRecordBatch_descriptor_ = file->message_type(2);
-  static const int FragmentRecordBatch_offsets_[8] = {
+  static const int FragmentRecordBatch_offsets_[7] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentRecordBatch, 
query_id_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentRecordBatch, 
receiving_major_fragment_id_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentRecordBatch, 
receiving_minor_fragment_id_),
@@ -82,7 +82,6 @@ void protobuf_AssignDesc_BitData_2eproto() {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentRecordBatch, 
sending_minor_fragment_id_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentRecordBatch, def_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentRecordBatch, 
islastbatch_),
-    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentRecordBatch, 
isoutofmemory_),
   };
   FragmentRecordBatch_reflection_ =
     new ::google::protobuf::internal::GeneratedMessageReflection(
@@ -142,18 +141,17 @@ void protobuf_AddDesc_BitData_2eproto() {
     "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\"\252\002\n\023Fra"
+    "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\022\034\n\risOutOfMemory"
-    "\030\010 
\001(\010:\005false*D\n\007RpcType\022\r\n\tHANDSHAKE\020\000\022"
-    
"\007\n\003ACK\020\001\022\013\n\007GOODBYE\020\002\022\024\n\020REQ_RECORD_BATC"
-    "H\020\003B(\n\033org.apache.drill.exec.protoB\007BitD"
-    "ataH\001", 645);
+    "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);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "BitData.proto", &protobuf_RegisterTypes);
   BitClientHandshake::default_instance_ = new BitClientHandshake();
@@ -660,7 +658,6 @@ const int 
FragmentRecordBatch::kSendingMajorFragmentIdFieldNumber;
 const int FragmentRecordBatch::kSendingMinorFragmentIdFieldNumber;
 const int FragmentRecordBatch::kDefFieldNumber;
 const int FragmentRecordBatch::kIsLastBatchFieldNumber;
-const int FragmentRecordBatch::kIsOutOfMemoryFieldNumber;
 #endif  // !_MSC_VER
 
 FragmentRecordBatch::FragmentRecordBatch()
@@ -687,7 +684,6 @@ void FragmentRecordBatch::SharedCtor() {
   sending_minor_fragment_id_ = 0;
   def_ = NULL;
   islastbatch_ = false;
-  isoutofmemory_ = false;
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -735,7 +731,6 @@ void FragmentRecordBatch::Clear() {
       if (def_ != NULL) def_->::exec::shared::RecordBatchDef::Clear();
     }
     islastbatch_ = false;
-    isoutofmemory_ = false;
   }
   receiving_minor_fragment_id_.Clear();
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
@@ -857,22 +852,6 @@ bool FragmentRecordBatch::MergePartialFromCodedStream(
         } else {
           goto handle_uninterpreted;
         }
-        if (input->ExpectTag(64)) goto parse_isOutOfMemory;
-        break;
-      }
-
-      // optional bool isOutOfMemory = 8 [default = false];
-      case 8: {
-        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) 
==
-            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
-         parse_isOutOfMemory:
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   bool, 
::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
-                 input, &isoutofmemory_)));
-          set_has_isoutofmemory();
-        } else {
-          goto handle_uninterpreted;
-        }
         if (input->ExpectAtEnd()) return true;
         break;
       }
@@ -933,11 +912,6 @@ void FragmentRecordBatch::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteBool(7, 
this->islastbatch(), output);
   }
 
-  // optional bool isOutOfMemory = 8 [default = false];
-  if (has_isoutofmemory()) {
-    ::google::protobuf::internal::WireFormatLite::WriteBool(8, 
this->isoutofmemory(), output);
-  }
-
   if (!unknown_fields().empty()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         unknown_fields(), output);
@@ -986,11 +960,6 @@ void FragmentRecordBatch::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, 
this->islastbatch(), target);
   }
 
-  // optional bool isOutOfMemory = 8 [default = false];
-  if (has_isoutofmemory()) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(8, 
this->isoutofmemory(), target);
-  }
-
   if (!unknown_fields().empty()) {
     target = 
::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         unknown_fields(), target);
@@ -1042,11 +1011,6 @@ int FragmentRecordBatch::ByteSize() const {
       total_size += 1 + 1;
     }
 
-    // optional bool isOutOfMemory = 8 [default = false];
-    if (has_isoutofmemory()) {
-      total_size += 1 + 1;
-    }
-
   }
   // repeated int32 receiving_minor_fragment_id = 3;
   {
@@ -1103,9 +1067,6 @@ void FragmentRecordBatch::MergeFrom(const 
FragmentRecordBatch& from) {
     if (from.has_islastbatch()) {
       set_islastbatch(from.islastbatch());
     }
-    if (from.has_isoutofmemory()) {
-      set_isoutofmemory(from.isoutofmemory());
-    }
   }
   mutable_unknown_fields()->MergeFrom(from.unknown_fields());
 }
@@ -1136,7 +1097,6 @@ void FragmentRecordBatch::Swap(FragmentRecordBatch* 
other) {
     std::swap(sending_minor_fragment_id_, other->sending_minor_fragment_id_);
     std::swap(def_, other->def_);
     std::swap(islastbatch_, other->islastbatch_);
-    std::swap(isoutofmemory_, other->isoutofmemory_);
     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/576271d5/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 806d7f7..c743612 100644
--- a/contrib/native/client/src/protobuf/BitData.pb.h
+++ b/contrib/native/client/src/protobuf/BitData.pb.h
@@ -352,13 +352,6 @@ class FragmentRecordBatch : public 
::google::protobuf::Message {
   inline bool islastbatch() const;
   inline void set_islastbatch(bool value);
 
-  // optional bool isOutOfMemory = 8 [default = false];
-  inline bool has_isoutofmemory() const;
-  inline void clear_isoutofmemory();
-  static const int kIsOutOfMemoryFieldNumber = 8;
-  inline bool isoutofmemory() const;
-  inline void set_isoutofmemory(bool value);
-
   // @@protoc_insertion_point(class_scope:exec.bit.data.FragmentRecordBatch)
  private:
   inline void set_has_query_id();
@@ -373,8 +366,6 @@ class FragmentRecordBatch : public 
::google::protobuf::Message {
   inline void clear_has_def();
   inline void set_has_islastbatch();
   inline void clear_has_islastbatch();
-  inline void set_has_isoutofmemory();
-  inline void clear_has_isoutofmemory();
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
@@ -385,10 +376,9 @@ class FragmentRecordBatch : public 
::google::protobuf::Message {
   ::exec::shared::RecordBatchDef* def_;
   ::google::protobuf::int32 sending_minor_fragment_id_;
   bool islastbatch_;
-  bool isoutofmemory_;
 
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32];
+  ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32];
 
   friend void  protobuf_AddDesc_BitData_2eproto();
   friend void protobuf_AssignDesc_BitData_2eproto();
@@ -668,28 +658,6 @@ inline void FragmentRecordBatch::set_islastbatch(bool 
value) {
   islastbatch_ = value;
 }
 
-// optional bool isOutOfMemory = 8 [default = false];
-inline bool FragmentRecordBatch::has_isoutofmemory() const {
-  return (_has_bits_[0] & 0x00000080u) != 0;
-}
-inline void FragmentRecordBatch::set_has_isoutofmemory() {
-  _has_bits_[0] |= 0x00000080u;
-}
-inline void FragmentRecordBatch::clear_has_isoutofmemory() {
-  _has_bits_[0] &= ~0x00000080u;
-}
-inline void FragmentRecordBatch::clear_isoutofmemory() {
-  isoutofmemory_ = false;
-  clear_has_isoutofmemory();
-}
-inline bool FragmentRecordBatch::isoutofmemory() const {
-  return isoutofmemory_;
-}
-inline void FragmentRecordBatch::set_isoutofmemory(bool value) {
-  set_has_isoutofmemory();
-  isoutofmemory_ = value;
-}
-
 
 // @@protoc_insertion_point(namespace_scope)
 

http://git-wip-us.apache.org/repos/asf/drill/blob/576271d5/contrib/native/client/src/protobuf/Types.pb.cc
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/Types.pb.cc 
b/contrib/native/client/src/protobuf/Types.pb.cc
index a14f404..ec8a1c8 100644
--- a/contrib/native/client/src/protobuf/Types.pb.cc
+++ b/contrib/native/client/src/protobuf/Types.pb.cc
@@ -36,13 +36,14 @@ void protobuf_AssignDesc_Types_2eproto() {
       "Types.proto");
   GOOGLE_CHECK(file != NULL);
   MajorType_descriptor_ = file->message_type(0);
-  static const int MajorType_offsets_[6] = {
+  static const int MajorType_offsets_[7] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MajorType, minor_type_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MajorType, mode_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MajorType, width_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MajorType, precision_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MajorType, scale_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MajorType, timezone_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MajorType, sub_type_),
   };
   MajorType_reflection_ =
     new ::google::protobuf::internal::GeneratedMessageReflection(
@@ -87,27 +88,28 @@ void protobuf_AddDesc_Types_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-    "\n\013Types.proto\022\006common\"\225\001\n\tMajorType\022%\n\nm"
+    "\n\013Types.proto\022\006common\"\272\001\n\tMajorType\022%\n\nm"
     "inor_type\030\001 \001(\0162\021.common.MinorType\022\036\n\004mo"
     "de\030\002 \001(\0162\020.common.DataMode\022\r\n\005width\030\003 \001("
     "\005\022\021\n\tprecision\030\004 \001(\005\022\r\n\005scale\030\005 
\001(\005\022\020\n\010t"
-    "imeZone\030\006 
\001(\005*\220\004\n\tMinorType\022\010\n\004LATE\020\000\022\007\n"
-    
"\003MAP\020\001\022\013\n\007TINYINT\020\003\022\014\n\010SMALLINT\020\004\022\007\n\003INT"
-    
"\020\005\022\n\n\006BIGINT\020\006\022\014\n\010DECIMAL9\020\007\022\r\n\tDECIMAL1"
-    "8\020\010\022\023\n\017DECIMAL28SPARSE\020\t\022\023\n\017DECIMAL38SPA"
-    
"RSE\020\n\022\t\n\005MONEY\020\013\022\010\n\004DATE\020\014\022\010\n\004TIME\020\r\022\n\n\006"
-    
"TIMETZ\020\016\022\017\n\013TIMESTAMPTZ\020\017\022\r\n\tTIMESTAMP\020\020"
-    
"\022\014\n\010INTERVAL\020\021\022\n\n\006FLOAT4\020\022\022\n\n\006FLOAT8\020\023\022\007"
-    
"\n\003BIT\020\024\022\r\n\tFIXEDCHAR\020\025\022\017\n\013FIXED16CHAR\020\026\022"
-    
"\017\n\013FIXEDBINARY\020\027\022\013\n\007VARCHAR\020\030\022\r\n\tVAR16CH"
-    
"AR\020\031\022\r\n\tVARBINARY\020\032\022\t\n\005UINT1\020\035\022\t\n\005UINT2\020"
-    "\036\022\t\n\005UINT4\020\037\022\t\n\005UINT8\020 
\022\022\n\016DECIMAL28DENS"
-    "E\020!\022\022\n\016DECIMAL38DENSE\020\"\022\016\n\nDM_UNKNOWN\020%\022"
-    
"\020\n\014INTERVALYEAR\020&\022\017\n\013INTERVALDAY\020\'\022\010\n\004LI"
-    "ST\020(\022\022\n\016GENERIC_OBJECT\020)*=\n\010DataMode\022\017\n\013"
-    "DM_OPTIONAL\020\000\022\017\n\013DM_REQUIRED\020\001\022\017\n\013DM_REP"
-    "EATED\020\002B-\n\035org.apache.drill.common.types"
-    "B\nTypeProtosH\001", 814);
+    "imeZone\030\006 \001(\005\022#\n\010sub_type\030\007 
\003(\0162\021.common"
+    
".MinorType*\233\004\n\tMinorType\022\010\n\004LATE\020\000\022\007\n\003MA"
+    
"P\020\001\022\013\n\007TINYINT\020\003\022\014\n\010SMALLINT\020\004\022\007\n\003INT\020\005\022"
+    
"\n\n\006BIGINT\020\006\022\014\n\010DECIMAL9\020\007\022\r\n\tDECIMAL18\020\010"
+    "\022\023\n\017DECIMAL28SPARSE\020\t\022\023\n\017DECIMAL38SPARSE"
+    
"\020\n\022\t\n\005MONEY\020\013\022\010\n\004DATE\020\014\022\010\n\004TIME\020\r\022\n\n\006TIM"
+    
"ETZ\020\016\022\017\n\013TIMESTAMPTZ\020\017\022\r\n\tTIMESTAMP\020\020\022\014\n"
+    
"\010INTERVAL\020\021\022\n\n\006FLOAT4\020\022\022\n\n\006FLOAT8\020\023\022\007\n\003B"
+    
"IT\020\024\022\r\n\tFIXEDCHAR\020\025\022\017\n\013FIXED16CHAR\020\026\022\017\n\013"
+    "FIXEDBINARY\020\027\022\013\n\007VARCHAR\020\030\022\r\n\tVAR16CHAR\020"
+    
"\031\022\r\n\tVARBINARY\020\032\022\t\n\005UINT1\020\035\022\t\n\005UINT2\020\036\022\t"
+    "\n\005UINT4\020\037\022\t\n\005UINT8\020 
\022\022\n\016DECIMAL28DENSE\020!"
+    
"\022\022\n\016DECIMAL38DENSE\020\"\022\016\n\nDM_UNKNOWN\020%\022\020\n\014"
+    "INTERVALYEAR\020&\022\017\n\013INTERVALDAY\020\'\022\010\n\004LIST\020"
+    "(\022\022\n\016GENERIC_OBJECT\020)\022\t\n\005UNION\020**=\n\010Data"
+    
"Mode\022\017\n\013DM_OPTIONAL\020\000\022\017\n\013DM_REQUIRED\020\001\022\017"
+    "\n\013DM_REPEATED\020\002B-\n\035org.apache.drill.comm"
+    "on.typesB\nTypeProtosH\001", 862);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "Types.proto", &protobuf_RegisterTypes);
   MajorType::default_instance_ = new MajorType();
@@ -164,6 +166,7 @@ bool MinorType_IsValid(int value) {
     case 39:
     case 40:
     case 41:
+    case 42:
       return true;
     default:
       return false;
@@ -195,6 +198,7 @@ const int MajorType::kWidthFieldNumber;
 const int MajorType::kPrecisionFieldNumber;
 const int MajorType::kScaleFieldNumber;
 const int MajorType::kTimeZoneFieldNumber;
+const int MajorType::kSubTypeFieldNumber;
 #endif  // !_MSC_VER
 
 MajorType::MajorType()
@@ -261,6 +265,7 @@ void MajorType::Clear() {
     scale_ = 0;
     timezone_ = 0;
   }
+  sub_type_.Clear();
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   mutable_unknown_fields()->Clear();
 }
@@ -372,6 +377,35 @@ bool MajorType::MergePartialFromCodedStream(
         } else {
           goto handle_uninterpreted;
         }
+        if (input->ExpectTag(56)) goto parse_sub_type;
+        break;
+      }
+
+      // repeated .common.MinorType sub_type = 7;
+      case 7: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) 
==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_sub_type:
+          int value;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, 
::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          if (::common::MinorType_IsValid(value)) {
+            add_sub_type(static_cast< ::common::MinorType >(value));
+          } else {
+            mutable_unknown_fields()->AddVarint(7, value);
+          }
+        } else if 
(::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_LENGTH_DELIMITED) {
+          
DO_((::google::protobuf::internal::WireFormatLite::ReadPackedEnumNoInline(
+                 input,
+                 &::common::MinorType_IsValid,
+                 this->mutable_sub_type())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(56)) goto parse_sub_type;
         if (input->ExpectAtEnd()) return true;
         break;
       }
@@ -426,6 +460,12 @@ void MajorType::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteInt32(6, 
this->timezone(), output);
   }
 
+  // repeated .common.MinorType sub_type = 7;
+  for (int i = 0; i < this->sub_type_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      7, this->sub_type(i), output);
+  }
+
   if (!unknown_fields().empty()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         unknown_fields(), output);
@@ -466,6 +506,12 @@ void MajorType::SerializeWithCachedSizes(
     target = 
::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(6, 
this->timezone(), target);
   }
 
+  // repeated .common.MinorType sub_type = 7;
+  for (int i = 0; i < this->sub_type_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      7, this->sub_type(i), target);
+  }
+
   if (!unknown_fields().empty()) {
     target = 
::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         unknown_fields(), target);
@@ -518,6 +564,16 @@ int MajorType::ByteSize() const {
     }
 
   }
+  // repeated .common.MinorType sub_type = 7;
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->sub_type_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::EnumSize(
+        this->sub_type(i));
+    }
+    total_size += 1 * this->sub_type_size() + data_size;
+  }
+
   if (!unknown_fields().empty()) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
@@ -543,6 +599,7 @@ void MajorType::MergeFrom(const 
::google::protobuf::Message& from) {
 
 void MajorType::MergeFrom(const MajorType& from) {
   GOOGLE_CHECK_NE(&from, this);
+  sub_type_.MergeFrom(from.sub_type_);
   if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
     if (from.has_minor_type()) {
       set_minor_type(from.minor_type());
@@ -591,6 +648,7 @@ void MajorType::Swap(MajorType* other) {
     std::swap(precision_, other->precision_);
     std::swap(scale_, other->scale_);
     std::swap(timezone_, other->timezone_);
+    sub_type_.Swap(&other->sub_type_);
     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/576271d5/contrib/native/client/src/protobuf/UserBitShared.pb.cc
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/UserBitShared.pb.cc 
b/contrib/native/client/src/protobuf/UserBitShared.pb.cc
index 4456db3..c314a1d 100644
--- a/contrib/native/client/src/protobuf/UserBitShared.pb.cc
+++ b/contrib/native/client/src/protobuf/UserBitShared.pb.cc
@@ -603,79 +603,79 @@ void protobuf_AddDesc_UserBitShared_2eproto() {
     "ield\022\023\n\013value_count\030\004 \001(\005\022\027\n\017var_byte_le"
     "ngth\030\005 \001(\005\022\025\n\rbuffer_length\030\007 
\001(\005\"7\n\nNod"
     "eStatus\022\017\n\007node_id\030\001 \001(\005\022\030\n\020memory_footp"
-    "rint\030\002 \001(\003\"\206\002\n\013QueryResult\0228\n\013query_stat"
+    "rint\030\002 \001(\003\"\225\002\n\013QueryResult\0228\n\013query_stat"
     "e\030\001 \001(\0162#.exec.shared.QueryResult.QueryS"
     "tate\022&\n\010query_id\030\002 \001(\0132\024.exec.shared.Que"
     "ryId\022(\n\005error\030\003 \003(\0132\031.exec.shared.DrillP"
-    "BError\"k\n\nQueryState\022\013\n\007PENDING\020\000\022\013\n\007RUN"
-    
"NING\020\001\022\r\n\tCOMPLETED\020\002\022\014\n\010CANCELED\020\003\022\n\n\006F"
-    "AILED\020\004\022\032\n\026CANCELLATION_REQUESTED\020\005\"p\n\tQ"
-    "ueryData\022&\n\010query_id\030\001 \001(\0132\024.exec.shared"
-    ".QueryId\022\021\n\trow_count\030\002 \001(\005\022(\n\003def\030\003 
\001(\013"
-    "2\033.exec.shared.RecordBatchDef\"\227\001\n\tQueryI"
-    "nfo\022\r\n\005query\030\001 \001(\t\022\r\n\005start\030\002 
\001(\003\0222\n\005sta"
-    "te\030\003 \001(\0162#.exec.shared.QueryResult.Query"
-    "State\022\017\n\004user\030\004 \001(\t:\001-\022\'\n\007foreman\030\005 
\001(\0132"
-    "\026.exec.DrillbitEndpoint\"\272\003\n\014QueryProfile"
-    "\022 \n\002id\030\001 \001(\0132\024.exec.shared.QueryId\022$\n\004ty"
-    "pe\030\002 \001(\0162\026.exec.shared.QueryType\022\r\n\005star"
-    "t\030\003 \001(\003\022\013\n\003end\030\004 
\001(\003\022\r\n\005query\030\005 \001(\t\022\014\n\004p"
-    "lan\030\006 \001(\t\022\'\n\007foreman\030\007 \001(\0132\026.exec.Drillb"
-    "itEndpoint\0222\n\005state\030\010 \001(\0162#.exec.shared."
-    "QueryResult.QueryState\022\027\n\017total_fragment"
-    "s\030\t \001(\005\022\032\n\022finished_fragments\030\n 
\001(\005\022;\n\020f"
-    "ragment_profile\030\013 \003(\0132!.exec.shared.Majo"
-    "rFragmentProfile\022\017\n\004user\030\014 \001(\t:\001-\022\r\n\005err"
-    "or\030\r \001(\t\022\024\n\014verboseError\030\016 
\001(\t\022\020\n\010error_"
-    "id\030\017 \001(\t\022\022\n\nerror_node\030\020 \001(\t\"t\n\024MajorFra"
-    "gmentProfile\022\031\n\021major_fragment_id\030\001 \001(\005\022"
-    "A\n\026minor_fragment_profile\030\002 \003(\0132!.exec.s"
-    "hared.MinorFragmentProfile\"\350\002\n\024MinorFrag"
-    "mentProfile\022)\n\005state\030\001 \001(\0162\032.exec.shared"
-    ".FragmentState\022(\n\005error\030\002 \001(\0132\031.exec.sha"
-    "red.DrillPBError\022\031\n\021minor_fragment_id\030\003 "
-    "\001(\005\0226\n\020operator_profile\030\004 \003(\0132\034.exec.sha"
-    "red.OperatorProfile\022\022\n\nstart_time\030\005 \001(\003\022"
-    "\020\n\010end_time\030\006 \001(\003\022\023\n\013memory_used\030\007 
\001(\003\022\027"
-    "\n\017max_memory_used\030\010 \001(\003\022(\n\010endpoint\030\t \001("
-    "\0132\026.exec.DrillbitEndpoint\022\023\n\013last_update"
-    "\030\n \001(\003\022\025\n\rlast_progress\030\013 
\001(\003\"\377\001\n\017Operat"
-    "orProfile\0221\n\rinput_profile\030\001 \003(\0132\032.exec."
-    "shared.StreamProfile\022\023\n\013operator_id\030\003 \001("
-    "\005\022\025\n\roperator_type\030\004 
\001(\005\022\023\n\013setup_nanos\030"
-    "\005 \001(\003\022\025\n\rprocess_nanos\030\006 
\001(\003\022#\n\033peak_loc"
-    "al_memory_allocated\030\007 \001(\003\022(\n\006metric\030\010 \003("
-    "\0132\030.exec.shared.MetricValue\022\022\n\nwait_nano"
-    "s\030\t \001(\003\"B\n\rStreamProfile\022\017\n\007records\030\001 \001("
-    "\003\022\017\n\007batches\030\002 \001(\003\022\017\n\007schemas\030\003 
\001(\003\"J\n\013M"
-    "etricValue\022\021\n\tmetric_id\030\001 \001(\005\022\022\n\nlong_va"
-    "lue\030\002 \001(\003\022\024\n\014double_value\030\003 
\001(\001*5\n\nRpcCh"
-    
"annel\022\017\n\013BIT_CONTROL\020\000\022\014\n\010BIT_DATA\020\001\022\010\n\004"
-    
"USER\020\002*/\n\tQueryType\022\007\n\003SQL\020\001\022\013\n\007LOGICAL\020"
-    
"\002\022\014\n\010PHYSICAL\020\003*\207\001\n\rFragmentState\022\013\n\007SEN"
-    "DING\020\000\022\027\n\023AWAITING_ALLOCATION\020\001\022\013\n\007RUNNI"
-    
"NG\020\002\022\014\n\010FINISHED\020\003\022\r\n\tCANCELLED\020\004\022\n\n\006FAI"
-    "LED\020\005\022\032\n\026CANCELLATION_REQUESTED\020\006*\335\005\n\020Co"
-    "reOperatorType\022\021\n\rSINGLE_SENDER\020\000\022\024\n\020BRO"
-    "ADCAST_SENDER\020\001\022\n\n\006FILTER\020\002\022\022\n\016HASH_AGGR"
-    
"EGATE\020\003\022\r\n\tHASH_JOIN\020\004\022\016\n\nMERGE_JOIN\020\005\022\031"
-    
"\n\025HASH_PARTITION_SENDER\020\006\022\t\n\005LIMIT\020\007\022\024\n\020"
-    "MERGING_RECEIVER\020\010\022\034\n\030ORDERED_PARTITION_"
-    "SENDER\020\t\022\013\n\007PROJECT\020\n\022\026\n\022UNORDERED_RECEI"
-    
"VER\020\013\022\020\n\014RANGE_SENDER\020\014\022\n\n\006SCREEN\020\r\022\034\n\030S"
-    "ELECTION_VECTOR_REMOVER\020\016\022\027\n\023STREAMING_A"
-    "GGREGATE\020\017\022\016\n\nTOP_N_SORT\020\020\022\021\n\rEXTERNAL_S"
-    
"ORT\020\021\022\t\n\005TRACE\020\022\022\t\n\005UNION\020\023\022\014\n\010OLD_SORT\020"
-    "\024\022\032\n\026PARQUET_ROW_GROUP_SCAN\020\025\022\021\n\rHIVE_SU"
-    "B_SCAN\020\026\022\025\n\021SYSTEM_TABLE_SCAN\020\027\022\021\n\rMOCK_"
-    "SUB_SCAN\020\030\022\022\n\016PARQUET_WRITER\020\031\022\023\n\017DIRECT"
-    "_SUB_SCAN\020\032\022\017\n\013TEXT_WRITER\020\033\022\021\n\rTEXT_SUB"
-    "_SCAN\020\034\022\021\n\rJSON_SUB_SCAN\020\035\022\030\n\024INFO_SCHEM"
-    "A_SUB_SCAN\020\036\022\023\n\017COMPLEX_TO_JSON\020\037\022\025\n\021PRO"
-    "DUCER_CONSUMER\020 \022\022\n\016HBASE_SUB_SCAN\020!\022\n\n\006"
-    "WINDOW\020\"\022\024\n\020NESTED_LOOP_JOIN\020#\022\021\n\rAVRO_S"
-    "UB_SCAN\020$B.\n\033org.apache.drill.exec.proto"
-    "B\rUserBitSharedH\001", 4417);
+    "BError\"z\n\nQueryState\022\014\n\010STARTING\020\000\022\013\n\007RU"
+    
"NNING\020\001\022\r\n\tCOMPLETED\020\002\022\014\n\010CANCELED\020\003\022\n\n\006"
+    "FAILED\020\004\022\032\n\026CANCELLATION_REQUESTED\020\005\022\014\n\010"
+    "ENQUEUED\020\006\"p\n\tQueryData\022&\n\010query_id\030\001 \001("
+    "\0132\024.exec.shared.QueryId\022\021\n\trow_count\030\002 \001"
+    "(\005\022(\n\003def\030\003 \001(\0132\033.exec.shared.RecordBatc"
+    "hDef\"\227\001\n\tQueryInfo\022\r\n\005query\030\001 
\001(\t\022\r\n\005sta"
+    "rt\030\002 \001(\003\0222\n\005state\030\003 \001(\0162#.exec.shared.Qu"
+    "eryResult.QueryState\022\017\n\004user\030\004 \001(\t:\001-\022\'\n"
+    "\007foreman\030\005 \001(\0132\026.exec.DrillbitEndpoint\"\272"
+    "\003\n\014QueryProfile\022 \n\002id\030\001 \001(\0132\024.exec.share"
+    "d.QueryId\022$\n\004type\030\002 \001(\0162\026.exec.shared.Qu"
+    "eryType\022\r\n\005start\030\003 \001(\003\022\013\n\003end\030\004 
\001(\003\022\r\n\005q"
+    "uery\030\005 \001(\t\022\014\n\004plan\030\006 
\001(\t\022\'\n\007foreman\030\007 \001("
+    "\0132\026.exec.DrillbitEndpoint\0222\n\005state\030\010 \001(\016"
+    "2#.exec.shared.QueryResult.QueryState\022\027\n"
+    "\017total_fragments\030\t \001(\005\022\032\n\022finished_fragm"
+    "ents\030\n \001(\005\022;\n\020fragment_profile\030\013 \003(\0132!.e"
+    "xec.shared.MajorFragmentProfile\022\017\n\004user\030"
+    "\014 \001(\t:\001-\022\r\n\005error\030\r 
\001(\t\022\024\n\014verboseError\030"
+    "\016 \001(\t\022\020\n\010error_id\030\017 
\001(\t\022\022\n\nerror_node\030\020 "
+    "\001(\t\"t\n\024MajorFragmentProfile\022\031\n\021major_fra"
+    "gment_id\030\001 \001(\005\022A\n\026minor_fragment_profile"
+    "\030\002 \003(\0132!.exec.shared.MinorFragmentProfil"
+    "e\"\350\002\n\024MinorFragmentProfile\022)\n\005state\030\001 \001("
+    "\0162\032.exec.shared.FragmentState\022(\n\005error\030\002"
+    " \001(\0132\031.exec.shared.DrillPBError\022\031\n\021minor"
+    "_fragment_id\030\003 \001(\005\0226\n\020operator_profile\030\004"
+    " \003(\0132\034.exec.shared.OperatorProfile\022\022\n\nst"
+    "art_time\030\005 \001(\003\022\020\n\010end_time\030\006 
\001(\003\022\023\n\013memo"
+    "ry_used\030\007 \001(\003\022\027\n\017max_memory_used\030\010 
\001(\003\022("
+    "\n\010endpoint\030\t \001(\0132\026.exec.DrillbitEndpoint"
+    "\022\023\n\013last_update\030\n 
\001(\003\022\025\n\rlast_progress\030\013"
+    " \001(\003\"\377\001\n\017OperatorProfile\0221\n\rinput_profil"
+    "e\030\001 \003(\0132\032.exec.shared.StreamProfile\022\023\n\013o"
+    "perator_id\030\003 \001(\005\022\025\n\roperator_type\030\004 
\001(\005\022"
+    "\023\n\013setup_nanos\030\005 \001(\003\022\025\n\rprocess_nanos\030\006 "
+    "\001(\003\022#\n\033peak_local_memory_allocated\030\007 \001(\003"
+    "\022(\n\006metric\030\010 \003(\0132\030.exec.shared.MetricVal"
+    "ue\022\022\n\nwait_nanos\030\t \001(\003\"B\n\rStreamProfile\022"
+    "\017\n\007records\030\001 \001(\003\022\017\n\007batches\030\002 
\001(\003\022\017\n\007sch"
+    "emas\030\003 \001(\003\"J\n\013MetricValue\022\021\n\tmetric_id\030\001"
+    " \001(\005\022\022\n\nlong_value\030\002 
\001(\003\022\024\n\014double_value"
+    "\030\003 
\001(\001*5\n\nRpcChannel\022\017\n\013BIT_CONTROL\020\000\022\014\n"
+    
"\010BIT_DATA\020\001\022\010\n\004USER\020\002*/\n\tQueryType\022\007\n\003SQ"
+    
"L\020\001\022\013\n\007LOGICAL\020\002\022\014\n\010PHYSICAL\020\003*\207\001\n\rFragm"
+    "entState\022\013\n\007SENDING\020\000\022\027\n\023AWAITING_ALLOCA"
+    
"TION\020\001\022\013\n\007RUNNING\020\002\022\014\n\010FINISHED\020\003\022\r\n\tCAN"
+    "CELLED\020\004\022\n\n\006FAILED\020\005\022\032\n\026CANCELLATION_REQ"
+    "UESTED\020\006*\335\005\n\020CoreOperatorType\022\021\n\rSINGLE_"
+    "SENDER\020\000\022\024\n\020BROADCAST_SENDER\020\001\022\n\n\006FILTER"
+    
"\020\002\022\022\n\016HASH_AGGREGATE\020\003\022\r\n\tHASH_JOIN\020\004\022\016\n"
+    "\nMERGE_JOIN\020\005\022\031\n\025HASH_PARTITION_SENDER\020\006"
+    
"\022\t\n\005LIMIT\020\007\022\024\n\020MERGING_RECEIVER\020\010\022\034\n\030ORD"
+    "ERED_PARTITION_SENDER\020\t\022\013\n\007PROJECT\020\n\022\026\n\022"
+    "UNORDERED_RECEIVER\020\013\022\020\n\014RANGE_SENDER\020\014\022\n"
+    "\n\006SCREEN\020\r\022\034\n\030SELECTION_VECTOR_REMOVER\020\016"
+    "\022\027\n\023STREAMING_AGGREGATE\020\017\022\016\n\nTOP_N_SORT\020"
+    
"\020\022\021\n\rEXTERNAL_SORT\020\021\022\t\n\005TRACE\020\022\022\t\n\005UNION"
+    "\020\023\022\014\n\010OLD_SORT\020\024\022\032\n\026PARQUET_ROW_GROUP_SC"
+    "AN\020\025\022\021\n\rHIVE_SUB_SCAN\020\026\022\025\n\021SYSTEM_TABLE_"
+    "SCAN\020\027\022\021\n\rMOCK_SUB_SCAN\020\030\022\022\n\016PARQUET_WRI"
+    "TER\020\031\022\023\n\017DIRECT_SUB_SCAN\020\032\022\017\n\013TEXT_WRITE"
+    "R\020\033\022\021\n\rTEXT_SUB_SCAN\020\034\022\021\n\rJSON_SUB_SCAN\020"
+    "\035\022\030\n\024INFO_SCHEMA_SUB_SCAN\020\036\022\023\n\017COMPLEX_T"
+    "O_JSON\020\037\022\025\n\021PRODUCER_CONSUMER\020 \022\022\n\016HBASE"
+    "_SUB_SCAN\020!\022\n\n\006WINDOW\020\"\022\024\n\020NESTED_LOOP_J"
+    "OIN\020#\022\021\n\rAVRO_SUB_SCAN\020$B.\n\033org.apache.d"
+    "rill.exec.protoB\rUserBitSharedH\001", 4432);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "UserBitShared.proto", &protobuf_RegisterTypes);
   UserCredentials::default_instance_ = new UserCredentials();
@@ -4209,6 +4209,7 @@ bool QueryResult_QueryState_IsValid(int value) {
     case 3:
     case 4:
     case 5:
+    case 6:
       return true;
     default:
       return false;
@@ -4216,12 +4217,13 @@ bool QueryResult_QueryState_IsValid(int value) {
 }
 
 #ifndef _MSC_VER
-const QueryResult_QueryState QueryResult::PENDING;
+const QueryResult_QueryState QueryResult::STARTING;
 const QueryResult_QueryState QueryResult::RUNNING;
 const QueryResult_QueryState QueryResult::COMPLETED;
 const QueryResult_QueryState QueryResult::CANCELED;
 const QueryResult_QueryState QueryResult::FAILED;
 const QueryResult_QueryState QueryResult::CANCELLATION_REQUESTED;
+const QueryResult_QueryState QueryResult::ENQUEUED;
 const QueryResult_QueryState QueryResult::QueryState_MIN;
 const QueryResult_QueryState QueryResult::QueryState_MAX;
 const int QueryResult::QueryState_ARRAYSIZE;

http://git-wip-us.apache.org/repos/asf/drill/blob/576271d5/contrib/native/client/src/protobuf/UserBitShared.pb.h
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/UserBitShared.pb.h 
b/contrib/native/client/src/protobuf/UserBitShared.pb.h
index e35020f..41279ca 100644
--- a/contrib/native/client/src/protobuf/UserBitShared.pb.h
+++ b/contrib/native/client/src/protobuf/UserBitShared.pb.h
@@ -106,16 +106,17 @@ inline bool NamePart_Type_Parse(
     NamePart_Type_descriptor(), name, value);
 }
 enum QueryResult_QueryState {
-  QueryResult_QueryState_PENDING = 0,
+  QueryResult_QueryState_STARTING = 0,
   QueryResult_QueryState_RUNNING = 1,
   QueryResult_QueryState_COMPLETED = 2,
   QueryResult_QueryState_CANCELED = 3,
   QueryResult_QueryState_FAILED = 4,
-  QueryResult_QueryState_CANCELLATION_REQUESTED = 5
+  QueryResult_QueryState_CANCELLATION_REQUESTED = 5,
+  QueryResult_QueryState_ENQUEUED = 6
 };
 bool QueryResult_QueryState_IsValid(int value);
-const QueryResult_QueryState QueryResult_QueryState_QueryState_MIN = 
QueryResult_QueryState_PENDING;
-const QueryResult_QueryState QueryResult_QueryState_QueryState_MAX = 
QueryResult_QueryState_CANCELLATION_REQUESTED;
+const QueryResult_QueryState QueryResult_QueryState_QueryState_MIN = 
QueryResult_QueryState_STARTING;
+const QueryResult_QueryState QueryResult_QueryState_QueryState_MAX = 
QueryResult_QueryState_ENQUEUED;
 const int QueryResult_QueryState_QueryState_ARRAYSIZE = 
QueryResult_QueryState_QueryState_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* QueryResult_QueryState_descriptor();
@@ -1507,12 +1508,13 @@ class QueryResult : public ::google::protobuf::Message {
   // nested types ----------------------------------------------------
 
   typedef QueryResult_QueryState QueryState;
-  static const QueryState PENDING = QueryResult_QueryState_PENDING;
+  static const QueryState STARTING = QueryResult_QueryState_STARTING;
   static const QueryState RUNNING = QueryResult_QueryState_RUNNING;
   static const QueryState COMPLETED = QueryResult_QueryState_COMPLETED;
   static const QueryState CANCELED = QueryResult_QueryState_CANCELED;
   static const QueryState FAILED = QueryResult_QueryState_FAILED;
   static const QueryState CANCELLATION_REQUESTED = 
QueryResult_QueryState_CANCELLATION_REQUESTED;
+  static const QueryState ENQUEUED = QueryResult_QueryState_ENQUEUED;
   static inline bool QueryState_IsValid(int value) {
     return QueryResult_QueryState_IsValid(value);
   }

Reply via email to