You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ga...@apache.org on 2016/01/15 02:18:07 UTC

[18/22] hive git commit: HIVE-12832 Thrift and RDBMS schema changes for ACID fixes, branch-1 version.

http://git-wip-us.apache.org/repos/asf/hive/blob/92072ad2/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 57c3477..c2fe9db 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
@@ -164,11 +164,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;
@@ -217,7 +215,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);
@@ -230,7 +228,6 @@ uint32_t Version::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -252,13 +249,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;
 }
 
 
@@ -278,11 +274,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;
@@ -339,7 +333,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);
@@ -356,7 +350,6 @@ uint32_t FieldSchema::write(::apache::thrift::protocol::TProtocol* oprot) const
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -381,14 +374,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;
 }
 
 
@@ -415,11 +407,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;
@@ -496,7 +486,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);
@@ -528,7 +518,6 @@ uint32_t Type::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -556,15 +545,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;
 }
 
 
@@ -592,11 +580,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;
@@ -683,7 +669,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);
@@ -716,7 +702,6 @@ uint32_t HiveObjectRef::write(::apache::thrift::protocol::TProtocol* oprot) cons
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -747,16 +732,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;
 }
 
 
@@ -784,11 +768,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;
@@ -863,7 +845,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);
@@ -888,7 +870,6 @@ uint32_t PrivilegeGrantInfo::write(::apache::thrift::protocol::TProtocol* oprot)
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -919,16 +900,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;
 }
 
 
@@ -952,11 +932,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;
@@ -1023,7 +1001,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);
@@ -1044,7 +1022,6 @@ uint32_t HiveObjectPrivilege::write(::apache::thrift::protocol::TProtocol* oprot
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1072,15 +1049,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;
 }
 
 
@@ -1092,11 +1068,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;
@@ -1149,7 +1123,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);
@@ -1166,7 +1140,6 @@ uint32_t PrivilegeBag::write(::apache::thrift::protocol::TProtocol* oprot) const
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1185,12 +1158,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;
 }
 
 
@@ -1210,11 +1182,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;
@@ -1352,7 +1322,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);
@@ -1420,7 +1390,6 @@ uint32_t PrincipalPrivilegeSet::write(::apache::thrift::protocol::TProtocol* opr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1445,14 +1414,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;
 }
 
 
@@ -1473,11 +1441,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;
@@ -1536,7 +1502,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);
@@ -1554,7 +1520,6 @@ uint32_t GrantRevokePrivilegeRequest::write(::apache::thrift::protocol::TProtoco
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1579,14 +1544,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;
 }
 
 
@@ -1599,11 +1563,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;
@@ -1644,7 +1606,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) {
@@ -1654,7 +1616,6 @@ uint32_t GrantRevokePrivilegeResponse::write(::apache::thrift::protocol::TProtoc
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1673,12 +1634,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;
 }
 
 
@@ -1698,11 +1658,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;
@@ -1759,7 +1717,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);
@@ -1776,7 +1734,6 @@ uint32_t Role::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -1801,14 +1758,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;
 }
 
 
@@ -1844,11 +1800,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;
@@ -1941,7 +1895,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);
@@ -1974,7 +1928,6 @@ uint32_t RolePrincipalGrant::write(::apache::thrift::protocol::TProtocol* oprot)
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2011,18 +1964,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;
 }
 
 
@@ -2038,11 +1990,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;
@@ -2099,7 +2049,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);
@@ -2112,7 +2062,6 @@ uint32_t GetRoleGrantsForPrincipalRequest::write(::apache::thrift::protocol::TPr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2131,13 +2080,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;
 }
 
 
@@ -2149,11 +2097,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;
@@ -2209,7 +2155,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);
@@ -2226,7 +2172,6 @@ uint32_t GetRoleGrantsForPrincipalResponse::write(::apache::thrift::protocol::TP
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2242,12 +2187,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;
 }
 
 
@@ -2259,11 +2203,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;
@@ -2307,7 +2249,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);
@@ -2316,7 +2258,6 @@ uint32_t GetPrincipalsInRoleRequest::write(::apache::thrift::protocol::TProtocol
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2332,12 +2273,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;
 }
 
 
@@ -2349,11 +2289,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;
@@ -2409,7 +2347,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);
@@ -2426,7 +2364,6 @@ uint32_t GetPrincipalsInRoleResponse::write(::apache::thrift::protocol::TProtoco
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2442,12 +2379,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;
 }
 
 
@@ -2486,11 +2422,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;
@@ -2585,7 +2519,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);
@@ -2621,7 +2555,6 @@ uint32_t GrantRevokeRoleRequest::write(::apache::thrift::protocol::TProtocol* op
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2658,18 +2591,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;
 }
 
 
@@ -2682,11 +2614,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;
@@ -2727,7 +2657,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) {
@@ -2737,7 +2667,6 @@ uint32_t GrantRevokeRoleResponse::write(::apache::thrift::protocol::TProtocol* o
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2756,12 +2685,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;
 }
 
 
@@ -2800,11 +2728,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;
@@ -2910,7 +2836,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);
@@ -2955,7 +2881,6 @@ uint32_t Database::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -2992,18 +2917,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;
 }
 
 
@@ -3023,11 +2947,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;
@@ -3099,7 +3021,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);
@@ -3125,7 +3047,6 @@ uint32_t SerDeInfo::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -3150,14 +3071,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;
 }
 
 
@@ -3173,11 +3093,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;
@@ -3226,7 +3144,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);
@@ -3239,7 +3157,6 @@ uint32_t Order::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -3261,13 +3178,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;
 }
 
 
@@ -3287,11 +3203,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;
@@ -3411,7 +3325,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);
@@ -3469,7 +3383,6 @@ uint32_t SkewedInfo::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -3494,14 +3407,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;
 }
 
 
@@ -3559,11 +3471,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;
@@ -3743,7 +3653,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);
@@ -3831,7 +3741,6 @@ uint32_t StorageDescriptor::write(::apache::thrift::protocol::TProtocol* oprot)
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -3883,23 +3792,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;
 }
 
 
@@ -3965,11 +3873,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;
@@ -4141,7 +4047,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);
@@ -4221,7 +4127,6 @@ uint32_t Table::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -4279,25 +4184,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;
 }
 
 
@@ -4338,11 +4242,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;
@@ -4466,7 +4368,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);
@@ -4521,7 +4423,6 @@ uint32_t Partition::write(::apache::thrift::protocol::TProtocol* oprot) const {
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -4561,19 +4462,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;
 }
 
 
@@ -4606,11 +4506,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;
@@ -4718,7 +4616,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);
@@ -4765,7 +4663,6 @@ uint32_t PartitionWithoutSD::write(::apache::thrift::protocol::TProtocol* oprot)
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -4799,17 +4696,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;
 }
 
 
@@ -4825,11 +4721,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;
@@ -4890,7 +4784,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);
@@ -4911,7 +4805,6 @@ uint32_t PartitionSpecWithSharedSD::write(::apache::thrift::protocol::TProtocol*
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -4933,13 +4826,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;
 }
 
 
@@ -4951,11 +4843,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;
@@ -5008,7 +4898,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);
@@ -5025,7 +4915,6 @@ uint32_t PartitionListComposingSpec::write(::apache::thrift::protocol::TProtocol
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5044,12 +4933,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;
 }
 
 
@@ -5079,11 +4967,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;
@@ -5156,7 +5042,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);
@@ -5183,7 +5069,6 @@ uint32_t PartitionSpec::write(::apache::thrift::protocol::TProtocol* oprot) cons
   }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5214,16 +5099,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;
 }
 
 
@@ -5271,11 +5155,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;
@@ -5403,7 +5285,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);
@@ -5457,7 +5339,6 @@ uint32_t Index::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5503,21 +5384,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;
 }
 
 
@@ -5537,11 +5417,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;
@@ -5607,7 +5485,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);
@@ -5624,7 +5502,6 @@ uint32_t BooleanColumnStatsData::write(::apache::thrift::protocol::TProtocol* op
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5646,14 +5523,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;
 }
 
 
@@ -5679,11 +5555,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;
@@ -5754,7 +5628,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) {
@@ -5777,7 +5651,6 @@ uint32_t DoubleColumnStatsData::write(::apache::thrift::protocol::TProtocol* opr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5805,15 +5678,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;
 }
 
 
@@ -5839,11 +5711,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;
@@ -5914,7 +5784,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) {
@@ -5937,7 +5807,6 @@ uint32_t LongColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -5965,15 +5834,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;
 }
 
 
@@ -5997,11 +5865,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;
@@ -6078,7 +5944,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);
@@ -6099,7 +5965,6 @@ uint32_t StringColumnStatsData::write(::apache::thrift::protocol::TProtocol* opr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6124,15 +5989,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;
 }
 
 
@@ -6152,11 +6016,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;
@@ -6222,7 +6084,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);
@@ -6239,7 +6101,6 @@ uint32_t BinaryColumnStatsData::write(::apache::thrift::protocol::TProtocol* opr
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6261,14 +6122,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;
 }
 
 
@@ -6284,11 +6144,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;
@@ -6343,7 +6201,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);
@@ -6356,7 +6214,6 @@ uint32_t Decimal::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6375,13 +6232,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;
 }
 
 
@@ -6407,11 +6263,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;
@@ -6482,7 +6336,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) {
@@ -6505,7 +6359,6 @@ uint32_t DecimalColumnStatsData::write(::apache::thrift::protocol::TProtocol* op
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6533,15 +6386,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;
 }
 
 
@@ -6553,11 +6405,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;
@@ -6601,7 +6451,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);
@@ -6610,7 +6460,6 @@ uint32_t Date::write(::apache::thrift::protocol::TProtocol* oprot) const {
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6626,12 +6475,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;
 }
 
 
@@ -6657,11 +6505,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;
@@ -6732,7 +6578,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) {
@@ -6755,7 +6601,6 @@ uint32_t DateColumnStatsData::write(::apache::thrift::protocol::TProtocol* oprot
 
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
-  oprot->decrementRecursionDepth();
   return xfer;
 }
 
@@ -6783,15 +6628,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;
 }
 
 
@@ -6827,11 +6671,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;
@@ -6920,7 +6762,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);
@@ -6953,7 +6795,6 @@ uint32_t ColumnStatisticsData::write(::apache::thrift::protocol::TProtocol* opro
 
   xfer += oprot->writeFieldStop();

<TRUNCATED>