You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by GitBox <gi...@apache.org> on 2019/01/07 21:48:04 UTC

[GitHub] HanumathRao closed pull request #1596: DRILL-6946: Implement java.sql.Connection setSchema and getSchema methods in DrillConnectionImpl

HanumathRao closed pull request #1596: DRILL-6946: Implement java.sql.Connection setSchema and getSchema methods in DrillConnectionImpl
URL: https://github.com/apache/drill/pull/1596
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/contrib/native/client/src/protobuf/User.pb.cc b/contrib/native/client/src/protobuf/User.pb.cc
index e2ae3d19e00..a0e2acd9930 100644
--- a/contrib/native/client/src/protobuf/User.pb.cc
+++ b/contrib/native/client/src/protobuf/User.pb.cc
@@ -671,7 +671,7 @@ void protobuf_AssignDesc_User_2eproto() {
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(GetServerMetaResp));
   ServerMeta_descriptor_ = file->message_type(29);
-  static const int ServerMeta_offsets_[49] = {
+  static const int ServerMeta_offsets_[50] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServerMeta, all_tables_selectable_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServerMeta, blob_included_in_max_row_size_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServerMeta, catalog_at_start_),
@@ -721,6 +721,7 @@ void protobuf_AssignDesc_User_2eproto() {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServerMeta, table_term_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServerMeta, transaction_supported_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServerMeta, union_support_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ServerMeta, current_schema_),
   };
   ServerMeta_reflection_ =
     new ::google::protobuf::internal::GeneratedMessageReflection(
@@ -1039,7 +1040,7 @@ void protobuf_AddDesc_User_2eproto() {
     "verMetaResp\022(\n\006status\030\001 \001(\0162\030.exec.user."
     "RequestStatus\022*\n\013server_meta\030\002 \001(\0132\025.exe"
     "c.user.ServerMeta\022(\n\005error\030\003 \001(\0132\031.exec."
-    "shared.DrillPBError\"\377\r\n\nServerMeta\022\035\n\025al"
+    "shared.DrillPBError\"\227\016\n\nServerMeta\022\035\n\025al"
     "l_tables_selectable\030\001 \001(\010\022%\n\035blob_includ"
     "ed_in_max_row_size\030\002 \001(\010\022\030\n\020catalog_at_s"
     "tart\030\003 \001(\010\022\031\n\021catalog_separator\030\004 \001(\t\022\024\n"
@@ -1084,70 +1085,70 @@ void protobuf_AddDesc_User_2eproto() {
     "ySupport\022\030\n\020system_functions\030. \003(\t\022\022\n\nta"
     "ble_term\030/ \001(\t\022\035\n\025transaction_supported\030"
     "0 \001(\010\022.\n\runion_support\0301 \003(\0162\027.exec.user"
-    ".UnionSupport\"\353\001\n\010RunQuery\0221\n\014results_mo"
-    "de\030\001 \001(\0162\033.exec.user.QueryResultsMode\022$\n"
-    "\004type\030\002 \001(\0162\026.exec.shared.QueryType\022\014\n\004p"
-    "lan\030\003 \001(\t\0221\n\tfragments\030\004 \003(\0132\036.exec.bit."
-    "control.PlanFragment\022E\n\031prepared_stateme"
-    "nt_handle\030\005 \001(\0132\".exec.user.PreparedStat"
-    "ementHandle*\320\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\014C"
-    "ANCEL_QUERY\020\004\022\023\n\017REQUEST_RESULTS\020\005\022\027\n\023RE"
-    "SUME_PAUSED_QUERY\020\013\022\034\n\030GET_QUERY_PLAN_FR"
-    "AGMENTS\020\014\022\020\n\014GET_CATALOGS\020\016\022\017\n\013GET_SCHEM"
-    "AS\020\017\022\016\n\nGET_TABLES\020\020\022\017\n\013GET_COLUMNS\020\021\022\035\n"
-    "\031CREATE_PREPARED_STATEMENT\020\026\022\023\n\017GET_SERV"
-    "ER_META\020\010\022\016\n\nQUERY_DATA\020\006\022\020\n\014QUERY_HANDL"
-    "E\020\007\022\030\n\024QUERY_PLAN_FRAGMENTS\020\r\022\014\n\010CATALOG"
-    "S\020\022\022\013\n\007SCHEMAS\020\023\022\n\n\006TABLES\020\024\022\013\n\007COLUMNS\020"
-    "\025\022\026\n\022PREPARED_STATEMENT\020\027\022\017\n\013SERVER_META"
-    "\020\t\022\020\n\014QUERY_RESULT\020\n\022\020\n\014SASL_MESSAGE\020\030*H"
-    "\n\013SaslSupport\022\030\n\024UNKNOWN_SASL_SUPPORT\020\000\022"
-    "\r\n\tSASL_AUTH\020\001\022\020\n\014SASL_PRIVACY\020\002*#\n\020Quer"
-    "yResultsMode\022\017\n\013STREAM_FULL\020\001*q\n\017Handsha"
-    "keStatus\022\013\n\007SUCCESS\020\001\022\030\n\024RPC_VERSION_MIS"
-    "MATCH\020\002\022\017\n\013AUTH_FAILED\020\003\022\023\n\017UNKNOWN_FAIL"
-    "URE\020\004\022\021\n\rAUTH_REQUIRED\020\005*D\n\rRequestStatu"
-    "s\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"
-    "\025UNKNOWN_SEARCHABILITY\020\000\022\010\n\004NONE\020\001\022\010\n\004CH"
-    "AR\020\002\022\n\n\006NUMBER\020\003\022\007\n\003ALL\020\004*K\n\022ColumnUpdat"
-    "ability\022\030\n\024UNKNOWN_UPDATABILITY\020\000\022\r\n\tREA"
-    "D_ONLY\020\001\022\014\n\010WRITABLE\020\002*1\n\016CollateSupport"
-    "\022\016\n\nCS_UNKNOWN\020\000\022\017\n\013CS_GROUP_BY\020\001*J\n\027Cor"
-    "relationNamesSupport\022\013\n\007CN_NONE\020\001\022\026\n\022CN_"
-    "DIFFERENT_NAMES\020\002\022\n\n\006CN_ANY\020\003*\271\003\n\027DateTi"
-    "meLiteralsSupport\022\016\n\nDL_UNKNOWN\020\000\022\013\n\007DL_"
-    "DATE\020\001\022\013\n\007DL_TIME\020\002\022\020\n\014DL_TIMESTAMP\020\003\022\024\n"
-    "\020DL_INTERVAL_YEAR\020\004\022\025\n\021DL_INTERVAL_MONTH"
-    "\020\005\022\023\n\017DL_INTERVAL_DAY\020\006\022\024\n\020DL_INTERVAL_H"
-    "OUR\020\007\022\026\n\022DL_INTERVAL_MINUTE\020\010\022\026\n\022DL_INTE"
-    "RVAL_SECOND\020\t\022\035\n\031DL_INTERVAL_YEAR_TO_MON"
-    "TH\020\n\022\033\n\027DL_INTERVAL_DAY_TO_HOUR\020\013\022\035\n\031DL_"
-    "INTERVAL_DAY_TO_MINUTE\020\014\022\035\n\031DL_INTERVAL_"
-    "DAY_TO_SECOND\020\r\022\036\n\032DL_INTERVAL_HOUR_TO_M"
-    "INUTE\020\016\022\036\n\032DL_INTERVAL_HOUR_TO_SECOND\020\017\022"
-    " \n\034DL_INTERVAL_MINUTE_TO_SECOND\020\020*Y\n\016Gro"
-    "upBySupport\022\013\n\007GB_NONE\020\001\022\022\n\016GB_SELECT_ON"
-    "LY\020\002\022\024\n\020GB_BEYOND_SELECT\020\003\022\020\n\014GB_UNRELAT"
-    "ED\020\004*x\n\020IdentifierCasing\022\016\n\nIC_UNKNOWN\020\000"
-    "\022\023\n\017IC_STORES_LOWER\020\001\022\023\n\017IC_STORES_MIXED"
-    "\020\002\022\023\n\017IC_STORES_UPPER\020\003\022\025\n\021IC_SUPPORTS_M"
-    "IXED\020\004*X\n\rNullCollation\022\016\n\nNC_UNKNOWN\020\000\022"
-    "\017\n\013NC_AT_START\020\001\022\r\n\tNC_AT_END\020\002\022\013\n\007NC_HI"
-    "GH\020\003\022\n\n\006NC_LOW\020\004*E\n\016OrderBySupport\022\016\n\nOB"
-    "_UNKNOWN\020\000\022\020\n\014OB_UNRELATED\020\001\022\021\n\rOB_EXPRE"
-    "SSION\020\002*\226\001\n\020OuterJoinSupport\022\016\n\nOJ_UNKNO"
-    "WN\020\000\022\013\n\007OJ_LEFT\020\001\022\014\n\010OJ_RIGHT\020\002\022\013\n\007OJ_FU"
-    "LL\020\003\022\r\n\tOJ_NESTED\020\004\022\022\n\016OJ_NOT_ORDERED\020\005\022"
-    "\014\n\010OJ_INNER\020\006\022\031\n\025OJ_ALL_COMPARISON_OPS\020\007"
-    "*\204\001\n\017SubQuerySupport\022\016\n\nSQ_UNKNOWN\020\000\022\021\n\r"
-    "SQ_CORRELATED\020\001\022\024\n\020SQ_IN_COMPARISON\020\002\022\020\n"
-    "\014SQ_IN_EXISTS\020\003\022\020\n\014SQ_IN_INSERT\020\004\022\024\n\020SQ_"
-    "IN_QUANTIFIED\020\005*;\n\014UnionSupport\022\r\n\tU_UNK"
-    "NOWN\020\000\022\013\n\007U_UNION\020\001\022\017\n\013U_UNION_ALL\020\002B+\n\033"
-    "org.apache.drill.exec.protoB\nUserProtosH"
-    "\001", 8881);
+    ".UnionSupport\022\026\n\016current_schema\0302 \001(\t\"\353\001"
+    "\n\010RunQuery\0221\n\014results_mode\030\001 \001(\0162\033.exec."
+    "user.QueryResultsMode\022$\n\004type\030\002 \001(\0162\026.ex"
+    "ec.shared.QueryType\022\014\n\004plan\030\003 \001(\t\0221\n\tfra"
+    "gments\030\004 \003(\0132\036.exec.bit.control.PlanFrag"
+    "ment\022E\n\031prepared_statement_handle\030\005 \001(\0132"
+    "\".exec.user.PreparedStatementHandle*\320\003\n\007"
+    "RpcType\022\r\n\tHANDSHAKE\020\000\022\007\n\003ACK\020\001\022\013\n\007GOODB"
+    "YE\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_QUER"
+    "Y\020\013\022\034\n\030GET_QUERY_PLAN_FRAGMENTS\020\014\022\020\n\014GET"
+    "_CATALOGS\020\016\022\017\n\013GET_SCHEMAS\020\017\022\016\n\nGET_TABL"
+    "ES\020\020\022\017\n\013GET_COLUMNS\020\021\022\035\n\031CREATE_PREPARED"
+    "_STATEMENT\020\026\022\023\n\017GET_SERVER_META\020\010\022\016\n\nQUE"
+    "RY_DATA\020\006\022\020\n\014QUERY_HANDLE\020\007\022\030\n\024QUERY_PLA"
+    "N_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_ST"
+    "ATEMENT\020\027\022\017\n\013SERVER_META\020\t\022\020\n\014QUERY_RESU"
+    "LT\020\n\022\020\n\014SASL_MESSAGE\020\030*H\n\013SaslSupport\022\030\n"
+    "\024UNKNOWN_SASL_SUPPORT\020\000\022\r\n\tSASL_AUTH\020\001\022\020"
+    "\n\014SASL_PRIVACY\020\002*#\n\020QueryResultsMode\022\017\n\013"
+    "STREAM_FULL\020\001*q\n\017HandshakeStatus\022\013\n\007SUCC"
+    "ESS\020\001\022\030\n\024RPC_VERSION_MISMATCH\020\002\022\017\n\013AUTH_"
+    "FAILED\020\003\022\023\n\017UNKNOWN_FAILURE\020\004\022\021\n\rAUTH_RE"
+    "QUIRED\020\005*D\n\rRequestStatus\022\022\n\016UNKNOWN_STA"
+    "TUS\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_SEARCHA"
+    "BILITY\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\024UNKNO"
+    "WN_UPDATABILITY\020\000\022\r\n\tREAD_ONLY\020\001\022\014\n\010WRIT"
+    "ABLE\020\002*1\n\016CollateSupport\022\016\n\nCS_UNKNOWN\020\000"
+    "\022\017\n\013CS_GROUP_BY\020\001*J\n\027CorrelationNamesSup"
+    "port\022\013\n\007CN_NONE\020\001\022\026\n\022CN_DIFFERENT_NAMES\020"
+    "\002\022\n\n\006CN_ANY\020\003*\271\003\n\027DateTimeLiteralsSuppor"
+    "t\022\016\n\nDL_UNKNOWN\020\000\022\013\n\007DL_DATE\020\001\022\013\n\007DL_TIM"
+    "E\020\002\022\020\n\014DL_TIMESTAMP\020\003\022\024\n\020DL_INTERVAL_YEA"
+    "R\020\004\022\025\n\021DL_INTERVAL_MONTH\020\005\022\023\n\017DL_INTERVA"
+    "L_DAY\020\006\022\024\n\020DL_INTERVAL_HOUR\020\007\022\026\n\022DL_INTE"
+    "RVAL_MINUTE\020\010\022\026\n\022DL_INTERVAL_SECOND\020\t\022\035\n"
+    "\031DL_INTERVAL_YEAR_TO_MONTH\020\n\022\033\n\027DL_INTER"
+    "VAL_DAY_TO_HOUR\020\013\022\035\n\031DL_INTERVAL_DAY_TO_"
+    "MINUTE\020\014\022\035\n\031DL_INTERVAL_DAY_TO_SECOND\020\r\022"
+    "\036\n\032DL_INTERVAL_HOUR_TO_MINUTE\020\016\022\036\n\032DL_IN"
+    "TERVAL_HOUR_TO_SECOND\020\017\022 \n\034DL_INTERVAL_M"
+    "INUTE_TO_SECOND\020\020*Y\n\016GroupBySupport\022\013\n\007G"
+    "B_NONE\020\001\022\022\n\016GB_SELECT_ONLY\020\002\022\024\n\020GB_BEYON"
+    "D_SELECT\020\003\022\020\n\014GB_UNRELATED\020\004*x\n\020Identifi"
+    "erCasing\022\016\n\nIC_UNKNOWN\020\000\022\023\n\017IC_STORES_LO"
+    "WER\020\001\022\023\n\017IC_STORES_MIXED\020\002\022\023\n\017IC_STORES_"
+    "UPPER\020\003\022\025\n\021IC_SUPPORTS_MIXED\020\004*X\n\rNullCo"
+    "llation\022\016\n\nNC_UNKNOWN\020\000\022\017\n\013NC_AT_START\020\001"
+    "\022\r\n\tNC_AT_END\020\002\022\013\n\007NC_HIGH\020\003\022\n\n\006NC_LOW\020\004"
+    "*E\n\016OrderBySupport\022\016\n\nOB_UNKNOWN\020\000\022\020\n\014OB"
+    "_UNRELATED\020\001\022\021\n\rOB_EXPRESSION\020\002*\226\001\n\020Oute"
+    "rJoinSupport\022\016\n\nOJ_UNKNOWN\020\000\022\013\n\007OJ_LEFT\020"
+    "\001\022\014\n\010OJ_RIGHT\020\002\022\013\n\007OJ_FULL\020\003\022\r\n\tOJ_NESTE"
+    "D\020\004\022\022\n\016OJ_NOT_ORDERED\020\005\022\014\n\010OJ_INNER\020\006\022\031\n"
+    "\025OJ_ALL_COMPARISON_OPS\020\007*\204\001\n\017SubQuerySup"
+    "port\022\016\n\nSQ_UNKNOWN\020\000\022\021\n\rSQ_CORRELATED\020\001\022"
+    "\024\n\020SQ_IN_COMPARISON\020\002\022\020\n\014SQ_IN_EXISTS\020\003\022"
+    "\020\n\014SQ_IN_INSERT\020\004\022\024\n\020SQ_IN_QUANTIFIED\020\005*"
+    ";\n\014UnionSupport\022\r\n\tU_UNKNOWN\020\000\022\013\n\007U_UNIO"
+    "N\020\001\022\017\n\013U_UNION_ALL\020\002B+\n\033org.apache.drill"
+    ".exec.protoB\nUserProtosH\001", 8905);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "User.proto", &protobuf_RegisterTypes);
   Property::default_instance_ = new Property();
@@ -12284,6 +12285,7 @@ const int ServerMeta::kSystemFunctionsFieldNumber;
 const int ServerMeta::kTableTermFieldNumber;
 const int ServerMeta::kTransactionSupportedFieldNumber;
 const int ServerMeta::kUnionSupportFieldNumber;
+const int ServerMeta::kCurrentSchemaFieldNumber;
 #endif  // !_MSC_VER
 
 ServerMeta::ServerMeta()
@@ -12339,6 +12341,7 @@ void ServerMeta::SharedCtor() {
   special_characters_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
   table_term_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
   transaction_supported_ = false;
+  current_schema_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -12368,6 +12371,9 @@ void ServerMeta::SharedDtor() {
   if (table_term_ != &::google::protobuf::internal::kEmptyString) {
     delete table_term_;
   }
+  if (current_schema_ != &::google::protobuf::internal::kEmptyString) {
+    delete current_schema_;
+  }
   if (this != default_instance_) {
   }
 }
@@ -12471,6 +12477,13 @@ void ServerMeta::Clear() {
     }
     transaction_supported_ = false;
   }
+  if (_has_bits_[49 / 32] & (0xffu << (49 % 32))) {
+    if (has_current_schema()) {
+      if (current_schema_ != &::google::protobuf::internal::kEmptyString) {
+        current_schema_->clear();
+      }
+    }
+  }
   collate_support_.Clear();
   convert_support_.Clear();
   date_time_functions_.Clear();
@@ -13396,6 +13409,23 @@ bool ServerMeta::MergePartialFromCodedStream(
           goto handle_uninterpreted;
         }
         if (input->ExpectTag(392)) goto parse_union_support;
+        if (input->ExpectTag(402)) goto parse_current_schema;
+        break;
+      }
+
+      // optional string current_schema = 50;
+      case 50: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_current_schema:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_current_schema()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+            this->current_schema().data(), this->current_schema().length(),
+            ::google::protobuf::internal::WireFormat::PARSE);
+        } else {
+          goto handle_uninterpreted;
+        }
         if (input->ExpectAtEnd()) return true;
         break;
       }
@@ -13723,6 +13753,15 @@ void ServerMeta::SerializeWithCachedSizes(
       49, this->union_support(i), output);
   }
 
+  // optional string current_schema = 50;
+  if (has_current_schema()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->current_schema().data(), this->current_schema().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      50, this->current_schema(), output);
+  }
+
   if (!unknown_fields().empty()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         unknown_fields(), output);
@@ -14044,6 +14083,16 @@ ::google::protobuf::uint8* ServerMeta::SerializeWithCachedSizesToArray(
       49, this->union_support(i), target);
   }
 
+  // optional string current_schema = 50;
+  if (has_current_schema()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->current_schema().data(), this->current_schema().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        50, this->current_schema(), target);
+  }
+
   if (!unknown_fields().empty()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         unknown_fields(), target);
@@ -14301,6 +14350,15 @@ int ServerMeta::ByteSize() const {
       total_size += 2 + 1;
     }
 
+  }
+  if (_has_bits_[49 / 32] & (0xffu << (49 % 32))) {
+    // optional string current_schema = 50;
+    if (has_current_schema()) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::StringSize(
+          this->current_schema());
+    }
+
   }
   // repeated .exec.user.CollateSupport collate_support = 6;
   {
@@ -14565,6 +14623,11 @@ void ServerMeta::MergeFrom(const ServerMeta& from) {
       set_transaction_supported(from.transaction_supported());
     }
   }
+  if (from._has_bits_[49 / 32] & (0xffu << (49 % 32))) {
+    if (from.has_current_schema()) {
+      set_current_schema(from.current_schema());
+    }
+  }
   mutable_unknown_fields()->MergeFrom(from.unknown_fields());
 }
 
@@ -14639,6 +14702,7 @@ void ServerMeta::Swap(ServerMeta* other) {
     std::swap(table_term_, other->table_term_);
     std::swap(transaction_supported_, other->transaction_supported_);
     union_support_.Swap(&other->union_support_);
+    std::swap(current_schema_, other->current_schema_);
     std::swap(_has_bits_[0], other->_has_bits_[0]);
     std::swap(_has_bits_[1], other->_has_bits_[1]);
     _unknown_fields_.Swap(&other->_unknown_fields_);
diff --git a/contrib/native/client/src/protobuf/User.pb.h b/contrib/native/client/src/protobuf/User.pb.h
index b50e8c38604..df8a45d4fa8 100644
--- a/contrib/native/client/src/protobuf/User.pb.h
+++ b/contrib/native/client/src/protobuf/User.pb.h
@@ -4567,6 +4567,18 @@ class ServerMeta : public ::google::protobuf::Message {
   inline const ::google::protobuf::RepeatedField<int>& union_support() const;
   inline ::google::protobuf::RepeatedField<int>* mutable_union_support();
 
+  // optional string current_schema = 50;
+  inline bool has_current_schema() const;
+  inline void clear_current_schema();
+  static const int kCurrentSchemaFieldNumber = 50;
+  inline const ::std::string& current_schema() const;
+  inline void set_current_schema(const ::std::string& value);
+  inline void set_current_schema(const char* value);
+  inline void set_current_schema(const char* value, size_t size);
+  inline ::std::string* mutable_current_schema();
+  inline ::std::string* release_current_schema();
+  inline void set_allocated_current_schema(::std::string* current_schema);
+
   // @@protoc_insertion_point(class_scope:exec.user.ServerMeta)
  private:
   inline void set_has_all_tables_selectable();
@@ -4643,6 +4655,8 @@ class ServerMeta : public ::google::protobuf::Message {
   inline void clear_has_table_term();
   inline void set_has_transaction_supported();
   inline void clear_has_transaction_supported();
+  inline void set_has_current_schema();
+  inline void clear_has_current_schema();
 
   ::google::protobuf::UnknownFieldSet _unknown_fields_;
 
@@ -4695,9 +4709,10 @@ class ServerMeta : public ::google::protobuf::Message {
   ::google::protobuf::RepeatedPtrField< ::std::string> system_functions_;
   ::std::string* table_term_;
   ::google::protobuf::RepeatedField<int> union_support_;
+  ::std::string* current_schema_;
 
   mutable int _cached_size_;
-  ::google::protobuf::uint32 _has_bits_[(49 + 31) / 32];
+  ::google::protobuf::uint32 _has_bits_[(50 + 31) / 32];
 
   friend void  protobuf_AddDesc_User_2eproto();
   friend void protobuf_AssignDesc_User_2eproto();
@@ -11602,6 +11617,76 @@ ServerMeta::mutable_union_support() {
   return &union_support_;
 }
 
+// optional string current_schema = 50;
+inline bool ServerMeta::has_current_schema() const {
+  return (_has_bits_[1] & 0x00020000u) != 0;
+}
+inline void ServerMeta::set_has_current_schema() {
+  _has_bits_[1] |= 0x00020000u;
+}
+inline void ServerMeta::clear_has_current_schema() {
+  _has_bits_[1] &= ~0x00020000u;
+}
+inline void ServerMeta::clear_current_schema() {
+  if (current_schema_ != &::google::protobuf::internal::kEmptyString) {
+    current_schema_->clear();
+  }
+  clear_has_current_schema();
+}
+inline const ::std::string& ServerMeta::current_schema() const {
+  return *current_schema_;
+}
+inline void ServerMeta::set_current_schema(const ::std::string& value) {
+  set_has_current_schema();
+  if (current_schema_ == &::google::protobuf::internal::kEmptyString) {
+    current_schema_ = new ::std::string;
+  }
+  current_schema_->assign(value);
+}
+inline void ServerMeta::set_current_schema(const char* value) {
+  set_has_current_schema();
+  if (current_schema_ == &::google::protobuf::internal::kEmptyString) {
+    current_schema_ = new ::std::string;
+  }
+  current_schema_->assign(value);
+}
+inline void ServerMeta::set_current_schema(const char* value, size_t size) {
+  set_has_current_schema();
+  if (current_schema_ == &::google::protobuf::internal::kEmptyString) {
+    current_schema_ = new ::std::string;
+  }
+  current_schema_->assign(reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* ServerMeta::mutable_current_schema() {
+  set_has_current_schema();
+  if (current_schema_ == &::google::protobuf::internal::kEmptyString) {
+    current_schema_ = new ::std::string;
+  }
+  return current_schema_;
+}
+inline ::std::string* ServerMeta::release_current_schema() {
+  clear_has_current_schema();
+  if (current_schema_ == &::google::protobuf::internal::kEmptyString) {
+    return NULL;
+  } else {
+    ::std::string* temp = current_schema_;
+    current_schema_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    return temp;
+  }
+}
+inline void ServerMeta::set_allocated_current_schema(::std::string* current_schema) {
+  if (current_schema_ != &::google::protobuf::internal::kEmptyString) {
+    delete current_schema_;
+  }
+  if (current_schema) {
+    set_has_current_schema();
+    current_schema_ = current_schema;
+  } else {
+    clear_has_current_schema();
+    current_schema_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+  }
+}
+
 // -------------------------------------------------------------------
 
 // RunQuery
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/work/metadata/ServerMetaProvider.java b/exec/java-exec/src/main/java/org/apache/drill/exec/work/metadata/ServerMetaProvider.java
index 4f7bffc80aa..97df542e9c2 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/work/metadata/ServerMetaProvider.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/work/metadata/ServerMetaProvider.java
@@ -138,7 +138,8 @@ public void run() {
           .setIdentifierQuoteString(config.quoting().string)
           .setIdentifierCasing(getIdentifierCasing(config.unquotedCasing(), config.caseSensitive()))
           .setQuotedIdentifierCasing(getIdentifierCasing(config.quotedCasing(), config.caseSensitive()))
-          .addAllSqlKeywords(Splitter.on(",").split(metadata.getJdbcKeywords()));
+          .addAllSqlKeywords(Splitter.on(",").split(metadata.getJdbcKeywords()))
+          .setCurrentSchema(session.getDefaultSchemaPath());
         respBuilder.setServerMeta(metaBuilder);
         respBuilder.setStatus(RequestStatus.OK);
       } catch(Throwable t) {
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/work/metadata/TestServerMetaProvider.java b/exec/java-exec/src/test/java/org/apache/drill/exec/work/metadata/TestServerMetaProvider.java
index 46f27a6720a..b8acd2ce94c 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/work/metadata/TestServerMetaProvider.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/work/metadata/TestServerMetaProvider.java
@@ -21,28 +21,43 @@
 import static org.junit.Assert.assertNotNull;
 
 import org.apache.calcite.avatica.util.Quoting;
-import org.apache.drill.test.BaseTestQuery;
 import org.apache.drill.exec.proto.UserProtos.GetServerMetaResp;
 import org.apache.drill.exec.proto.UserProtos.RequestStatus;
-import org.apache.drill.exec.proto.UserProtos.ServerMeta;
+import org.apache.drill.test.ClusterFixture;
+import org.apache.drill.test.ClusterFixtureBuilder;
+import org.apache.drill.test.ClusterTest;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
-/**
- * Tests for server metadata provider APIs.
- */
-public class TestServerMetaProvider extends BaseTestQuery {
-  private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TestServerMetaProvider.class);
+public class TestServerMetaProvider extends ClusterTest {
+
+  @BeforeClass
+  public static void setup() throws Exception {
+    ClusterFixtureBuilder builder = ClusterFixture.builder(dirTestWatcher);
+    startCluster(builder);
+  }
 
   @Test
   public void testServerMeta() throws Exception {
-    GetServerMetaResp resp = client.getServerMeta().get();
-    assertNotNull(resp);
-    assertEquals(RequestStatus.OK, resp.getStatus());
-    assertNotNull(resp.getServerMeta());
+    GetServerMetaResp response = client.client().getServerMeta().get();
+    assertNotNull(response);
+    assertEquals(RequestStatus.OK, response.getStatus());
+    assertNotNull(response.getServerMeta());
+
+    assertEquals(Quoting.BACK_TICK.string, response.getServerMeta().getIdentifierQuoteString());
+  }
+
+  @Test
+  public void testCurrentSchema() throws Exception {
+    GetServerMetaResp response = client.client().getServerMeta().get();
+    assertEquals(RequestStatus.OK, response.getStatus());
+    assertEquals("", response.getServerMeta().getCurrentSchema());
 
-    ServerMeta serverMeta = resp.getServerMeta();
-    logger.trace("Server metadata: {}", serverMeta);
+    queryBuilder().sql("use dfs.tmp").run();
 
-    assertEquals(Quoting.BACK_TICK.string, serverMeta.getIdentifierQuoteString());
+    response = client.client().getServerMeta().get();
+    assertEquals(RequestStatus.OK, response.getStatus());
+    assertEquals("dfs.tmp", response.getServerMeta().getCurrentSchema());
   }
+
 }
diff --git a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java
index df23f40e1b0..d83369ed59b 100644
--- a/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java
+++ b/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java
@@ -34,6 +34,7 @@
 import java.util.Map;
 import java.util.Properties;
 import java.util.TimeZone;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 
 import org.apache.calcite.avatica.AvaticaConnection;
@@ -44,6 +45,7 @@
 import org.apache.calcite.avatica.NoSuchStatementException;
 import org.apache.calcite.avatica.QueryState;
 import org.apache.calcite.avatica.UnregisteredDriver;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.drill.common.config.DrillConfig;
 import org.apache.drill.common.exceptions.DrillRuntimeException;
 import org.apache.drill.common.exceptions.UserException;
@@ -52,6 +54,8 @@
 import org.apache.drill.exec.exception.OutOfMemoryException;
 import org.apache.drill.exec.memory.BufferAllocator;
 import org.apache.drill.exec.memory.RootAllocatorFactory;
+import org.apache.drill.exec.proto.UserBitShared;
+import org.apache.drill.exec.proto.UserProtos;
 import org.apache.drill.exec.rpc.RpcException;
 import org.apache.drill.exec.server.Drillbit;
 import org.apache.drill.exec.server.RemoteServiceSet;
@@ -582,6 +586,33 @@ public Struct createStruct(String typeName, Object[] attributes) throws SQLExcep
     }
   }
 
+  @Override
+  public void setSchema(String schema) throws SQLException {
+    checkOpen();
+    try {
+      client.runQuery(UserBitShared.QueryType.SQL, String.format("use %s", schema));
+    } catch (RpcException e) {
+      throw new SQLException("Error when setting schema", e);
+    }
+  }
+
+  @Override
+  public String getSchema() throws SQLException {
+    checkOpen();
+    try {
+      UserProtos.GetServerMetaResp response = client.getServerMeta().get();
+      if (response.getStatus() != UserProtos.RequestStatus.OK) {
+        UserBitShared.DrillPBError drillError = response.getError();
+        throw new SQLException("Error when getting server meta: " + drillError.getMessage());
+      }
+      UserProtos.ServerMeta serverMeta = response.getServerMeta();
+      String currentSchema = serverMeta.hasCurrentSchema() ? serverMeta.getCurrentSchema() : null;
+      return StringUtils.isEmpty(currentSchema) ? null : currentSchema;
+    } catch (InterruptedException | ExecutionException e) {
+      throw new SQLException("Error when getting server meta", e);
+    }
+  }
+
   @Override
   public void abort(Executor executor) throws SQLException {
     checkOpen();
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/ConnectionInfoTest.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/ConnectionInfoTest.java
index c24c2b8cb7b..c2a3ebdea1d 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/ConnectionInfoTest.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/ConnectionInfoTest.java
@@ -20,8 +20,11 @@
 import org.apache.calcite.avatica.util.Quoting;
 import org.apache.drill.categories.JdbcTest;
 import org.apache.drill.categories.SlowTest;
+import org.junit.After;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
+import org.junit.rules.ExpectedException;
 
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
@@ -29,6 +32,8 @@
 
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 
 /**
@@ -36,39 +41,59 @@
  */
 @Category({SlowTest.class, JdbcTest.class})
 public class ConnectionInfoTest extends JdbcTestBase {
-  private static Connection connection;
-  private static DatabaseMetaData dbmd;
+
+  @Rule
+  public ExpectedException thrown = ExpectedException.none();
+
+  @After
+  public void tearDown() {
+    reset();
+  }
+
+  @Test
+  public void testQuotingIdentifiersProperty() throws Exception {
+    Connection connection = connect("jdbc:drill:zk=local;quoting_identifiers='\"'");
+    DatabaseMetaData dbmd = connection.getMetaData();
+    assertThat(dbmd.getIdentifierQuoteString(), equalTo(Quoting.DOUBLE_QUOTE.string));
+
+    reset();
+
+    connection = connect("jdbc:drill:zk=local;quoting_identifiers=[");
+    dbmd = connection.getMetaData();
+    assertThat(dbmd.getIdentifierQuoteString(), equalTo(Quoting.BRACKET.string));
+  }
+
+  @Test
+  public void testIncorrectCharacterForQuotingIdentifiers() throws Exception {
+    thrown.expect(SQLException.class);
+    thrown.expectMessage(containsString("Option planner.parser.quoting_identifiers must be one of: [`, \", []"));
+
+    connect("jdbc:drill:zk=local;quoting_identifiers=&");
+  }
+
+  @Test
+  public void testSetSchemaUsingConnectionMethod() throws Exception {
+    Connection connection = connect("jdbc:drill:zk=local");
+    assertNull(connection.getSchema());
+
+    connection.setSchema("dfs.tmp");
+    assertEquals("dfs.tmp", connection.getSchema());
+  }
 
   @Test
-  public void testQuotingIdentifiersProperty() throws SQLException {
-    try {
-      // Test DoubleQuotes for the DrillProperty#QUOTING_IDENTIFIERS in connection URL
-      connection = connect("jdbc:drill:zk=local;quoting_identifiers='\"'");
-      dbmd = connection.getMetaData();
-      assertThat(dbmd.getIdentifierQuoteString(), equalTo(Quoting.DOUBLE_QUOTE.string));
-      reset();
-
-      // Test Brackets for the DrillProperty#QUOTING_IDENTIFIERS in connection URL
-      connection = connect("jdbc:drill:zk=local;quoting_identifiers=[");
-      dbmd = connection.getMetaData();
-      assertThat(dbmd.getIdentifierQuoteString(), equalTo(Quoting.BRACKET.string));
-    } finally {
-      reset();
-    }
+  public void testIncorrectlySetSchema() throws Exception {
+    Connection connection = connect("jdbc:drill:zk=local");
+
+    thrown.expect(SQLException.class);
+    thrown.expectMessage("Error when setting schema");
+
+    connection.setSchema("ABC");
   }
 
-  @Test(expected = SQLException.class)
-  public void testIncorrectCharacterForQuotingIdentifiers() throws SQLException {
-    try {
-      connection = connect("jdbc:drill:zk=local;quoting_identifiers=&");
-    }
-    catch (SQLException e) {
-      // Check exception text message
-      assertThat(e.getMessage(), containsString("Option planner.parser.quoting_identifiers " +
-          "must be one of: [`, \", []"));
-      throw e;
-    } finally {
-      reset();
-    }
+  @Test
+  public void testSchemaInConnectionString() throws Exception {
+    Connection connection = connect("jdbc:drill:zk=local;schema=sys");
+    assertEquals("sys", connection.getSchema());
   }
+
 }
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserProtos.java b/protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserProtos.java
index c1c02ea6f0b..899d767f8b9 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserProtos.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserProtos.java
@@ -4078,6 +4078,8 @@ public void writeTo(com.dyuproject.protostuff.Output output, org.apache.drill.ex
                     output.writeBool(48, message.getTransactionSupported(), false);
                 for(org.apache.drill.exec.proto.UserProtos.UnionSupport unionSupport : message.getUnionSupportList())
                     output.writeEnum(49, unionSupport.getNumber(), true);
+                if(message.hasCurrentSchema())
+                    output.writeString(50, message.getCurrentSchema(), false);
             }
             public boolean isInitialized(org.apache.drill.exec.proto.UserProtos.ServerMeta message)
             {
@@ -4265,6 +4267,9 @@ public void mergeFrom(com.dyuproject.protostuff.Input input, org.apache.drill.ex
                         case 49:
                             builder.addUnionSupport(org.apache.drill.exec.proto.UserProtos.UnionSupport.valueOf(input.readEnum()));
                             break;
+                        case 50:
+                            builder.setCurrentSchema(input.readString());
+                            break;
                         default:
                             input.handleUnknownField(number, this);
                     }
@@ -4354,6 +4359,7 @@ public void writeTo(com.dyuproject.protostuff.Output output, org.apache.drill.ex
                 case 47: return "tableTerm";
                 case 48: return "transactionSupported";
                 case 49: return "unionSupport";
+                case 50: return "currentSchema";
                 default: return null;
             }
         }
@@ -4414,6 +4420,7 @@ public static int getFieldNumber(java.lang.String name)
             fieldMap.put("tableTerm", 47);
             fieldMap.put("transactionSupported", 48);
             fieldMap.put("unionSupport", 49);
+            fieldMap.put("currentSchema", 50);
         }
     }
 
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/UserProtos.java b/protocol/src/main/java/org/apache/drill/exec/proto/UserProtos.java
index 6c2685b4bb0..d621e9434ab 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/UserProtos.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/UserProtos.java
@@ -32959,6 +32959,33 @@ public Builder clearError() {
      * </pre>
      */
     org.apache.drill.exec.proto.UserProtos.UnionSupport getUnionSupport(int index);
+
+    // optional string current_schema = 50;
+    /**
+     * <code>optional string current_schema = 50;</code>
+     *
+     * <pre>
+     * current schema
+     * </pre>
+     */
+    boolean hasCurrentSchema();
+    /**
+     * <code>optional string current_schema = 50;</code>
+     *
+     * <pre>
+     * current schema
+     * </pre>
+     */
+    java.lang.String getCurrentSchema();
+    /**
+     * <code>optional string current_schema = 50;</code>
+     *
+     * <pre>
+     * current schema
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getCurrentSchemaBytes();
   }
   /**
    * Protobuf type {@code exec.user.ServerMeta}
@@ -33473,6 +33500,11 @@ private ServerMeta(
               input.popLimit(oldLimit);
               break;
             }
+            case 402: {
+              bitField1_ |= 0x00000020;
+              currentSchema_ = input.readBytes();
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -35145,6 +35177,61 @@ public int getUnionSupportCount() {
       return unionSupport_.get(index);
     }
 
+    // optional string current_schema = 50;
+    public static final int CURRENT_SCHEMA_FIELD_NUMBER = 50;
+    private java.lang.Object currentSchema_;
+    /**
+     * <code>optional string current_schema = 50;</code>
+     *
+     * <pre>
+     * current schema
+     * </pre>
+     */
+    public boolean hasCurrentSchema() {
+      return ((bitField1_ & 0x00000020) == 0x00000020);
+    }
+    /**
+     * <code>optional string current_schema = 50;</code>
+     *
+     * <pre>
+     * current schema
+     * </pre>
+     */
+    public java.lang.String getCurrentSchema() {
+      java.lang.Object ref = currentSchema_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          currentSchema_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>optional string current_schema = 50;</code>
+     *
+     * <pre>
+     * current schema
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getCurrentSchemaBytes() {
+      java.lang.Object ref = currentSchema_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        currentSchema_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
     private void initFields() {
       allTablesSelectable_ = false;
       blobIncludedInMaxRowSize_ = false;
@@ -35195,6 +35282,7 @@ private void initFields() {
       tableTerm_ = "";
       transactionSupported_ = false;
       unionSupport_ = java.util.Collections.emptyList();
+      currentSchema_ = "";
     }
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
@@ -35361,6 +35449,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       for (int i = 0; i < unionSupport_.size(); i++) {
         output.writeEnum(49, unionSupport_.get(i).getNumber());
       }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        output.writeBytes(50, getCurrentSchemaBytes());
+      }
       getUnknownFields().writeTo(output);
     }
 
@@ -35621,6 +35712,10 @@ public int getSerializedSize() {
         size += dataSize;
         size += 2 * unionSupport_.size();
       }
+      if (((bitField1_ & 0x00000020) == 0x00000020)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(50, getCurrentSchemaBytes());
+      }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
       return size;
@@ -35840,6 +35935,8 @@ public Builder clear() {
         bitField1_ = (bitField1_ & ~0x00008000);
         unionSupport_ = java.util.Collections.emptyList();
         bitField1_ = (bitField1_ & ~0x00010000);
+        currentSchema_ = "";
+        bitField1_ = (bitField1_ & ~0x00020000);
         return this;
       }
 
@@ -36087,6 +36184,10 @@ public Builder clone() {
           bitField1_ = (bitField1_ & ~0x00010000);
         }
         result.unionSupport_ = unionSupport_;
+        if (((from_bitField1_ & 0x00020000) == 0x00020000)) {
+          to_bitField1_ |= 0x00000020;
+        }
+        result.currentSchema_ = currentSchema_;
         result.bitField0_ = to_bitField0_;
         result.bitField1_ = to_bitField1_;
         onBuilt();
@@ -36365,6 +36466,11 @@ public Builder mergeFrom(org.apache.drill.exec.proto.UserProtos.ServerMeta other
           }
           onChanged();
         }
+        if (other.hasCurrentSchema()) {
+          bitField1_ |= 0x00020000;
+          currentSchema_ = other.currentSchema_;
+          onChanged();
+        }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
@@ -40127,6 +40233,104 @@ public Builder clearUnionSupport() {
         return this;
       }
 
+      // optional string current_schema = 50;
+      private java.lang.Object currentSchema_ = "";
+      /**
+       * <code>optional string current_schema = 50;</code>
+       *
+       * <pre>
+       * current schema
+       * </pre>
+       */
+      public boolean hasCurrentSchema() {
+        return ((bitField1_ & 0x00020000) == 0x00020000);
+      }
+      /**
+       * <code>optional string current_schema = 50;</code>
+       *
+       * <pre>
+       * current schema
+       * </pre>
+       */
+      public java.lang.String getCurrentSchema() {
+        java.lang.Object ref = currentSchema_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          currentSchema_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>optional string current_schema = 50;</code>
+       *
+       * <pre>
+       * current schema
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getCurrentSchemaBytes() {
+        java.lang.Object ref = currentSchema_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          currentSchema_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>optional string current_schema = 50;</code>
+       *
+       * <pre>
+       * current schema
+       * </pre>
+       */
+      public Builder setCurrentSchema(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField1_ |= 0x00020000;
+        currentSchema_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string current_schema = 50;</code>
+       *
+       * <pre>
+       * current schema
+       * </pre>
+       */
+      public Builder clearCurrentSchema() {
+        bitField1_ = (bitField1_ & ~0x00020000);
+        currentSchema_ = getDefaultInstance().getCurrentSchema();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional string current_schema = 50;</code>
+       *
+       * <pre>
+       * current schema
+       * </pre>
+       */
+      public Builder setCurrentSchemaBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField1_ |= 0x00020000;
+        currentSchema_ = value;
+        onChanged();
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:exec.user.ServerMeta)
     }
 
@@ -41921,7 +42125,7 @@ public Builder clearPreparedStatementHandle() {
       "verMetaResp\022(\n\006status\030\001 \001(\0162\030.exec.user." +
       "RequestStatus\022*\n\013server_meta\030\002 \001(\0132\025.exe" +
       "c.user.ServerMeta\022(\n\005error\030\003 \001(\0132\031.exec." +
-      "shared.DrillPBError\"\377\r\n\nServerMeta\022\035\n\025al" +
+      "shared.DrillPBError\"\227\016\n\nServerMeta\022\035\n\025al" +
       "l_tables_selectable\030\001 \001(\010\022%\n\035blob_includ" +
       "ed_in_max_row_size\030\002 \001(\010\022\030\n\020catalog_at_s" +
       "tart\030\003 \001(\010\022\031\n\021catalog_separator\030\004 \001(\t\022\024\n" +
@@ -41966,70 +42170,70 @@ public Builder clearPreparedStatementHandle() {
       "ySupport\022\030\n\020system_functions\030. \003(\t\022\022\n\nta" +
       "ble_term\030/ \001(\t\022\035\n\025transaction_supported\030" +
       "0 \001(\010\022.\n\runion_support\0301 \003(\0162\027.exec.user" +
-      ".UnionSupport\"\353\001\n\010RunQuery\0221\n\014results_mo",
-      "de\030\001 \001(\0162\033.exec.user.QueryResultsMode\022$\n" +
-      "\004type\030\002 \001(\0162\026.exec.shared.QueryType\022\014\n\004p" +
-      "lan\030\003 \001(\t\0221\n\tfragments\030\004 \003(\0132\036.exec.bit." +
-      "control.PlanFragment\022E\n\031prepared_stateme" +
-      "nt_handle\030\005 \001(\0132\".exec.user.PreparedStat" +
-      "ementHandle*\320\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\014C" +
-      "ANCEL_QUERY\020\004\022\023\n\017REQUEST_RESULTS\020\005\022\027\n\023RE" +
-      "SUME_PAUSED_QUERY\020\013\022\034\n\030GET_QUERY_PLAN_FR" +
-      "AGMENTS\020\014\022\020\n\014GET_CATALOGS\020\016\022\017\n\013GET_SCHEM",
-      "AS\020\017\022\016\n\nGET_TABLES\020\020\022\017\n\013GET_COLUMNS\020\021\022\035\n" +
-      "\031CREATE_PREPARED_STATEMENT\020\026\022\023\n\017GET_SERV" +
-      "ER_META\020\010\022\016\n\nQUERY_DATA\020\006\022\020\n\014QUERY_HANDL" +
-      "E\020\007\022\030\n\024QUERY_PLAN_FRAGMENTS\020\r\022\014\n\010CATALOG" +
-      "S\020\022\022\013\n\007SCHEMAS\020\023\022\n\n\006TABLES\020\024\022\013\n\007COLUMNS\020" +
-      "\025\022\026\n\022PREPARED_STATEMENT\020\027\022\017\n\013SERVER_META" +
-      "\020\t\022\020\n\014QUERY_RESULT\020\n\022\020\n\014SASL_MESSAGE\020\030*H" +
-      "\n\013SaslSupport\022\030\n\024UNKNOWN_SASL_SUPPORT\020\000\022" +
-      "\r\n\tSASL_AUTH\020\001\022\020\n\014SASL_PRIVACY\020\002*#\n\020Quer" +
-      "yResultsMode\022\017\n\013STREAM_FULL\020\001*q\n\017Handsha",
-      "keStatus\022\013\n\007SUCCESS\020\001\022\030\n\024RPC_VERSION_MIS" +
-      "MATCH\020\002\022\017\n\013AUTH_FAILED\020\003\022\023\n\017UNKNOWN_FAIL" +
-      "URE\020\004\022\021\n\rAUTH_REQUIRED\020\005*D\n\rRequestStatu" +
-      "s\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" +
-      "\025UNKNOWN_SEARCHABILITY\020\000\022\010\n\004NONE\020\001\022\010\n\004CH" +
-      "AR\020\002\022\n\n\006NUMBER\020\003\022\007\n\003ALL\020\004*K\n\022ColumnUpdat" +
-      "ability\022\030\n\024UNKNOWN_UPDATABILITY\020\000\022\r\n\tREA" +
-      "D_ONLY\020\001\022\014\n\010WRITABLE\020\002*1\n\016CollateSupport" +
-      "\022\016\n\nCS_UNKNOWN\020\000\022\017\n\013CS_GROUP_BY\020\001*J\n\027Cor",
-      "relationNamesSupport\022\013\n\007CN_NONE\020\001\022\026\n\022CN_" +
-      "DIFFERENT_NAMES\020\002\022\n\n\006CN_ANY\020\003*\271\003\n\027DateTi" +
-      "meLiteralsSupport\022\016\n\nDL_UNKNOWN\020\000\022\013\n\007DL_" +
-      "DATE\020\001\022\013\n\007DL_TIME\020\002\022\020\n\014DL_TIMESTAMP\020\003\022\024\n" +
-      "\020DL_INTERVAL_YEAR\020\004\022\025\n\021DL_INTERVAL_MONTH" +
-      "\020\005\022\023\n\017DL_INTERVAL_DAY\020\006\022\024\n\020DL_INTERVAL_H" +
-      "OUR\020\007\022\026\n\022DL_INTERVAL_MINUTE\020\010\022\026\n\022DL_INTE" +
-      "RVAL_SECOND\020\t\022\035\n\031DL_INTERVAL_YEAR_TO_MON" +
-      "TH\020\n\022\033\n\027DL_INTERVAL_DAY_TO_HOUR\020\013\022\035\n\031DL_" +
-      "INTERVAL_DAY_TO_MINUTE\020\014\022\035\n\031DL_INTERVAL_",
-      "DAY_TO_SECOND\020\r\022\036\n\032DL_INTERVAL_HOUR_TO_M" +
-      "INUTE\020\016\022\036\n\032DL_INTERVAL_HOUR_TO_SECOND\020\017\022" +
-      " \n\034DL_INTERVAL_MINUTE_TO_SECOND\020\020*Y\n\016Gro" +
-      "upBySupport\022\013\n\007GB_NONE\020\001\022\022\n\016GB_SELECT_ON" +
-      "LY\020\002\022\024\n\020GB_BEYOND_SELECT\020\003\022\020\n\014GB_UNRELAT" +
-      "ED\020\004*x\n\020IdentifierCasing\022\016\n\nIC_UNKNOWN\020\000" +
-      "\022\023\n\017IC_STORES_LOWER\020\001\022\023\n\017IC_STORES_MIXED" +
-      "\020\002\022\023\n\017IC_STORES_UPPER\020\003\022\025\n\021IC_SUPPORTS_M" +
-      "IXED\020\004*X\n\rNullCollation\022\016\n\nNC_UNKNOWN\020\000\022" +
-      "\017\n\013NC_AT_START\020\001\022\r\n\tNC_AT_END\020\002\022\013\n\007NC_HI",
-      "GH\020\003\022\n\n\006NC_LOW\020\004*E\n\016OrderBySupport\022\016\n\nOB" +
-      "_UNKNOWN\020\000\022\020\n\014OB_UNRELATED\020\001\022\021\n\rOB_EXPRE" +
-      "SSION\020\002*\226\001\n\020OuterJoinSupport\022\016\n\nOJ_UNKNO" +
-      "WN\020\000\022\013\n\007OJ_LEFT\020\001\022\014\n\010OJ_RIGHT\020\002\022\013\n\007OJ_FU" +
-      "LL\020\003\022\r\n\tOJ_NESTED\020\004\022\022\n\016OJ_NOT_ORDERED\020\005\022" +
-      "\014\n\010OJ_INNER\020\006\022\031\n\025OJ_ALL_COMPARISON_OPS\020\007" +
-      "*\204\001\n\017SubQuerySupport\022\016\n\nSQ_UNKNOWN\020\000\022\021\n\r" +
-      "SQ_CORRELATED\020\001\022\024\n\020SQ_IN_COMPARISON\020\002\022\020\n" +
-      "\014SQ_IN_EXISTS\020\003\022\020\n\014SQ_IN_INSERT\020\004\022\024\n\020SQ_" +
-      "IN_QUANTIFIED\020\005*;\n\014UnionSupport\022\r\n\tU_UNK",
-      "NOWN\020\000\022\013\n\007U_UNION\020\001\022\017\n\013U_UNION_ALL\020\002B+\n\033" +
-      "org.apache.drill.exec.protoB\nUserProtosH" +
-      "\001"
+      ".UnionSupport\022\026\n\016current_schema\0302 \001(\t\"\353\001",
+      "\n\010RunQuery\0221\n\014results_mode\030\001 \001(\0162\033.exec." +
+      "user.QueryResultsMode\022$\n\004type\030\002 \001(\0162\026.ex" +
+      "ec.shared.QueryType\022\014\n\004plan\030\003 \001(\t\0221\n\tfra" +
+      "gments\030\004 \003(\0132\036.exec.bit.control.PlanFrag" +
+      "ment\022E\n\031prepared_statement_handle\030\005 \001(\0132" +
+      "\".exec.user.PreparedStatementHandle*\320\003\n\007" +
+      "RpcType\022\r\n\tHANDSHAKE\020\000\022\007\n\003ACK\020\001\022\013\n\007GOODB" +
+      "YE\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_QUER" +
+      "Y\020\013\022\034\n\030GET_QUERY_PLAN_FRAGMENTS\020\014\022\020\n\014GET",
+      "_CATALOGS\020\016\022\017\n\013GET_SCHEMAS\020\017\022\016\n\nGET_TABL" +
+      "ES\020\020\022\017\n\013GET_COLUMNS\020\021\022\035\n\031CREATE_PREPARED" +
+      "_STATEMENT\020\026\022\023\n\017GET_SERVER_META\020\010\022\016\n\nQUE" +
+      "RY_DATA\020\006\022\020\n\014QUERY_HANDLE\020\007\022\030\n\024QUERY_PLA" +
+      "N_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_ST" +
+      "ATEMENT\020\027\022\017\n\013SERVER_META\020\t\022\020\n\014QUERY_RESU" +
+      "LT\020\n\022\020\n\014SASL_MESSAGE\020\030*H\n\013SaslSupport\022\030\n" +
+      "\024UNKNOWN_SASL_SUPPORT\020\000\022\r\n\tSASL_AUTH\020\001\022\020" +
+      "\n\014SASL_PRIVACY\020\002*#\n\020QueryResultsMode\022\017\n\013",
+      "STREAM_FULL\020\001*q\n\017HandshakeStatus\022\013\n\007SUCC" +
+      "ESS\020\001\022\030\n\024RPC_VERSION_MISMATCH\020\002\022\017\n\013AUTH_" +
+      "FAILED\020\003\022\023\n\017UNKNOWN_FAILURE\020\004\022\021\n\rAUTH_RE" +
+      "QUIRED\020\005*D\n\rRequestStatus\022\022\n\016UNKNOWN_STA" +
+      "TUS\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_SEARCHA" +
+      "BILITY\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\024UNKNO" +
+      "WN_UPDATABILITY\020\000\022\r\n\tREAD_ONLY\020\001\022\014\n\010WRIT" +
+      "ABLE\020\002*1\n\016CollateSupport\022\016\n\nCS_UNKNOWN\020\000",
+      "\022\017\n\013CS_GROUP_BY\020\001*J\n\027CorrelationNamesSup" +
+      "port\022\013\n\007CN_NONE\020\001\022\026\n\022CN_DIFFERENT_NAMES\020" +
+      "\002\022\n\n\006CN_ANY\020\003*\271\003\n\027DateTimeLiteralsSuppor" +
+      "t\022\016\n\nDL_UNKNOWN\020\000\022\013\n\007DL_DATE\020\001\022\013\n\007DL_TIM" +
+      "E\020\002\022\020\n\014DL_TIMESTAMP\020\003\022\024\n\020DL_INTERVAL_YEA" +
+      "R\020\004\022\025\n\021DL_INTERVAL_MONTH\020\005\022\023\n\017DL_INTERVA" +
+      "L_DAY\020\006\022\024\n\020DL_INTERVAL_HOUR\020\007\022\026\n\022DL_INTE" +
+      "RVAL_MINUTE\020\010\022\026\n\022DL_INTERVAL_SECOND\020\t\022\035\n" +
+      "\031DL_INTERVAL_YEAR_TO_MONTH\020\n\022\033\n\027DL_INTER" +
+      "VAL_DAY_TO_HOUR\020\013\022\035\n\031DL_INTERVAL_DAY_TO_",
+      "MINUTE\020\014\022\035\n\031DL_INTERVAL_DAY_TO_SECOND\020\r\022" +
+      "\036\n\032DL_INTERVAL_HOUR_TO_MINUTE\020\016\022\036\n\032DL_IN" +
+      "TERVAL_HOUR_TO_SECOND\020\017\022 \n\034DL_INTERVAL_M" +
+      "INUTE_TO_SECOND\020\020*Y\n\016GroupBySupport\022\013\n\007G" +
+      "B_NONE\020\001\022\022\n\016GB_SELECT_ONLY\020\002\022\024\n\020GB_BEYON" +
+      "D_SELECT\020\003\022\020\n\014GB_UNRELATED\020\004*x\n\020Identifi" +
+      "erCasing\022\016\n\nIC_UNKNOWN\020\000\022\023\n\017IC_STORES_LO" +
+      "WER\020\001\022\023\n\017IC_STORES_MIXED\020\002\022\023\n\017IC_STORES_" +
+      "UPPER\020\003\022\025\n\021IC_SUPPORTS_MIXED\020\004*X\n\rNullCo" +
+      "llation\022\016\n\nNC_UNKNOWN\020\000\022\017\n\013NC_AT_START\020\001",
+      "\022\r\n\tNC_AT_END\020\002\022\013\n\007NC_HIGH\020\003\022\n\n\006NC_LOW\020\004" +
+      "*E\n\016OrderBySupport\022\016\n\nOB_UNKNOWN\020\000\022\020\n\014OB" +
+      "_UNRELATED\020\001\022\021\n\rOB_EXPRESSION\020\002*\226\001\n\020Oute" +
+      "rJoinSupport\022\016\n\nOJ_UNKNOWN\020\000\022\013\n\007OJ_LEFT\020" +
+      "\001\022\014\n\010OJ_RIGHT\020\002\022\013\n\007OJ_FULL\020\003\022\r\n\tOJ_NESTE" +
+      "D\020\004\022\022\n\016OJ_NOT_ORDERED\020\005\022\014\n\010OJ_INNER\020\006\022\031\n" +
+      "\025OJ_ALL_COMPARISON_OPS\020\007*\204\001\n\017SubQuerySup" +
+      "port\022\016\n\nSQ_UNKNOWN\020\000\022\021\n\rSQ_CORRELATED\020\001\022" +
+      "\024\n\020SQ_IN_COMPARISON\020\002\022\020\n\014SQ_IN_EXISTS\020\003\022" +
+      "\020\n\014SQ_IN_INSERT\020\004\022\024\n\020SQ_IN_QUANTIFIED\020\005*",
+      ";\n\014UnionSupport\022\r\n\tU_UNKNOWN\020\000\022\013\n\007U_UNIO" +
+      "N\020\001\022\017\n\013U_UNION_ALL\020\002B+\n\033org.apache.drill" +
+      ".exec.protoB\nUserProtosH\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -42215,7 +42419,7 @@ public Builder clearPreparedStatementHandle() {
           internal_static_exec_user_ServerMeta_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_exec_user_ServerMeta_descriptor,
-              new java.lang.String[] { "AllTablesSelectable", "BlobIncludedInMaxRowSize", "CatalogAtStart", "CatalogSeparator", "CatalogTerm", "CollateSupport", "ColumnAliasingSupported", "ConvertSupport", "CorrelationNamesSupport", "DateTimeFunctions", "DateTimeLiteralsSupport", "GroupBySupport", "IdentifierCasing", "IdentifierQuoteString", "LikeEscapeClauseSupported", "MaxBinaryLiteralLength", "MaxCatalogNameLength", "MaxCharLiteralLength", "MaxColumnNameLength", "MaxColumnsInGroupBy", "MaxColumnsInOrderBy", "MaxColumnsInSelect", "MaxCursorNameLength", "MaxLogicalLobSize", "MaxRowSize", "MaxSchemaNameLength", "MaxStatementLength", "MaxStatements", "MaxTableNameLength", "MaxTablesInSelect", "MaxUserNameLength", "NullCollation", "NullPlusNonNullEqualsNull", "NumericFunctions", "OrderBySupport", "OuterJoinSupport", "QuotedIdentifierCasing", "ReadOnly", "SchemaTerm", "SearchEscapeString", "SelectForUpdateSupported", "SpecialCharacters", "SqlKeywords", "StringFunctions", "SubquerySupport", "SystemFunctions", "TableTerm", "TransactionSupported", "UnionSupport", });
+              new java.lang.String[] { "AllTablesSelectable", "BlobIncludedInMaxRowSize", "CatalogAtStart", "CatalogSeparator", "CatalogTerm", "CollateSupport", "ColumnAliasingSupported", "ConvertSupport", "CorrelationNamesSupport", "DateTimeFunctions", "DateTimeLiteralsSupport", "GroupBySupport", "IdentifierCasing", "IdentifierQuoteString", "LikeEscapeClauseSupported", "MaxBinaryLiteralLength", "MaxCatalogNameLength", "MaxCharLiteralLength", "MaxColumnNameLength", "MaxColumnsInGroupBy", "MaxColumnsInOrderBy", "MaxColumnsInSelect", "MaxCursorNameLength", "MaxLogicalLobSize", "MaxRowSize", "MaxSchemaNameLength", "MaxStatementLength", "MaxStatements", "MaxTableNameLength", "MaxTablesInSelect", "MaxUserNameLength", "NullCollation", "NullPlusNonNullEqualsNull", "NumericFunctions", "OrderBySupport", "OuterJoinSupport", "QuotedIdentifierCasing", "ReadOnly", "SchemaTerm", "SearchEscapeString", "SelectForUpdateSupported", "SpecialCharacters", "SqlKeywords", "StringFunctions", "SubquerySupport", "SystemFunctions", "TableTerm", "TransactionSupported", "UnionSupport", "CurrentSchema", });
           internal_static_exec_user_RunQuery_descriptor =
             getDescriptor().getMessageTypes().get(30);
           internal_static_exec_user_RunQuery_fieldAccessorTable = new
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/ServerMeta.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/ServerMeta.java
index f05783ad864..d5032f902ac 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/beans/ServerMeta.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/ServerMeta.java
@@ -98,6 +98,7 @@ public static ServerMeta getDefaultInstance()
     private String tableTerm;
     private Boolean transactionSupported;
     private List<UnionSupport> unionSupport;
+    private String currentSchema;
 
     public ServerMeta()
     {
@@ -743,6 +744,19 @@ public ServerMeta setUnionSupportList(List<UnionSupport> unionSupport)
         return this;
     }
 
+    // currentSchema
+
+    public String getCurrentSchema()
+    {
+        return currentSchema;
+    }
+
+    public ServerMeta setCurrentSchema(String currentSchema)
+    {
+        this.currentSchema = currentSchema;
+        return this;
+    }
+
     // java serialization
 
     public void readExternal(ObjectInput in) throws IOException
@@ -969,6 +983,9 @@ public void mergeFrom(Input input, ServerMeta message) throws IOException
                         message.unionSupport = new ArrayList<UnionSupport>();
                     message.unionSupport.add(UnionSupport.valueOf(input.readEnum()));
                     break;
+                case 50:
+                    message.currentSchema = input.readString();
+                    break;
                 default:
                     input.handleUnknownField(number, this);
             }   
@@ -1197,6 +1214,9 @@ public void writeTo(Output output, ServerMeta message) throws IOException
                     output.writeEnum(49, unionSupport.number, true);
             }
         }
+
+        if(message.currentSchema != null)
+            output.writeString(50, message.currentSchema, false);
     }
 
     public String getFieldName(int number)
@@ -1252,6 +1272,7 @@ public String getFieldName(int number)
             case 47: return "tableTerm";
             case 48: return "transactionSupported";
             case 49: return "unionSupport";
+            case 50: return "currentSchema";
             default: return null;
         }
     }
@@ -1314,6 +1335,7 @@ public int getFieldNumber(String name)
         __fieldMap.put("tableTerm", 47);
         __fieldMap.put("transactionSupported", 48);
         __fieldMap.put("unionSupport", 49);
+        __fieldMap.put("currentSchema", 50);
     }
     
 }
diff --git a/protocol/src/main/protobuf/User.proto b/protocol/src/main/protobuf/User.proto
index 2af8b26a2e5..8c1a3a2b986 100644
--- a/protocol/src/main/protobuf/User.proto
+++ b/protocol/src/main/protobuf/User.proto
@@ -652,6 +652,8 @@ message ServerMeta {
     optional bool                       transaction_supported = 48;
     // UNION support
     repeated UnionSupport               union_support = 49;
+    // current schema
+    optional string                     current_schema = 50;
 }
 
 /*


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services