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:46 UTC

[19/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/gen/thrift/gen-cpp/hive_metastore_types.cpp
----------------------------------------------------------------------
diff --git a/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp b/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
index e374cb1..d997e33 100644
--- a/metastore/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
+++ b/metastore/src/gen/thrift/gen-cpp/hive_metastore_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
@@ -172,11 +172,9 @@ void Version::__set_comments(const std::string& val) {
   this->comments = val;
 }
 
-const char* Version::ascii_fingerprint = "07A9615F837F7D0A952B595DD3020972";
-const uint8_t Version::binary_fingerprint[16] = {0x07,0xA9,0x61,0x5F,0x83,0x7F,0x7D,0x0A,0x95,0x2B,0x59,0x5D,0xD3,0x02,0x09,0x72};
-
 uint32_t Version::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 Version::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Version::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Version");
 
   xfer += oprot->writeFieldBegin("version", ::apache::thrift::protocol::T_STRING, 1);
@@ -238,7 +236,6 @@ uint32_t Version::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -260,13 +257,12 @@ Version& Version::operator=(const Version& other1) {
   __isset = other1.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Version& obj) {
-  using apache::thrift::to_string;
+void Version::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Version(";
-  out << "version=" << to_string(obj.version);
-  out << ", " << "comments=" << to_string(obj.comments);
+  out << "version=" << to_string(version);
+  out << ", " << "comments=" << to_string(comments);
   out << ")";
-  return out;
 }
 
 
@@ -286,11 +282,9 @@ void FieldSchema::__set_comment(const std::string& val) {
   this->comment = val;
 }
 
-const char* FieldSchema::ascii_fingerprint = "AB879940BD15B6B25691265F7384B271";
-const uint8_t FieldSchema::binary_fingerprint[16] = {0xAB,0x87,0x99,0x40,0xBD,0x15,0xB6,0xB2,0x56,0x91,0x26,0x5F,0x73,0x84,0xB2,0x71};
-
 uint32_t FieldSchema::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -347,7 +341,7 @@ uint32_t FieldSchema::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t FieldSchema::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("FieldSchema");
 
   xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 1);
@@ -364,7 +358,6 @@ uint32_t FieldSchema::write(::apache::thrift::protocol::TProtocol* oprot) const
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -389,14 +382,13 @@ FieldSchema& FieldSchema::operator=(const FieldSchema& other3) {
   __isset = other3.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const FieldSchema& obj) {
-  using apache::thrift::to_string;
+void FieldSchema::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "FieldSchema(";
-  out << "name=" << to_string(obj.name);
-  out << ", " << "type=" << to_string(obj.type);
-  out << ", " << "comment=" << to_string(obj.comment);
+  out << "name=" << to_string(name);
+  out << ", " << "type=" << to_string(type);
+  out << ", " << "comment=" << to_string(comment);
   out << ")";
-  return out;
 }
 
 
@@ -423,11 +415,9 @@ void Type::__set_fields(const std::vector<FieldSchema> & val) {
 __isset.fields = true;
 }
 
-const char* Type::ascii_fingerprint = "20DF02DE523C27F7066C7BD4D9120842";
-const uint8_t Type::binary_fingerprint[16] = {0x20,0xDF,0x02,0xDE,0x52,0x3C,0x27,0xF7,0x06,0x6C,0x7B,0xD4,0xD9,0x12,0x08,0x42};
-
 uint32_t Type::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -504,7 +494,7 @@ uint32_t Type::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Type::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Type");
 
   xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 1);
@@ -536,7 +526,6 @@ uint32_t Type::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -564,15 +553,14 @@ Type& Type::operator=(const Type& other11) {
   __isset = other11.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Type& obj) {
-  using apache::thrift::to_string;
+void Type::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Type(";
-  out << "name=" << to_string(obj.name);
-  out << ", " << "type1="; (obj.__isset.type1 ? (out << to_string(obj.type1)) : (out << "<null>"));
-  out << ", " << "type2="; (obj.__isset.type2 ? (out << to_string(obj.type2)) : (out << "<null>"));
-  out << ", " << "fields="; (obj.__isset.fields ? (out << to_string(obj.fields)) : (out << "<null>"));
+  out << "name=" << to_string(name);
+  out << ", " << "type1="; (__isset.type1 ? (out << to_string(type1)) : (out << "<null>"));
+  out << ", " << "type2="; (__isset.type2 ? (out << to_string(type2)) : (out << "<null>"));
+  out << ", " << "fields="; (__isset.fields ? (out << to_string(fields)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -600,11 +588,9 @@ void HiveObjectRef::__set_columnName(const std::string& val) {
   this->columnName = val;
 }
 
-const char* HiveObjectRef::ascii_fingerprint = "205CD8311CF3AA9EC161BAEF8D7C933C";
-const uint8_t HiveObjectRef::binary_fingerprint[16] = {0x20,0x5C,0xD8,0x31,0x1C,0xF3,0xAA,0x9E,0xC1,0x61,0xBA,0xEF,0x8D,0x7C,0x93,0x3C};
-
 uint32_t HiveObjectRef::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -691,7 +677,7 @@ uint32_t HiveObjectRef::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t HiveObjectRef::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("HiveObjectRef");
 
   xfer += oprot->writeFieldBegin("objectType", ::apache::thrift::protocol::T_I32, 1);
@@ -724,7 +710,6 @@ uint32_t HiveObjectRef::write(::apache::thrift::protocol::TProtocol* oprot) cons
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -755,16 +740,15 @@ HiveObjectRef& HiveObjectRef::operator=(const HiveObjectRef& other20) {
   __isset = other20.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const HiveObjectRef& obj) {
-  using apache::thrift::to_string;
+void HiveObjectRef::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "HiveObjectRef(";
-  out << "objectType=" << to_string(obj.objectType);
-  out << ", " << "dbName=" << to_string(obj.dbName);
-  out << ", " << "objectName=" << to_string(obj.objectName);
-  out << ", " << "partValues=" << to_string(obj.partValues);
-  out << ", " << "columnName=" << to_string(obj.columnName);
+  out << "objectType=" << to_string(objectType);
+  out << ", " << "dbName=" << to_string(dbName);
+  out << ", " << "objectName=" << to_string(objectName);
+  out << ", " << "partValues=" << to_string(partValues);
+  out << ", " << "columnName=" << to_string(columnName);
   out << ")";
-  return out;
 }
 
 
@@ -792,11 +776,9 @@ void PrivilegeGrantInfo::__set_grantOption(const bool val) {
   this->grantOption = val;
 }
 
-const char* PrivilegeGrantInfo::ascii_fingerprint = "A58923AF7294BE492D6F90E07E8CEE1F";
-const uint8_t PrivilegeGrantInfo::binary_fingerprint[16] = {0xA5,0x89,0x23,0xAF,0x72,0x94,0xBE,0x49,0x2D,0x6F,0x90,0xE0,0x7E,0x8C,0xEE,0x1F};
-
 uint32_t PrivilegeGrantInfo::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -871,7 +853,7 @@ uint32_t PrivilegeGrantInfo::read(::apache::thrift::protocol::TProtocol* iprot)
 
 uint32_t PrivilegeGrantInfo::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("PrivilegeGrantInfo");
 
   xfer += oprot->writeFieldBegin("privilege", ::apache::thrift::protocol::T_STRING, 1);
@@ -896,7 +878,6 @@ uint32_t PrivilegeGrantInfo::write(::apache::thrift::protocol::TProtocol* oprot)
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -927,16 +908,15 @@ PrivilegeGrantInfo& PrivilegeGrantInfo::operator=(const PrivilegeGrantInfo& othe
   __isset = other23.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const PrivilegeGrantInfo& obj) {
-  using apache::thrift::to_string;
+void PrivilegeGrantInfo::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "PrivilegeGrantInfo(";
-  out << "privilege=" << to_string(obj.privilege);
-  out << ", " << "createTime=" << to_string(obj.createTime);
-  out << ", " << "grantor=" << to_string(obj.grantor);
-  out << ", " << "grantorType=" << to_string(obj.grantorType);
-  out << ", " << "grantOption=" << to_string(obj.grantOption);
+  out << "privilege=" << to_string(privilege);
+  out << ", " << "createTime=" << to_string(createTime);
+  out << ", " << "grantor=" << to_string(grantor);
+  out << ", " << "grantorType=" << to_string(grantorType);
+  out << ", " << "grantOption=" << to_string(grantOption);
   out << ")";
-  return out;
 }
 
 
@@ -960,11 +940,9 @@ void HiveObjectPrivilege::__set_grantInfo(const PrivilegeGrantInfo& val) {
   this->grantInfo = val;
 }
 
-const char* HiveObjectPrivilege::ascii_fingerprint = "83D71969B23BD853E29DBA9D43B29AF8";
-const uint8_t HiveObjectPrivilege::binary_fingerprint[16] = {0x83,0xD7,0x19,0x69,0xB2,0x3B,0xD8,0x53,0xE2,0x9D,0xBA,0x9D,0x43,0xB2,0x9A,0xF8};
-
 uint32_t HiveObjectPrivilege::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1031,7 +1009,7 @@ uint32_t HiveObjectPrivilege::read(::apache::thrift::protocol::TProtocol* iprot)
 
 uint32_t HiveObjectPrivilege::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("HiveObjectPrivilege");
 
   xfer += oprot->writeFieldBegin("hiveObject", ::apache::thrift::protocol::T_STRUCT, 1);
@@ -1052,7 +1030,6 @@ uint32_t HiveObjectPrivilege::write(::apache::thrift::protocol::TProtocol* oprot
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1080,15 +1057,14 @@ HiveObjectPrivilege& HiveObjectPrivilege::operator=(const HiveObjectPrivilege& o
   __isset = other26.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const HiveObjectPrivilege& obj) {
-  using apache::thrift::to_string;
+void HiveObjectPrivilege::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "HiveObjectPrivilege(";
-  out << "hiveObject=" << to_string(obj.hiveObject);
-  out << ", " << "principalName=" << to_string(obj.principalName);
-  out << ", " << "principalType=" << to_string(obj.principalType);
-  out << ", " << "grantInfo=" << to_string(obj.grantInfo);
+  out << "hiveObject=" << to_string(hiveObject);
+  out << ", " << "principalName=" << to_string(principalName);
+  out << ", " << "principalType=" << to_string(principalType);
+  out << ", " << "grantInfo=" << to_string(grantInfo);
   out << ")";
-  return out;
 }
 
 
@@ -1100,11 +1076,9 @@ void PrivilegeBag::__set_privileges(const std::vector<HiveObjectPrivilege> & val
   this->privileges = val;
 }
 
-const char* PrivilegeBag::ascii_fingerprint = "BB89E4701B7B709B046A74C90B1147F2";
-const uint8_t PrivilegeBag::binary_fingerprint[16] = {0xBB,0x89,0xE4,0x70,0x1B,0x7B,0x70,0x9B,0x04,0x6A,0x74,0xC9,0x0B,0x11,0x47,0xF2};
-
 uint32_t PrivilegeBag::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1157,7 +1131,7 @@ uint32_t PrivilegeBag::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t PrivilegeBag::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("PrivilegeBag");
 
   xfer += oprot->writeFieldBegin("privileges", ::apache::thrift::protocol::T_LIST, 1);
@@ -1174,7 +1148,6 @@ uint32_t PrivilegeBag::write(::apache::thrift::protocol::TProtocol* oprot) const
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1193,12 +1166,11 @@ PrivilegeBag& PrivilegeBag::operator=(const PrivilegeBag& other34) {
   __isset = other34.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const PrivilegeBag& obj) {
-  using apache::thrift::to_string;
+void PrivilegeBag::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "PrivilegeBag(";
-  out << "privileges=" << to_string(obj.privileges);
+  out << "privileges=" << to_string(privileges);
   out << ")";
-  return out;
 }
 
 
@@ -1218,11 +1190,9 @@ void PrincipalPrivilegeSet::__set_rolePrivileges(const std::map<std::string, std
   this->rolePrivileges = val;
 }
 
-const char* PrincipalPrivilegeSet::ascii_fingerprint = "08F75D2533906EA87BE34EA640856683";
-const uint8_t PrincipalPrivilegeSet::binary_fingerprint[16] = {0x08,0xF7,0x5D,0x25,0x33,0x90,0x6E,0xA8,0x7B,0xE3,0x4E,0xA6,0x40,0x85,0x66,0x83};
-
 uint32_t PrincipalPrivilegeSet::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1360,7 +1330,7 @@ uint32_t PrincipalPrivilegeSet::read(::apache::thrift::protocol::TProtocol* ipro
 
 uint32_t PrincipalPrivilegeSet::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("PrincipalPrivilegeSet");
 
   xfer += oprot->writeFieldBegin("userPrivileges", ::apache::thrift::protocol::T_MAP, 1);
@@ -1428,7 +1398,6 @@ uint32_t PrincipalPrivilegeSet::write(::apache::thrift::protocol::TProtocol* opr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1453,14 +1422,13 @@ PrincipalPrivilegeSet& PrincipalPrivilegeSet::operator=(const PrincipalPrivilege
   __isset = other78.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const PrincipalPrivilegeSet& obj) {
-  using apache::thrift::to_string;
+void PrincipalPrivilegeSet::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "PrincipalPrivilegeSet(";
-  out << "userPrivileges=" << to_string(obj.userPrivileges);
-  out << ", " << "groupPrivileges=" << to_string(obj.groupPrivileges);
-  out << ", " << "rolePrivileges=" << to_string(obj.rolePrivileges);
+  out << "userPrivileges=" << to_string(userPrivileges);
+  out << ", " << "groupPrivileges=" << to_string(groupPrivileges);
+  out << ", " << "rolePrivileges=" << to_string(rolePrivileges);
   out << ")";
-  return out;
 }
 
 
@@ -1481,11 +1449,9 @@ void GrantRevokePrivilegeRequest::__set_revokeGrantOption(const bool val) {
 __isset.revokeGrantOption = true;
 }
 
-const char* GrantRevokePrivilegeRequest::ascii_fingerprint = "DF474A3CB526AD40DC0F2C3702F7AA2C";
-const uint8_t GrantRevokePrivilegeRequest::binary_fingerprint[16] = {0xDF,0x47,0x4A,0x3C,0xB5,0x26,0xAD,0x40,0xDC,0x0F,0x2C,0x37,0x02,0xF7,0xAA,0x2C};
-
 uint32_t GrantRevokePrivilegeRequest::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1544,7 +1510,7 @@ uint32_t GrantRevokePrivilegeRequest::read(::apache::thrift::protocol::TProtocol
 
 uint32_t GrantRevokePrivilegeRequest::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("GrantRevokePrivilegeRequest");
 
   xfer += oprot->writeFieldBegin("requestType", ::apache::thrift::protocol::T_I32, 1);
@@ -1562,7 +1528,6 @@ uint32_t GrantRevokePrivilegeRequest::write(::apache::thrift::protocol::TProtoco
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1587,14 +1552,13 @@ GrantRevokePrivilegeRequest& GrantRevokePrivilegeRequest::operator=(const GrantR
   __isset = other81.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const GrantRevokePrivilegeRequest& obj) {
-  using apache::thrift::to_string;
+void GrantRevokePrivilegeRequest::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "GrantRevokePrivilegeRequest(";
-  out << "requestType=" << to_string(obj.requestType);
-  out << ", " << "privileges=" << to_string(obj.privileges);
-  out << ", " << "revokeGrantOption="; (obj.__isset.revokeGrantOption ? (out << to_string(obj.revokeGrantOption)) : (out << "<null>"));
+  out << "requestType=" << to_string(requestType);
+  out << ", " << "privileges=" << to_string(privileges);
+  out << ", " << "revokeGrantOption="; (__isset.revokeGrantOption ? (out << to_string(revokeGrantOption)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -1607,11 +1571,9 @@ void GrantRevokePrivilegeResponse::__set_success(const bool val) {
 __isset.success = true;
 }
 
-const char* GrantRevokePrivilegeResponse::ascii_fingerprint = "BF054652DEF86253C2BEE7D947F167DD";
-const uint8_t GrantRevokePrivilegeResponse::binary_fingerprint[16] = {0xBF,0x05,0x46,0x52,0xDE,0xF8,0x62,0x53,0xC2,0xBE,0xE7,0xD9,0x47,0xF1,0x67,0xDD};
-
 uint32_t GrantRevokePrivilegeResponse::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1652,7 +1614,7 @@ uint32_t GrantRevokePrivilegeResponse::read(::apache::thrift::protocol::TProtoco
 
 uint32_t GrantRevokePrivilegeResponse::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("GrantRevokePrivilegeResponse");
 
   if (this->__isset.success) {
@@ -1662,7 +1624,6 @@ uint32_t GrantRevokePrivilegeResponse::write(::apache::thrift::protocol::TProtoc
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1681,12 +1642,11 @@ GrantRevokePrivilegeResponse& GrantRevokePrivilegeResponse::operator=(const Gran
   __isset = other83.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const GrantRevokePrivilegeResponse& obj) {
-  using apache::thrift::to_string;
+void GrantRevokePrivilegeResponse::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "GrantRevokePrivilegeResponse(";
-  out << "success="; (obj.__isset.success ? (out << to_string(obj.success)) : (out << "<null>"));
+  out << "success="; (__isset.success ? (out << to_string(success)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -1706,11 +1666,9 @@ void Role::__set_ownerName(const std::string& val) {
   this->ownerName = val;
 }
 
-const char* Role::ascii_fingerprint = "70563A0628F75DF9555F4D24690B1E26";
-const uint8_t Role::binary_fingerprint[16] = {0x70,0x56,0x3A,0x06,0x28,0xF7,0x5D,0xF9,0x55,0x5F,0x4D,0x24,0x69,0x0B,0x1E,0x26};
-
 uint32_t Role::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1767,7 +1725,7 @@ uint32_t Role::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Role::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Role");
 
   xfer += oprot->writeFieldBegin("roleName", ::apache::thrift::protocol::T_STRING, 1);
@@ -1784,7 +1742,6 @@ uint32_t Role::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1809,14 +1766,13 @@ Role& Role::operator=(const Role& other85) {
   __isset = other85.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Role& obj) {
-  using apache::thrift::to_string;
+void Role::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Role(";
-  out << "roleName=" << to_string(obj.roleName);
-  out << ", " << "createTime=" << to_string(obj.createTime);
-  out << ", " << "ownerName=" << to_string(obj.ownerName);
+  out << "roleName=" << to_string(roleName);
+  out << ", " << "createTime=" << to_string(createTime);
+  out << ", " << "ownerName=" << to_string(ownerName);
   out << ")";
-  return out;
 }
 
 
@@ -1852,11 +1808,9 @@ void RolePrincipalGrant::__set_grantorPrincipalType(const PrincipalType::type va
   this->grantorPrincipalType = val;
 }
 
-const char* RolePrincipalGrant::ascii_fingerprint = "899BA3F6214DD1B79D27206BA857C772";
-const uint8_t RolePrincipalGrant::binary_fingerprint[16] = {0x89,0x9B,0xA3,0xF6,0x21,0x4D,0xD1,0xB7,0x9D,0x27,0x20,0x6B,0xA8,0x57,0xC7,0x72};
-
 uint32_t RolePrincipalGrant::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -1949,7 +1903,7 @@ uint32_t RolePrincipalGrant::read(::apache::thrift::protocol::TProtocol* iprot)
 
 uint32_t RolePrincipalGrant::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("RolePrincipalGrant");
 
   xfer += oprot->writeFieldBegin("roleName", ::apache::thrift::protocol::T_STRING, 1);
@@ -1982,7 +1936,6 @@ uint32_t RolePrincipalGrant::write(::apache::thrift::protocol::TProtocol* oprot)
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2019,18 +1972,17 @@ RolePrincipalGrant& RolePrincipalGrant::operator=(const RolePrincipalGrant& othe
   __isset = other89.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const RolePrincipalGrant& obj) {
-  using apache::thrift::to_string;
+void RolePrincipalGrant::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "RolePrincipalGrant(";
-  out << "roleName=" << to_string(obj.roleName);
-  out << ", " << "principalName=" << to_string(obj.principalName);
-  out << ", " << "principalType=" << to_string(obj.principalType);
-  out << ", " << "grantOption=" << to_string(obj.grantOption);
-  out << ", " << "grantTime=" << to_string(obj.grantTime);
-  out << ", " << "grantorName=" << to_string(obj.grantorName);
-  out << ", " << "grantorPrincipalType=" << to_string(obj.grantorPrincipalType);
+  out << "roleName=" << to_string(roleName);
+  out << ", " << "principalName=" << to_string(principalName);
+  out << ", " << "principalType=" << to_string(principalType);
+  out << ", " << "grantOption=" << to_string(grantOption);
+  out << ", " << "grantTime=" << to_string(grantTime);
+  out << ", " << "grantorName=" << to_string(grantorName);
+  out << ", " << "grantorPrincipalType=" << to_string(grantorPrincipalType);
   out << ")";
-  return out;
 }
 
 
@@ -2046,11 +1998,9 @@ void GetRoleGrantsForPrincipalRequest::__set_principal_type(const PrincipalType:
   this->principal_type = val;
 }
 
-const char* GetRoleGrantsForPrincipalRequest::ascii_fingerprint = "D6FD826D949221396F4FFC3ECCD3D192";
-const uint8_t GetRoleGrantsForPrincipalRequest::binary_fingerprint[16] = {0xD6,0xFD,0x82,0x6D,0x94,0x92,0x21,0x39,0x6F,0x4F,0xFC,0x3E,0xCC,0xD3,0xD1,0x92};
-
 uint32_t GetRoleGrantsForPrincipalRequest::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -2107,7 +2057,7 @@ uint32_t GetRoleGrantsForPrincipalRequest::read(::apache::thrift::protocol::TPro
 
 uint32_t GetRoleGrantsForPrincipalRequest::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("GetRoleGrantsForPrincipalRequest");
 
   xfer += oprot->writeFieldBegin("principal_name", ::apache::thrift::protocol::T_STRING, 1);
@@ -2120,7 +2070,6 @@ uint32_t GetRoleGrantsForPrincipalRequest::write(::apache::thrift::protocol::TPr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2139,13 +2088,12 @@ GetRoleGrantsForPrincipalRequest& GetRoleGrantsForPrincipalRequest::operator=(co
   principal_type = other92.principal_type;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const GetRoleGrantsForPrincipalRequest& obj) {
-  using apache::thrift::to_string;
+void GetRoleGrantsForPrincipalRequest::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "GetRoleGrantsForPrincipalRequest(";
-  out << "principal_name=" << to_string(obj.principal_name);
-  out << ", " << "principal_type=" << to_string(obj.principal_type);
+  out << "principal_name=" << to_string(principal_name);
+  out << ", " << "principal_type=" << to_string(principal_type);
   out << ")";
-  return out;
 }
 
 
@@ -2157,11 +2105,9 @@ void GetRoleGrantsForPrincipalResponse::__set_principalGrants(const std::vector<
   this->principalGrants = val;
 }
 
-const char* GetRoleGrantsForPrincipalResponse::ascii_fingerprint = "5926B4B3541A62E17663820C7E3BE690";
-const uint8_t GetRoleGrantsForPrincipalResponse::binary_fingerprint[16] = {0x59,0x26,0xB4,0xB3,0x54,0x1A,0x62,0xE1,0x76,0x63,0x82,0x0C,0x7E,0x3B,0xE6,0x90};
-
 uint32_t GetRoleGrantsForPrincipalResponse::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -2217,7 +2163,7 @@ uint32_t GetRoleGrantsForPrincipalResponse::read(::apache::thrift::protocol::TPr
 
 uint32_t GetRoleGrantsForPrincipalResponse::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("GetRoleGrantsForPrincipalResponse");
 
   xfer += oprot->writeFieldBegin("principalGrants", ::apache::thrift::protocol::T_LIST, 1);
@@ -2234,7 +2180,6 @@ uint32_t GetRoleGrantsForPrincipalResponse::write(::apache::thrift::protocol::TP
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2250,12 +2195,11 @@ GetRoleGrantsForPrincipalResponse& GetRoleGrantsForPrincipalResponse::operator=(
   principalGrants = other100.principalGrants;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const GetRoleGrantsForPrincipalResponse& obj) {
-  using apache::thrift::to_string;
+void GetRoleGrantsForPrincipalResponse::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "GetRoleGrantsForPrincipalResponse(";
-  out << "principalGrants=" << to_string(obj.principalGrants);
+  out << "principalGrants=" << to_string(principalGrants);
   out << ")";
-  return out;
 }
 
 
@@ -2267,11 +2211,9 @@ void GetPrincipalsInRoleRequest::__set_roleName(const std::string& val) {
   this->roleName = val;
 }
 
-const char* GetPrincipalsInRoleRequest::ascii_fingerprint = "EFB929595D312AC8F305D5A794CFEDA1";
-const uint8_t GetPrincipalsInRoleRequest::binary_fingerprint[16] = {0xEF,0xB9,0x29,0x59,0x5D,0x31,0x2A,0xC8,0xF3,0x05,0xD5,0xA7,0x94,0xCF,0xED,0xA1};
-
 uint32_t GetPrincipalsInRoleRequest::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -2315,7 +2257,7 @@ uint32_t GetPrincipalsInRoleRequest::read(::apache::thrift::protocol::TProtocol*
 
 uint32_t GetPrincipalsInRoleRequest::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("GetPrincipalsInRoleRequest");
 
   xfer += oprot->writeFieldBegin("roleName", ::apache::thrift::protocol::T_STRING, 1);
@@ -2324,7 +2266,6 @@ uint32_t GetPrincipalsInRoleRequest::write(::apache::thrift::protocol::TProtocol
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2340,12 +2281,11 @@ GetPrincipalsInRoleRequest& GetPrincipalsInRoleRequest::operator=(const GetPrinc
   roleName = other102.roleName;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const GetPrincipalsInRoleRequest& obj) {
-  using apache::thrift::to_string;
+void GetPrincipalsInRoleRequest::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "GetPrincipalsInRoleRequest(";
-  out << "roleName=" << to_string(obj.roleName);
+  out << "roleName=" << to_string(roleName);
   out << ")";
-  return out;
 }
 
 
@@ -2357,11 +2297,9 @@ void GetPrincipalsInRoleResponse::__set_principalGrants(const std::vector<RolePr
   this->principalGrants = val;
 }
 
-const char* GetPrincipalsInRoleResponse::ascii_fingerprint = "5926B4B3541A62E17663820C7E3BE690";
-const uint8_t GetPrincipalsInRoleResponse::binary_fingerprint[16] = {0x59,0x26,0xB4,0xB3,0x54,0x1A,0x62,0xE1,0x76,0x63,0x82,0x0C,0x7E,0x3B,0xE6,0x90};
-
 uint32_t GetPrincipalsInRoleResponse::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -2417,7 +2355,7 @@ uint32_t GetPrincipalsInRoleResponse::read(::apache::thrift::protocol::TProtocol
 
 uint32_t GetPrincipalsInRoleResponse::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("GetPrincipalsInRoleResponse");
 
   xfer += oprot->writeFieldBegin("principalGrants", ::apache::thrift::protocol::T_LIST, 1);
@@ -2434,7 +2372,6 @@ uint32_t GetPrincipalsInRoleResponse::write(::apache::thrift::protocol::TProtoco
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2450,12 +2387,11 @@ GetPrincipalsInRoleResponse& GetPrincipalsInRoleResponse::operator=(const GetPri
   principalGrants = other110.principalGrants;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const GetPrincipalsInRoleResponse& obj) {
-  using apache::thrift::to_string;
+void GetPrincipalsInRoleResponse::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "GetPrincipalsInRoleResponse(";
-  out << "principalGrants=" << to_string(obj.principalGrants);
+  out << "principalGrants=" << to_string(principalGrants);
   out << ")";
-  return out;
 }
 
 
@@ -2494,11 +2430,9 @@ void GrantRevokeRoleRequest::__set_grantOption(const bool val) {
 __isset.grantOption = true;
 }
 
-const char* GrantRevokeRoleRequest::ascii_fingerprint = "907DEA796F2BA7AF76DC2566E75FAEE7";
-const uint8_t GrantRevokeRoleRequest::binary_fingerprint[16] = {0x90,0x7D,0xEA,0x79,0x6F,0x2B,0xA7,0xAF,0x76,0xDC,0x25,0x66,0xE7,0x5F,0xAE,0xE7};
-
 uint32_t GrantRevokeRoleRequest::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -2593,7 +2527,7 @@ uint32_t GrantRevokeRoleRequest::read(::apache::thrift::protocol::TProtocol* ipr
 
 uint32_t GrantRevokeRoleRequest::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("GrantRevokeRoleRequest");
 
   xfer += oprot->writeFieldBegin("requestType", ::apache::thrift::protocol::T_I32, 1);
@@ -2629,7 +2563,6 @@ uint32_t GrantRevokeRoleRequest::write(::apache::thrift::protocol::TProtocol* op
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2666,18 +2599,17 @@ GrantRevokeRoleRequest& GrantRevokeRoleRequest::operator=(const GrantRevokeRoleR
   __isset = other115.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const GrantRevokeRoleRequest& obj) {
-  using apache::thrift::to_string;
+void GrantRevokeRoleRequest::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "GrantRevokeRoleRequest(";
-  out << "requestType=" << to_string(obj.requestType);
-  out << ", " << "roleName=" << to_string(obj.roleName);
-  out << ", " << "principalName=" << to_string(obj.principalName);
-  out << ", " << "principalType=" << to_string(obj.principalType);
-  out << ", " << "grantor="; (obj.__isset.grantor ? (out << to_string(obj.grantor)) : (out << "<null>"));
-  out << ", " << "grantorType="; (obj.__isset.grantorType ? (out << to_string(obj.grantorType)) : (out << "<null>"));
-  out << ", " << "grantOption="; (obj.__isset.grantOption ? (out << to_string(obj.grantOption)) : (out << "<null>"));
+  out << "requestType=" << to_string(requestType);
+  out << ", " << "roleName=" << to_string(roleName);
+  out << ", " << "principalName=" << to_string(principalName);
+  out << ", " << "principalType=" << to_string(principalType);
+  out << ", " << "grantor="; (__isset.grantor ? (out << to_string(grantor)) : (out << "<null>"));
+  out << ", " << "grantorType="; (__isset.grantorType ? (out << to_string(grantorType)) : (out << "<null>"));
+  out << ", " << "grantOption="; (__isset.grantOption ? (out << to_string(grantOption)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -2690,11 +2622,9 @@ void GrantRevokeRoleResponse::__set_success(const bool val) {
 __isset.success = true;
 }
 
-const char* GrantRevokeRoleResponse::ascii_fingerprint = "BF054652DEF86253C2BEE7D947F167DD";
-const uint8_t GrantRevokeRoleResponse::binary_fingerprint[16] = {0xBF,0x05,0x46,0x52,0xDE,0xF8,0x62,0x53,0xC2,0xBE,0xE7,0xD9,0x47,0xF1,0x67,0xDD};
-
 uint32_t GrantRevokeRoleResponse::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -2735,7 +2665,7 @@ uint32_t GrantRevokeRoleResponse::read(::apache::thrift::protocol::TProtocol* ip
 
 uint32_t GrantRevokeRoleResponse::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("GrantRevokeRoleResponse");
 
   if (this->__isset.success) {
@@ -2745,7 +2675,6 @@ uint32_t GrantRevokeRoleResponse::write(::apache::thrift::protocol::TProtocol* o
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2764,12 +2693,11 @@ GrantRevokeRoleResponse& GrantRevokeRoleResponse::operator=(const GrantRevokeRol
   __isset = other117.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const GrantRevokeRoleResponse& obj) {
-  using apache::thrift::to_string;
+void GrantRevokeRoleResponse::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "GrantRevokeRoleResponse(";
-  out << "success="; (obj.__isset.success ? (out << to_string(obj.success)) : (out << "<null>"));
+  out << "success="; (__isset.success ? (out << to_string(success)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -2808,11 +2736,9 @@ void Database::__set_ownerType(const PrincipalType::type val) {
 __isset.ownerType = true;
 }
 
-const char* Database::ascii_fingerprint = "553495CAE243A1C583D5C3DD990AED53";
-const uint8_t Database::binary_fingerprint[16] = {0x55,0x34,0x95,0xCA,0xE2,0x43,0xA1,0xC5,0x83,0xD5,0xC3,0xDD,0x99,0x0A,0xED,0x53};
-
 uint32_t Database::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -2918,7 +2844,7 @@ uint32_t Database::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Database::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Database");
 
   xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 1);
@@ -2963,7 +2889,6 @@ uint32_t Database::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -3000,18 +2925,17 @@ Database& Database::operator=(const Database& other128) {
   __isset = other128.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Database& obj) {
-  using apache::thrift::to_string;
+void Database::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Database(";
-  out << "name=" << to_string(obj.name);
-  out << ", " << "description=" << to_string(obj.description);
-  out << ", " << "locationUri=" << to_string(obj.locationUri);
-  out << ", " << "parameters=" << to_string(obj.parameters);
-  out << ", " << "privileges="; (obj.__isset.privileges ? (out << to_string(obj.privileges)) : (out << "<null>"));
-  out << ", " << "ownerName="; (obj.__isset.ownerName ? (out << to_string(obj.ownerName)) : (out << "<null>"));
-  out << ", " << "ownerType="; (obj.__isset.ownerType ? (out << to_string(obj.ownerType)) : (out << "<null>"));
+  out << "name=" << to_string(name);
+  out << ", " << "description=" << to_string(description);
+  out << ", " << "locationUri=" << to_string(locationUri);
+  out << ", " << "parameters=" << to_string(parameters);
+  out << ", " << "privileges="; (__isset.privileges ? (out << to_string(privileges)) : (out << "<null>"));
+  out << ", " << "ownerName="; (__isset.ownerName ? (out << to_string(ownerName)) : (out << "<null>"));
+  out << ", " << "ownerType="; (__isset.ownerType ? (out << to_string(ownerType)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -3031,11 +2955,9 @@ void SerDeInfo::__set_parameters(const std::map<std::string, std::string> & val)
   this->parameters = val;
 }
 
-const char* SerDeInfo::ascii_fingerprint = "B1021C32A35A2AEFCD2F57A5424159A7";
-const uint8_t SerDeInfo::binary_fingerprint[16] = {0xB1,0x02,0x1C,0x32,0xA3,0x5A,0x2A,0xEF,0xCD,0x2F,0x57,0xA5,0x42,0x41,0x59,0xA7};
-
 uint32_t SerDeInfo::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -3107,7 +3029,7 @@ uint32_t SerDeInfo::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t SerDeInfo::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("SerDeInfo");
 
   xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 1);
@@ -3133,7 +3055,6 @@ uint32_t SerDeInfo::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -3158,14 +3079,13 @@ SerDeInfo& SerDeInfo::operator=(const SerDeInfo& other138) {
   __isset = other138.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const SerDeInfo& obj) {
-  using apache::thrift::to_string;
+void SerDeInfo::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "SerDeInfo(";
-  out << "name=" << to_string(obj.name);
-  out << ", " << "serializationLib=" << to_string(obj.serializationLib);
-  out << ", " << "parameters=" << to_string(obj.parameters);
+  out << "name=" << to_string(name);
+  out << ", " << "serializationLib=" << to_string(serializationLib);
+  out << ", " << "parameters=" << to_string(parameters);
   out << ")";
-  return out;
 }
 
 
@@ -3181,11 +3101,9 @@ void Order::__set_order(const int32_t val) {
   this->order = val;
 }
 
-const char* Order::ascii_fingerprint = "EEBC915CE44901401D881E6091423036";
-const uint8_t Order::binary_fingerprint[16] = {0xEE,0xBC,0x91,0x5C,0xE4,0x49,0x01,0x40,0x1D,0x88,0x1E,0x60,0x91,0x42,0x30,0x36};
-
 uint32_t Order::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -3234,7 +3152,7 @@ uint32_t Order::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Order::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Order");
 
   xfer += oprot->writeFieldBegin("col", ::apache::thrift::protocol::T_STRING, 1);
@@ -3247,7 +3165,6 @@ uint32_t Order::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -3269,13 +3186,12 @@ Order& Order::operator=(const Order& other140) {
   __isset = other140.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Order& obj) {
-  using apache::thrift::to_string;
+void Order::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Order(";
-  out << "col=" << to_string(obj.col);
-  out << ", " << "order=" << to_string(obj.order);
+  out << "col=" << to_string(col);
+  out << ", " << "order=" << to_string(order);
   out << ")";
-  return out;
 }
 
 
@@ -3295,11 +3211,9 @@ void SkewedInfo::__set_skewedColValueLocationMaps(const std::map<std::vector<std
   this->skewedColValueLocationMaps = val;
 }
 
-const char* SkewedInfo::ascii_fingerprint = "4BF2ED84BC3C3EB297A2AE2FA8427EB1";
-const uint8_t SkewedInfo::binary_fingerprint[16] = {0x4B,0xF2,0xED,0x84,0xBC,0x3C,0x3E,0xB2,0x97,0xA2,0xAE,0x2F,0xA8,0x42,0x7E,0xB1};
-
 uint32_t SkewedInfo::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -3419,7 +3333,7 @@ uint32_t SkewedInfo::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t SkewedInfo::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("SkewedInfo");
 
   xfer += oprot->writeFieldBegin("skewedColNames", ::apache::thrift::protocol::T_LIST, 1);
@@ -3477,7 +3391,6 @@ uint32_t SkewedInfo::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -3502,14 +3415,13 @@ SkewedInfo& SkewedInfo::operator=(const SkewedInfo& other174) {
   __isset = other174.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const SkewedInfo& obj) {
-  using apache::thrift::to_string;
+void SkewedInfo::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "SkewedInfo(";
-  out << "skewedColNames=" << to_string(obj.skewedColNames);
-  out << ", " << "skewedColValues=" << to_string(obj.skewedColValues);
-  out << ", " << "skewedColValueLocationMaps=" << to_string(obj.skewedColValueLocationMaps);
+  out << "skewedColNames=" << to_string(skewedColNames);
+  out << ", " << "skewedColValues=" << to_string(skewedColValues);
+  out << ", " << "skewedColValueLocationMaps=" << to_string(skewedColValueLocationMaps);
   out << ")";
-  return out;
 }
 
 
@@ -3567,11 +3479,9 @@ void StorageDescriptor::__set_storedAsSubDirectories(const bool val) {
 __isset.storedAsSubDirectories = true;
 }
 
-const char* StorageDescriptor::ascii_fingerprint = "CA8C9AA5FE4C32643757D8639CEF0CD7";
-const uint8_t StorageDescriptor::binary_fingerprint[16] = {0xCA,0x8C,0x9A,0xA5,0xFE,0x4C,0x32,0x64,0x37,0x57,0xD8,0x63,0x9C,0xEF,0x0C,0xD7};
-
 uint32_t StorageDescriptor::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -3751,7 +3661,7 @@ uint32_t StorageDescriptor::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t StorageDescriptor::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("StorageDescriptor");
 
   xfer += oprot->writeFieldBegin("cols", ::apache::thrift::protocol::T_LIST, 1);
@@ -3839,7 +3749,6 @@ uint32_t StorageDescriptor::write(::apache::thrift::protocol::TProtocol* oprot)
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -3891,23 +3800,22 @@ StorageDescriptor& StorageDescriptor::operator=(const StorageDescriptor& other20
   __isset = other202.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const StorageDescriptor& obj) {
-  using apache::thrift::to_string;
+void StorageDescriptor::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "StorageDescriptor(";
-  out << "cols=" << to_string(obj.cols);
-  out << ", " << "location=" << to_string(obj.location);
-  out << ", " << "inputFormat=" << to_string(obj.inputFormat);
-  out << ", " << "outputFormat=" << to_string(obj.outputFormat);
-  out << ", " << "compressed=" << to_string(obj.compressed);
-  out << ", " << "numBuckets=" << to_string(obj.numBuckets);
-  out << ", " << "serdeInfo=" << to_string(obj.serdeInfo);
-  out << ", " << "bucketCols=" << to_string(obj.bucketCols);
-  out << ", " << "sortCols=" << to_string(obj.sortCols);
-  out << ", " << "parameters=" << to_string(obj.parameters);
-  out << ", " << "skewedInfo="; (obj.__isset.skewedInfo ? (out << to_string(obj.skewedInfo)) : (out << "<null>"));
-  out << ", " << "storedAsSubDirectories="; (obj.__isset.storedAsSubDirectories ? (out << to_string(obj.storedAsSubDirectories)) : (out << "<null>"));
+  out << "cols=" << to_string(cols);
+  out << ", " << "location=" << to_string(location);
+  out << ", " << "inputFormat=" << to_string(inputFormat);
+  out << ", " << "outputFormat=" << to_string(outputFormat);
+  out << ", " << "compressed=" << to_string(compressed);
+  out << ", " << "numBuckets=" << to_string(numBuckets);
+  out << ", " << "serdeInfo=" << to_string(serdeInfo);
+  out << ", " << "bucketCols=" << to_string(bucketCols);
+  out << ", " << "sortCols=" << to_string(sortCols);
+  out << ", " << "parameters=" << to_string(parameters);
+  out << ", " << "skewedInfo="; (__isset.skewedInfo ? (out << to_string(skewedInfo)) : (out << "<null>"));
+  out << ", " << "storedAsSubDirectories="; (__isset.storedAsSubDirectories ? (out << to_string(storedAsSubDirectories)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -3973,11 +3881,9 @@ void Table::__set_temporary(const bool val) {
 __isset.temporary = true;
 }
 
-const char* Table::ascii_fingerprint = "29EFB2A5970EF572039E5D94CC78AA85";
-const uint8_t Table::binary_fingerprint[16] = {0x29,0xEF,0xB2,0xA5,0x97,0x0E,0xF5,0x72,0x03,0x9E,0x5D,0x94,0xCC,0x78,0xAA,0x85};
-
 uint32_t Table::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -4149,7 +4055,7 @@ uint32_t Table::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Table::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Table");
 
   xfer += oprot->writeFieldBegin("tableName", ::apache::thrift::protocol::T_STRING, 1);
@@ -4229,7 +4135,6 @@ uint32_t Table::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -4287,25 +4192,24 @@ Table& Table::operator=(const Table& other218) {
   __isset = other218.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Table& obj) {
-  using apache::thrift::to_string;
+void Table::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Table(";
-  out << "tableName=" << to_string(obj.tableName);
-  out << ", " << "dbName=" << to_string(obj.dbName);
-  out << ", " << "owner=" << to_string(obj.owner);
-  out << ", " << "createTime=" << to_string(obj.createTime);
-  out << ", " << "lastAccessTime=" << to_string(obj.lastAccessTime);
-  out << ", " << "retention=" << to_string(obj.retention);
-  out << ", " << "sd=" << to_string(obj.sd);
-  out << ", " << "partitionKeys=" << to_string(obj.partitionKeys);
-  out << ", " << "parameters=" << to_string(obj.parameters);
-  out << ", " << "viewOriginalText=" << to_string(obj.viewOriginalText);
-  out << ", " << "viewExpandedText=" << to_string(obj.viewExpandedText);
-  out << ", " << "tableType=" << to_string(obj.tableType);
-  out << ", " << "privileges="; (obj.__isset.privileges ? (out << to_string(obj.privileges)) : (out << "<null>"));
-  out << ", " << "temporary="; (obj.__isset.temporary ? (out << to_string(obj.temporary)) : (out << "<null>"));
+  out << "tableName=" << to_string(tableName);
+  out << ", " << "dbName=" << to_string(dbName);
+  out << ", " << "owner=" << to_string(owner);
+  out << ", " << "createTime=" << to_string(createTime);
+  out << ", " << "lastAccessTime=" << to_string(lastAccessTime);
+  out << ", " << "retention=" << to_string(retention);
+  out << ", " << "sd=" << to_string(sd);
+  out << ", " << "partitionKeys=" << to_string(partitionKeys);
+  out << ", " << "parameters=" << to_string(parameters);
+  out << ", " << "viewOriginalText=" << to_string(viewOriginalText);
+  out << ", " << "viewExpandedText=" << to_string(viewExpandedText);
+  out << ", " << "tableType=" << to_string(tableType);
+  out << ", " << "privileges="; (__isset.privileges ? (out << to_string(privileges)) : (out << "<null>"));
+  out << ", " << "temporary="; (__isset.temporary ? (out << to_string(temporary)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -4346,11 +4250,9 @@ void Partition::__set_privileges(const PrincipalPrivilegeSet& val) {
 __isset.privileges = true;
 }
 
-const char* Partition::ascii_fingerprint = "31A52241B88A426C34087FE38343FF51";
-const uint8_t Partition::binary_fingerprint[16] = {0x31,0xA5,0x22,0x41,0xB8,0x8A,0x42,0x6C,0x34,0x08,0x7F,0xE3,0x83,0x43,0xFF,0x51};
-
 uint32_t Partition::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -4474,7 +4376,7 @@ uint32_t Partition::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Partition::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Partition");
 
   xfer += oprot->writeFieldBegin("values", ::apache::thrift::protocol::T_LIST, 1);
@@ -4529,7 +4431,6 @@ uint32_t Partition::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -4569,19 +4470,18 @@ Partition& Partition::operator=(const Partition& other234) {
   __isset = other234.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Partition& obj) {
-  using apache::thrift::to_string;
+void Partition::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Partition(";
-  out << "values=" << to_string(obj.values);
-  out << ", " << "dbName=" << to_string(obj.dbName);
-  out << ", " << "tableName=" << to_string(obj.tableName);
-  out << ", " << "createTime=" << to_string(obj.createTime);
-  out << ", " << "lastAccessTime=" << to_string(obj.lastAccessTime);
-  out << ", " << "sd=" << to_string(obj.sd);
-  out << ", " << "parameters=" << to_string(obj.parameters);
-  out << ", " << "privileges="; (obj.__isset.privileges ? (out << to_string(obj.privileges)) : (out << "<null>"));
+  out << "values=" << to_string(values);
+  out << ", " << "dbName=" << to_string(dbName);
+  out << ", " << "tableName=" << to_string(tableName);
+  out << ", " << "createTime=" << to_string(createTime);
+  out << ", " << "lastAccessTime=" << to_string(lastAccessTime);
+  out << ", " << "sd=" << to_string(sd);
+  out << ", " << "parameters=" << to_string(parameters);
+  out << ", " << "privileges="; (__isset.privileges ? (out << to_string(privileges)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -4614,11 +4514,9 @@ void PartitionWithoutSD::__set_privileges(const PrincipalPrivilegeSet& val) {
 __isset.privileges = true;
 }
 
-const char* PartitionWithoutSD::ascii_fingerprint = "D79FA44499888D0E50B5625E0C536DEA";
-const uint8_t PartitionWithoutSD::binary_fingerprint[16] = {0xD7,0x9F,0xA4,0x44,0x99,0x88,0x8D,0x0E,0x50,0xB5,0x62,0x5E,0x0C,0x53,0x6D,0xEA};
-
 uint32_t PartitionWithoutSD::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -4726,7 +4624,7 @@ uint32_t PartitionWithoutSD::read(::apache::thrift::protocol::TProtocol* iprot)
 
 uint32_t PartitionWithoutSD::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("PartitionWithoutSD");
 
   xfer += oprot->writeFieldBegin("values", ::apache::thrift::protocol::T_LIST, 1);
@@ -4773,7 +4671,6 @@ uint32_t PartitionWithoutSD::write(::apache::thrift::protocol::TProtocol* oprot)
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -4807,17 +4704,16 @@ PartitionWithoutSD& PartitionWithoutSD::operator=(const PartitionWithoutSD& othe
   __isset = other250.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const PartitionWithoutSD& obj) {
-  using apache::thrift::to_string;
+void PartitionWithoutSD::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "PartitionWithoutSD(";
-  out << "values=" << to_string(obj.values);
-  out << ", " << "createTime=" << to_string(obj.createTime);
-  out << ", " << "lastAccessTime=" << to_string(obj.lastAccessTime);
-  out << ", " << "relativePath=" << to_string(obj.relativePath);
-  out << ", " << "parameters=" << to_string(obj.parameters);
-  out << ", " << "privileges="; (obj.__isset.privileges ? (out << to_string(obj.privileges)) : (out << "<null>"));
+  out << "values=" << to_string(values);
+  out << ", " << "createTime=" << to_string(createTime);
+  out << ", " << "lastAccessTime=" << to_string(lastAccessTime);
+  out << ", " << "relativePath=" << to_string(relativePath);
+  out << ", " << "parameters=" << to_string(parameters);
+  out << ", " << "privileges="; (__isset.privileges ? (out << to_string(privileges)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -4833,11 +4729,9 @@ void PartitionSpecWithSharedSD::__set_sd(const StorageDescriptor& val) {
   this->sd = val;
 }
 
-const char* PartitionSpecWithSharedSD::ascii_fingerprint = "7BEE9305B42DCD083FF06BEE6DDC61CF";
-const uint8_t PartitionSpecWithSharedSD::binary_fingerprint[16] = {0x7B,0xEE,0x93,0x05,0xB4,0x2D,0xCD,0x08,0x3F,0xF0,0x6B,0xEE,0x6D,0xDC,0x61,0xCF};
-
 uint32_t PartitionSpecWithSharedSD::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -4898,7 +4792,7 @@ uint32_t PartitionSpecWithSharedSD::read(::apache::thrift::protocol::TProtocol*
 
 uint32_t PartitionSpecWithSharedSD::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("PartitionSpecWithSharedSD");
 
   xfer += oprot->writeFieldBegin("partitions", ::apache::thrift::protocol::T_LIST, 1);
@@ -4919,7 +4813,6 @@ uint32_t PartitionSpecWithSharedSD::write(::apache::thrift::protocol::TProtocol*
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -4941,13 +4834,12 @@ PartitionSpecWithSharedSD& PartitionSpecWithSharedSD::operator=(const PartitionS
   __isset = other258.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const PartitionSpecWithSharedSD& obj) {
-  using apache::thrift::to_string;
+void PartitionSpecWithSharedSD::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "PartitionSpecWithSharedSD(";
-  out << "partitions=" << to_string(obj.partitions);
-  out << ", " << "sd=" << to_string(obj.sd);
+  out << "partitions=" << to_string(partitions);
+  out << ", " << "sd=" << to_string(sd);
   out << ")";
-  return out;
 }
 
 
@@ -4959,11 +4851,9 @@ void PartitionListComposingSpec::__set_partitions(const std::vector<Partition> &
   this->partitions = val;
 }
 
-const char* PartitionListComposingSpec::ascii_fingerprint = "A048235CB9A257C8A74E3691BEFE0674";
-const uint8_t PartitionListComposingSpec::binary_fingerprint[16] = {0xA0,0x48,0x23,0x5C,0xB9,0xA2,0x57,0xC8,0xA7,0x4E,0x36,0x91,0xBE,0xFE,0x06,0x74};
-
 uint32_t PartitionListComposingSpec::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -5016,7 +4906,7 @@ uint32_t PartitionListComposingSpec::read(::apache::thrift::protocol::TProtocol*
 
 uint32_t PartitionListComposingSpec::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("PartitionListComposingSpec");
 
   xfer += oprot->writeFieldBegin("partitions", ::apache::thrift::protocol::T_LIST, 1);
@@ -5033,7 +4923,6 @@ uint32_t PartitionListComposingSpec::write(::apache::thrift::protocol::TProtocol
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5052,12 +4941,11 @@ PartitionListComposingSpec& PartitionListComposingSpec::operator=(const Partitio
   __isset = other266.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const PartitionListComposingSpec& obj) {
-  using apache::thrift::to_string;
+void PartitionListComposingSpec::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "PartitionListComposingSpec(";
-  out << "partitions=" << to_string(obj.partitions);
+  out << "partitions=" << to_string(partitions);
   out << ")";
-  return out;
 }
 
 
@@ -5087,11 +4975,9 @@ void PartitionSpec::__set_partitionList(const PartitionListComposingSpec& val) {
 __isset.partitionList = true;
 }
 
-const char* PartitionSpec::ascii_fingerprint = "C3F548C24D072CF6422F25096143E3E8";
-const uint8_t PartitionSpec::binary_fingerprint[16] = {0xC3,0xF5,0x48,0xC2,0x4D,0x07,0x2C,0xF6,0x42,0x2F,0x25,0x09,0x61,0x43,0xE3,0xE8};
-
 uint32_t PartitionSpec::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -5164,7 +5050,7 @@ uint32_t PartitionSpec::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t PartitionSpec::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("PartitionSpec");
 
   xfer += oprot->writeFieldBegin("dbName", ::apache::thrift::protocol::T_STRING, 1);
@@ -5191,7 +5077,6 @@ uint32_t PartitionSpec::write(::apache::thrift::protocol::TProtocol* oprot) cons
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5222,16 +5107,15 @@ PartitionSpec& PartitionSpec::operator=(const PartitionSpec& other268) {
   __isset = other268.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const PartitionSpec& obj) {
-  using apache::thrift::to_string;
+void PartitionSpec::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "PartitionSpec(";
-  out << "dbName=" << to_string(obj.dbName);
-  out << ", " << "tableName=" << to_string(obj.tableName);
-  out << ", " << "rootPath=" << to_string(obj.rootPath);
-  out << ", " << "sharedSDPartitionSpec="; (obj.__isset.sharedSDPartitionSpec ? (out << to_string(obj.sharedSDPartitionSpec)) : (out << "<null>"));
-  out << ", " << "partitionList="; (obj.__isset.partitionList ? (out << to_string(obj.partitionList)) : (out << "<null>"));
+  out << "dbName=" << to_string(dbName);
+  out << ", " << "tableName=" << to_string(tableName);
+  out << ", " << "rootPath=" << to_string(rootPath);
+  out << ", " << "sharedSDPartitionSpec="; (__isset.sharedSDPartitionSpec ? (out << to_string(sharedSDPartitionSpec)) : (out << "<null>"));
+  out << ", " << "partitionList="; (__isset.partitionList ? (out << to_string(partitionList)) : (out << "<null>"));
   out << ")";
-  return out;
 }
 
 
@@ -5279,11 +5163,9 @@ void Index::__set_deferredRebuild(const bool val) {
   this->deferredRebuild = val;
 }
 
-const char* Index::ascii_fingerprint = "09EEF655216AC81802850988D6C470A6";
-const uint8_t Index::binary_fingerprint[16] = {0x09,0xEE,0xF6,0x55,0x21,0x6A,0xC8,0x18,0x02,0x85,0x09,0x88,0xD6,0xC4,0x70,0xA6};
-
 uint32_t Index::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -5411,7 +5293,7 @@ uint32_t Index::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Index::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Index");
 
   xfer += oprot->writeFieldBegin("indexName", ::apache::thrift::protocol::T_STRING, 1);
@@ -5465,7 +5347,6 @@ uint32_t Index::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5511,21 +5392,20 @@ Index& Index::operator=(const Index& other278) {
   __isset = other278.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Index& obj) {
-  using apache::thrift::to_string;
+void Index::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Index(";
-  out << "indexName=" << to_string(obj.indexName);
-  out << ", " << "indexHandlerClass=" << to_string(obj.indexHandlerClass);
-  out << ", " << "dbName=" << to_string(obj.dbName);
-  out << ", " << "origTableName=" << to_string(obj.origTableName);
-  out << ", " << "createTime=" << to_string(obj.createTime);
-  out << ", " << "lastAccessTime=" << to_string(obj.lastAccessTime);
-  out << ", " << "indexTableName=" << to_string(obj.indexTableName);
-  out << ", " << "sd=" << to_string(obj.sd);
-  out << ", " << "parameters=" << to_string(obj.parameters);
-  out << ", " << "deferredRebuild=" << to_string(obj.deferredRebuild);
+  out << "indexName=" << to_string(indexName);
+  out << ", " << "indexHandlerClass=" << to_string(indexHandlerClass);
+  out << ", " << "dbName=" << to_string(dbName);
+  out << ", " << "origTableName=" << to_string(origTableName);
+  out << ", " << "createTime=" << to_string(createTime);
+  out << ", " << "lastAccessTime=" << to_string(lastAccessTime);
+  out << ", " << "indexTableName=" << to_string(indexTableName);
+  out << ", " << "sd=" << to_string(sd);
+  out << ", " << "parameters=" << to_string(parameters);
+  out << ", " << "deferredRebuild=" << to_string(deferredRebuild);
   out << ")";
-  return out;
 }
 
 
@@ -5545,11 +5425,9 @@ void BooleanColumnStatsData::__set_numNulls(const int64_t val) {
   this->numNulls = val;
 }
 
-const char* BooleanColumnStatsData::ascii_fingerprint = "EA2D65F1E0BB78760205682082304B41";
-const uint8_t BooleanColumnStatsData::binary_fingerprint[16] = {0xEA,0x2D,0x65,0xF1,0xE0,0xBB,0x78,0x76,0x02,0x05,0x68,0x20,0x82,0x30,0x4B,0x41};
-
 uint32_t BooleanColumnStatsData::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -5615,7 +5493,7 @@ uint32_t BooleanColumnStatsData::read(::apache::thrift::protocol::TProtocol* ipr
 
 uint32_t BooleanColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("BooleanColumnStatsData");
 
   xfer += oprot->writeFieldBegin("numTrues", ::apache::thrift::protocol::T_I64, 1);
@@ -5632,7 +5510,6 @@ uint32_t BooleanColumnStatsData::write(::apache::thrift::protocol::TProtocol* op
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5654,14 +5531,13 @@ BooleanColumnStatsData& BooleanColumnStatsData::operator=(const BooleanColumnSta
   numNulls = other280.numNulls;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const BooleanColumnStatsData& obj) {
-  using apache::thrift::to_string;
+void BooleanColumnStatsData::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "BooleanColumnStatsData(";
-  out << "numTrues=" << to_string(obj.numTrues);
-  out << ", " << "numFalses=" << to_string(obj.numFalses);
-  out << ", " << "numNulls=" << to_string(obj.numNulls);
+  out << "numTrues=" << to_string(numTrues);
+  out << ", " << "numFalses=" << to_string(numFalses);
+  out << ", " << "numNulls=" << to_string(numNulls);
   out << ")";
-  return out;
 }
 
 
@@ -5687,11 +5563,9 @@ void DoubleColumnStatsData::__set_numDVs(const int64_t val) {
   this->numDVs = val;
 }
 
-const char* DoubleColumnStatsData::ascii_fingerprint = "DA7C011321D74C48396AA002E61A0CBB";
-const uint8_t DoubleColumnStatsData::binary_fingerprint[16] = {0xDA,0x7C,0x01,0x13,0x21,0xD7,0x4C,0x48,0x39,0x6A,0xA0,0x02,0xE6,0x1A,0x0C,0xBB};
-
 uint32_t DoubleColumnStatsData::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -5762,7 +5636,7 @@ uint32_t DoubleColumnStatsData::read(::apache::thrift::protocol::TProtocol* ipro
 
 uint32_t DoubleColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("DoubleColumnStatsData");
 
   if (this->__isset.lowValue) {
@@ -5785,7 +5659,6 @@ uint32_t DoubleColumnStatsData::write(::apache::thrift::protocol::TProtocol* opr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5813,15 +5686,14 @@ DoubleColumnStatsData& DoubleColumnStatsData::operator=(const DoubleColumnStatsD
   __isset = other282.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const DoubleColumnStatsData& obj) {
-  using apache::thrift::to_string;
+void DoubleColumnStatsData::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "DoubleColumnStatsData(";
-  out << "lowValue="; (obj.__isset.lowValue ? (out << to_string(obj.lowValue)) : (out << "<null>"));
-  out << ", " << "highValue="; (obj.__isset.highValue ? (out << to_string(obj.highValue)) : (out << "<null>"));
-  out << ", " << "numNulls=" << to_string(obj.numNulls);
-  out << ", " << "numDVs=" << to_string(obj.numDVs);
+  out << "lowValue="; (__isset.lowValue ? (out << to_string(lowValue)) : (out << "<null>"));
+  out << ", " << "highValue="; (__isset.highValue ? (out << to_string(highValue)) : (out << "<null>"));
+  out << ", " << "numNulls=" << to_string(numNulls);
+  out << ", " << "numDVs=" << to_string(numDVs);
   out << ")";
-  return out;
 }
 
 
@@ -5847,11 +5719,9 @@ void LongColumnStatsData::__set_numDVs(const int64_t val) {
   this->numDVs = val;
 }
 
-const char* LongColumnStatsData::ascii_fingerprint = "E685FC220B24E3B8B93604790DCB9AEA";
-const uint8_t LongColumnStatsData::binary_fingerprint[16] = {0xE6,0x85,0xFC,0x22,0x0B,0x24,0xE3,0xB8,0xB9,0x36,0x04,0x79,0x0D,0xCB,0x9A,0xEA};
-
 uint32_t LongColumnStatsData::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -5922,7 +5792,7 @@ uint32_t LongColumnStatsData::read(::apache::thrift::protocol::TProtocol* iprot)
 
 uint32_t LongColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("LongColumnStatsData");
 
   if (this->__isset.lowValue) {
@@ -5945,7 +5815,6 @@ uint32_t LongColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5973,15 +5842,14 @@ LongColumnStatsData& LongColumnStatsData::operator=(const LongColumnStatsData& o
   __isset = other284.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const LongColumnStatsData& obj) {
-  using apache::thrift::to_string;
+void LongColumnStatsData::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "LongColumnStatsData(";
-  out << "lowValue="; (obj.__isset.lowValue ? (out << to_string(obj.lowValue)) : (out << "<null>"));
-  out << ", " << "highValue="; (obj.__isset.highValue ? (out << to_string(obj.highValue)) : (out << "<null>"));
-  out << ", " << "numNulls=" << to_string(obj.numNulls);
-  out << ", " << "numDVs=" << to_string(obj.numDVs);
+  out << "lowValue="; (__isset.lowValue ? (out << to_string(lowValue)) : (out << "<null>"));
+  out << ", " << "highValue="; (__isset.highValue ? (out << to_string(highValue)) : (out << "<null>"));
+  out << ", " << "numNulls=" << to_string(numNulls);
+  out << ", " << "numDVs=" << to_string(numDVs);
   out << ")";
-  return out;
 }
 
 
@@ -6005,11 +5873,9 @@ void StringColumnStatsData::__set_numDVs(const int64_t val) {
   this->numDVs = val;
 }
 
-const char* StringColumnStatsData::ascii_fingerprint = "D017B08C3DF12C3AB98788B2E67DAAB3";
-const uint8_t StringColumnStatsData::binary_fingerprint[16] = {0xD0,0x17,0xB0,0x8C,0x3D,0xF1,0x2C,0x3A,0xB9,0x87,0x88,0xB2,0xE6,0x7D,0xAA,0xB3};
-
 uint32_t StringColumnStatsData::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -6086,7 +5952,7 @@ uint32_t StringColumnStatsData::read(::apache::thrift::protocol::TProtocol* ipro
 
 uint32_t StringColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("StringColumnStatsData");
 
   xfer += oprot->writeFieldBegin("maxColLen", ::apache::thrift::protocol::T_I64, 1);
@@ -6107,7 +5973,6 @@ uint32_t StringColumnStatsData::write(::apache::thrift::protocol::TProtocol* opr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6132,15 +5997,14 @@ StringColumnStatsData& StringColumnStatsData::operator=(const StringColumnStatsD
   numDVs = other286.numDVs;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const StringColumnStatsData& obj) {
-  using apache::thrift::to_string;
+void StringColumnStatsData::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "StringColumnStatsData(";
-  out << "maxColLen=" << to_string(obj.maxColLen);
-  out << ", " << "avgColLen=" << to_string(obj.avgColLen);
-  out << ", " << "numNulls=" << to_string(obj.numNulls);
-  out << ", " << "numDVs=" << to_string(obj.numDVs);
+  out << "maxColLen=" << to_string(maxColLen);
+  out << ", " << "avgColLen=" << to_string(avgColLen);
+  out << ", " << "numNulls=" << to_string(numNulls);
+  out << ", " << "numDVs=" << to_string(numDVs);
   out << ")";
-  return out;
 }
 
 
@@ -6160,11 +6024,9 @@ void BinaryColumnStatsData::__set_numNulls(const int64_t val) {
   this->numNulls = val;
 }
 
-const char* BinaryColumnStatsData::ascii_fingerprint = "22B0CB67183FCDB945892B9974518D06";
-const uint8_t BinaryColumnStatsData::binary_fingerprint[16] = {0x22,0xB0,0xCB,0x67,0x18,0x3F,0xCD,0xB9,0x45,0x89,0x2B,0x99,0x74,0x51,0x8D,0x06};
-
 uint32_t BinaryColumnStatsData::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -6230,7 +6092,7 @@ uint32_t BinaryColumnStatsData::read(::apache::thrift::protocol::TProtocol* ipro
 
 uint32_t BinaryColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("BinaryColumnStatsData");
 
   xfer += oprot->writeFieldBegin("maxColLen", ::apache::thrift::protocol::T_I64, 1);
@@ -6247,7 +6109,6 @@ uint32_t BinaryColumnStatsData::write(::apache::thrift::protocol::TProtocol* opr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6269,14 +6130,13 @@ BinaryColumnStatsData& BinaryColumnStatsData::operator=(const BinaryColumnStatsD
   numNulls = other288.numNulls;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const BinaryColumnStatsData& obj) {
-  using apache::thrift::to_string;
+void BinaryColumnStatsData::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "BinaryColumnStatsData(";
-  out << "maxColLen=" << to_string(obj.maxColLen);
-  out << ", " << "avgColLen=" << to_string(obj.avgColLen);
-  out << ", " << "numNulls=" << to_string(obj.numNulls);
+  out << "maxColLen=" << to_string(maxColLen);
+  out << ", " << "avgColLen=" << to_string(avgColLen);
+  out << ", " << "numNulls=" << to_string(numNulls);
   out << ")";
-  return out;
 }
 
 
@@ -6292,11 +6152,9 @@ void Decimal::__set_scale(const int16_t val) {
   this->scale = val;
 }
 
-const char* Decimal::ascii_fingerprint = "C4DDF6759F9B17C5C380806CE743DE8E";
-const uint8_t Decimal::binary_fingerprint[16] = {0xC4,0xDD,0xF6,0x75,0x9F,0x9B,0x17,0xC5,0xC3,0x80,0x80,0x6C,0xE7,0x43,0xDE,0x8E};
-
 uint32_t Decimal::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -6351,7 +6209,7 @@ uint32_t Decimal::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Decimal::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Decimal");
 
   xfer += oprot->writeFieldBegin("unscaled", ::apache::thrift::protocol::T_STRING, 1);
@@ -6364,7 +6222,6 @@ uint32_t Decimal::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6383,13 +6240,12 @@ Decimal& Decimal::operator=(const Decimal& other290) {
   scale = other290.scale;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Decimal& obj) {
-  using apache::thrift::to_string;
+void Decimal::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Decimal(";
-  out << "unscaled=" << to_string(obj.unscaled);
-  out << ", " << "scale=" << to_string(obj.scale);
+  out << "unscaled=" << to_string(unscaled);
+  out << ", " << "scale=" << to_string(scale);
   out << ")";
-  return out;
 }
 
 
@@ -6415,11 +6271,9 @@ void DecimalColumnStatsData::__set_numDVs(const int64_t val) {
   this->numDVs = val;
 }
 
-const char* DecimalColumnStatsData::ascii_fingerprint = "B6D47E7A28922BFA93FE05E9F1B04748";
-const uint8_t DecimalColumnStatsData::binary_fingerprint[16] = {0xB6,0xD4,0x7E,0x7A,0x28,0x92,0x2B,0xFA,0x93,0xFE,0x05,0xE9,0xF1,0xB0,0x47,0x48};
-
 uint32_t DecimalColumnStatsData::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -6490,7 +6344,7 @@ uint32_t DecimalColumnStatsData::read(::apache::thrift::protocol::TProtocol* ipr
 
 uint32_t DecimalColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("DecimalColumnStatsData");
 
   if (this->__isset.lowValue) {
@@ -6513,7 +6367,6 @@ uint32_t DecimalColumnStatsData::write(::apache::thrift::protocol::TProtocol* op
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6541,15 +6394,14 @@ DecimalColumnStatsData& DecimalColumnStatsData::operator=(const DecimalColumnSta
   __isset = other292.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const DecimalColumnStatsData& obj) {
-  using apache::thrift::to_string;
+void DecimalColumnStatsData::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "DecimalColumnStatsData(";
-  out << "lowValue="; (obj.__isset.lowValue ? (out << to_string(obj.lowValue)) : (out << "<null>"));
-  out << ", " << "highValue="; (obj.__isset.highValue ? (out << to_string(obj.highValue)) : (out << "<null>"));
-  out << ", " << "numNulls=" << to_string(obj.numNulls);
-  out << ", " << "numDVs=" << to_string(obj.numDVs);
+  out << "lowValue="; (__isset.lowValue ? (out << to_string(lowValue)) : (out << "<null>"));
+  out << ", " << "highValue="; (__isset.highValue ? (out << to_string(highValue)) : (out << "<null>"));
+  out << ", " << "numNulls=" << to_string(numNulls);
+  out << ", " << "numDVs=" << to_string(numDVs);
   out << ")";
-  return out;
 }
 
 
@@ -6561,11 +6413,9 @@ void Date::__set_daysSinceEpoch(const int64_t val) {
   this->daysSinceEpoch = val;
 }
 
-const char* Date::ascii_fingerprint = "56A59CE7FFAF82BCA8A19FAACDE4FB75";
-const uint8_t Date::binary_fingerprint[16] = {0x56,0xA5,0x9C,0xE7,0xFF,0xAF,0x82,0xBC,0xA8,0xA1,0x9F,0xAA,0xCD,0xE4,0xFB,0x75};
-
 uint32_t Date::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -6609,7 +6459,7 @@ uint32_t Date::read(::apache::thrift::protocol::TProtocol* iprot) {
 
 uint32_t Date::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("Date");
 
   xfer += oprot->writeFieldBegin("daysSinceEpoch", ::apache::thrift::protocol::T_I64, 1);
@@ -6618,7 +6468,6 @@ uint32_t Date::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6634,12 +6483,11 @@ Date& Date::operator=(const Date& other294) {
   daysSinceEpoch = other294.daysSinceEpoch;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const Date& obj) {
-  using apache::thrift::to_string;
+void Date::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "Date(";
-  out << "daysSinceEpoch=" << to_string(obj.daysSinceEpoch);
+  out << "daysSinceEpoch=" << to_string(daysSinceEpoch);
   out << ")";
-  return out;
 }
 
 
@@ -6665,11 +6513,9 @@ void DateColumnStatsData::__set_numDVs(const int64_t val) {
   this->numDVs = val;
 }
 
-const char* DateColumnStatsData::ascii_fingerprint = "D0719F3BBA8248297BB5287552897F59";
-const uint8_t DateColumnStatsData::binary_fingerprint[16] = {0xD0,0x71,0x9F,0x3B,0xBA,0x82,0x48,0x29,0x7B,0xB5,0x28,0x75,0x52,0x89,0x7F,0x59};
-
 uint32_t DateColumnStatsData::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -6740,7 +6586,7 @@ uint32_t DateColumnStatsData::read(::apache::thrift::protocol::TProtocol* iprot)
 
 uint32_t DateColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("DateColumnStatsData");
 
   if (this->__isset.lowValue) {
@@ -6763,7 +6609,6 @@ uint32_t DateColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6791,15 +6636,14 @@ DateColumnStatsData& DateColumnStatsData::operator=(const DateColumnStatsData& o
   __isset = other296.__isset;
   return *this;
 }
-std::ostream& operator<<(std::ostream& out, const DateColumnStatsData& obj) {
-  using apache::thrift::to_string;
+void DateColumnStatsData::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
   out << "DateColumnStatsData(";
-  out << "lowValue="; (obj.__isset.lowValue ? (out << to_string(obj.lowValue)) : (out << "<null>"));
-  out << ", " << "highValue="; (obj.__isset.highValue ? (out << to_string(obj.highValue)) : (out << "<null>"));
-  out << ", " << "numNulls=" << to_string(obj.numNulls);
-  out << ", " << "numDVs=" << to_string(obj.numDVs);
+  out << "lowValue="; (__isset.lowValue ? (out << to_string(lowValue)) : (out << "<null>"));
+  out << ", " << "highValue="; (__isset.highValue ? (out << to_string(highValue)) : (out << "<null>"));
+  out << ", " << "numNulls=" << to_string(numNulls);
+  out << ", " << "numDVs=" << to_string(numDVs);
   out << ")";
-  return out;
 }
 
 
@@ -6835,11 +6679,9 @@ void ColumnStatisticsData::__set_dateStats(const DateColumnStatsData& val) {
   this->dateStats = val;
 }
 
-const char* ColumnStatisticsData::ascii_fingerprint = "15E449CA15A23E37F2D54C31ACA52106";
-const uint8_t ColumnStatisticsData::binary_fingerprint[16] = {0x15,0xE4,0x49,0xCA,0x15,0xA2,0x3E,0x37,0xF2,0xD5,0x4C,0x31,0xAC,0xA5,0x21,0x06};
-
 uint32_t ColumnStatisticsData::read(::apache::thrift::protocol::TProtocol* iprot) {
 
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
   std::string fname;
   ::apache::thrift::protocol::TType ftype;
@@ -6928,7 +6770,7 @@ uint32_t ColumnStatisticsData::read(::apache::thrift::protocol::TProtocol* iprot
 
 uint32_t ColumnStatisticsData::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
-  oprot->incrementRecursionDepth();
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
   xfer += oprot->writeStructBegin("ColumnStatisticsData");
 
   xfer += oprot->writeFieldBegin("booleanStats", ::apache::thrift::protocol::T_STRUCT, 1);
@@ -6961,7 +6803,6 @@ uint32_t ColumnStatisticsData::write(::apache::thrift::protocol::TProtocol* opro
 
   xfer += oprot->writeFieldStop();

<TRUNCATED>