http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 477a3be..660dd4e 100644
--- 
a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
+++ 
b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
@@ -310,6 +310,12 @@ 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/ccb30e3e/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 ecabd5d..9103102 100644
--- 
a/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
+++ 
b/metastore/src/test/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
@@ -341,6 +341,12 @@ 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/ccb30e3e/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 1157033..2e1f5f4 100644
--- a/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
+++ b/metastore/src/test/org/apache/hadoop/hive/metastore/TestObjectStore.java
@@ -37,6 +37,7 @@ 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;
@@ -163,8 +164,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", "String", "");
-    FieldSchema partitionKey2 = new FieldSchema("State", "String", "");
+    FieldSchema partitionKey1 = new FieldSchema("Country", 
serdeConstants.STRING_TYPE_NAME, "");
+    FieldSchema partitionKey2 = new FieldSchema("State", 
serdeConstants.STRING_TYPE_NAME, "");
     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>();
@@ -182,6 +183,12 @@ 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/ccb30e3e/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 9186bad..280edbe 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 6cc8af0..6bee48d 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 e92d776..a1fb60b 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -150,9 +150,11 @@ 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;
@@ -223,7 +225,7 @@ uint32_t 
Adjacency::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Adjacency::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("Adjacency");
 
   xfer += oprot->writeFieldBegin("node", ::apache::thrift::protocol::T_STRING, 
1);
@@ -248,6 +250,7 @@ uint32_t 
Adjacency::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -272,13 +275,14 @@ Adjacency& Adjacency::operator=(const Adjacency& other8) {
   __isset = other8.__isset;
   return *this;
 }
-void Adjacency::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const Adjacency& obj) {
+  using apache::thrift::to_string;
   out << "Adjacency(";
-  out << "node=" << to_string(node);
-  out << ", " << "children=" << to_string(children);
-  out << ", " << "adjacencyType=" << to_string(adjacencyType);
+  out << "node=" << to_string(obj.node);
+  out << ", " << "children=" << to_string(obj.children);
+  out << ", " << "adjacencyType=" << to_string(obj.adjacencyType);
   out << ")";
+  return out;
 }
 
 
@@ -298,9 +302,11 @@ 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;
@@ -383,7 +389,7 @@ uint32_t Graph::read(::apache::thrift::protocol::TProtocol* 
iprot) {
 
 uint32_t Graph::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("Graph");
 
   xfer += oprot->writeFieldBegin("nodeType", 
::apache::thrift::protocol::T_I32, 1);
@@ -416,6 +422,7 @@ uint32_t 
Graph::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -440,13 +447,14 @@ Graph& Graph::operator=(const Graph& other23) {
   __isset = other23.__isset;
   return *this;
 }
-void Graph::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const Graph& obj) {
+  using apache::thrift::to_string;
   out << "Graph(";
-  out << "nodeType=" << to_string(nodeType);
-  out << ", " << "roots=" << to_string(roots);
-  out << ", " << "adjacencyList=" << to_string(adjacencyList);
+  out << "nodeType=" << to_string(obj.nodeType);
+  out << ", " << "roots=" << to_string(obj.roots);
+  out << ", " << "adjacencyList=" << to_string(obj.adjacencyList);
   out << ")";
+  return out;
 }
 
 
@@ -478,9 +486,11 @@ 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;
@@ -593,7 +603,7 @@ uint32_t 
Operator::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Operator::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("Operator");
 
   xfer += oprot->writeFieldBegin("operatorId", 
::apache::thrift::protocol::T_STRING, 1);
@@ -640,6 +650,7 @@ uint32_t 
Operator::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -673,16 +684,17 @@ Operator& Operator::operator=(const Operator& other42) {
   __isset = other42.__isset;
   return *this;
 }
-void Operator::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const Operator& obj) {
+  using apache::thrift::to_string;
   out << "Operator(";
-  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 << "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 << ")";
+  return out;
 }
 
 
@@ -724,9 +736,11 @@ 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;
@@ -867,7 +881,7 @@ uint32_t Task::read(::apache::thrift::protocol::TProtocol* 
iprot) {
 
 uint32_t Task::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("Task");
 
   xfer += oprot->writeFieldBegin("taskId", 
::apache::thrift::protocol::T_STRING, 1);
@@ -932,6 +946,7 @@ uint32_t Task::write(::apache::thrift::protocol::TProtocol* 
oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -971,18 +986,19 @@ Task& Task::operator=(const Task& other67) {
   __isset = other67.__isset;
   return *this;
 }
-void Task::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const Task& obj) {
+  using apache::thrift::to_string;
   out << "Task(";
-  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 << "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 << ")";
+  return out;
 }
 
 
@@ -1018,9 +1034,11 @@ 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;
@@ -1153,7 +1171,7 @@ uint32_t 
Stage::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Stage::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("Stage");
 
   xfer += oprot->writeFieldBegin("stageId", 
::apache::thrift::protocol::T_STRING, 1);
@@ -1212,6 +1230,7 @@ uint32_t 
Stage::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1248,17 +1267,18 @@ Stage& Stage::operator=(const Stage& other92) {
   __isset = other92.__isset;
   return *this;
 }
-void Stage::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const Stage& obj) {
+  using apache::thrift::to_string;
   out << "Stage(";
-  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 << "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 << ")";
+  return out;
 }
 
 
@@ -1298,9 +1318,11 @@ 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;
@@ -1439,7 +1461,7 @@ uint32_t 
Query::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Query::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("Query");
 
   xfer += oprot->writeFieldBegin("queryId", 
::apache::thrift::protocol::T_STRING, 1);
@@ -1502,6 +1524,7 @@ uint32_t 
Query::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1541,18 +1564,19 @@ Query& Query::operator=(const Query& other116) {
   __isset = other116.__isset;
   return *this;
 }
-void Query::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const Query& obj) {
+  using apache::thrift::to_string;
   out << "Query(";
-  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 << "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 << ")";
+  return out;
 }
 
 
@@ -1572,9 +1596,11 @@ 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;
@@ -1643,7 +1669,7 @@ uint32_t 
QueryPlan::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t QueryPlan::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("QueryPlan");
 
   xfer += oprot->writeFieldBegin("queries", 
::apache::thrift::protocol::T_LIST, 1);
@@ -1668,6 +1694,7 @@ uint32_t 
QueryPlan::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1692,13 +1719,14 @@ QueryPlan& QueryPlan::operator=(const QueryPlan& 
other124) {
   __isset = other124.__isset;
   return *this;
 }
-void QueryPlan::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const QueryPlan& obj) {
+  using apache::thrift::to_string;
   out << "QueryPlan(";
-  out << "queries=" << to_string(queries);
-  out << ", " << "done=" << to_string(done);
-  out << ", " << "started=" << to_string(started);
+  out << "queries=" << to_string(obj.queries);
+  out << ", " << "done=" << to_string(obj.done);
+  out << ", " << "started=" << to_string(obj.started);
   out << ")";
+  return out;
 }
 
 }}} // namespace

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 ce37b2e..932804d 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -123,6 +123,9 @@ 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) {
@@ -160,17 +163,11 @@ class Adjacency {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const Adjacency& obj);
 };
 
 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;
@@ -181,6 +178,9 @@ 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,17 +218,11 @@ class Graph {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const Graph& obj);
 };
 
 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;
@@ -242,6 +236,9 @@ 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) {
@@ -294,17 +291,11 @@ class Operator {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const Operator& obj);
 };
 
 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;
@@ -320,6 +311,9 @@ 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) {
@@ -386,17 +380,11 @@ class Task {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const Task& obj);
 };
 
 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;
@@ -411,6 +399,9 @@ 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) {
@@ -468,17 +459,11 @@ class Stage {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const Stage& obj);
 };
 
 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;
@@ -494,6 +479,9 @@ 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) {
@@ -556,17 +544,11 @@ class Query {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const Query& obj);
 };
 
 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;
@@ -577,6 +559,9 @@ 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) {
@@ -614,17 +599,11 @@ class QueryPlan {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const QueryPlan& obj);
 };
 
 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/ccb30e3e/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 37edf2a..87e8008 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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.3)")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-12-17")
 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/ccb30e3e/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 7a716f8..470cad2 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 0b454df..7dbd65a 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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.3)")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-12-17")
 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/ccb30e3e/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 c3ce662..5fdbfa3 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 05dbb2d..2ebff17 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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.3)")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-12-17")
 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 isDone();
+      return Boolean.valueOf(isDone());
 
     case STARTED:
-      return isStarted();
+      return Boolean.valueOf(isStarted());
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 a002348..1d17dcb 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 de553e1..b3f8778 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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.3)")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-12-17")
 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 isDone();
+      return Boolean.valueOf(isDone());
 
     case STARTED:
-      return isStarted();
+      return Boolean.valueOf(isStarted());
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 0e12279..e12005d 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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.3)")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-12-17")
 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 isDone();
+      return Boolean.valueOf(isDone());
 
     case STARTED:
-      return isStarted();
+      return Boolean.valueOf(isStarted());
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 7f86eeb..309237d 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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.3)")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-12-17")
 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 isDone();
+      return Boolean.valueOf(isDone());
 
     case STARTED:
-      return isStarted();
+      return Boolean.valueOf(isStarted());
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 f20174c..c7b0ff7 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 f978e42..87ce205 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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.3)")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-12-17")
 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 isDone();
+      return Boolean.valueOf(isDone());
 
     case STARTED:
-      return isStarted();
+      return Boolean.valueOf(isStarted());
 
     }
     throw new IllegalStateException();

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 d77f008..8aad073 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 e1693f3..3dfff1d 100644
--- a/ql/src/gen/thrift/gen-php/Types.php
+++ b/ql/src/gen/thrift/gen-php/Types.php
@@ -1,6 +1,8 @@
 <?php
+namespace ;
+
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 4a6492b..99717a9 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.3)
+# Autogenerated by Thrift Compiler (0.9.2)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 2073959..6deb850 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.3)
+# Autogenerated by Thrift Compiler (0.9.2)
 #
 # 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/ccb30e3e/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 e61608b..428185e 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.3)
+# Autogenerated by Thrift Compiler (0.9.2)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 f8b4034..1a22f07 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.3)
+# Autogenerated by Thrift Compiler (0.9.2)
 #
 # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 #

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 29df4f9..dca1198 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,6 +2373,30 @@ 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/ccb30e3e/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 a6df39c..aa146c6 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 ee0bdca..971cd2c 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 36c1514..fb6fe25 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -51,9 +51,11 @@ 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;
@@ -169,7 +171,7 @@ uint32_t 
PropValueUnion::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t PropValueUnion::write(::apache::thrift::protocol::TProtocol* oprot) 
const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("PropValueUnion");
 
   if (this->__isset.intValue) {
@@ -224,6 +226,7 @@ uint32_t 
PropValueUnion::write(::apache::thrift::protocol::TProtocol* oprot) con
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -260,17 +263,18 @@ PropValueUnion& PropValueUnion::operator=(const 
PropValueUnion& other15) {
   __isset = other15.__isset;
   return *this;
 }
-void PropValueUnion::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const PropValueUnion& obj) {
+  using apache::thrift::to_string;
   out << "PropValueUnion(";
-  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 << "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 << ")";
+  return out;
 }
 
 
@@ -290,9 +294,11 @@ 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;
@@ -349,7 +355,7 @@ uint32_t 
IntString::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t IntString::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("IntString");
 
   xfer += oprot->writeFieldBegin("myint", ::apache::thrift::protocol::T_I32, 
1);
@@ -366,6 +372,7 @@ uint32_t 
IntString::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -390,13 +397,14 @@ IntString& IntString::operator=(const IntString& other17) 
{
   __isset = other17.__isset;
   return *this;
 }
-void IntString::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const IntString& obj) {
+  using apache::thrift::to_string;
   out << "IntString(";
-  out << "myint=" << to_string(myint);
-  out << ", " << "myString=" << to_string(myString);
-  out << ", " << "underscore_int=" << to_string(underscore_int);
+  out << "myint=" << to_string(obj.myint);
+  out << ", " << "myString=" << to_string(obj.myString);
+  out << ", " << "underscore_int=" << to_string(obj.underscore_int);
   out << ")";
+  return out;
 }
 
 
@@ -444,9 +452,11 @@ 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;
@@ -655,7 +665,7 @@ uint32_t 
Complex::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Complex::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("Complex");
 
   xfer += oprot->writeFieldBegin("aint", ::apache::thrift::protocol::T_I32, 1);
@@ -760,6 +770,7 @@ uint32_t 
Complex::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -805,20 +816,21 @@ Complex& Complex::operator=(const Complex& other69) {
   __isset = other69.__isset;
   return *this;
 }
-void Complex::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const Complex& obj) {
+  using apache::thrift::to_string;
   out << "Complex(";
-  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 << "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 << ")";
+  return out;
 }
 
 
@@ -834,9 +846,11 @@ 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;
@@ -898,7 +912,7 @@ uint32_t 
SetIntString::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t SetIntString::write(::apache::thrift::protocol::TProtocol* oprot) 
const {
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("SetIntString");
 
   xfer += oprot->writeFieldBegin("sIntString", 
::apache::thrift::protocol::T_SET, 1);
@@ -919,6 +933,7 @@ uint32_t 
SetIntString::write(::apache::thrift::protocol::TProtocol* oprot) const
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -940,12 +955,13 @@ SetIntString& SetIntString::operator=(const SetIntString& 
other78) {
   __isset = other78.__isset;
   return *this;
 }
-void SetIntString::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const SetIntString& obj) {
+  using apache::thrift::to_string;
   out << "SetIntString(";
-  out << "sIntString=" << to_string(sIntString);
-  out << ", " << "aString=" << to_string(aString);
+  out << "sIntString=" << to_string(obj.sIntString);
+  out << ", " << "aString=" << to_string(obj.aString);
   out << ")";
+  return out;
 }
 
 

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 38fa559..2637720 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -41,6 +41,9 @@ 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) {
@@ -108,17 +111,11 @@ class PropValueUnion {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const PropValueUnion& 
obj);
 };
 
 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;
@@ -129,6 +126,9 @@ 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,17 +166,11 @@ class IntString {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const IntString& obj);
 };
 
 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;
@@ -194,6 +188,9 @@ 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() {
@@ -266,17 +263,11 @@ class Complex {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const Complex& obj);
 };
 
 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;
@@ -286,6 +277,9 @@ 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() {
@@ -318,17 +312,11 @@ class SetIntString {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const SetIntString& obj);
 };
 
 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/ccb30e3e/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 c3e3794..9a18a48 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 e08f8a3..1b0558f 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 42f7e31..6123f7d 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -38,9 +38,11 @@ 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;
@@ -91,7 +93,7 @@ uint32_t 
MiniStruct::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t MiniStruct::write(::apache::thrift::protocol::TProtocol* oprot) const 
{
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("MiniStruct");
 
   if (this->__isset.my_string) {
@@ -106,6 +108,7 @@ uint32_t 
MiniStruct::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -127,12 +130,13 @@ MiniStruct& MiniStruct::operator=(const MiniStruct& 
other2) {
   __isset = other2.__isset;
   return *this;
 }
-void MiniStruct::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const MiniStruct& obj) {
+  using apache::thrift::to_string;
   out << "MiniStruct(";
-  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 << "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 << ")";
+  return out;
 }
 
 
@@ -240,9 +244,11 @@ 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;
@@ -638,7 +644,7 @@ uint32_t 
MegaStruct::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t MegaStruct::write(::apache::thrift::protocol::TProtocol* oprot) const 
{
   uint32_t xfer = 0;
-  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  oprot->incrementRecursionDepth();
   xfer += oprot->writeStructBegin("MegaStruct");
 
   if (this->__isset.my_bool) {
@@ -861,6 +867,7 @@ uint32_t 
MegaStruct::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
+  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -936,30 +943,31 @@ MegaStruct& MegaStruct::operator=(const MegaStruct& 
other110) {
   __isset = other110.__isset;
   return *this;
 }
-void MegaStruct::printTo(std::ostream& out) const {
-  using ::apache::thrift::to_string;
+std::ostream& operator<<(std::ostream& out, const MegaStruct& obj) {
+  using apache::thrift::to_string;
   out << "MegaStruct(";
-  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 << "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 << ")";
+  return out;
 }
 
 

http://git-wip-us.apache.org/repos/asf/hive/blob/ccb30e3e/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 d04a814..e4985dc 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -41,6 +41,9 @@ 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) {
@@ -77,17 +80,11 @@ class MiniStruct {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const MiniStruct& obj);
 };
 
 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;
@@ -115,6 +112,9 @@ 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,17 +277,11 @@ class MegaStruct {
   uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
   uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
 
-  virtual void printTo(std::ostream& out) const;
+  friend std::ostream& operator<<(std::ostream& out, const MegaStruct& obj);
 };
 
 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/ccb30e3e/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 243d3b8..d5d6999 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * 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/ccb30e3e/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 3566ead..cd48926 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.3)
+ * Autogenerated by Thrift Compiler (0.9.2)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated

Reply via email to