You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by am...@apache.org on 2015/12/21 09:50:37 UTC

[10/23] hive git commit: Revert "HIVE-11487 : Adds getNumPartitionsByFilter api in metastore api"

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
----------------------------------------------------------------------
diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
index 660dd4e..477a3be 100644
--- a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
+++ b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
@@ -310,12 +310,6 @@ public class DummyRawStoreControlledCommit implements RawStore, Configurable {
   }
 
   @Override
-  public int getNumPartitionsByFilter(String dbName, String tblName,
-                                      String filter) throws MetaException, NoSuchObjectException {
-    return objectStore.getNumPartitionsByFilter(dbName, tblName, filter);
-  }
-
-  @Override
   public List<Partition> getPartitionsByNames(String dbName, String tblName,
       List<String> partNames) throws MetaException, NoSuchObjectException {
     return objectStore.getPartitionsByNames(dbName, tblName, partNames);

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
----------------------------------------------------------------------
diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
index 9103102..ecabd5d 100644
--- a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
+++ b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
@@ -341,12 +341,6 @@ public class DummyRawStoreForJdoConnection implements RawStore {
   }
 
   @Override
-  public int getNumPartitionsByFilter(String dbName, String tblName, String filter)
-    throws MetaException, NoSuchObjectException {
-    return -1;
-  }
-
-  @Override
   public Table markPartitionForEvent(String dbName, String tblName, Map<String, String> partVals,
       PartitionEventType evtType) throws MetaException, UnknownTableException,
       InvalidPartitionException, UnknownPartitionException {

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
----------------------------------------------------------------------
diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java b/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
index 2e1f5f4..1157033 100644
--- a/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
+++ b/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
@@ -37,7 +37,6 @@ import org.apache.hadoop.hive.metastore.api.SerDeInfo;
 import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
 import org.apache.hadoop.hive.metastore.api.Table;
 import org.apache.hadoop.hive.ql.io.sarg.SearchArgument;
-import org.apache.hadoop.hive.serde.serdeConstants;
 import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.junit.After;
 import org.junit.Assert;
@@ -164,8 +163,8 @@ public class TestObjectStore {
     StorageDescriptor sd = new StorageDescriptor(null, "location", null, null, false, 0, new SerDeInfo("SerDeName", "serializationLib", null), null, null, null);
     HashMap<String,String> tableParams = new HashMap<String,String>();
     tableParams.put("EXTERNAL", "false");
-    FieldSchema partitionKey1 = new FieldSchema("Country", serdeConstants.STRING_TYPE_NAME, "");
-    FieldSchema partitionKey2 = new FieldSchema("State", serdeConstants.STRING_TYPE_NAME, "");
+    FieldSchema partitionKey1 = new FieldSchema("Country", "String", "");
+    FieldSchema partitionKey2 = new FieldSchema("State", "String", "");
     Table tbl1 = new Table(TABLE1, DB1, "owner", 1, 2, 3, sd, Arrays.asList(partitionKey1, partitionKey2), tableParams, "viewOriginalText", "viewExpandedText", "MANAGED_TABLE");
     objectStore.createTable(tbl1);
     HashMap<String, String> partitionParams = new HashMap<String, String>();
@@ -183,12 +182,6 @@ public class TestObjectStore {
     Assert.assertEquals(111, partitions.get(0).getCreateTime());
     Assert.assertEquals(222, partitions.get(1).getCreateTime());
 
-    int numPartitions  = objectStore.getNumPartitionsByFilter(DB1, TABLE1, "");
-    Assert.assertEquals(partitions.size(), numPartitions);
-
-    numPartitions  = objectStore.getNumPartitionsByFilter(DB1, TABLE1, "country = \"US\"");
-    Assert.assertEquals(2, numPartitions);
-
     objectStore.dropPartition(DB1, TABLE1, value1);
     partitions = objectStore.getPartitions(DB1, TABLE1, 10);
     Assert.assertEquals(1, partitions.size());

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-cpp/queryplan_constants.cpp
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-cpp/queryplan_constants.cpp b/ql/src/gen/thrift/gen-cpp/queryplan_constants.cpp
index 280edbe..9186bad 100644
--- a/ql/src/gen/thrift/gen-cpp/queryplan_constants.cpp
+++ b/ql/src/gen/thrift/gen-cpp/queryplan_constants.cpp
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-cpp/queryplan_constants.h
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-cpp/queryplan_constants.h b/ql/src/gen/thrift/gen-cpp/queryplan_constants.h
index 6bee48d..6cc8af0 100644
--- a/ql/src/gen/thrift/gen-cpp/queryplan_constants.h
+++ b/ql/src/gen/thrift/gen-cpp/queryplan_constants.h
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-cpp/queryplan_types.cpp
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-cpp/queryplan_types.cpp b/ql/src/gen/thrift/gen-cpp/queryplan_types.cpp
index a1fb60b..e92d776 100644
--- a/ql/src/gen/thrift/gen-cpp/queryplan_types.cpp
+++ b/ql/src/gen/thrift/gen-cpp/queryplan_types.cpp
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -150,11 +150,9 @@ void Adjacency::__set_adjacencyType(const AdjacencyType::type val) {
   this->adjacencyType = val;
 }
 
-const char* Adjacency::ascii_fingerprint = "BC4F8C394677A1003AA9F56ED26D8204";
-const uint8_t Adjacency::binary_fingerprint[16] = {0xBC,0x4F,0x8C,0x39,0x46,0x77,0xA1,0x00,0x3A,0xA9,0xF5,0x6E,0xD2,0x6D,0x82,0x04};
-
 uint32_t Adjacency::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -225,7 +223,7 @@ uint32_t Adjacency::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Adjacency::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Adjacency");
 
   xfer += oprot->writeFieldBegin("node", ::apache::thrift::protocol::T_STRING, 1);
@@ -250,7 +248,6 @@ uint32_t Adjacency::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -275,14 +272,13 @@ Adjacency& Adjacency::operator=(const Adjacency& other8) {
   __isset = other8.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Adjacency& obj) {
-  using apache::thrift::to_string;
+void Adjacency::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Adjacency(";
-  out << "node=" << to_string(obj.node);
-  out << ", " << "children=" << to_string(obj.children);
-  out << ", " << "adjacencyType=" << to_string(obj.adjacencyType);
+  out << "node=" << to_string(node);
+  out << ", " << "children=" << to_string(children);
+  out << ", " << "adjacencyType=" << to_string(adjacencyType);
   out << ")";
-  return out;
 }
 
 
@@ -302,11 +298,9 @@ void Graph::__set_adjacencyList(const std::vector<Adjacency> & val) {
   this->adjacencyList = val;
 }
 
-const char* Graph::ascii_fingerprint = "1F7FB604B3EF8F7AFB5DEAD15F2FC0B5";
-const uint8_t Graph::binary_fingerprint[16] = {0x1F,0x7F,0xB6,0x04,0xB3,0xEF,0x8F,0x7A,0xFB,0x5D,0xEA,0xD1,0x5F,0x2F,0xC0,0xB5};
-
 uint32_t Graph::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -389,7 +383,7 @@ uint32_t Graph::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Graph::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Graph");
 
   xfer += oprot->writeFieldBegin("nodeType", ::apache::thrift::protocol::T_I32, 1);
@@ -422,7 +416,6 @@ uint32_t Graph::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -447,14 +440,13 @@ Graph& Graph::operator=(const Graph& other23) {
   __isset = other23.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Graph& obj) {
-  using apache::thrift::to_string;
+void Graph::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Graph(";
-  out << "nodeType=" << to_string(obj.nodeType);
-  out << ", " << "roots=" << to_string(obj.roots);
-  out << ", " << "adjacencyList=" << to_string(obj.adjacencyList);
+  out << "nodeType=" << to_string(nodeType);
+  out << ", " << "roots=" << to_string(roots);
+  out << ", " << "adjacencyList=" << to_string(adjacencyList);
   out << ")";
-  return out;
 }
 
 
@@ -486,11 +478,9 @@ void Operator::__set_started(const bool val) {
   this->started = val;
 }
 
-const char* Operator::ascii_fingerprint = "30917C758A752485AF223B697479DE6C";
-const uint8_t Operator::binary_fingerprint[16] = {0x30,0x91,0x7C,0x75,0x8A,0x75,0x24,0x85,0xAF,0x22,0x3B,0x69,0x74,0x79,0xDE,0x6C};
-
 uint32_t Operator::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -603,7 +593,7 @@ uint32_t Operator::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Operator::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Operator");
 
   xfer += oprot->writeFieldBegin("operatorId", ::apache::thrift::protocol::T_STRING, 1);
@@ -650,7 +640,6 @@ uint32_t Operator::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -684,17 +673,16 @@ Operator& Operator::operator=(const Operator& other42) {
   __isset = other42.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Operator& obj) {
-  using apache::thrift::to_string;
+void Operator::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Operator(";
-  out << "operatorId=" << to_string(obj.operatorId);
-  out << ", " << "operatorType=" << to_string(obj.operatorType);
-  out << ", " << "operatorAttributes=" << to_string(obj.operatorAttributes);
-  out << ", " << "operatorCounters=" << to_string(obj.operatorCounters);
-  out << ", " << "done=" << to_string(obj.done);
-  out << ", " << "started=" << to_string(obj.started);
+  out << "operatorId=" << to_string(operatorId);
+  out << ", " << "operatorType=" << to_string(operatorType);
+  out << ", " << "operatorAttributes=" << to_string(operatorAttributes);
+  out << ", " << "operatorCounters=" << to_string(operatorCounters);
+  out << ", " << "done=" << to_string(done);
+  out << ", " << "started=" << to_string(started);
   out << ")";
-  return out;
 }
 
 
@@ -736,11 +724,9 @@ void Task::__set_started(const bool val) {
   this->started = val;
 }
 
-const char* Task::ascii_fingerprint = "AC741A136EFA51843AFC3A12F6A793D1";
-const uint8_t Task::binary_fingerprint[16] = {0xAC,0x74,0x1A,0x13,0x6E,0xFA,0x51,0x84,0x3A,0xFC,0x3A,0x12,0xF6,0xA7,0x93,0xD1};
-
 uint32_t Task::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -881,7 +867,7 @@ uint32_t Task::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Task::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Task");
 
   xfer += oprot->writeFieldBegin("taskId", ::apache::thrift::protocol::T_STRING, 1);
@@ -946,7 +932,6 @@ uint32_t Task::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -986,19 +971,18 @@ Task& Task::operator=(const Task& other67) {
   __isset = other67.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Task& obj) {
-  using apache::thrift::to_string;
+void Task::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Task(";
-  out << "taskId=" << to_string(obj.taskId);
-  out << ", " << "taskType=" << to_string(obj.taskType);
-  out << ", " << "taskAttributes=" << to_string(obj.taskAttributes);
-  out << ", " << "taskCounters=" << to_string(obj.taskCounters);
-  out << ", " << "operatorGraph="; (obj.__isset.operatorGraph ? (out << to_string(obj.operatorGraph)) : (out << "<null>"));
-  out << ", " << "operatorList="; (obj.__isset.operatorList ? (out << to_string(obj.operatorList)) : (out << "<null>"));
-  out << ", " << "done=" << to_string(obj.done);
-  out << ", " << "started=" << to_string(obj.started);
+  out << "taskId=" << to_string(taskId);
+  out << ", " << "taskType=" << to_string(taskType);
+  out << ", " << "taskAttributes=" << to_string(taskAttributes);
+  out << ", " << "taskCounters=" << to_string(taskCounters);
+  out << ", " << "operatorGraph="; (__isset.operatorGraph ? (out << to_string(operatorGraph)) : (out << "<null>"));
+  out << ", " << "operatorList="; (__isset.operatorList ? (out << to_string(operatorList)) : (out << "<null>"));
+  out << ", " << "done=" << to_string(done);
+  out << ", " << "started=" << to_string(started);
   out << ")";
-  return out;
 }
 
 
@@ -1034,11 +1018,9 @@ void Stage::__set_started(const bool val) {
   this->started = val;
 }
 
-const char* Stage::ascii_fingerprint = "86EA3C7B0690AFED21A3D479E2B32378";
-const uint8_t Stage::binary_fingerprint[16] = {0x86,0xEA,0x3C,0x7B,0x06,0x90,0xAF,0xED,0x21,0xA3,0xD4,0x79,0xE2,0xB3,0x23,0x78};
-
 uint32_t Stage::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1171,7 +1153,7 @@ uint32_t Stage::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Stage::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Stage");
 
   xfer += oprot->writeFieldBegin("stageId", ::apache::thrift::protocol::T_STRING, 1);
@@ -1230,7 +1212,6 @@ uint32_t Stage::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1267,18 +1248,17 @@ Stage& Stage::operator=(const Stage& other92) {
   __isset = other92.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Stage& obj) {
-  using apache::thrift::to_string;
+void Stage::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Stage(";
-  out << "stageId=" << to_string(obj.stageId);
-  out << ", " << "stageType=" << to_string(obj.stageType);
-  out << ", " << "stageAttributes=" << to_string(obj.stageAttributes);
-  out << ", " << "stageCounters=" << to_string(obj.stageCounters);
-  out << ", " << "taskList=" << to_string(obj.taskList);
-  out << ", " << "done=" << to_string(obj.done);
-  out << ", " << "started=" << to_string(obj.started);
+  out << "stageId=" << to_string(stageId);
+  out << ", " << "stageType=" << to_string(stageType);
+  out << ", " << "stageAttributes=" << to_string(stageAttributes);
+  out << ", " << "stageCounters=" << to_string(stageCounters);
+  out << ", " << "taskList=" << to_string(taskList);
+  out << ", " << "done=" << to_string(done);
+  out << ", " << "started=" << to_string(started);
   out << ")";
-  return out;
 }
 
 
@@ -1318,11 +1298,9 @@ void Query::__set_started(const bool val) {
   this->started = val;
 }
 
-const char* Query::ascii_fingerprint = "68300D63A5D40F2D17B9A9440FF626C1";
-const uint8_t Query::binary_fingerprint[16] = {0x68,0x30,0x0D,0x63,0xA5,0xD4,0x0F,0x2D,0x17,0xB9,0xA9,0x44,0x0F,0xF6,0x26,0xC1};
-
 uint32_t Query::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1461,7 +1439,7 @@ uint32_t Query::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Query::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Query");
 
   xfer += oprot->writeFieldBegin("queryId", ::apache::thrift::protocol::T_STRING, 1);
@@ -1524,7 +1502,6 @@ uint32_t Query::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1564,19 +1541,18 @@ Query& Query::operator=(const Query& other116) {
   __isset = other116.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Query& obj) {
-  using apache::thrift::to_string;
+void Query::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Query(";
-  out << "queryId=" << to_string(obj.queryId);
-  out << ", " << "queryType=" << to_string(obj.queryType);
-  out << ", " << "queryAttributes=" << to_string(obj.queryAttributes);
-  out << ", " << "queryCounters=" << to_string(obj.queryCounters);
-  out << ", " << "stageGraph=" << to_string(obj.stageGraph);
-  out << ", " << "stageList=" << to_string(obj.stageList);
-  out << ", " << "done=" << to_string(obj.done);
-  out << ", " << "started=" << to_string(obj.started);
+  out << "queryId=" << to_string(queryId);
+  out << ", " << "queryType=" << to_string(queryType);
+  out << ", " << "queryAttributes=" << to_string(queryAttributes);
+  out << ", " << "queryCounters=" << to_string(queryCounters);
+  out << ", " << "stageGraph=" << to_string(stageGraph);
+  out << ", " << "stageList=" << to_string(stageList);
+  out << ", " << "done=" << to_string(done);
+  out << ", " << "started=" << to_string(started);
   out << ")";
-  return out;
 }
 
 
@@ -1596,11 +1572,9 @@ void QueryPlan::__set_started(const bool val) {
   this->started = val;
 }
 
-const char* QueryPlan::ascii_fingerprint = "3418D1B0C20C288C8406186700B772E3";
-const uint8_t QueryPlan::binary_fingerprint[16] = {0x34,0x18,0xD1,0xB0,0xC2,0x0C,0x28,0x8C,0x84,0x06,0x18,0x67,0x00,0xB7,0x72,0xE3};
-
 uint32_t QueryPlan::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1669,7 +1643,7 @@ uint32_t QueryPlan::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t QueryPlan::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("QueryPlan");
 
   xfer += oprot->writeFieldBegin("queries", ::apache::thrift::protocol::T_LIST, 1);
@@ -1694,7 +1668,6 @@ uint32_t QueryPlan::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1719,14 +1692,13 @@ QueryPlan& QueryPlan::operator=(const QueryPlan& other124) {
   __isset = other124.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const QueryPlan& obj) {
-  using apache::thrift::to_string;
+void QueryPlan::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "QueryPlan(";
-  out << "queries=" << to_string(obj.queries);
-  out << ", " << "done=" << to_string(obj.done);
-  out << ", " << "started=" << to_string(obj.started);
+  out << "queries=" << to_string(queries);
+  out << ", " << "done=" << to_string(done);
+  out << ", " << "started=" << to_string(started);
   out << ")";
-  return out;
 }
 
 }}} // namespace

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-cpp/queryplan_types.h
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-cpp/queryplan_types.h b/ql/src/gen/thrift/gen-cpp/queryplan_types.h
index 932804d..ce37b2e 100644
--- a/ql/src/gen/thrift/gen-cpp/queryplan_types.h
+++ b/ql/src/gen/thrift/gen-cpp/queryplan_types.h
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -123,9 +123,6 @@ typedef struct _Adjacency__isset {
 class Adjacency {
  public:
 
-  static const char* ascii_fingerprint; // = "BC4F8C394677A1003AA9F56ED26D8204";
-  static const uint8_t binary_fingerprint[16]; // = {0xBC,0x4F,0x8C,0x39,0x46,0x77,0xA1,0x00,0x3A,0xA9,0xF5,0x6E,0xD2,0x6D,0x82,0x04};
-
   Adjacency(const Adjacency&);
   Adjacency& operator=(const Adjacency&);
   Adjacency() : node(), adjacencyType((AdjacencyType::type)0) {
@@ -163,11 +160,17 @@ class Adjacency {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const Adjacency& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(Adjacency &a, Adjacency &b);
 
+inline std::ostream& operator<<(std::ostream& out, const Adjacency& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _Graph__isset {
   _Graph__isset() : nodeType(false), roots(false), adjacencyList(false) {}
   bool nodeType :1;
@@ -178,9 +181,6 @@ typedef struct _Graph__isset {
 class Graph {
  public:
 
-  static const char* ascii_fingerprint; // = "1F7FB604B3EF8F7AFB5DEAD15F2FC0B5";
-  static const uint8_t binary_fingerprint[16]; // = {0x1F,0x7F,0xB6,0x04,0xB3,0xEF,0x8F,0x7A,0xFB,0x5D,0xEA,0xD1,0x5F,0x2F,0xC0,0xB5};
-
   Graph(const Graph&);
   Graph& operator=(const Graph&);
   Graph() : nodeType((NodeType::type)0) {
@@ -218,11 +218,17 @@ class Graph {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const Graph& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(Graph &a, Graph &b);
 
+inline std::ostream& operator<<(std::ostream& out, const Graph& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _Operator__isset {
   _Operator__isset() : operatorId(false), operatorType(false), operatorAttributes(false), operatorCounters(false), done(false), started(false) {}
   bool operatorId :1;
@@ -236,9 +242,6 @@ typedef struct _Operator__isset {
 class Operator {
  public:
 
-  static const char* ascii_fingerprint; // = "30917C758A752485AF223B697479DE6C";
-  static const uint8_t binary_fingerprint[16]; // = {0x30,0x91,0x7C,0x75,0x8A,0x75,0x24,0x85,0xAF,0x22,0x3B,0x69,0x74,0x79,0xDE,0x6C};
-
   Operator(const Operator&);
   Operator& operator=(const Operator&);
   Operator() : operatorId(), operatorType((OperatorType::type)0), done(0), started(0) {
@@ -291,11 +294,17 @@ class Operator {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const Operator& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(Operator &a, Operator &b);
 
+inline std::ostream& operator<<(std::ostream& out, const Operator& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _Task__isset {
   _Task__isset() : taskId(false), taskType(false), taskAttributes(false), taskCounters(false), operatorGraph(false), operatorList(false), done(false), started(false) {}
   bool taskId :1;
@@ -311,9 +320,6 @@ typedef struct _Task__isset {
 class Task {
  public:
 
-  static const char* ascii_fingerprint; // = "AC741A136EFA51843AFC3A12F6A793D1";
-  static const uint8_t binary_fingerprint[16]; // = {0xAC,0x74,0x1A,0x13,0x6E,0xFA,0x51,0x84,0x3A,0xFC,0x3A,0x12,0xF6,0xA7,0x93,0xD1};
-
   Task(const Task&);
   Task& operator=(const Task&);
   Task() : taskId(), taskType((TaskType::type)0), done(0), started(0) {
@@ -380,11 +386,17 @@ class Task {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const Task& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(Task &a, Task &b);
 
+inline std::ostream& operator<<(std::ostream& out, const Task& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _Stage__isset {
   _Stage__isset() : stageId(false), stageType(false), stageAttributes(false), stageCounters(false), taskList(false), done(false), started(false) {}
   bool stageId :1;
@@ -399,9 +411,6 @@ typedef struct _Stage__isset {
 class Stage {
  public:
 
-  static const char* ascii_fingerprint; // = "86EA3C7B0690AFED21A3D479E2B32378";
-  static const uint8_t binary_fingerprint[16]; // = {0x86,0xEA,0x3C,0x7B,0x06,0x90,0xAF,0xED,0x21,0xA3,0xD4,0x79,0xE2,0xB3,0x23,0x78};
-
   Stage(const Stage&);
   Stage& operator=(const Stage&);
   Stage() : stageId(), stageType((StageType::type)0), done(0), started(0) {
@@ -459,11 +468,17 @@ class Stage {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const Stage& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(Stage &a, Stage &b);
 
+inline std::ostream& operator<<(std::ostream& out, const Stage& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _Query__isset {
   _Query__isset() : queryId(false), queryType(false), queryAttributes(false), queryCounters(false), stageGraph(false), stageList(false), done(false), started(false) {}
   bool queryId :1;
@@ -479,9 +494,6 @@ typedef struct _Query__isset {
 class Query {
  public:
 
-  static const char* ascii_fingerprint; // = "68300D63A5D40F2D17B9A9440FF626C1";
-  static const uint8_t binary_fingerprint[16]; // = {0x68,0x30,0x0D,0x63,0xA5,0xD4,0x0F,0x2D,0x17,0xB9,0xA9,0x44,0x0F,0xF6,0x26,0xC1};
-
   Query(const Query&);
   Query& operator=(const Query&);
   Query() : queryId(), queryType(), done(0), started(0) {
@@ -544,11 +556,17 @@ class Query {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const Query& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(Query &a, Query &b);
 
+inline std::ostream& operator<<(std::ostream& out, const Query& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _QueryPlan__isset {
   _QueryPlan__isset() : queries(false), done(false), started(false) {}
   bool queries :1;
@@ -559,9 +577,6 @@ typedef struct _QueryPlan__isset {
 class QueryPlan {
  public:
 
-  static const char* ascii_fingerprint; // = "3418D1B0C20C288C8406186700B772E3";
-  static const uint8_t binary_fingerprint[16]; // = {0x34,0x18,0xD1,0xB0,0xC2,0x0C,0x28,0x8C,0x84,0x06,0x18,0x67,0x00,0xB7,0x72,0xE3};
-
   QueryPlan(const QueryPlan&);
   QueryPlan& operator=(const QueryPlan&);
   QueryPlan() : done(0), started(0) {
@@ -599,11 +614,17 @@ class QueryPlan {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const QueryPlan& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(QueryPlan &a, QueryPlan &b);
 
+inline std::ostream& operator<<(std::ostream& out, const QueryPlan& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 }}} // namespace
 
 #endif

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Adjacency.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Adjacency.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Adjacency.java
index 87e8008..37edf2a 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Adjacency.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Adjacency.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-12-17")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
 public class Adjacency implements org.apache.thrift.TBase<Adjacency, Adjacency._Fields>, java.io.Serializable, Cloneable, Comparable<Adjacency> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Adjacency");
 

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/AdjacencyType.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/AdjacencyType.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/AdjacencyType.java
index 470cad2..7a716f8 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/AdjacencyType.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/AdjacencyType.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Graph.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Graph.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Graph.java
index 7dbd65a..0b454df 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Graph.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Graph.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-12-17")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
 public class Graph implements org.apache.thrift.TBase<Graph, Graph._Fields>, java.io.Serializable, Cloneable, Comparable<Graph> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Graph");
 

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/NodeType.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/NodeType.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/NodeType.java
index 5fdbfa3..c3ce662 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/NodeType.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/NodeType.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java
index 2ebff17..05dbb2d 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Operator.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-12-17")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
 public class Operator implements org.apache.thrift.TBase<Operator, Operator._Fields>, java.io.Serializable, Cloneable, Comparable<Operator> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Operator");
 
@@ -457,10 +457,10 @@ public class Operator implements org.apache.thrift.TBase<Operator, Operator._Fie
       return getOperatorCounters();
 
     case DONE:
-      return Boolean.valueOf(isDone());
+      return isDone();
 
     case STARTED:
-      return Boolean.valueOf(isStarted());
+      return isStarted();
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/OperatorType.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/OperatorType.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/OperatorType.java
index 1d17dcb..a002348 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/OperatorType.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/OperatorType.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java
index b3f8778..de553e1 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Query.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-12-17")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
 public class Query implements org.apache.thrift.TBase<Query, Query._Fields>, java.io.Serializable, Cloneable, Comparable<Query> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Query");
 
@@ -559,10 +559,10 @@ public class Query implements org.apache.thrift.TBase<Query, Query._Fields>, jav
       return getStageList();
 
     case DONE:
-      return Boolean.valueOf(isDone());
+      return isDone();
 
     case STARTED:
-      return Boolean.valueOf(isStarted());
+      return isStarted();
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/QueryPlan.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/QueryPlan.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/QueryPlan.java
index e12005d..0e12279 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/QueryPlan.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/QueryPlan.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-12-17")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
 public class QueryPlan implements org.apache.thrift.TBase<QueryPlan, QueryPlan._Fields>, java.io.Serializable, Cloneable, Comparable<QueryPlan> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("QueryPlan");
 
@@ -296,10 +296,10 @@ public class QueryPlan implements org.apache.thrift.TBase<QueryPlan, QueryPlan._
       return getQueries();
 
     case DONE:
-      return Boolean.valueOf(isDone());
+      return isDone();
 
     case STARTED:
-      return Boolean.valueOf(isStarted());
+      return isStarted();
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java
index 309237d..7f86eeb 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Stage.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-12-17")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
 public class Stage implements org.apache.thrift.TBase<Stage, Stage._Fields>, java.io.Serializable, Cloneable, Comparable<Stage> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Stage");
 
@@ -524,10 +524,10 @@ public class Stage implements org.apache.thrift.TBase<Stage, Stage._Fields>, jav
       return getTaskList();
 
     case DONE:
-      return Boolean.valueOf(isDone());
+      return isDone();
 
     case STARTED:
-      return Boolean.valueOf(isStarted());
+      return isStarted();
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/StageType.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/StageType.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/StageType.java
index c7b0ff7..f20174c 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/StageType.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/StageType.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java
index 87ce205..f978e42 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/Task.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-12-17")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
 public class Task implements org.apache.thrift.TBase<Task, Task._Fields>, java.io.Serializable, Cloneable, Comparable<Task> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Task");
 
@@ -568,10 +568,10 @@ public class Task implements org.apache.thrift.TBase<Task, Task._Fields>, java.i
       return getOperatorList();
 
     case DONE:
-      return Boolean.valueOf(isDone());
+      return isDone();
 
     case STARTED:
-      return Boolean.valueOf(isStarted());
+      return isStarted();
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/TaskType.java
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/TaskType.java b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/TaskType.java
index 8aad073..d77f008 100644
--- a/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/TaskType.java
+++ b/ql/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/ql/plan/api/TaskType.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-php/Types.php
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-php/Types.php b/ql/src/gen/thrift/gen-php/Types.php
index 3dfff1d..e1693f3 100644
--- a/ql/src/gen/thrift/gen-php/Types.php
+++ b/ql/src/gen/thrift/gen-php/Types.php
@@ -1,8 +1,6 @@
 <?php
-namespace ;
-
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-py/queryplan/constants.py
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-py/queryplan/constants.py b/ql/src/gen/thrift/gen-py/queryplan/constants.py
index 99717a9..4a6492b 100644
--- a/ql/src/gen/thrift/gen-py/queryplan/constants.py
+++ b/ql/src/gen/thrift/gen-py/queryplan/constants.py
@@ -1,5 +1,5 @@
 #
-# Autogenerated by Thrift Compiler (0.9.2)
+# Autogenerated by Thrift Compiler (0.9.3)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-py/queryplan/ttypes.py
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-py/queryplan/ttypes.py b/ql/src/gen/thrift/gen-py/queryplan/ttypes.py
index 6deb850..2073959 100644
--- a/ql/src/gen/thrift/gen-py/queryplan/ttypes.py
+++ b/ql/src/gen/thrift/gen-py/queryplan/ttypes.py
@@ -1,5 +1,5 @@
 #
-# Autogenerated by Thrift Compiler (0.9.2)
+# Autogenerated by Thrift Compiler (0.9.3)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #
@@ -223,7 +223,7 @@ class Adjacency:
         break
       if fid == 1:
         if ftype == TType.STRING:
-          self.node = iprot.readString();
+          self.node = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 2:
@@ -231,14 +231,14 @@ class Adjacency:
           self.children = []
           (_etype3, _size0) = iprot.readListBegin()
           for _i4 in xrange(_size0):
-            _elem5 = iprot.readString();
+            _elem5 = iprot.readString()
             self.children.append(_elem5)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 3:
         if ftype == TType.I32:
-          self.adjacencyType = iprot.readI32();
+          self.adjacencyType = iprot.readI32()
         else:
           iprot.skip(ftype)
       else:
@@ -322,7 +322,7 @@ class Graph:
         break
       if fid == 1:
         if ftype == TType.I32:
-          self.nodeType = iprot.readI32();
+          self.nodeType = iprot.readI32()
         else:
           iprot.skip(ftype)
       elif fid == 2:
@@ -330,7 +330,7 @@ class Graph:
           self.roots = []
           (_etype10, _size7) = iprot.readListBegin()
           for _i11 in xrange(_size7):
-            _elem12 = iprot.readString();
+            _elem12 = iprot.readString()
             self.roots.append(_elem12)
           iprot.readListEnd()
         else:
@@ -439,12 +439,12 @@ class Operator:
         break
       if fid == 1:
         if ftype == TType.STRING:
-          self.operatorId = iprot.readString();
+          self.operatorId = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.I32:
-          self.operatorType = iprot.readI32();
+          self.operatorType = iprot.readI32()
         else:
           iprot.skip(ftype)
       elif fid == 3:
@@ -452,8 +452,8 @@ class Operator:
           self.operatorAttributes = {}
           (_ktype22, _vtype23, _size21 ) = iprot.readMapBegin()
           for _i25 in xrange(_size21):
-            _key26 = iprot.readString();
-            _val27 = iprot.readString();
+            _key26 = iprot.readString()
+            _val27 = iprot.readString()
             self.operatorAttributes[_key26] = _val27
           iprot.readMapEnd()
         else:
@@ -463,20 +463,20 @@ class Operator:
           self.operatorCounters = {}
           (_ktype29, _vtype30, _size28 ) = iprot.readMapBegin()
           for _i32 in xrange(_size28):
-            _key33 = iprot.readString();
-            _val34 = iprot.readI64();
+            _key33 = iprot.readString()
+            _val34 = iprot.readI64()
             self.operatorCounters[_key33] = _val34
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
       elif fid == 5:
         if ftype == TType.BOOL:
-          self.done = iprot.readBool();
+          self.done = iprot.readBool()
         else:
           iprot.skip(ftype)
       elif fid == 6:
         if ftype == TType.BOOL:
-          self.started = iprot.readBool();
+          self.started = iprot.readBool()
         else:
           iprot.skip(ftype)
       else:
@@ -595,12 +595,12 @@ class Task:
         break
       if fid == 1:
         if ftype == TType.STRING:
-          self.taskId = iprot.readString();
+          self.taskId = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.I32:
-          self.taskType = iprot.readI32();
+          self.taskType = iprot.readI32()
         else:
           iprot.skip(ftype)
       elif fid == 3:
@@ -608,8 +608,8 @@ class Task:
           self.taskAttributes = {}
           (_ktype40, _vtype41, _size39 ) = iprot.readMapBegin()
           for _i43 in xrange(_size39):
-            _key44 = iprot.readString();
-            _val45 = iprot.readString();
+            _key44 = iprot.readString()
+            _val45 = iprot.readString()
             self.taskAttributes[_key44] = _val45
           iprot.readMapEnd()
         else:
@@ -619,8 +619,8 @@ class Task:
           self.taskCounters = {}
           (_ktype47, _vtype48, _size46 ) = iprot.readMapBegin()
           for _i50 in xrange(_size46):
-            _key51 = iprot.readString();
-            _val52 = iprot.readI64();
+            _key51 = iprot.readString()
+            _val52 = iprot.readI64()
             self.taskCounters[_key51] = _val52
           iprot.readMapEnd()
         else:
@@ -644,12 +644,12 @@ class Task:
           iprot.skip(ftype)
       elif fid == 7:
         if ftype == TType.BOOL:
-          self.done = iprot.readBool();
+          self.done = iprot.readBool()
         else:
           iprot.skip(ftype)
       elif fid == 8:
         if ftype == TType.BOOL:
-          self.started = iprot.readBool();
+          self.started = iprot.readBool()
         else:
           iprot.skip(ftype)
       else:
@@ -778,12 +778,12 @@ class Stage:
         break
       if fid == 1:
         if ftype == TType.STRING:
-          self.stageId = iprot.readString();
+          self.stageId = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.I32:
-          self.stageType = iprot.readI32();
+          self.stageType = iprot.readI32()
         else:
           iprot.skip(ftype)
       elif fid == 3:
@@ -791,8 +791,8 @@ class Stage:
           self.stageAttributes = {}
           (_ktype65, _vtype66, _size64 ) = iprot.readMapBegin()
           for _i68 in xrange(_size64):
-            _key69 = iprot.readString();
-            _val70 = iprot.readString();
+            _key69 = iprot.readString()
+            _val70 = iprot.readString()
             self.stageAttributes[_key69] = _val70
           iprot.readMapEnd()
         else:
@@ -802,8 +802,8 @@ class Stage:
           self.stageCounters = {}
           (_ktype72, _vtype73, _size71 ) = iprot.readMapBegin()
           for _i75 in xrange(_size71):
-            _key76 = iprot.readString();
-            _val77 = iprot.readI64();
+            _key76 = iprot.readString()
+            _val77 = iprot.readI64()
             self.stageCounters[_key76] = _val77
           iprot.readMapEnd()
         else:
@@ -821,12 +821,12 @@ class Stage:
           iprot.skip(ftype)
       elif fid == 6:
         if ftype == TType.BOOL:
-          self.done = iprot.readBool();
+          self.done = iprot.readBool()
         else:
           iprot.skip(ftype)
       elif fid == 7:
         if ftype == TType.BOOL:
-          self.started = iprot.readBool();
+          self.started = iprot.readBool()
         else:
           iprot.skip(ftype)
       else:
@@ -953,12 +953,12 @@ class Query:
         break
       if fid == 1:
         if ftype == TType.STRING:
-          self.queryId = iprot.readString();
+          self.queryId = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.STRING:
-          self.queryType = iprot.readString();
+          self.queryType = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
@@ -966,8 +966,8 @@ class Query:
           self.queryAttributes = {}
           (_ktype90, _vtype91, _size89 ) = iprot.readMapBegin()
           for _i93 in xrange(_size89):
-            _key94 = iprot.readString();
-            _val95 = iprot.readString();
+            _key94 = iprot.readString()
+            _val95 = iprot.readString()
             self.queryAttributes[_key94] = _val95
           iprot.readMapEnd()
         else:
@@ -977,8 +977,8 @@ class Query:
           self.queryCounters = {}
           (_ktype97, _vtype98, _size96 ) = iprot.readMapBegin()
           for _i100 in xrange(_size96):
-            _key101 = iprot.readString();
-            _val102 = iprot.readI64();
+            _key101 = iprot.readString()
+            _val102 = iprot.readI64()
             self.queryCounters[_key101] = _val102
           iprot.readMapEnd()
         else:
@@ -1002,12 +1002,12 @@ class Query:
           iprot.skip(ftype)
       elif fid == 7:
         if ftype == TType.BOOL:
-          self.done = iprot.readBool();
+          self.done = iprot.readBool()
         else:
           iprot.skip(ftype)
       elif fid == 8:
         if ftype == TType.BOOL:
-          self.started = iprot.readBool();
+          self.started = iprot.readBool()
         else:
           iprot.skip(ftype)
       else:
@@ -1135,12 +1135,12 @@ class QueryPlan:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.BOOL:
-          self.done = iprot.readBool();
+          self.done = iprot.readBool()
         else:
           iprot.skip(ftype)
       elif fid == 3:
         if ftype == TType.BOOL:
-          self.started = iprot.readBool();
+          self.started = iprot.readBool()
         else:
           iprot.skip(ftype)
       else:

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-rb/queryplan_constants.rb
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-rb/queryplan_constants.rb b/ql/src/gen/thrift/gen-rb/queryplan_constants.rb
index 428185e..e61608b 100644
--- a/ql/src/gen/thrift/gen-rb/queryplan_constants.rb
+++ b/ql/src/gen/thrift/gen-rb/queryplan_constants.rb
@@ -1,5 +1,5 @@
 #
-# Autogenerated by Thrift Compiler (0.9.2)
+# Autogenerated by Thrift Compiler (0.9.3)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/gen/thrift/gen-rb/queryplan_types.rb
----------------------------------------------------------------------
diff --git a/ql/src/gen/thrift/gen-rb/queryplan_types.rb b/ql/src/gen/thrift/gen-rb/queryplan_types.rb
index 1a22f07..f8b4034 100644
--- a/ql/src/gen/thrift/gen-rb/queryplan_types.rb
+++ b/ql/src/gen/thrift/gen-rb/queryplan_types.rb
@@ -1,5 +1,5 @@
 #
-# Autogenerated by Thrift Compiler (0.9.2)
+# Autogenerated by Thrift Compiler (0.9.3)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
index dca1198..29df4f9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
@@ -2373,30 +2373,6 @@ private void constructOneLBLocationMap(FileStatus fSta,
     return hasUnknownParts;
   }
 
-  /**
-   * Get a number of Partitions by filter.
-   * @param tbl The table containing the partitions.
-   * @param filter A string represent partition predicates.
-   * @return the number of partitions satisfying the partition predicates.
-   * @throws HiveException
-   * @throws MetaException
-   * @throws NoSuchObjectException
-   * @throws TException
-   */
-  public int getNumPartitionsByFilter(Table tbl, String filter)
-    throws HiveException, MetaException, NoSuchObjectException, TException {
-
-    if (!tbl.isPartitioned()) {
-      throw new HiveException("Partition spec should only be supplied for a " +
-        "partitioned table");
-    }
-
-    int numParts = getMSC().getNumPartitionsByFilter(
-      tbl.getDbName(), tbl.getTableName(), filter);
-
-    return numParts;
-  }
-
   public void validatePartitionNameCharacters(List<String> partVals) throws HiveException {
     try {
       getMSC().validatePartitionNameCharacters(partVals);

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/complex_constants.cpp
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/complex_constants.cpp b/serde/src/gen/thrift/gen-cpp/complex_constants.cpp
index aa146c6..a6df39c 100644
--- a/serde/src/gen/thrift/gen-cpp/complex_constants.cpp
+++ b/serde/src/gen/thrift/gen-cpp/complex_constants.cpp
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/complex_constants.h
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/complex_constants.h b/serde/src/gen/thrift/gen-cpp/complex_constants.h
index 971cd2c..ee0bdca 100644
--- a/serde/src/gen/thrift/gen-cpp/complex_constants.h
+++ b/serde/src/gen/thrift/gen-cpp/complex_constants.h
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/complex_types.cpp
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/complex_types.cpp b/serde/src/gen/thrift/gen-cpp/complex_types.cpp
index fb6fe25..36c1514 100644
--- a/serde/src/gen/thrift/gen-cpp/complex_types.cpp
+++ b/serde/src/gen/thrift/gen-cpp/complex_types.cpp
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -51,11 +51,9 @@ void PropValueUnion::__set_unionMStringString(const std::map<std::string, std::s
   this->unionMStringString = val;
 }
 
-const char* PropValueUnion::ascii_fingerprint = "123CD9D82D5B5054B5054EFD63FC8590";
-const uint8_t PropValueUnion::binary_fingerprint[16] = {0x12,0x3C,0xD9,0xD8,0x2D,0x5B,0x50,0x54,0xB5,0x05,0x4E,0xFD,0x63,0xFC,0x85,0x90};
-
 uint32_t PropValueUnion::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -171,7 +169,7 @@ uint32_t PropValueUnion::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t PropValueUnion::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("PropValueUnion");
 
   if (this->__isset.intValue) {
@@ -226,7 +224,6 @@ uint32_t PropValueUnion::write(::apache::thrift::protocol::TProtocol* oprot) con
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -263,18 +260,17 @@ PropValueUnion& PropValueUnion::operator=(const PropValueUnion& other15) {
   __isset = other15.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const PropValueUnion& obj) {
-  using apache::thrift::to_string;
+void PropValueUnion::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "PropValueUnion(";
-  out << "intValue="; (obj.__isset.intValue ? (out << to_string(obj.intValue)) : (out << "<null>"));
-  out << ", " << "longValue="; (obj.__isset.longValue ? (out << to_string(obj.longValue)) : (out << "<null>"));
-  out << ", " << "stringValue="; (obj.__isset.stringValue ? (out << to_string(obj.stringValue)) : (out << "<null>"));
-  out << ", " << "doubleValue="; (obj.__isset.doubleValue ? (out << to_string(obj.doubleValue)) : (out << "<null>"));
-  out << ", " << "flag="; (obj.__isset.flag ? (out << to_string(obj.flag)) : (out << "<null>"));
-  out << ", " << "lString=" << to_string(obj.lString);
-  out << ", " << "unionMStringString=" << to_string(obj.unionMStringString);
+  out << "intValue="; (__isset.intValue ? (out << to_string(intValue)) : (out << "<null>"));
+  out << ", " << "longValue="; (__isset.longValue ? (out << to_string(longValue)) : (out << "<null>"));
+  out << ", " << "stringValue="; (__isset.stringValue ? (out << to_string(stringValue)) : (out << "<null>"));
+  out << ", " << "doubleValue="; (__isset.doubleValue ? (out << to_string(doubleValue)) : (out << "<null>"));
+  out << ", " << "flag="; (__isset.flag ? (out << to_string(flag)) : (out << "<null>"));
+  out << ", " << "lString=" << to_string(lString);
+  out << ", " << "unionMStringString=" << to_string(unionMStringString);
   out << ")";
-  return out;
 }
 
 
@@ -294,11 +290,9 @@ void IntString::__set_underscore_int(const int32_t val) {
   this->underscore_int = val;
 }
 
-const char* IntString::ascii_fingerprint = "52C6DAB6CF51AF617111F6D3964C6503";
-const uint8_t IntString::binary_fingerprint[16] = {0x52,0xC6,0xDA,0xB6,0xCF,0x51,0xAF,0x61,0x71,0x11,0xF6,0xD3,0x96,0x4C,0x65,0x03};
-
 uint32_t IntString::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -355,7 +349,7 @@ uint32_t IntString::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t IntString::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("IntString");
 
   xfer += oprot->writeFieldBegin("myint", ::apache::thrift::protocol::T_I32, 1);
@@ -372,7 +366,6 @@ uint32_t IntString::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -397,14 +390,13 @@ IntString& IntString::operator=(const IntString& other17) {
   __isset = other17.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const IntString& obj) {
-  using apache::thrift::to_string;
+void IntString::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "IntString(";
-  out << "myint=" << to_string(obj.myint);
-  out << ", " << "myString=" << to_string(obj.myString);
-  out << ", " << "underscore_int=" << to_string(obj.underscore_int);
+  out << "myint=" << to_string(myint);
+  out << ", " << "myString=" << to_string(myString);
+  out << ", " << "underscore_int=" << to_string(underscore_int);
   out << ")";
-  return out;
 }
 
 
@@ -452,11 +444,9 @@ void Complex::__set_unionField3(const PropValueUnion& val) {
   this->unionField3 = val;
 }
 
-const char* Complex::ascii_fingerprint = "FFA84FEA7037F5858F2BFEDA73AD679A";
-const uint8_t Complex::binary_fingerprint[16] = {0xFF,0xA8,0x4F,0xEA,0x70,0x37,0xF5,0x85,0x8F,0x2B,0xFE,0xDA,0x73,0xAD,0x67,0x9A};
-
 uint32_t Complex::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -665,7 +655,7 @@ uint32_t Complex::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Complex::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Complex");
 
   xfer += oprot->writeFieldBegin("aint", ::apache::thrift::protocol::T_I32, 1);
@@ -770,7 +760,6 @@ uint32_t Complex::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -816,21 +805,20 @@ Complex& Complex::operator=(const Complex& other69) {
   __isset = other69.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Complex& obj) {
-  using apache::thrift::to_string;
+void Complex::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Complex(";
-  out << "aint=" << to_string(obj.aint);
-  out << ", " << "aString=" << to_string(obj.aString);
-  out << ", " << "lint=" << to_string(obj.lint);
-  out << ", " << "lString=" << to_string(obj.lString);
-  out << ", " << "lintString=" << to_string(obj.lintString);
-  out << ", " << "mStringString=" << to_string(obj.mStringString);
-  out << ", " << "attributes=" << to_string(obj.attributes);
-  out << ", " << "unionField1=" << to_string(obj.unionField1);
-  out << ", " << "unionField2=" << to_string(obj.unionField2);
-  out << ", " << "unionField3=" << to_string(obj.unionField3);
+  out << "aint=" << to_string(aint);
+  out << ", " << "aString=" << to_string(aString);
+  out << ", " << "lint=" << to_string(lint);
+  out << ", " << "lString=" << to_string(lString);
+  out << ", " << "lintString=" << to_string(lintString);
+  out << ", " << "mStringString=" << to_string(mStringString);
+  out << ", " << "attributes=" << to_string(attributes);
+  out << ", " << "unionField1=" << to_string(unionField1);
+  out << ", " << "unionField2=" << to_string(unionField2);
+  out << ", " << "unionField3=" << to_string(unionField3);
   out << ")";
-  return out;
 }
 
 
@@ -846,11 +834,9 @@ void SetIntString::__set_aString(const std::string& val) {
   this->aString = val;
 }
 
-const char* SetIntString::ascii_fingerprint = "842B41C940D05DFB16183142A90DFC54";
-const uint8_t SetIntString::binary_fingerprint[16] = {0x84,0x2B,0x41,0xC9,0x40,0xD0,0x5D,0xFB,0x16,0x18,0x31,0x42,0xA9,0x0D,0xFC,0x54};
-
 uint32_t SetIntString::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -912,7 +898,7 @@ uint32_t SetIntString::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t SetIntString::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("SetIntString");
 
   xfer += oprot->writeFieldBegin("sIntString", ::apache::thrift::protocol::T_SET, 1);
@@ -933,7 +919,6 @@ uint32_t SetIntString::write(::apache::thrift::protocol::TProtocol* oprot) const
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -955,13 +940,12 @@ SetIntString& SetIntString::operator=(const SetIntString& other78) {
   __isset = other78.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const SetIntString& obj) {
-  using apache::thrift::to_string;
+void SetIntString::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "SetIntString(";
-  out << "sIntString=" << to_string(obj.sIntString);
-  out << ", " << "aString=" << to_string(obj.aString);
+  out << "sIntString=" << to_string(sIntString);
+  out << ", " << "aString=" << to_string(aString);
   out << ")";
-  return out;
 }
 
 

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/complex_types.h
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/complex_types.h b/serde/src/gen/thrift/gen-cpp/complex_types.h
index 2637720..38fa559 100644
--- a/serde/src/gen/thrift/gen-cpp/complex_types.h
+++ b/serde/src/gen/thrift/gen-cpp/complex_types.h
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -41,9 +41,6 @@ typedef struct _PropValueUnion__isset {
 class PropValueUnion {
  public:
 
-  static const char* ascii_fingerprint; // = "123CD9D82D5B5054B5054EFD63FC8590";
-  static const uint8_t binary_fingerprint[16]; // = {0x12,0x3C,0xD9,0xD8,0x2D,0x5B,0x50,0x54,0xB5,0x05,0x4E,0xFD,0x63,0xFC,0x85,0x90};
-
   PropValueUnion(const PropValueUnion&);
   PropValueUnion& operator=(const PropValueUnion&);
   PropValueUnion() : intValue(0), longValue(0), stringValue(), doubleValue(0), flag(0) {
@@ -111,11 +108,17 @@ class PropValueUnion {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const PropValueUnion& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(PropValueUnion &a, PropValueUnion &b);
 
+inline std::ostream& operator<<(std::ostream& out, const PropValueUnion& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _IntString__isset {
   _IntString__isset() : myint(false), myString(false), underscore_int(false) {}
   bool myint :1;
@@ -126,9 +129,6 @@ typedef struct _IntString__isset {
 class IntString {
  public:
 
-  static const char* ascii_fingerprint; // = "52C6DAB6CF51AF617111F6D3964C6503";
-  static const uint8_t binary_fingerprint[16]; // = {0x52,0xC6,0xDA,0xB6,0xCF,0x51,0xAF,0x61,0x71,0x11,0xF6,0xD3,0x96,0x4C,0x65,0x03};
-
   IntString(const IntString&);
   IntString& operator=(const IntString&);
   IntString() : myint(0), myString(), underscore_int(0) {
@@ -166,11 +166,17 @@ class IntString {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const IntString& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(IntString &a, IntString &b);
 
+inline std::ostream& operator<<(std::ostream& out, const IntString& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _Complex__isset {
   _Complex__isset() : aint(false), aString(false), lint(false), lString(false), lintString(false), mStringString(false), attributes(false), unionField1(false), unionField2(false), unionField3(false) {}
   bool aint :1;
@@ -188,9 +194,6 @@ typedef struct _Complex__isset {
 class Complex {
  public:
 
-  static const char* ascii_fingerprint; // = "FFA84FEA7037F5858F2BFEDA73AD679A";
-  static const uint8_t binary_fingerprint[16]; // = {0xFF,0xA8,0x4F,0xEA,0x70,0x37,0xF5,0x85,0x8F,0x2B,0xFE,0xDA,0x73,0xAD,0x67,0x9A};
-
   Complex(const Complex&);
   Complex& operator=(const Complex&);
   Complex() : aint(0), aString() {
@@ -263,11 +266,17 @@ class Complex {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const Complex& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(Complex &a, Complex &b);
 
+inline std::ostream& operator<<(std::ostream& out, const Complex& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _SetIntString__isset {
   _SetIntString__isset() : sIntString(false), aString(false) {}
   bool sIntString :1;
@@ -277,9 +286,6 @@ typedef struct _SetIntString__isset {
 class SetIntString {
  public:
 
-  static const char* ascii_fingerprint; // = "842B41C940D05DFB16183142A90DFC54";
-  static const uint8_t binary_fingerprint[16]; // = {0x84,0x2B,0x41,0xC9,0x40,0xD0,0x5D,0xFB,0x16,0x18,0x31,0x42,0xA9,0x0D,0xFC,0x54};
-
   SetIntString(const SetIntString&);
   SetIntString& operator=(const SetIntString&);
   SetIntString() : aString() {
@@ -312,11 +318,17 @@ class SetIntString {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const SetIntString& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(SetIntString &a, SetIntString &b);
 
+inline std::ostream& operator<<(std::ostream& out, const SetIntString& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 
 
 #endif

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/megastruct_constants.cpp
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/megastruct_constants.cpp b/serde/src/gen/thrift/gen-cpp/megastruct_constants.cpp
index 9a18a48..c3e3794 100644
--- a/serde/src/gen/thrift/gen-cpp/megastruct_constants.cpp
+++ b/serde/src/gen/thrift/gen-cpp/megastruct_constants.cpp
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/megastruct_constants.h
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/megastruct_constants.h b/serde/src/gen/thrift/gen-cpp/megastruct_constants.h
index 1b0558f..e08f8a3 100644
--- a/serde/src/gen/thrift/gen-cpp/megastruct_constants.h
+++ b/serde/src/gen/thrift/gen-cpp/megastruct_constants.h
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/megastruct_types.cpp
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/megastruct_types.cpp b/serde/src/gen/thrift/gen-cpp/megastruct_types.cpp
index 6123f7d..42f7e31 100644
--- a/serde/src/gen/thrift/gen-cpp/megastruct_types.cpp
+++ b/serde/src/gen/thrift/gen-cpp/megastruct_types.cpp
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -38,11 +38,9 @@ void MiniStruct::__set_my_enum(const MyEnum::type val) {
 __isset.my_enum = true;
 }
 
-const char* MiniStruct::ascii_fingerprint = "4ED2B10931906B61ED0B1592EE860A37";
-const uint8_t MiniStruct::binary_fingerprint[16] = {0x4E,0xD2,0xB1,0x09,0x31,0x90,0x6B,0x61,0xED,0x0B,0x15,0x92,0xEE,0x86,0x0A,0x37};
-
 uint32_t MiniStruct::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -93,7 +91,7 @@ uint32_t MiniStruct::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t MiniStruct::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("MiniStruct");
 
   if (this->__isset.my_string) {
@@ -108,7 +106,6 @@ uint32_t MiniStruct::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -130,13 +127,12 @@ MiniStruct& MiniStruct::operator=(const MiniStruct& other2) {
   __isset = other2.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const MiniStruct& obj) {
-  using apache::thrift::to_string;
+void MiniStruct::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "MiniStruct(";
-  out << "my_string="; (obj.__isset.my_string ? (out << to_string(obj.my_string)) : (out << "<null>"));
-  out << ", " << "my_enum="; (obj.__isset.my_enum ? (out << to_string(obj.my_enum)) : (out << "<null>"));
+  out << "my_string="; (__isset.my_string ? (out << to_string(my_string)) : (out << "<null>"));
+  out << ", " << "my_enum="; (__isset.my_enum ? (out << to_string(my_enum)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -244,11 +240,9 @@ void MegaStruct::__set_my_structset(const std::set<MiniStruct> & val) {
 __isset.my_structset = true;
 }
 
-const char* MegaStruct::ascii_fingerprint = "9979EEF0CA19988228E64220A3AA9120";
-const uint8_t MegaStruct::binary_fingerprint[16] = {0x99,0x79,0xEE,0xF0,0xCA,0x19,0x98,0x82,0x28,0xE6,0x42,0x20,0xA3,0xAA,0x91,0x20};
-
 uint32_t MegaStruct::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -644,7 +638,7 @@ uint32_t MegaStruct::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t MegaStruct::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("MegaStruct");
 
   if (this->__isset.my_bool) {
@@ -867,7 +861,6 @@ uint32_t MegaStruct::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -943,31 +936,30 @@ MegaStruct& MegaStruct::operator=(const MegaStruct& other110) {
   __isset = other110.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const MegaStruct& obj) {
-  using apache::thrift::to_string;
+void MegaStruct::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "MegaStruct(";
-  out << "my_bool="; (obj.__isset.my_bool ? (out << to_string(obj.my_bool)) : (out << "<null>"));
-  out << ", " << "my_byte="; (obj.__isset.my_byte ? (out << to_string(obj.my_byte)) : (out << "<null>"));
-  out << ", " << "my_16bit_int="; (obj.__isset.my_16bit_int ? (out << to_string(obj.my_16bit_int)) : (out << "<null>"));
-  out << ", " << "my_32bit_int="; (obj.__isset.my_32bit_int ? (out << to_string(obj.my_32bit_int)) : (out << "<null>"));
-  out << ", " << "my_64bit_int="; (obj.__isset.my_64bit_int ? (out << to_string(obj.my_64bit_int)) : (out << "<null>"));
-  out << ", " << "my_double="; (obj.__isset.my_double ? (out << to_string(obj.my_double)) : (out << "<null>"));
-  out << ", " << "my_string="; (obj.__isset.my_string ? (out << to_string(obj.my_string)) : (out << "<null>"));
-  out << ", " << "my_binary="; (obj.__isset.my_binary ? (out << to_string(obj.my_binary)) : (out << "<null>"));
-  out << ", " << "my_string_string_map="; (obj.__isset.my_string_string_map ? (out << to_string(obj.my_string_string_map)) : (out << "<null>"));
-  out << ", " << "my_string_enum_map="; (obj.__isset.my_string_enum_map ? (out << to_string(obj.my_string_enum_map)) : (out << "<null>"));
-  out << ", " << "my_enum_string_map="; (obj.__isset.my_enum_string_map ? (out << to_string(obj.my_enum_string_map)) : (out << "<null>"));
-  out << ", " << "my_enum_struct_map="; (obj.__isset.my_enum_struct_map ? (out << to_string(obj.my_enum_struct_map)) : (out << "<null>"));
-  out << ", " << "my_enum_stringlist_map="; (obj.__isset.my_enum_stringlist_map ? (out << to_string(obj.my_enum_stringlist_map)) : (out << "<null>"));
-  out << ", " << "my_enum_structlist_map="; (obj.__isset.my_enum_structlist_map ? (out << to_string(obj.my_enum_structlist_map)) : (out << "<null>"));
-  out << ", " << "my_stringlist="; (obj.__isset.my_stringlist ? (out << to_string(obj.my_stringlist)) : (out << "<null>"));
-  out << ", " << "my_structlist="; (obj.__isset.my_structlist ? (out << to_string(obj.my_structlist)) : (out << "<null>"));
-  out << ", " << "my_enumlist="; (obj.__isset.my_enumlist ? (out << to_string(obj.my_enumlist)) : (out << "<null>"));
-  out << ", " << "my_stringset="; (obj.__isset.my_stringset ? (out << to_string(obj.my_stringset)) : (out << "<null>"));
-  out << ", " << "my_enumset="; (obj.__isset.my_enumset ? (out << to_string(obj.my_enumset)) : (out << "<null>"));
-  out << ", " << "my_structset="; (obj.__isset.my_structset ? (out << to_string(obj.my_structset)) : (out << "<null>"));
+  out << "my_bool="; (__isset.my_bool ? (out << to_string(my_bool)) : (out << "<null>"));
+  out << ", " << "my_byte="; (__isset.my_byte ? (out << to_string(my_byte)) : (out << "<null>"));
+  out << ", " << "my_16bit_int="; (__isset.my_16bit_int ? (out << to_string(my_16bit_int)) : (out << "<null>"));
+  out << ", " << "my_32bit_int="; (__isset.my_32bit_int ? (out << to_string(my_32bit_int)) : (out << "<null>"));
+  out << ", " << "my_64bit_int="; (__isset.my_64bit_int ? (out << to_string(my_64bit_int)) : (out << "<null>"));
+  out << ", " << "my_double="; (__isset.my_double ? (out << to_string(my_double)) : (out << "<null>"));
+  out << ", " << "my_string="; (__isset.my_string ? (out << to_string(my_string)) : (out << "<null>"));
+  out << ", " << "my_binary="; (__isset.my_binary ? (out << to_string(my_binary)) : (out << "<null>"));
+  out << ", " << "my_string_string_map="; (__isset.my_string_string_map ? (out << to_string(my_string_string_map)) : (out << "<null>"));
+  out << ", " << "my_string_enum_map="; (__isset.my_string_enum_map ? (out << to_string(my_string_enum_map)) : (out << "<null>"));
+  out << ", " << "my_enum_string_map="; (__isset.my_enum_string_map ? (out << to_string(my_enum_string_map)) : (out << "<null>"));
+  out << ", " << "my_enum_struct_map="; (__isset.my_enum_struct_map ? (out << to_string(my_enum_struct_map)) : (out << "<null>"));
+  out << ", " << "my_enum_stringlist_map="; (__isset.my_enum_stringlist_map ? (out << to_string(my_enum_stringlist_map)) : (out << "<null>"));
+  out << ", " << "my_enum_structlist_map="; (__isset.my_enum_structlist_map ? (out << to_string(my_enum_structlist_map)) : (out << "<null>"));
+  out << ", " << "my_stringlist="; (__isset.my_stringlist ? (out << to_string(my_stringlist)) : (out << "<null>"));
+  out << ", " << "my_structlist="; (__isset.my_structlist ? (out << to_string(my_structlist)) : (out << "<null>"));
+  out << ", " << "my_enumlist="; (__isset.my_enumlist ? (out << to_string(my_enumlist)) : (out << "<null>"));
+  out << ", " << "my_stringset="; (__isset.my_stringset ? (out << to_string(my_stringset)) : (out << "<null>"));
+  out << ", " << "my_enumset="; (__isset.my_enumset ? (out << to_string(my_enumset)) : (out << "<null>"));
+  out << ", " << "my_structset="; (__isset.my_structset ? (out << to_string(my_structset)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/megastruct_types.h
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/megastruct_types.h b/serde/src/gen/thrift/gen-cpp/megastruct_types.h
index e4985dc..d04a814 100644
--- a/serde/src/gen/thrift/gen-cpp/megastruct_types.h
+++ b/serde/src/gen/thrift/gen-cpp/megastruct_types.h
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -41,9 +41,6 @@ typedef struct _MiniStruct__isset {
 class MiniStruct {
  public:
 
-  static const char* ascii_fingerprint; // = "4ED2B10931906B61ED0B1592EE860A37";
-  static const uint8_t binary_fingerprint[16]; // = {0x4E,0xD2,0xB1,0x09,0x31,0x90,0x6B,0x61,0xED,0x0B,0x15,0x92,0xEE,0x86,0x0A,0x37};
-
   MiniStruct(const MiniStruct&);
   MiniStruct& operator=(const MiniStruct&);
   MiniStruct() : my_string(), my_enum((MyEnum::type)0) {
@@ -80,11 +77,17 @@ class MiniStruct {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const MiniStruct& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(MiniStruct &a, MiniStruct &b);
 
+inline std::ostream& operator<<(std::ostream& out, const MiniStruct& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 typedef struct _MegaStruct__isset {
   _MegaStruct__isset() : my_bool(false), my_byte(false), my_16bit_int(false), my_32bit_int(false), my_64bit_int(false), my_double(false), my_string(false), my_binary(false), my_string_string_map(false), my_string_enum_map(false), my_enum_string_map(false), my_enum_struct_map(false), my_enum_stringlist_map(false), my_enum_structlist_map(false), my_stringlist(false), my_structlist(false), my_enumlist(false), my_stringset(false), my_enumset(false), my_structset(false) {}
   bool my_bool :1;
@@ -112,9 +115,6 @@ typedef struct _MegaStruct__isset {
 class MegaStruct {
  public:
 
-  static const char* ascii_fingerprint; // = "9979EEF0CA19988228E64220A3AA9120";
-  static const uint8_t binary_fingerprint[16]; // = {0x99,0x79,0xEE,0xF0,0xCA,0x19,0x98,0x82,0x28,0xE6,0x42,0x20,0xA3,0xAA,0x91,0x20};
-
   MegaStruct(const MegaStruct&);
   MegaStruct& operator=(const MegaStruct&);
   MegaStruct() : my_bool(0), my_byte(0), my_16bit_int(0), my_32bit_int(0), my_64bit_int(0), my_double(0), my_string(), my_binary() {
@@ -277,11 +277,17 @@ class MegaStruct {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  friend std::ostream& operator<<(std::ostream& out, const MegaStruct& obj);
+  virtual void printTo(std::ostream& out) const;
 };
 
 void swap(MegaStruct &a, MegaStruct &b);
 
+inline std::ostream& operator<<(std::ostream& out, const MegaStruct& obj)
+{
+  obj.printTo(out);
+  return out;
+}
+
 
 
 #endif

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/serde_constants.cpp
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/serde_constants.cpp b/serde/src/gen/thrift/gen-cpp/serde_constants.cpp
index d5d6999..243d3b8 100644
--- a/serde/src/gen/thrift/gen-cpp/serde_constants.cpp
+++ b/serde/src/gen/thrift/gen-cpp/serde_constants.cpp
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

http://git-wip-us.apache.org/repos/asf/hive/blob/e862ff80/serde/src/gen/thrift/gen-cpp/serde_constants.h
----------------------------------------------------------------------
diff --git a/serde/src/gen/thrift/gen-cpp/serde_constants.h b/serde/src/gen/thrift/gen-cpp/serde_constants.h
index cd48926..3566ead 100644
--- a/serde/src/gen/thrift/gen-cpp/serde_constants.h
+++ b/serde/src/gen/thrift/gen-cpp/serde_constants.h
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.9.2)
+ * Autogenerated by Thrift Compiler (0.9.3)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated